Caracteres Especiales, Tildes y Ñ's en Oracle 10g

Estoy teniendo un problema una importación, he hecho el export desde una BD Oracle 8.1.7.4 en Solaris, hasta una 10g también en Solaris, el archivo de export se crea correctamente, pero resulta que cuando estoy haciendo el import, todo marcha bien excepto por que me cuando encuentra caracteres especiales como letras con tildes o ñ's el dato se hace más extenso y no cabe en la longitud del campo, es decir, si el dato es 'comesaña', cuando intenta hacer el import escribe 'comesa/?rsa' y el dato se vuelve más extenso, que podría estar causando ese error.
1

1 respuesta

Respuesta
1
Fíjate cómo esta definida la variable de entorno/ambiente NLS_LANG del usuario con el que corres la db en el 8.1.7.4 .
Tienes que tener definido lo mismo en el usuario que ejecuta el IMP en 10G.
¿NLS_LANG es un parámetro del init. Ora?
¿Hay alguna consulta que me permita saber el NLS_LANG que se esta usando?
Gracias, por tu ayuda
No es una variable de la sesión y son las que ocasionan los mayores problemas.
Fíjate en la llamada al imp si tira algún mensaje de posible conversión o algo así. Si la parte de localización no está bien configurada, va a representar por ejemplo, las ñ con símbolos raros.
http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm
Si manda un mensaje de conversión
He hecho la consulta en la tabla V$NLS_PARAMETERS en Oracle10g y el valor de NLS_NCHAR_CHARACTERSET y el de NLS_CHARACTERSET es UTF8.
La misma consulta pero en Oracle 8 me dice que el valor de NLS_NCHAR_CHARACTERSET y el de NLS_CHARACTERSET es US7ASCII.
Mi pregunta compañero es, ¿Cómo hago para cambiar el conjunto de caracteres de Oracle 10g y ponerlo igual a la de Oracle 8 (que los valores de NLS_NCHAR_CHARACTERSET y el de NLS_CHARACTERSET sean iguales tanto en 10g como en 8)? , solo haciendo un Update normal de la tabla? ¿O tengo que hacer algún cambio en el Init. Ora?
Esto con el fin de dejar en ambas bases de dato el mismo conjunto de caracteres (US7ASCII) y luego hacer nuevamente el Import y el Export a fin de evitar el error.
Gracias por la ayuda que me pueda brindar
Quedo atento;
Ellery Sammy
No es tan sencillo el cambio del juego de caracteres de la base, se puede hacer siempre y cuando el juego actual sea un subconjunto del nuevo. Hay herramientas para chequear que sea posible hacerlo.
Antes de tocar algo, quisiera que veas el mensaje que tira el import al ejecutarlo, ya que siempre avisa cuando se va a hacer una conversión (ahí podemos ver el tema de la configuración de los clientes si esta bien o no).
US7ASCII está contenido en UTF8, así que no tendría que haber problemas y me temo que es un problema de configuración de los clientes (que toman la configuración del window/unix) y es el imp/exp quien quiere hacer la conversión (cosa que gralmente no va), y si se configura bien el entorno del cliente (donde corres el imp/exp) le estaría dejando la conversión a la base de datos.
Por las dudas, prueba setear esto tanto antes de generar de nuevo el export, como en el servidor nuevo al hacer el import.
Setea la variable de entorno nls_lang en los dos lugares y prueba hacer el procedimiento de nuevo
export NLS_LANG=AMERICAN_AMERICA.US7ASCII.
Buena tarde.
La verdad desistí del exp/imp y opte por un upgrade que creí es un camino menos complicado, aunque también me pidió cambiar algunas cosas con relación al character set y una que otra casa, hasta ahora ha estado andando bien, no me he podido percatar de como termino por que di con eso a ultima hora del viernes en la oficina y lo deje corriendo, ya veré como quedo el lunes.
Muchas Gracias por su ayuda y el interés mostrado, me sirvió de mucho y espero poder seguir contando con su valiosa colaboración.
Muchas Gracias nuevamente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas