Oracle-Zeichensatzkonvertierung (4): 4.Konfigurieren der Testumgebung

Als Fortsetzung des vorherigen Artikels werden wir uns die Konfiguration der Testumgebung für die Oracle-Zeichensatzkonvertierung ansehen. Sie können die Konfiguration der Oracle-Serverumgebung (drei Instanzen, DB-Link-Erstellung), die Testtabellenerstellung und das Testdatenerstellungsskript überprüfen. Diese Testumgebung wird später bei der Zeichensatzkonvertierung verwendet.

Dies ist eine Fortsetzung des vorherigen Artikels.

Oracle-Zeichensatzkonvertierung (3): 3. Konfiguration der Client-Umgebung (2)

4. Konfigurieren Sie die Testumgebung für die Oracle-Zeichensatzkonvertierung

4.1. Konfiguration der Oracle DB-Serverumgebung

Gehen Sie davon aus, dass die Testumgebung für die Oracle-Zeichensatzkonvertierung auf einem lokalen PC (Windows) wie folgt konfiguriert ist.

Oracle DB 서버 환경 구성
Konfiguration der Oracle DB-Serverumgebung

Auf einem PC wurden drei Oracle DB-Instanzen installiert, und jede Konfiguration ist wie folgt.

UmfeldSIDServer-ZeichensatzOracle-VersionTestbenutzer (Schema)
US7ASCII Aktueller DBORAUS7US7ASCII11.2.0.1.0BEIN
KO16MSWIN949 Aktueller DBORAMSWIN949KO16MSWIN94911.2.0.1.0BEIN
AL32UTF8 Ziel-DBORAUTFAL32UTF811.2.0.1.0BEIN

DB Link ist wie folgt konfiguriert.

SID generierenZiel-SIDVerbindungsbenutzer (Schema)Zweck
ORAMSWIN949ORAUS7BEINUS7ASCII-Zugriffs- und Konvertierungstest auf KO16MSWIN949
ORAUTFORAUS7BEINZugriffs- und Konvertierungstest von AL32UTF8 zu US7ASCII

Das DB-Link-Erstellungsskript lautet wie folgt.

CREATE DATABASE LINK DL_US7
CONNECT TO leg IDENTIFIED BY leg
USING '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORAUS7)
    )
  )'
;

4.2. Testtabellenkonfiguration

Das Datenmodell zum Testen ist wie folgt.

Oracle Character Set 변환 테스트 테이블 구성
Konfiguration der Oracle-Zeichensatzkonvertierungstesttabelle

(Zu Testzwecken wurden alle zusätzlichen Details wie Normalisierung und Bezeichnerkonfiguration weggelassen. US7ASCII und MSWIN949 wenden dieselbe Länge an, und AL32UTF8 erhöht die Länge.)

Das obige Datenmodell ist eine Struktur, die den von der Seoul Metropolitan Government veröffentlichten <Informationen zur Anzahl der Personen, die in jede U-Bahn-Linie und Station in Seoul ein- und aussteigen>, zwei Elemente (Referenzbeschreibung, Referenzbild) zum Testen hinzufügt.

Quelle: https://data.seoul.go.kr/dataList/OA-12252/S/1/datasetView.do

Die DDL, die das Schema des obigen Testdatenmodells erstellt, lautet wie folgt.

-- 한글 2 byte 체계 스키마 생성(US7ASCII, MSWIN949)
CREATE TABLE SUB_MON_STAT 
(
      USE_MON            VARCHAR2(8),
      LINE_NUM           VARCHAR2(14), -- AL32UTF8: 50
      SUB_STA_ID         VARCHAR2(4),
      SUB_STA_NM         VARCHAR2(20), -- AL32UTF8: 100
      RIDE_PASGR_NUM     NUMBER(10),
      ALIGHT_PASGR_NUM   NUMBER(10),
      WORK_DT            VARCHAR2(8),
      COMMT              VARCHAR2(4000),
      REF_DES            CLOB,
      REF_IMG            BLOB
);

-- 한글 3 byte 체계 스키마 생성(AL32UTF8)
CREATE TABLE SUB_MON_STAT 
(
      USE_MON            VARCHAR2(8),
      LINE_NUM           VARCHAR2(50),
      SUB_STA_ID         VARCHAR2(4),
      SUB_STA_NM         VARCHAR2(100),
      RIDE_PASGR_NUM     NUMBER(10),
      ALIGHT_PASGR_NUM   NUMBER(10),
      WORK_DT            VARCHAR2(8),
      COMMT              VARCHAR2(4000),
      REF_DES            CLOB,
      REF_IMG            BLOB
);

In AL32UTF8 benötigt ein koreanisches Zeichen 3 Bytes, daher wurde die Länge der beiden Spalten ausreichend vergrößert.

Datendateien im Excel-Format können über den unten stehenden Github-Pfad heruntergeladen werden.

* Excel-Datendatei: https://github.com/DAToolset/Oracle-CharacterSet-Conversion/raw/main/Anzahl der Passagiere pro U-Bahn-Station_Seoul Open Data_2013.xlsx

DML zum Eingeben von Daten in die Tabelle kann vom folgenden Github-Pfad heruntergeladen werden.

*DML: https://github.com/DAToolset/Oracle-CharacterSet-Conversion/raw/main/Anzahl der Passagiere pro U-Bahn-Station_Seoul Open Data_2013.sql

Ein Teil der obigen SQL-Datei ist ein Auszug und wird unten eingefügt.

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT, COMMT, REF_DES, REF_IMG)
VALUES('201301', '1호선', '0150', '서울역', 2199181, 1855268, '20130723', RPAD('서울역', 3000, '서울역'), RPAD('서울역', 3000, '서울역'), UTL_RAW.CAST_TO_RAW('12345'));

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0151', '시청', 737005, 726892, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0152', '종각', 1542710, 1446464, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0153', '종로3가', 1159253, 1126995, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0154', '종로5가', 816307, 820769, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0155', '동대문', 446527, 512163, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0156', '신설동', 496150, 484583, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0157', '제기동', 587740, 601913, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0158', '청량리(지하)', 966341, 985741, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0159', '동묘앞', 240864, 252523, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0202', '을지로입구', 1610744, 1607133, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0203', '을지로3가', 539622, 559866, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0204', '을지로4가', 364217, 365994, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0205', '동대문역사문화공원', 435358, 508405, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0206', '신당', 407110, 438543, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0207', '상왕십리', 288629, 274519, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0208', '왕십리', 583444, 498091, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0209', '한양대', 262492, 286399, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0210', '뚝섬', 402631, 420166, '20130723');

...

Bisher haben wir uns die Konfiguration der Testumgebung und das Konfigurationsskript für die Konvertierung von Oracle-Zeichensätzen angesehen. Als nächstes werden wir uns verschiedene Möglichkeiten ansehen, den Zeichensatz in dieser Testumgebung zu konvertieren. Wir werden uns die von Oracle empfohlenen Methoden und Methoden ansehen, die eine separate Implementierung erfordern.

Schreibe einen Kommentar

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

de_DEDeutsch