Conversión de juegos de caracteres de Oracle (5): 5. Práctica recomendada de Oracle
Echemos un vistazo al método de conversión de juegos de caracteres recomendado por Oracle. Puede consultar cómo usar CSALTER y sus limitaciones, cómo usar CSSCAN y su orden de ejecución, el archivo de resultados de ejecución y el DDL que crea la tabla de almacenamiento de resultados de ejecución de CSSCAN.
Esta es una continuación del artículo anterior.
Conversión de juegos de caracteres de Oracle (4): 4.Configuración del entorno de prueba
5. Método de conversión de juego de caracteres recomendado por Oracle (CSALTER, CSSCAN)
Oracle recomienda el método de exportación e importación completa y el método que utiliza el script CSALTER. En primer lugar, echemos un vistazo a cómo usar CSALTER.
5.1. Cómo usar CSALTER
La documentación de Oracle se puede encontrar en la siguiente URL.
Ejecute el siguiente procedimiento para cambiar el juego de caracteres de la base de datos.
- Apague la base de datos, utilizando una instrucción SHUTDOWN IMMEDIATE o SHUTDOWN NORMAL.
- Realice una copia de seguridad completa de la base de datos, ya que el script CSALTER no se puede revertir.
- Inicie la base de datos.
- Ejecute la utilidad Escáner de juego de caracteres de la base de datos.
CSSCAN /AS SYSDBA COMPLETO=Y… - Ejecute el script CSALTER.
@@CSALTER.PLB
APAGADO INMEDIATO; — o APAGADO NORMAL;
PUESTA EN MARCHA;
Sin embargo, CSALTER no convierte los datos generados por el usuario. (Algunos extractos de la URL anterior)
Tenga en cuenta que el script CSALTER no realiza ninguna conversión de datos de usuario. Solo cambia los metadatos del conjunto de caracteres en el diccionario de datos. Así, después de la operación CSALTER, Oracle se comporta como si la base de datos se hubiera creado utilizando el nuevo juego de caracteres.
Esta es una limitación de CSALTER, y el uso de CSALTER para la conversión de juegos de caracteres no es adecuado para la mayoría de los entornos de aplicación.
Sin embargo, CSSCAN (utilidad de escáner de juego de caracteres de base de datos) se puede utilizar con el fin de identificar de forma preliminar los datos que se pueden convertir para la base de datos que se va a convertir y los datos que son problemáticos durante la conversión.
5.2. Cómo usar CSSCAN
Puede comprobar los parámetros necesarios para ejecutar csscan con el siguiente comando.
ayuda csscan=y
C:\Users\ymlee>csscan help=y Character Set Scanner v2.2 : Release 11.2.0.1.0 - Production on 일 3월 20 22:58:48 2022 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. You can let Scanner prompt you for parameters by entering the CSSCAN command followed by your username/password: Example: CSSCAN \"SYSTEM/MANAGER AS SYSDBA\" Or, you can control how Scanner runs by entering the CSSCAN command followed by various parameters. To specify parameters, you use keywords: Example: CSSCAN \"SYSTEM/MANAGER AS SYSDBA\" FULL=y TOCHAR=utf8 ARRAY=1024000 PROCESS=3 Keyword Default Prompt Description ---------- ------- ------ ------------------------------------------------- USERID yes username/password FULL N yes scan entire database USER yes owner of tables to be scanned TABLE yes list of tables to scan COLUMN yes list of columns to scan EXCLUDE list of tables to exclude from scan TOCHAR yes new database character set name FROMCHAR current database character set name TONCHAR new national character set name FROMNCHAR current national character set name ARRAY 1024000 yes size of array fetch buffer PROCESS 1 yes number of concurrent scan process MAXBLOCKS split table if block size exceed MAXBLOCKS CAPTURE N capture convertible data SUPPRESS maximum number of exceptions logged for each table FEEDBACK report progress every N rows BOUNDARIES list of column size boundaries for summary report LASTRPT N generate report of the last database scan LOG scan base file name of report files PARFILE parameter file name PRESERVE N preserve existing scan results LCSD N no enable language and character set detection LCSDDATA LOSSY no define the scope of the detection HELP N show help screen (this screen) QUERY N select clause to scan subset of tables or columns ---------- ------- ------ ------------------------------------------------- Scanner terminated successfully.
Para obtener una explicación detallada de cada parámetro, consulte la siguiente URL.
csscan se ejecuta en el siguiente orden:
- Crear esquema: Ejecutar $ORACLE_HOME/rdbms/admin/csminst.sql
- Crear directorio: Crear D:\temp\csscan (para guardar archivos de resultados de ejecución)
- Ejecutar csscan
- Comprobar el resultado de la ejecución de csscan
Como resultado de la ejecución de csscan, se crean tres archivos.
- scan.txt: informe de resumen de resultados de escaneo
- scan.out: escanea la información de la tabla de destino
- scan.err: detalles del error
scan.txt (informe de resumen de resultados de escaneo) consta de los siguientes contenidos. (Ir a la documentación de Oracle al hacer clic)
- Tamaño de la base de datos
- Parámetros de exploración de la base de datos
- Resumen de escaneo
- Resumen de conversión del diccionario de datos
- Resumen de conversión de datos de aplicaciones
- Resumen de conversión de datos de aplicación por límite de tamaño de columna: salida solo cuando se especifica el parámetro BOUNDARIES
- Distribución de datos convertibles por tabla
- Distribución de datos convertibles por columna
- Índices a reconstruir
- Truncamiento debido a la semántica de caracteres
La descripción de Changeless, Convertible, Truncation y Lossy en [Resumen de conversión de datos] se puede encontrar en el documento a continuación.
https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch12scanner.htm#g1019330
Estado | Descripción |
Invariable | Los datos siguen siendo los mismos en el nuevo conjunto de caracteres – No hay cambio de datos al convertir el juego de caracteres |
Convertible | Los datos se pueden convertir con éxito al nuevo juego de caracteres – Los datos se pueden cambiar al convertir el juego de caracteres |
Truncamiento | Los datos se truncarán si se lleva a cabo la conversión – Datos truncados al convertir el juego de caracteres |
con pérdida | Los datos de los personajes se perderán si se realiza la conversión – Pérdida de datos (roto) al convertir el conjunto de caracteres |
5.2.1. Tabla para guardar los resultados de ejecución de CSSCAN
Entre varias tablas creadas cuando se ejecuta csminst.sql, los resultados de csscan se guardan en la siguiente tabla.
- CSM$TABLES
- CSM$COLUMNAS
- CSM$ERRORES
Tenga en cuenta que cada vez que se ejecuta CSSCAN, todos los datos de esta tabla se inicializan (los archivos scan.txt, scan.out, scan.err también se inicializan de la misma manera).
Si desea comparar los resultados mientras ejecuta CSSCAN varias veces, se recomienda hacer una copia de seguridad de los datos en una tabla separada.
Consulte el DDL a continuación cuando realice una copia de seguridad.
CREATE TABLE Z_CSSCAN_COL_SUMMARY AS SELECT '20140507' BASE_DT, U.USERNAME, TC.TABLE_NAME, TC.COLUMN_NAME ,CC.NUMROWS, CC.NULCNT, CC.CNVCNT, CC.CNVTYPE, CC.ERRCNT, CC.SIZERR ,CC.CNVERR, CC.MAXSIZ, CC.CHRSIZ FROM CSMIG.CSM$COLUMNS CC INNER JOIN DBA_USERS U ON (CC.USR# = U.USER_ID) INNER JOIN DBA_OBJECTS O ON (CC.OBJ# = O.OBJECT_ID) INNER JOIN DBA_TAB_COLUMNS TC ON (CC.COL# = TC.COLUMN_ID AND O.OBJECT_NAME = TC.TABLE_NAME) WHERE 1=1 AND U.USERNAME = 'LEG' AND O.OBJECT_TYPE = 'TABLE' AND CC.ERRCNT <> 0;
La muestra de datos generada como resultado de la ejecución DDL anterior es la siguiente.
Fila# | BASE_DT | NOMBRE DE USUARIO | NOMBRE DE LA TABLA | COLUMN_NAME | NUMEROS | NULCNT | CNVCNT | TIPOCNV | ERROR | TAMAÑORR | CNVERR | TAMAÑO MÁXIMO | CHRISIZ |
1 | 20140507 | PIERNA | PRUEBA_Z | valor | 2 | 0 | 0 | 0 | 2 | 0 | 2 | 12 | 0 |
2 | 20140507 | PIERNA | SUB_MON_STAT | LINE_NUM | 7426 | 0 | 0 | 0 | 7426 | 3238 | 7426 | 38 | 0 |
3 | 20140507 | PIERNA | SUB_MON_STAT | SUB_STA_NM | 7426 | 0 | 0 | 0 | 7426 | 1268 | 7426 | 54 | 0 |
4 | 20140507 | PIERNA | SUB_MON_STAT | COMUNICAR | 7426 | 7425 | 0 | 0 | 1 | 1 | 1 | 9000 | 0 |
5 | 20140507 | PIERNA | SUB_MON_STAT | REF_DES | 7426 | 7425 | 0 | 0 | 1 | 0 | 1 | 3000 | 0 |
Hasta ahora, hemos analizado el método de conversión de juegos de caracteres recomendado por Oracle (CSALTER, CSSCAN). A continuación, observamos los resultados de la ejecución de CSSCAN en los entornos de prueba US7ASCII y KO16MSWIN949.