Estou tentando importar uma exportação do Oracle 11 para o Oracle 11 XE.
Recebo as seguintes mensagens:
importação no XE fehlerhaft importação feita no conjunto de caracteres WE8MSWIN1252 e AL16UTF16 NCHAR
servidor de importação usa o conjunto de caracteres AL32UTF8 (possível conversão de conjunto de caracteres)
Alguma ideia, como posso importar esse dump para o Oracle 11 XE?
Editar:
Dada uma mesa
CREATE TABLE BDATA.Artikel(
Key VARCHAR2(3) NOT NULL,
Name VARCHAR2(60) NOT NULL,
Abkuerzung VARCHAR2(5) NOT NULL
);
Eu recebo erros como este
IMP-00019: row rejected due to ORACLE error 12899
IMP-00003: ORACLE error 12899 encountered
ORA-12899: value too large for column "BDATA"."ARTIKEL"."ABKUERZUNG" (actual: 6, maximum: 5)
Column 1 ABL
Column 2 Aufbewahrungslösung
Column 3 AfbLö
Algumas linhas estão faltando na importação.
Se esse for o DDL real que você está usando para criar a tabela, você pode usar o parâmetro NLS_LENGTH_SEMANTICS . Se você definir isso para CHAR em vez do padrão de BYTE, um VARCHAR2(5) será alocado espaço suficiente para armazenar 5 caracteres no conjunto de caracteres do banco de dados (potencialmente até 20 bytes) em vez de 5 bytes (o que poderia permitir apenas 1 caractere ).
Infelizmente, alterar o
NLS_LENGTH_SEMANTICS
provavelmente não será muito útil se você estiver confiando no processo de importação para criar a tabela - o arquivo de despejo adicionará inerentemente a palavra-chave CHAR ou BYTE para que ele realmente emita a instruçãoVocê não tem uma escolha de conjunto de caracteres no XE , portanto, não pode alterá-lo para se adequar ao banco de dados que está tentando importar. Seria prático migrar o banco de dados de origem antes da exportação?
A importação deve funcionar, mas a conversão do conjunto de caracteres pode significar que algumas colunas de texto com caracteres não ASCII não terão a mesma aparência após a importação. E as linhas podem ser rejeitadas se forem muito longas no novo conjunto de caracteres.
No seu caso, você está convertendo para UTF8, o que significa que é possível que um único caractere de byte cresça durante a conversão para 2 ( ou mais em teoria ). Pode ser necessário aumentar o tamanho da coluna antes de exportar ou ajustar o esquema de destino e importar os dados em uma etapa separada. Veja aqui outros possíveis problemas de truncamento de dados
A maneira mais fácil: (Desligamento necessário) :
Primeiro, conecte como sysdba:
Em seguida, execute o seguinte script:
Funcionou para mim em um Oracle 12c Standard Two Edition
Extraído de: http://www.blogdelpibe.com/2015/05/como-solucionar-el-error-ora-12899.html
Isso funcionou para mim. Em vez disso:
Tente algo assim no bash:
Isso muda
col1 VARCHAR2(n)
a cadacol1 VARCHAR2(n CHAR)
linha que começa comCREATE TABLE
. Você também pode alterardata.dmp
antes de executar imp nele, se não puder<(...)
no seu shell, por exemplo:...mas não é necessário no bash e algo pode dar errado na conversão ou ao fazer o backup conforme indicado por
-i.bk
.