Como solucionar el error ORA-12899: VALUE TOO LARGE FOR COLUMN

Pues eso amig@s,

Si al importar un dump entre una versión de Oracle 10g y 11g nos aparece el error ORA-12899 se debe a que la configuración del charset de Oracle en la bbdd donde hemos hecho el export es distinta a la versión donde estamos realizand el import. En concreto el parámetro que indica que configuración charset tiene nuestra bbdd son dos, el NLS_CHARACTERSET y el NLS_LENGTH_SEMANTICS.

Como dependiendo del charset, oracle interpreta que un valor puede ocupar una o dos posiciones en cada registro, esto puede ocasionar un desbordamiento de un campo en concreto. Por ejemplo si un campo está definido en la bbdd original a 40 posiciones, si tenemos un charset diferente, al hacer el import interpretará que necesita para tal charset 42 posiciones para grabar los datos del registros y como no entra, devuelve el error 12899.

Solución:

1-Nos conectamos a la bbdd original y obtenemos la configuración de los dos parámetros:

select parameter,value from nls_session_parameters where parameter=’NLS_LENGTH_SEMANTICS';

select parameter,value from nls_session_parameters where parameter=’NLS_CHARACTERSET';

2-Nos conectamos a la nueva bbdd y ejecutamos:

alter system set nls_length_semantics=CHAR scope=both;

Luego la paramos y la arrancamos en modo restrictivo:

c:\sqlplus /nolog
conn / as sysdba;
shutdown;
startup restrict;
Alter database character set INTERNAL_USE WE8ISO8859P1;
shutdown;
startup;

Voila! ya nos dejará realizar el import sin ningun error :)

Espero que les resulte útil.
Salu2.
Share on Google Plus
    Blogger Comment

2 comentarios:

Unknown dijo...

Hola!!!

Es muy valioso tu aporte, me ha sido de mucha ayuda.
Lo único es que al hacer Shutdown el proceso se hacia muy lento y se detenia, solo use shutdown immediate y todo funciono perfecto, la importación se realizó perfectamente.

Gracias, Dios te bendiga.

Karol

Unknown dijo...

Si excelente aporte me paso lo mismo luego vi el comentario de Krol!!! gracias!!!!

estoy haciendo un import en una 12c desde una 10g pero me tira errores