У меня есть сервер базы данных Oracle 10 и дамп, созданный на другом сервере Oracle 10. При использовании команды imp для импорта дампа в базу данных:
imp 'sys/*** as sysdba' file=c:\[...]\strukt.dmp full=y log=c:\[...]\import.log
Я получаю сообщение об ошибке "недействительный месяц" для следующего формата даты:
'04-FEB-08 03.54.49.000000 PM +01:00'
После небольшой отладки я попытался воспроизвести ошибку в моем клиенте SQLPlus. Линия
select to_date('04-FEB-08') from dual;
дает мне такое же сообщение об ошибке. После небольшого исследования этой темы я также понял, что причиной сообщения об ошибке является мой "NLS_DATE_LANGUAGE" настройка.
NLS_DATE_FORMAT RR-MON-DD
NLS_DATE_LANGUAGE HUNGARIAN
Я установил язык даты на "АМЕРИКАНСКИЙ", и теперь с командой SQLPlus все было хорошо.
alter session set NLS_DATE_LANGUAGE='AMERICAN';
Теперь о проблемном моменте. Я понятия не имею, как сообщить инструменту импорта, что он должен использовать другую настройку NLS.
В документации Oracle говорится, что я должен установить его как переменную среды, но, похоже, это не работает. Сервер Oracle находится в коробке с Windows 2008, поэтому я установил "NLS_DATE_LANGUAGE" переменная среды для "АМЕРИКАНСКИЙ" в Панели управления / Система / Дополнительно / Переменные среды, как для текущего пользователя, так и в качестве системной переменной, но все же у меня такое же сообщение.
Я новичок в мире Oracle, и мне может не хватать чего-то очевидного. Если у вас есть решение или какой-либо обходной трюк, я очень признателен.
Заранее спасибо,
отметка
Вы можете установить переменную среды NLS_LANG
перед выполнением imp
или sqlplus
. В системе Windows, если эта переменная среды не задана, Oracle будет искать в реестре Windows.
C:\>set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
C:\>sqlplus vnz/[...]
[...]
SQL> select to_char(sysdate, 'month') from dual;
TO_CHAR(S
---------
october
SQL> exit
Disconnected from Oracle Database 10g [...]
C:\>set NLS_LANG=FRENCH_FRANCE
C:\>sqlplus vnz/[...]
[...]
SQL> select to_char(sysdate, 'month') from dual;
TO_CHAR(S
---------
octobre
В будущем вам необходимо установить среду NLS_ как для команды exp, так и для команды imp.
Чтобы использовать существующий дамп, попробуйте восстановить точные настройки среды, использованные во время предыдущего сеанса exp, но все же, если я правильно помню, вы можете столкнуться с довольно большим количеством ошибок с дампами, созданными с неанглийскими настройками NLS, которые полностью непригодны для использования (т.е. можно импортировать, даже если настройки NLS_ совпадают с используемыми exp).