Konvertierung von Oracle-Zeichensätzen (7): 5.4. KO16MSWIN949 CSSCAN-Ausführungsergebnis der Umgebung

Untersuchen Sie das CSSCAN-Ausführungsergebnis der KO16MSWIN949-Umgebung. Sie können die Schemaerstellung, die Verzeichniserstellung, die Ergebnisdatei scan.txt, scan.out, scan.err und den Zweck der CSS-Ausführung überprüfen.

5.4. KO16MSWIN949 CSSCAN-Ausführungsergebnis der Umgebung

5.4.1. Schema erstellen

Führen Sie das folgende Skript auf der KO16MSWIN949-Instanz aus, um ein Schema für die csscan-Ausführung zu erstellen.

-- MSWIN949
sqlplus sys/________@oramswin949 as sysdba
@%ORACLE_HOME%\rdbms\admin\csminst.sql
sqlplus sys/________@oramswin949 as sysdba
ALTER USER CSMIG DEFAULT TABLESPACE USERS;
EXIT
  • Zeile 3: Führen Sie csminst.sql aus, um Objekte wie csmig-Benutzer (Schema) und Tabellen zu erstellen, die für die csscan-Ausführung erforderlich sind. Zu diesem Zeitpunkt ist der Standardtabellenbereich für den csmig-Benutzer als System festgelegt.
  • Zeile 5: Ändern Sie den Standardtabellenbereich für csmig-Benutzer in Benutzer. Sie können zu einem anderen Tablespace mit ausreichendem Speicherplatz außer Benutzern wechseln.

5.4.2. Verzeichnis erstellen

Erstellen Sie ein Verzeichnis zum Speichern des CSS-Ausführungsergebnisses und wechseln Sie in das Verzeichnis.

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

5.4.3. csscan ausführen

Führen Sie csscan mit dem folgenden Befehl in der Windows-Eingabeaufforderung aus.

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

Es wurden zwei Parameter angegeben.

  • full: Geben Sie Y an, um die gesamte Datenbank zu scannen
    • Als Referenz können Sie den Benutzer des Scanziels mit dem Benutzerparameter angeben oder das Scanziel im Detail mit dem Tabellen- oder Spaltenparameter angeben.
  • tochar: Geben Sie AL32UTF8 an, den zu konvertierenden Zielzeichensatz (CHAR, VARCHAR2, CLOB, LONG type scan)
    • Als Referenz muss zum Scannen von NCHAR-, NVARCHAR2- und NCLOB-Typen der tonchar-Parameter angegeben werden.

5.4.4. Überprüfen Sie die CSS-Ausführung result-scan.txt (Ergebniszusammenfassungsbericht)

Der gesamte Inhalt von scan.txt in der Testumgebung KO16MSWIN949 sieht wie folgt aus.

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$)
-----------------------------------------------------------------------------------------

Darunter sind die Inhalte von „Application Data Conversion Summary“ keine Oracle-Systemdaten, sondern die vom Benutzer erstellten Daten, die nach Typ gescannt wurden.

