- Este tópico contém 9 respostas, 2 vozes e foi atualizado pela última vez 17 anos, 11 meses atrás por
souza.
-
AutorPosts
-
3 de abril de 2008 às 1:02 am #81587
souza
ParticipanteTenho um bd 9i, e estou usando o exp do 9i p/ exportar. Ao tentar importar p/ um xe 10g com o imp do 10g tenho muitas mensagens de erro do tipo:
. . importing table “TABELA”
IMP-00019: row rejected due to ORACLE error 12899
IMP-00003: ORACLE error 12899 encountered
ORA-12899: value too large for column “SCHEMA”.”TABELA”.”COLUNA” (actual: 62, maximum: 60)
Column 1 6Já verifiquei espaço nas tablespaces e nls_lang da máquina onde estou fazendo o imp. A base de origem vem do windows e vai para windows.
Alguém tem alguma sugestão ?
3 de abril de 2008 às 1:20 am #81588souza
ParticipanteNo NLS_DATABASE_PARAMETERS do bd que estou importando tenho o seguinte:
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET AL32UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.03 de abril de 2008 às 6:41 am #81590Ishii
ParticipanteSouza,
Por mais estranho que possa parecer a mensagem informa que uma coluna de uma ou mais tabelas tem como valor por exemplo varchar2(60) e o dado está com 62…
Tente importar primeiro sem as linhas (imp rows=n) e depois tente somente com as linhas…. veja se o erro aparece na segunda vez. Ou veja estas tabelas e verifique se realmente ocorre esta situação…
Outro ponto seria verificar estas tabelas e quais os datatypes delas e se há alguma alteração no Oracle XE 10g. Não me recordo de nenhuma agora mas podemos verificar depois.
[]s Ishii
4 de abril de 2008 às 3:36 pm #81600souza
Participanteok. Importei com rows=n e importou sem erros. Agora posso utilizar o imp normalmente (imp system@xe file=arq.dmp log=arq.log fromuser=x touser=x commit=y buffer=500000 feedback=10000) ?
Desde já obrigado
4 de abril de 2008 às 3:40 pm #81601Ishii
ParticipanteSouza,
Sim, com isso deve ficar mais fácil identificar o problema deste dado que parece ser maior que a coluna da tabela… se você quiser adicionar o ignore =y para que não fique sendo necessário a sua intervenção toda vez que surgir um problema (e deve surgir vários como objeto já existe no banco…)
Outra dica seria desabilitar as triggers e chaves (Pk e Fk) pois isso agiliza a importação.
[]s Ishii
4 de abril de 2008 às 3:57 pm #81602souza
ParticipantePara desabilitar as pk e fk vc sugere constrains=n ? As triggers é triggers=n ?
Desde já obrigado
4 de abril de 2008 às 4:03 pm #81603Ishii
ParticipanteSouza,
Na verdade se você fizer isso no import apenas não serão importados as constraints e acho que para triggers não tem um comando para não importar.
Basta entrar na sua BD sem nenhuma linha e fazer um script para desabilitar as Fk primeiro e depois as Pks e também as triggers. Já deixe feito também um script para habilitar as Pks primeiro depois as Fks e também as triggers.
[]s Ishii
4 de abril de 2008 às 4:21 pm #81604souza
ParticipanteO erro voltou a ocorrer exatamente nas mesmas tabelas. Vc saberia me dizer se a diferença de NLS_CHARACTERSET poderia ter alguma influência ? Ou de algum outro parâmetro abaixo ?
Banco de Origem
PARAMETER VALUE
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET WE8MSWIN1252
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 9.2.0.1.0Banco Destino
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET AL32UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0Desde já obrigado
4 de abril de 2008 às 5:40 pm #81608Ishii
ParticipanteSouza,
Acho que você matou a charada. WE8MSWIN1252 tem como característica o Single-Byte Encoding que seria basicamente cada caracter tem um byte. Já o AL32UTF8 é MultiByte Encoding onde um número variável de bytes formam um caracter… por isso a coluna tem 60 posições mas o dado tinha 62…
Para conhecimento geral:
WE8MSWIN1252 – MS Windows Code Page 1252 8-bit West European
AL32UTF8- Unicode 4.0 UTF-8 Universal character setSerá necessário alterar o characterset para esta importação.
[]s Ishii
4 de abril de 2008 às 8:28 pm #81612souza
ParticipanteCaro Ishii, consegui importar sem erro. Tive que fazer o seguinte:
Logado como sys/sysdba
O original era: AL32UTF8
update sys.props$
set value$ = ‘WE8ISO8859P1’
Where name = ‘NLS_CHARACTERSET’;Porém após importar sem erros , rodei um script de select para criar os sinônimos e tive o seguinte erro :
ORA-06552:PL/SQL: Compilation unit analysis terminated ORA-06553: PLS-553:nome do conjunto de caracteres não é reconhecido.
Daí tive que fazer novamente
update sys.props$
set value$ = ‘AL32UTF8’
Where name = ‘NLS_CHARACTERSET’;shutdown immediate
startupAí funcionou depois o select. Vou realizar alguns updates e qualquer coisa vou postar aqui . Obrigado pela ajuda Ishii
-
AutorPosts
- Você deve fazer login para responder a este tópico.