Evite los problemas relacionados con los conjuntos de caracteres durante la migración a un conjunto de caracteres multibyte.

    Publicado 08. febrero 2017

    Actualizado en octubre de 2025


    Introducción

    Al migrar su base de datos a Oracle 12+ o a un juego de caracteres multibyte como AL32UTF8, pueden surgir ciertos problemas sutiles que pueden pasar fácilmente desapercibidos.
    Aunque las versiones más recientes de Oracle simplifican muchos aspectos de la migración, las diferencias en la semántica del almacenamiento de caracteres pueden seguir provocando problemas inesperados durante la importación o la exportación.
    Si no se prepara para estas diferencias, es posible que se encuentre con datos truncados o registros omitidos al trasladar su base de datos.

    Afortunadamente, KeepTool Hora ofrece una forma intuitiva de analizar su esquema y detectar las columnas que podrían causar problemas antes de iniciar la migración.


    Retos de la conversión de conjuntos de caracteres

    En muchas bases de datos heredadas, el juego de caracteres es de un solo byte, como WE8ISO8859P1 o WE8MSWIN1252.
    Cada carácter, incluidos los caracteres nacionales especiales como ä, ö, ü o ß, se almacena como exactamente un byte (por ejemplo, hexadecimal E4, F6, FC, DF).

    Sin embargo, al migrar a un conjunto de caracteres multibyte como AL32UTF8, los mismos caracteres pueden requerir más de un byte.
    Como resultado, las columnas que se definen con semántica BYTE pueden exceder la longitud de byte permitida después de la conversión.
    Esto significa que una columna definida como VARCHAR2(4000 BYTE) ahora podría contener menos caracteres que antes, y los datos que superen el límite podrían provocar errores durante la importación.


    Análisis guiado en KeepTool

    Para ayudarle a identificar estas columnas, Hora incluye un comando integrado Herramientas | Buscar columnas VARCHAR2 que superan la longitud multibyte para el análisis de conversión de conjuntos de caracteres .
    Proporciona un flujo de trabajo claro y guiado que le guía paso a paso por las comprobaciones necesarias.

    How to find VARCHAR2 columns exceeding multi-byte length

    Cómo encontrar columnas VARCHAR2 que superan la longitud multibyte

    Al abrir el cuadro de diálogo, en la parte superior se muestran los ajustes de la sesión actual para
    NLS_LENGTH_SEMANTICS, MAX_STRING_SIZEy el juego de caracteres de la base de datos.
    Esta información es crucial para comprender cómo Oracle interpreta actualmente las longitudes de las columnas.

    Choosing the target character set to identify character set conflicts

    Selección del juego de caracteres de destino para identificar conflictos entre juegos de caracteres

    A continuación, puede seleccionar el juego de caracteres de destino (por ejemplo, AL32UTF8).
    Asegúrese de que la casilla «Longitud de bytes de destino > 4000» esté seleccionada y, a continuación, haga clic en Buscar columnas.
    Hora analizará su esquema y mostrará una lista de todas las columnas que podrían superar el límite de 4000 bytes después de la conversión.

    List of columns with possible character set conflicts

    Lista de columnas con posibles conflictos de conjuntos de caracteres

    La cuadrícula de resultados resalta todas las columnas críticas.
    Estas son las columnas en las que la longitud real en bytes de los datos sería demasiado grande una vez que la base de datos se convirtiera a un juego de caracteres multibyte.
    Hora facilita el reconocimiento de las áreas problemáticas de un vistazo.

    Including the optional check

    Incluyendo la comprobación opcional

    En el área de notas situada debajo, Hora genera automáticamente una consulta SQL que recupera las filas afectadas.
    Esto significa que puede comprobar inmediatamente qué entradas de datos específicas son las responsables de superar el límite, sin tener que crear su propia consulta de análisis.

    Finding conflicted data

    Búsqueda de datos conflictivos

    A través de este proceso guiado, Hora no solo detecta posibles problemas, sino que también le muestra exactamente dónde y por qué se producen.
    Como resultado, puede tomar medidas correctivas específicas antes de ejecutar la exportación o importación de la migración.


    Tomar medidas correctivas

    Una vez que Hora ha identificado las columnas problemáticas, puede proceder de varias maneras:

    • Cambiar la semántica BYTE a CHAR para medir la longitud de la columna en caracteres en lugar de bytes.

    • Recorte o ajuste los datos para que ninguna fila supere el límite de bytes en el juego de caracteres de destino.

    • Migrar columnas de texto grandes a CLOB si es necesario.

    Al aplicar estos ajustes con antelación, se asegura de que el proceso de migración se desarrolle sin problemas y sin interrupciones inesperadas.


    Resumen

    La migración a un juego de caracteres multibyte como AL32UTF8 puede revelar diferencias inesperadas entre la semántica BYTE y CHAR, especialmente cuando se trata de columnas de texto largas.
    Sin preparación, esto puede dar lugar a la truncación de datos o a importaciones fallidas.

    La herramienta Tools | Character set conversion analysis (Herramientas | Análisis de conversión de conjuntos de caracteres) de KeepTool le ayuda a anticipar estos problemas.
    El cuadro de diálogo le guía a través del análisis, resalta todas las columnas de riesgo e incluso proporciona una instrucción SQL para la verificación directa de los datos.
    De este modo, puede resolver todos los conflictos semánticos antes de realizar la exportación o la importación.


    ➡️ Pruebe KeepTool gratis

    Las herramientas Oracle de KeepTool están diseñadas específicamente para desarrolladores, administradores de bases de datos (DBA) y equipos de soporte. Con más de 25 años de experiencia, optimizamos continuamente nuestro software para que el análisis y la documentación de sus bases de datos sean más rápidos, eficientes y claros.