[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%

Die Interpretation des Obigen ist wie folgt.

  • Beim Wechsel auf AL32UTF8 für den Typ VARCHAR2 können 2.579.942 Werte ohne Änderung konvertiert werden (Changeless), 14.635 Werte sind konvertierbar und 309 Werte werden abgeschnitten (Truncation) und gehen verloren/gebrochen (Lossy) Es gibt keinen Wert für wo dies auftritt
  • Daten anderer Typen CHAR, LONG und VARRAY werden nicht konvertiert.

Oben wurde die Erklärung von Changeless, Convertible, Truncation und Lossy im vorherigen Artikel geschrieben und unten erneut markiert.

Oracle-Zeichensatzkonvertierung (5) – 5.2. Verwendung von CSSCAN

StatusBeschreibung
UnveränderlichDie Daten bleiben im neuen Zeichensatz gleich
– Keine Datenänderung beim Konvertieren des Zeichensatzes
CabrioDaten können erfolgreich in den neuen Zeichensatz konvertiert werden
– Daten können bei Zeichensatzkonvertierung geändert werden
AbschneidenBei einer Konvertierung werden die Daten abgeschnitten
– Daten werden beim Konvertieren des Zeichensatzes abgeschnitten
VerlustbehaftetBei einer Konvertierung gehen Zeichendaten verloren
– Datenverlust (kaputt) beim Konvertieren des Zeichensatzes

„Verteilung konvertierbarer, abgeschnittener und verlustbehafteter Daten nach Tabelle“ und „Verteilung konvertierbarer, abgeschnittener und verlustbehafteter Daten nach Spalte“ sind Scanergebnisse für jede Tabelle und Spalte.

Nachfolgend einige Auszüge aus der Datei.

[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
-------------------------------------------------- ---------------- ---------------- ----------------

Die Interpretation des Obigen ist wie folgt.

  • Wenn die Tabelle LEG.SUB_MON_STAT auf AL32UTF8 geändert wird, werden normalerweise 14.544 Werte konvertiert (Convertible), 309 Werte werden abgeschnitten (Truncation), und es geht kein Wert verloren/gebrochen. Wie folgt für jede Spalte
    • COMMT: Beim Wechsel auf AL32UTF8 wird normalerweise kein Wert konvertiert, ein Wert wird abgeschnitten und kein Wert geht verloren/kaputt.
    • LINE_NUM: Beim Wechsel auf AL32UTF8 werden normalerweise 7.286 Werte konvertiert (Convertible), 140 Werte werden abgeschnitten (Truncation), und es geht kein Wert verloren/gebrochen (Lossy)
    • SUB_STA_NM: Beim Wechsel auf AL32UTF8 werden 7.258 Werte normal konvertiert, 168 Werte abgeschnitten und kein Wert geht verloren/kaputt.
  • Wenn die LEG.Z_TEST-Tabelle in AL32UTF8 geändert wird, werden zwei Werte normal konvertiert, und es werden keine Werte abgeschnitten oder gehen verloren/gebrochen. Dem entspricht die Spalte VAL.

5.4.5. Überprüfen Sie das Ergebnis der csscan-Ausführung-scan.out (Informationen zur Scan-Zieltabelle)

In der Datei scan.out können Sie die Liste der zu scannenden Tabellen überprüfen.

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.

Hier können Sie überprüfen:

  • Zeile 23: Scannen Sie die Tabelle SUB_MON_STAT des in der Testumgebung angelegten LEG-Benutzers.

5.4.6. Überprüfen Sie das CSS-Ausführungsergebnis - scan.err (Fehlerdetails)

In der Datei scan.err können Sie Details zu Zeichensatzkonvertierungsfehlern jeder Tabelle und Spalte sehen.

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 동대문역사문화공원
...
------------------ ------------------ ----- ------------------------------

CSSCAN-Ausführungsergebnisdateien in der KO16MSWIN949-Umgebung finden Sie unten im Github-Repository.

5.5. Hinweis: Verwendung von CSSCAN

CSSCAN kann für zwei Zwecke verwendet werden.

  1. Überprüfen Sie die RowID und ColumnID von Daten, die während der Konvertierung abgeschnitten oder beschädigt wurden –> Zur Datenbereinigung verwenden
    • Wenn die meisten Daten abgeschnitten oder beschädigt sind (z. B. US7ASCII in AL32UTF8), müssen fast alle Daten manuell bereinigt werden, was zeit- und kostenintensiv ist.
  2. Überprüfen Sie die Liste der Spalten, um die Länge der As-Is-Spalte zu erhöhen –> Wird zum Entwerfen des To-Be-Datenmodells verwendet
    • Es ist sehr aussagekräftig, da es verwendet werden kann, um die Anzahl der Ziffern in der Standarddomäne beim Design von To-Be zu bestimmen.

Außerdem wird empfohlen, sich beim Erstellen einer Replikationstabelle, die den Zeichensatz für As-Is-Daten vorab konvertiert, auf diese Länge (MAXSIZ) zu beziehen. Wenn die Spaltenlänge der As-Is-Tabelle gleich konfiguriert ist, schlägt das Laden der Daten mit folgendem Fehler fehl, wenn die vergrößerte Länge nach der Zeichensatzkonvertierung die Spaltenlänge der As-Is-Tabelle überschreitet.

– ORA-12899: Wert zu groß für Spalte „OWNER“.

(z. B. ORA-12899: Wert zu groß für Spalte „LEG“. „SUB_MON_STAT“ „LINE_NUM“ (aktuell: 16, Maximum: 14) )


Das Folgende ist eine Abfrageanweisung, die das Objekt prüft, bei dem ein Fehler während der Konvertierung zwischen Tabellenspalten eines bestimmten Benutzers auftritt, nachdem CSSCAN ausgeführt wurde, die aktuelle Länge, die Konvertierungslänge und ob in CLOB konvertiert werden soll.

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;

Ein Beispiel für extrahierte Daten ist wie folgt.

Reihe#NUTZERNAMETABELLENNAMESPALTENNAMEDATENTYPDATEN_LÄNGE
(aktuelle Länge)
MAXGRÖSSE
(Länge transformieren)
CLOB_CONV_YN
(KLOB Wandlung)
1BEINSUB_MON_STATLINE_NUMVARCHAR21420 
2BEINSUB_MON_STATSUB_STA_NMVARCHAR22027 
3BEINSUB_MON_STATCOMMTVARCHAR240004500Y

Die Bedeutung jeder Spalte ist wie folgt.

SpaltennameBedeutung
NUTZERNAMETischbesitzer
TABELLENNAMEZieltabellenname
SPALTENNAMESpaltenname der Zieltabelle
DATENTYPAktueller Datentyp der Zielspalte
DATEN_LÄNGEAktuelle Datenlänge der Zielspalte
MAXGRÖSSEErwartete maximale Länge nach Zeichensatzkonvertierung
CLOB_CONV_YNOb der aktuelle VARCHAR2-Typ in CLOB geändert werden kann (Y: Vorbehaltlich einer Änderung in CLOB)

Beachten Sie, dass, da die Daten basierend auf den Daten zum Zeitpunkt der CSSCAN-Ausführung überprüft wurden, selbst wenn die Länge basierend auf diesem Standard erhöht wird, ein Fehler „ORA-12899: Wert zu groß für Spalte“ je nach Vergrößerung der Spalte auftreten kann Länge oder Daten Die Möglichkeit besteht immer noch.


Bisher haben wir uns die Ergebnisse der Ausführung von CSSCAN in der Testumgebung KO16MSWIN949 angesehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEDeutsch