Conversión de juego de caracteres de Oracle (7): 5.4. KO16MSWIN949 Entorno CSSCAN Resultado de ejecución

Examine el resultado de ejecución de CSSCAN del entorno KO16MSWIN949. Puede verificar la creación de esquemas, la creación de directorios, el archivo de resultados de ejecución de csscan scan.txt, scan.out, el contenido de scan.err y el propósito de csscan.

5.4. KO16MSWIN949 Entorno CSSCAN Resultado de ejecución

5.4.1. crear esquema

Ejecute el siguiente script en la instancia KO16MSWIN949 para crear un esquema para la ejecución de csscan.

-- MSWIN949
sqlplus sys/________@oramswin949 as sysdba
@%ORACLE_HOME%\rdbms\admin\csminst.sql
sqlplus sys/________@oramswin949 as sysdba
ALTER USER CSMIG DEFAULT TABLESPACE USERS;
EXIT
  • Línea 3: Ejecute csminst.sql para crear objetos como el usuario csmig (esquema) y las tablas necesarias para la ejecución de csscan. En este momento, el tablespace predeterminado para el usuario csmig se designa como sistema.
  • Línea 5: cambie el espacio de tabla predeterminado para el usuario csmig a usuarios. Puede cambiar a otro tablespace con suficiente espacio de almacenamiento que no sean usuarios.

5.4.2. crear directorio

Cree un directorio para guardar el resultado de la ejecución de csscan y muévase al directorio.

mkdir D:\Temp\csscan\MSWIN949
cd D:\Temp\csscan\MSWIN949

5.4.3. ejecutar csscan

Ejecute csscan con el siguiente comando en el símbolo del sistema de Windows.

csscan \"sys/________@oramswin949 as sysdba\" full=y tochar=AL32UTF8

Se especificaron dos parámetros.

  • completo: especifique Y para escanear toda la base de datos
    • Como referencia, puede designar el usuario de destino de exploración con el parámetro de usuario o especificar el destino de exploración en detalle con el parámetro de tabla o columna.
  • tochar: especifique AL32UTF8, el conjunto de caracteres de destino que se convertirá (CHAR, VARCHAR2, CLOB, escaneo de tipo LONG)
    • Como referencia, para escanear los tipos NCHAR, NVARCHAR2 y NCLOB, se debe especificar el parámetro tonchar.

5.4.4. Verifique la ejecución de csscan result-scan.txt (informe de resumen de resultados)

El contenido completo de scan.txt en el entorno de prueba KO16MSWIN949 es el siguiente.

Database Scan Summary Report

Time Started  : 2014-05-07 20:21:51
Time Completed: 2014-05-07 20:22:46

Process ID         Time Started       Time Completed
---------- -------------------- --------------------
​​​​​​​​​1  2014-05-07 20:22:04  2014-05-07 20:22:45
---------- -------------------- --------------------

[Database Size]

Tablespace                           Used            Free           Total       Expansion
------------------------- --------------- --------------- --------------- ---------------
SYSTEM                            563.25M         136.75M         700.00M            .00K
SYSAUX                            360.19M         239.81M         600.00M           2.00K
UNDOTBS1                           19.25M         465.75M         485.00M            .00K
TEMP                                 .00K            .00K            .00K            .00K
USERS                               1.81M           3.19M           5.00M          39.00K
------------------------- --------------- --------------- --------------- ---------------
Total                             944.50M         845.50M       1,790.00M          42.00K

[Database Scan Parameters]

Parameter                      Value                                           
------------------------------ ------------------------------------------------
CSSCAN Version                 v2.1                                            
Instance Name                  oramswin949                                     
Database Version               11.2.0.1.0                                      
Scan type                      Full database                                   
Scan CHAR data?                YES                                             
Database character set         KO16MSWIN949                                    
FROMCHAR                       KO16MSWIN949                                    
TOCHAR                         AL32UTF8                                        
Scan NCHAR data?               NO                                              
Array fetch buffer size        1024000                                         
Number of processes            1                                               
Capture convertible data?      NO                                              
------------------------------ ------------------------------------------------

[Scan Summary]

All character type data in the data dictionary are convertible to the new character set
Some character type application data are not convertible to the new character set

[Data Dictionary Conversion Summary]

Data Dictionary Tables:

