我有一个Oracle 10数据库服务器和另一个Oracle 10服务器上创build的转储。 使用imp命令将转储导入到数据库时:
imp 'sys/*** as sysdba' file=c:\[...]\strukt.dmp full=y log=c:\[...]\import.log
我收到以下date格式的错误消息“不是有效的月份” :
'04-FEB-08 03.54.49.000000 PM +01:00'
经过一些debugging,我试图重现我的SQLPlus客户端中的错误。 该线
select to_date('04-FEB-08') from dual;
给我同样的错误信息。 经过对这个话题的一些研究之后,我也意识到错误信息的原因是我的“NLS_DATE_LANGUAGE”设置。
NLS_DATE_FORMAT RR-MON-DD NLS_DATE_LANGUAGE HUNGARIAN
我将date语言设置为“AMERICAN” ,现在SQLPlus命令一切正常。
alter session set NLS_DATE_LANGUAGE='AMERICAN';
现在有问题了。 我不知道如何告诉导入工具,它应该使用不同的NLS设置。
Oracle的文档告诉我,我应该把它设置为一个环境variables,但似乎没有工作。 Oracle服务器在Windows 2008上,所以我在控制面板/系统/高级/环境variables中将“NLS_DATE_LANGUAGE”环境variables设置为“AMERICAN” ,既作为当前用户又作为系统variables,但我仍然信息。
我是新来的Oracle世界,我可能会错过一些明显的东西。 如果您有解决scheme或任何解决方法的技巧,我非常感谢。
先谢谢你,
标记
您可以在执行imp或sqlplus之前设置环境variablesNLS_LANG 。 在Windows系统上,如果这个环境variables没有设置,Oracle会查看Windowsregistry。
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
您将来需要为exp命令和imp命令设置NLS_环境。
要使用现有的转储,请尝试恢复在过去的exp会话中使用的确切的环境设置,但是如果我正确记得,您可能会遇到相当多的错误,使用非英文NLS设置创build的转储完全不可用(即不能即使NLS_设置与exp所使用的设置相匹配,也是可导入的)。