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.

Migrieren eines Zeichensatzes mit dem CSALTER-Skript (https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch11charsetmig.htm#NLSPG469)

Führen Sie das folgende Verfahren aus, um den Zeichensatz der Datenbank zu ändern.

  1. Fahren Sie die Datenbank herunter, indem Sie entweder eine SHUTDOWN IMMEDIATE- oder eine SHUTDOWN NORMAL-Anweisung verwenden.
  2. Führen Sie eine vollständige Sicherung der Datenbank durch, da das CSALTER-Skript nicht rückgängig gemacht werden kann.
  3. Starten Sie die Datenbank.
  4. Führen Sie das Dienstprogramm Database Character Set Scanner aus.
    CSSCAN /AS SYSDBA FULL=J…
  5. 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

oracle csscan help
Oracle CSS-Hilfe
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.

Datenbank-Zeichensatz-Scanner-Parameter (https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch12scanner.htm#NLSPG498)

csscan wird in der folgenden Reihenfolge ausgeführt:

  1. Schema erstellen: Führen Sie $ORACLE_HOME/rdbms/admin/csminst.sql aus
  2. Verzeichnis erstellen: D:\temp\csscan erstellen (zum Speichern von Ausführungsergebnisdateien)
  3. csscan ausführen
  4. Ü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.)

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

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

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_DTNUTZERNAMETABELLENNAMESPALTENNAMEZAHLENNULCNTCNVCNTsCNVTYPEFEHLERSIZERRCNVERRMAXGRÖSSECHRSIZ
120140507BEINZ_TESTWERT2000202120
220140507BEINSUB_MON_STATLINE_NUM7426000742632387426380
320140507BEINSUB_MON_STATSUB_STA_NM7426000742612687426540
420140507BEINSUB_MON_STATCOMMT742674250011190000
520140507BEINSUB_MON_STATREF_DES742674250010130000

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.

Schreibe einen Kommentar

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

de_DEDeutsch