Datatype                    Changeless      Convertible       Truncation            Lossy
--------------------- ---------------- ---------------- ---------------- ----------------
VARCHAR2                     2,566,115               36                0                0
CHAR                               354                0                0                0
LONG                           182,178                0                0                0
VARRAY                          39,205                0                0                0
--------------------- ---------------- ---------------- ---------------- ----------------
Total                        2,787,852               36                0                0
Total in percentage             99.999%           0.001%           0.000%           0.000%

The data dictionary can not be safely migrated using the CSALTER script

XML CSX Dictionary Tables:

Datatype                    Changeless      Convertible       Truncation            Lossy
--------------------- ---------------- ---------------- ---------------- ----------------
VARCHAR2                           493                0                0                0
CHAR                                 0                0                0                0
LONG                                 0                0                0                0
VARRAY                               0                0                0                0
--------------------- ---------------- ---------------- ---------------- ----------------
Total                              493                0                0                0
Total in percentage            100.000%           0.000%           0.000%           0.000%

[Application Data Conversion Summary]

Datatype                    Changeless      Convertible       Truncation            Lossy
--------------------- ---------------- ---------------- ---------------- ----------------
VARCHAR2                     2,579,942           14,635              309                0
CHAR                                 0                0                0                0
LONG                                 0                0                0                0
VARRAY                               0                0                0                0
--------------------- ---------------- ---------------- ---------------- ----------------
Total                        2,579,942           14,635              309                0
Total in percentage             99.424%           0.564%           0.012%           0.000%

[Distribution of Convertible, Truncated and Lossy Data by Table]

Data Dictionary Tables:

USER.TABLE                                              Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
SYS.COM$                                                         11                0                0
SYS.ERROR$                                                       10                0                0
SYS.JOB$                                                          2                0                0
SYS.SCHEDULER$_JOB                                                8                0                0
SYS.SCHEDULER$_PROGRAM                                            5                0                0
-------------------------------------------------- ---------------- ---------------- ----------------

XML CSX Dictionary Tables:

USER.TABLE                                              Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
-------------------------------------------------- ---------------- ---------------- ----------------

Application Data:

USER.TABLE                                              Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
APEX_030200.WWV_FLOW_UPGRADE_PROGRESS                            89                0                0
LEG.SUB_MON_STAT                                             14,544              309                0
LEG.Z_TEST                                                        2                0                0
-------------------------------------------------- ---------------- ---------------- ----------------

[Distribution of Convertible, Truncated and Lossy Data by Column]

Data Dictionary Tables:

USER.TABLE|COLUMN                                       Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
SYS.COM$|COMMENT$                                                11                0                0
SYS.ERROR$|TEXT                                                  10                0                0
SYS.JOB$|NLSENV                                                   2                0                0
SYS.SCHEDULER$_JOB|NLS_ENV                                        8                0                0
SYS.SCHEDULER$_PROGRAM|NLS_ENV                                    5                0                0
-------------------------------------------------- ---------------- ---------------- ----------------

XML CSX Dictionary Tables:

USER.TABLE|COLUMN                                       Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
-------------------------------------------------- ---------------- ---------------- ----------------

Application Data:

USER.TABLE|COLUMN                                       Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
APEX_030200.WWV_FLOW_UPGRADE_PROGRESS|UPGRADE_ERR                89                0                0
LEG.SUB_MON_STAT|COMMT                                            0                1                0
LEG.SUB_MON_STAT|LINE_NUM                                     7,286              140                0
LEG.SUB_MON_STAT|SUB_STA_NM                                   7,258              168                0
LEG.Z_TEST|VAL                                                    2                0                0
-------------------------------------------------- ---------------- ---------------- ----------------

[Indexes to be Rebuilt]

USER.INDEX on USER.TABLE(COLUMN)                                                         
-----------------------------------------------------------------------------------------
SYS.I_SCHEDULER_JOB4 on SYS.SCHEDULER$_JOB(SYS_NC00056$)
SYS.I_SCHEDULER_JOB1 on SYS.SCHEDULER$_JOB(SYS_NC00055$)
-----------------------------------------------------------------------------------------

Entre ellos, el contenido del "Resumen de conversión de datos de la aplicación" no son los datos del sistema Oracle, sino los datos creados por el usuario, escaneados por tipo.

[Application Data Conversion Summary]

