A importação do Oracle falha devido à configuração NLS_DATE_LANGUAGE

1

Eu tenho um servidor de banco de dados Oracle 10 e um dump criado em outro servidor Oracle 10. Ao usar o comando imp para importar o dump para o banco de dados:

imp 'sys/*** as sysdba' file=c:\[...]\strukt.dmp full=y log=c:\[...]\import.log

Recebo a mensagem de erro "não é um mês válido" para o seguinte formato de data:

'04-FEB-08 03.54.49.000000 PM +01:00'

Após uma pequena depuração, tentei reproduzir o erro no meu cliente SQLPlus. A linha

select to_date('04-FEB-08') from dual;

me dá a mesma mensagem de erro. Após uma pequena pesquisa sobre o tópico, também percebi que o motivo da mensagem de erro é minha configuração "NLS_DATE_LANGUAGE" .

NLS_DATE_FORMAT      RR-MON-DD
NLS_DATE_LANGUAGE    HUNGARIAN

Eu configurei o idioma da data para "AMERICAN" , e agora tudo estava bem com o comando SQLPlus.

alter session set NLS_DATE_LANGUAGE='AMERICAN';

Agora vem a parte problemática. Não tenho idéia de como dizer à ferramenta de importação que ela deve usar uma configuração NLS diferente.

A documentação do Oracle me diz que devo configurá-lo como uma variável de ambiente, mas parece que não funciona. O servidor Oracle está em uma caixa do Windows 2008, portanto, defino a variável de ambiente "NLS_DATE_LANGUAGE" como "AMERICAN" nas variáveis Painel de controle / Sistema / Avançado / Ambiente, ambos para o usuário atual e como uma variável do sistema, mas ainda tenho a mesma mensagem.

Sou novo no mundo da Oracle e posso estar perdendo algo óbvio. Se você tiver uma solução ou algum truque de solução alternativa, agradeço muito.

Obrigado antecipadamente,

Marcar

    
por Mark Szente 11.10.2011 / 14:17

2 respostas

2

Você pode definir a variável de ambiente NLS_LANG antes de executar imp ou sqlplus . No sistema Windows, se essa variável de ambiente não estiver configurada, o Oracle procurará no registro do 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
    
por 11.10.2011 / 15:37
0

Você precisa definir o ambiente NLS_ para o comando exp e o comando imp no futuro.

Para usar o seu dump existente, tente restaurar as configurações exatas do ambiente usadas durante a última sessão de exp, mas ainda assim, se bem me lembro, você pode estar totalmente inutilizado com alguns dumps criados com configurações de NLS que não estão em inglês (ou seja, não é importável, mesmo que as configurações NLS_ correspondam àquelas usadas por exp).

    
por 01.12.2011 / 23:37

Tags