Oracle-Zeichensatzkonvertierung (5): 5. Von Oracle empfohlene Vorgehensweise
Werfen wir einen Blick auf die von Oracle empfohlene Zeichensatzkonvertierungsmethode. Sie können überprüfen, wie CSALTER und seine Einschränkungen verwendet werden, wie CSSCAN und seine Ausführungsreihenfolge, die Ausführungsergebnisdatei und die DDL verwendet werden, die die CSSCAN-Ausführungsergebnis-Speichertabelle erstellt.
Dies ist eine Fortsetzung des vorherigen Artikels.
Oracle-Zeichensatzkonvertierung (4): 4.Konfigurieren der Testumgebung
5. Von Oracle empfohlene Konvertierungsmethode für Zeichensätze (CSALTER, CSSCAN)
Oracle empfiehlt die Methode Full Export & Import und die Methode mit dem CSALTER-Skript. Lassen Sie uns zunächst einen Blick auf die Verwendung von CSALTER werfen.
5.1. Wie benutzt man CSALTER
Die Oracle-Dokumentation finden Sie unter der folgenden URL.
Führen Sie das folgende Verfahren aus, um den Zeichensatz der Datenbank zu ändern.
- Fahren Sie die Datenbank herunter, indem Sie entweder eine SHUTDOWN IMMEDIATE- oder eine SHUTDOWN NORMAL-Anweisung verwenden.
- Führen Sie eine vollständige Sicherung der Datenbank durch, da das CSALTER-Skript nicht rückgängig gemacht werden kann.
- Starten Sie die Datenbank.
- Führen Sie das Dienstprogramm Database Character Set Scanner aus.
CSSCAN /AS SYSDBA FULL=J… - Führen Sie das CSALTER-Skript aus.
@@CSALTER.PLB
SOFORT ABSCHALTEN; — oder HERUNTERFAHREN NORMAL;
ANFANG;
CSALTER konvertiert jedoch keine benutzergenerierten Daten. (Einige Auszüge aus der obigen URL)
Beachten Sie, dass Das CSALTER-Skript führt keine Benutzerdatenkonvertierung durch. Es ändert nur die Zeichensatz-Metadaten im Datenwörterbuch. Daher verhält sich Oracle nach der CSALTER-Operation so, als wäre die Datenbank mit dem neuen Zeichensatz erstellt worden.
Dies ist eine Einschränkung von CSALTER, und die Verwendung von CSALTER für die Zeichensatzkonvertierung ist für die meisten Anwendungsumgebungen nicht geeignet.
CSSCAN (Database Character Set Scanner Utility) kann jedoch verwendet werden, um Daten, die für die zu konvertierende Datenbank konvertiert werden können, und Daten, die während der Konvertierung problematisch sind, vorläufig zu identifizieren.
5.2. Verwendung von CSSCAN
Sie können die zum Ausführen von csscan erforderlichen Parameter mit dem folgenden Befehl überprüfen.
csscan help=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.
Eine detaillierte Erläuterung der einzelnen Parameter finden Sie unter der folgenden URL.
csscan wird in der folgenden Reihenfolge ausgeführt:
- Schema erstellen: Führen Sie $ORACLE_HOME/rdbms/admin/csminst.sql aus
- Verzeichnis erstellen: D:\temp\csscan erstellen (zum Speichern von Ausführungsergebnisdateien)
- csscan ausführen
- Überprüfen Sie das Ergebnis der CSS-Ausführung
Als Ergebnis der csscan-Ausführung werden drei Dateien erstellt.
- scan.txt: Zusammenfassungsbericht des Scanergebnisses
- scan.out: Zieltabelleninformationen scannen
- scan.err: Fehlerdetails
scan.txt (Zusammenfassungsbericht der Scan-Ergebnisse) besteht aus den folgenden Inhalten. (Wenn Sie darauf klicken, gehen Sie zur Oracle-Dokumentation.)
- Datenbankgröße
- Datenbank-Scan-Parameter
- Scan-Zusammenfassung
- Zusammenfassung der Data Dictionary-Konvertierung
- Zusammenfassung der Anwendungsdatenkonvertierung
- Zusammenfassung der Anwendungsdatenkonvertierung pro Spaltengrößengrenze: Ausgabe nur, wenn der Parameter BOUNDARIES angegeben ist
- Verteilung der konvertierbaren Daten pro Tabelle
- Verteilung konvertierbarer Daten pro Spalte
- Neu zu erstellende Indizes
- Trunkierung aufgrund der Zeichensemantik
Die Beschreibung von Changeless, Convertible, Truncation und Lossy in [Zusammenfassung der Datenkonvertierung] finden Sie im folgenden Dokument.
https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch12scanner.htm#g1019330
Status | Beschreibung |
Unveränderlich | Die Daten bleiben im neuen Zeichensatz gleich – Keine Datenänderung beim Konvertieren des Zeichensatzes |
Cabrio | Daten können erfolgreich in den neuen Zeichensatz konvertiert werden – Daten können bei Zeichensatzkonvertierung geändert werden |
Abschneiden | Bei einer Konvertierung werden die Daten abgeschnitten – Daten werden beim Konvertieren des Zeichensatzes abgeschnitten |
Verlustbehaftet | Bei einer Konvertierung gehen Zeichendaten verloren – Datenverlust (kaputt) beim Konvertieren des Zeichensatzes |
5.2.1. Tabelle zum Speichern der CSSCAN-Ausführungsergebnisse
Unter mehreren Tabellen, die erstellt werden, wenn csminst.sql ausgeführt wird, werden CSS-Ergebnisse in der folgenden Tabelle gespeichert.
- CSM$TABLES
- CSM$COLUMNS
- CSM$ERRORS
Beachten Sie, dass jedes Mal, wenn CSSCAN ausgeführt wird, alle Daten in dieser Tabelle initialisiert werden (scan.txt-, scan.out-, scan.err-Dateien werden ebenfalls auf die gleiche Weise initialisiert).
Wenn Sie die Ergebnisse bei mehrfacher Ausführung von CSSCAN vergleichen möchten, empfiehlt es sich, die Daten als separate Tabelle zu sichern.
Bitte beziehen Sie sich beim Sichern auf die DDL unten.
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;
Das als Ergebnis der obigen DDL-Ausführung erzeugte Datenbeispiel ist wie folgt.
Reihe# | BASE_DT | NUTZERNAME | TABELLENNAME | SPALTENNAME | ZAHLEN | NULCNT | CNVCNTs | CNVTYPE | FEHLER | SIZERR | CNVERR | MAXGRÖSSE | CHRSIZ |
1 | 20140507 | BEIN | Z_TEST | WERT | 2 | 0 | 0 | 0 | 2 | 0 | 2 | 12 | 0 |
2 | 20140507 | BEIN | SUB_MON_STAT | LINE_NUM | 7426 | 0 | 0 | 0 | 7426 | 3238 | 7426 | 38 | 0 |
3 | 20140507 | BEIN | SUB_MON_STAT | SUB_STA_NM | 7426 | 0 | 0 | 0 | 7426 | 1268 | 7426 | 54 | 0 |
4 | 20140507 | BEIN | SUB_MON_STAT | COMMT | 7426 | 7425 | 0 | 0 | 1 | 1 | 1 | 9000 | 0 |
5 | 20140507 | BEIN | SUB_MON_STAT | REF_DES | 7426 | 7425 | 0 | 0 | 1 | 0 | 1 | 3000 | 0 |
Bisher haben wir uns die von Oracle empfohlene Zeichensatzkonvertierungsmethode (CSALTER, CSSCAN) angesehen. Als Nächstes sehen wir uns die Ergebnisse der Ausführung von CSSCAN in den Testumgebungen US7ASCII und KO16MSWIN949 an.