Datatype                    Changeless      Convertible       Truncation            Lossy
--------------------- ---------------- ---------------- ---------------- ----------------
VARCHAR2                     2,579,942           14,635              309                0
CHAR                                 0                0                0                0
LONG                                 0                0                0                0
VARRAY                               0                0                0                0
--------------------- ---------------- ---------------- ---------------- ----------------
Total                        2,579,942           14,635              309                0
Total in percentage             99.424%           0.564%           0.012%           0.000%

La interpretación de lo anterior es la siguiente.

  • Al cambiar a AL32UTF8 para el tipo VARCHAR2, 2 579 942 valores se pueden convertir sin cambio (Changeless), 14 635 valores son convertibles y 309 valores están truncados (Truncation) y perdidos/rotos (Lossy) No hay valor para que esto ocurre
  • Los datos de otros tipos CHAR, LONG y VARRAY no están sujetos a conversión.

En lo anterior, la explicación de Changeless, Convertible, Truncation y Lossy se escribió en el artículo anterior y se marca nuevamente a continuación.

Conversión de juego de caracteres de Oracle (5) – 5.2. Cómo usar CSSCAN

EstadoDescripción
InvariableLos datos siguen siendo los mismos en el nuevo conjunto de caracteres
– No hay cambio de datos al convertir el juego de caracteres
ConvertibleLos datos se pueden convertir con éxito al nuevo juego de caracteres
– Los datos se pueden cambiar al convertir el juego de caracteres
TruncamientoLos datos se truncarán si se lleva a cabo la conversión
– Datos truncados al convertir el juego de caracteres
con pérdidaLos datos de los personajes se perderán si se realiza la conversión
– Pérdida de datos (roto) al convertir el conjunto de caracteres

"Distribución de datos convertibles, truncados y con pérdida por tabla" y "Distribución de datos convertibles, truncados y con pérdida por columna" son resultados de exploración para cada tabla y columna.

A continuación se muestran algunos extractos del archivo.

[Distribution of Convertible, Truncated and Lossy Data by Table]

...
Application Data:

USER.TABLE                                              Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
APEX_030200.WWV_FLOW_UPGRADE_PROGRESS                            89                0                0
LEG.SUB_MON_STAT                                             14,544              309                0
LEG.Z_TEST                                                        2                0                0
-------------------------------------------------- ---------------- ---------------- ----------------

[Distribution of Convertible, Truncated and Lossy Data by Column]

...
Application Data:

USER.TABLE|COLUMN                                       Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
APEX_030200.WWV_FLOW_UPGRADE_PROGRESS|UPGRADE_ERR                89                0                0
LEG.SUB_MON_STAT|COMMT                                            0                1                0
LEG.SUB_MON_STAT|LINE_NUM                                     7,286              140                0
LEG.SUB_MON_STAT|SUB_STA_NM                                   7,258              168                0
LEG.Z_TEST|VAL                                                    2                0                0
-------------------------------------------------- ---------------- ---------------- ----------------

La interpretación de lo anterior es la siguiente.

  • Cuando la tabla LEG.SUB_MON_STAT se cambia a AL32UTF8, normalmente se convierten 14 544 valores (Convertible), 309 valores se truncan (Truncamiento) y ningún valor se pierde/rompe. De la siguiente manera para cada columna
    • COMMT: cuando se cambia a AL32UTF8, normalmente no se convierte ningún valor, se trunca un valor y no se pierde ni se rompe ningún valor.
    • LINE_NUM: al cambiar a AL32UTF8, normalmente se convierten 7286 valores (Convertible), 140 valores se truncan (Truncation) y ningún valor se pierde/rompe (Lossy)
    • SUB_STA_NM: al cambiar a AL32UTF8, normalmente se convierten 7258 valores (Convertible), 168 valores se truncan (Truncation) y ningún valor se pierde/rompe (Lossy)
  • Cuando la tabla LEG.Z_TEST se cambia a AL32UTF8, dos valores se convierten normalmente y ningún valor se trunca, se pierde o se rompe. La columna VAL corresponde a esto.

5.4.5. Verifique la ejecución de csscan result-scan.out (información de la tabla de destino de escaneo)

En el archivo scan.out, puede consultar la lista de tablas para escanear.

Character Set Scanner v2.2 : Release 11.2.0.1.0 - Production on Wed May 7 20:21:48 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Enter array fetch buffer size: 1024000 > 
Enter number of scan processes to utilize(1..64): 1 > 
Enumerating tables to scan...

. process 1 scanning SYS.SOURCE$[AAAADfAABAAAAXYAAA]
. process 1 scanning SYS.PARAMETER$[AAAAH3AABAAAAzgAAA]
. process 1 scanning SYS.TYPE$[AAAAH3AABAAAAzgAAA]
. process 1 scanning SYS.ATTRIBUTE$[AAAAH3AABAAAAzgAAA]
...
. process 1 scanning MDSYS.SDO_COORD_REF_SYS[AAAPKtAACAAAEtYAAA]
. process 1 scanning XDB.XDB$H_LINK[AAANh/AACAAACUwAAA]
. process 1 scanning SYS.SYS$SERVICE_METRICS_TAB[AAADI9AACAAACEAAAA]
...
. process 1 scanning LEG.SUB_MON_STAT[AAAQSRAAEAAAACIAAA]
...
. process 1 scanning XDB.PRIN_PT[AAAN2VAACAAAEDoAAA]
ORA-30967: operation directly on the Path Table is disallowed

CSS-00144: failed to scan table XDB.PRIN_PT


Creating Database Scan Summary Report...

Creating Individual Exception Report...

Scanner terminated successfully.

Aquí puedes consultar:

  • Línea 23: Escanee la tabla SUB_MON_STAT del usuario LEG creado en el entorno de prueba.

5.4.6. Compruebe el resultado de la ejecución de csscan - scan.err (detalles del error)

En el archivo scan.err, puede ver los detalles de los errores de conversión del conjunto de caracteres de cada tabla y columna.

Database Scan Individual Exception Report


[Database Scan Parameters]

Parameter                      Value
------------------------------ ------------------------------------------------
CSSCAN Version                 v2.1
Instance Name                  oramswin949
Database Version               11.2.0.1.0
Scan type                      Full database
Scan CHAR data?                YES
Database character set         KO16MSWIN949
FROMCHAR                       KO16MSWIN949
TOCHAR                         AL32UTF8
Scan NCHAR data?               NO
Array fetch buffer size        1024000
Number of processes            1
Capture convertible data?      NO
------------------------------ ------------------------------------------------

[Data Dictionary individual exceptions]

User  : SYS
Table : COM$
Column: COMMENT$
Type  : VARCHAR2(4000)
Number of Exceptions         : 0
Max Post Conversion Data Size: 381

ROWID              Exception Type      Size Cell Data(first 30 bytes)
------------------ ------------------ ----- ------------------------------
AAAACIAABAAARCPABN convertible              사용월
AAAACIAABAAARCPABO convertible              호선명
AAAACIAABAAARCPABP convertible              지하철역코드
AAAACIAABAAARCPABQ convertible              지하철역명
AAAACIAABAAARCPABR convertible              승차인원수
AAAACIAABAAARCPABS convertible              하차인원수
AAAACIAABAAARCPABT convertible              작업일자
AAAACIAABAAARCPABU convertible              비고
AAAACIAABAAARCPABV convertible              참조설명
AAAACIAABAAARCPABW convertible              참조이미지
AAAACIAABAAARCPABX convertible              지하철역별승하차인원
------------------ ------------------ ----- ------------------------------


[Application data individual exceptions]

User  : LEG
Table : SUB_MON_STAT
Column: LINE_NUM
Type  : VARCHAR2(14)
Number of Exceptions         : 140
Max Post Conversion Data Size: 20

ROWID              Exception Type      Size Cell Data(first 30 bytes)
------------------ ------------------ ----- ------------------------------
AAAQSRAAEAAAAC/ABp exceed column size    20 공항철도 1호선
AAAQSRAAEAAAAC/ABq exceed column size    20 공항철도 1호선
AAAQSRAAEAAAAC/ABr exceed column size    20 공항철도 1호선
...
------------------ ------------------ ----- ------------------------------

User  : LEG
Table : SUB_MON_STAT
Column: COMMT
Type  : VARCHAR2(4000)
Number of Exceptions         : 1
Max Post Conversion Data Size: 4500

ROWID              Exception Type      Size Cell Data(first 30 bytes)
------------------ ------------------ ----- ------------------------------
AAAQSRAAEAAAACNAAA exceed column size  4500 서울역서울역서울역서울역서울역
------------------ ------------------ ----- ------------------------------

User  : LEG
Table : SUB_MON_STAT
Column: SUB_STA_NM
Type  : VARCHAR2(20)
Number of Exceptions         : 168
Max Post Conversion Data Size: 27

ROWID              Exception Type      Size Cell Data(first 30 bytes)
------------------ ------------------ ----- ------------------------------
AAAQSRAAEAAAAC+AA8 exceed column size    24 디지털미디어시티
AAAQSRAAEAAAAC+AAC exceed column size    21 가산디지털단지
AAAQSRAAEAAAAC/AAR exceed column size    27 동대문역사문화공원
...
------------------ ------------------ ----- ------------------------------

Los archivos de resultados de ejecución de CSSCAN en el entorno KO16MSWIN949 se pueden encontrar en el repositorio de github a continuación.

5.5. Nota: Uso de CSSCAN

CSSCAN se puede utilizar para dos propósitos.

  1. Verifique el ID de fila y el ID de columna de los datos que se cortan o rompen durante la conversión -> Usar para la purificación de datos
    • Si la mayoría de los datos están truncados o dañados (por ejemplo, US7ASCII a AL32UTF8), casi todos los datos deben limpiarse manualmente, lo que lleva mucho tiempo y es costoso.
  2. Verifique la lista de columnas para aumentar la longitud de la columna Tal como está -> Se utiliza para diseñar el modelo de datos To-Be
    • Es muy significativo ya que puede usarse para determinar el número de dígitos en el dominio estándar al diseñar To-Be.

Además, se recomienda hacer referencia a esta longitud (MAXSIZ) al crear una tabla de replicación que convierte el conjunto de caracteres para datos tal cual por adelantado. Si la longitud de columna de la tabla Tal cual está configurada de la misma manera, la carga de datos falla con el siguiente error si la longitud aumentada después de la conversión del juego de caracteres excede la longitud de columna de la tabla Tal cual.

– ORA-12899: valor demasiado grande para la columna "PROPIETARIO". "TABLA". "COLUMNA" (real: longitud insertada, máximo: longitud declarada)

(por ejemplo, ORA-12899: valor demasiado grande para la columna "LEG". "SUB_MON_STAT"".LINE_NUM" (real: 16, máximo: 14))


La siguiente es una declaración de consulta que verifica si se debe convertir a CLOB, la longitud actual, la longitud de la conversión y el destino donde ocurre un error durante la conversión entre las columnas de la tabla de un usuario específico después de que se ejecuta CSSCAN.

SELECT  U.USERNAME, TC.TABLE_NAME, TC.COLUMN_NAME, TC.DATA_TYPE, TC.DATA_LENGTH, CC.MAXSIZ
       ,CASE WHEN TC.DATA_TYPE <> 'CLOB' AND CC.MAXSIZ > 4000 THEN 'Y' END AS CLOB_CONV_YN
  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  U.USERNAME = 'LEG'
   AND  O.OBJECT_TYPE = 'TABLE'
   AND  CC.ERRCNT <> 0;

Una muestra de los datos extraídos es la siguiente.

Fila#NOMBRE DE USUARIONOMBRE DE LA TABLACOLUMN_NAMETIPO DE DATOSLONGITUD DE DATOS
(longitud actual)
TAMAÑO MÁXIMO
(transforma la longitud)
CLOB_CONV_YN
(CLOB conversión)
1PIERNASUB_MON_STATLINE_NUMVARCHAR21420 
2PIERNASUB_MON_STATSUB_STA_NMVARCHAR22027 
3PIERNASUB_MON_STATCOMUNICARVARCHAR240004500Y

El significado de cada columna es el siguiente.

nombre de la columnasentido
NOMBRE DE USUARIOdueño de la mesa
NOMBRE DE LA TABLAnombre de la tabla de destino
COLUMN_NAMENombre de columna de la tabla de destino
TIPO DE DATOSTipo de datos actual de la columna de destino
LONGITUD DE DATOSLongitud de datos actual de la columna de destino
TAMAÑO MÁXIMOLongitud máxima esperada después de la conversión del conjunto de caracteres
CLOB_CONV_YNSi el tipo VARCHAR2 actual está sujeto a cambio a CLOB (Y: Sujeto a cambio a CLOB)

Tenga en cuenta que debido a que los datos se verificaron en función de los datos en el momento en que se ejecutó CSSCAN, incluso si la longitud aumenta según este estándar, puede ocurrir un error "ORA-12899: valor demasiado grande para la columna" según el aumento en la columna. longitud o datos La posibilidad sigue ahí.


Hasta ahora, hemos analizado los resultados de ejecutar CSSCAN en el entorno de prueba KO16MSWIN949.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol