Wechseln des Zeichensatzes in einer Oracle-DB |
|
---|---|
Die Definition des Zeichensatzes wird beim Erstellen der Oracle Datenbank festgelegt. Stellt man nach der Produktionsaufnahme fest, dass der Zeichensatz geändert werden sollte, so kann dies nicht mehr ohne Weiteres durchgeführt werden. Die bereits gespeicherten Daten müssen konvertiert werden. Folgendes Vorgehen hat sich bewährt um diese Aufgabe zu lösen. 1). Schema exportieren Das Schema muss unter dem Zeichensatz exportiert werden unter dem dieses kreiert wurde, dies ist im Beispiel NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1. 2). Datenbank komplett neu kreieren mit Characterset: EE8ISO8859P2 CREATE DATABASE PPB CONTROLFILE REUSE MAXDATAFILES 256 MAXINSTANCES 4 MAXLOGFILES 62 MAXLOGMEMBERS 3 MAXLOGHISTORY 1600 CHARACTER SET "EE8ISO8859P2" DATAFILE '/data/ppb/db1/PPB_sys_1.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGFILE GROUP 1 ('/data/ppb/db1/PPB_log1A.rdo', '/data/ppb/db1/PPB_log1B.rdo') SIZE 5M REUSE, GROUP 2 ('/data/ppb/db1/PPB_log2A.rdo', '/data/ppb/db1/PPB_log2B.rdo') SIZE 5M REUSE; 3). Schema PPP importieren Das Schema muss unter dem Zeichensatz importiert werden, welches im Exportfile vorhanden ist. Dies ist im Beispiel NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 4). Sämtliche PUBLIC Synonyme neu erstellen Die PUBLIC Synonyme werden nicht exportiert / importiert und müssen deshalb neu erstellt werden. 5). Umgebungsvariable umsetzen Die Umgebungsvariable wird nun auf den "richtigen" Zeichensatz gestellt, dies ist im Beispiel NLS_LANG=POLISH_POLAND.EE8ISO8859P2. 6). Testen Die aktuellen Settings können mit folgendem Query ermittelt werden: SQL> select name,substr(VALUE$,1,20) from sys.props$; NAME SUBSTR(VALUE$,1,20) ------------------------------ -------------------- DICT.BASE 2 NLS_LANGUAGE POLISH NLS_TERRITORY POLAND NLS_CURRENCY $ NLS_ISO_CURRENCY POLAND NLS_NUMERIC_CHARACTERS ., NLS_DATE_FORMAT DD-MON-YY NLS_DATE_LANGUAGE AMERICAN NLS_CHARACTERSET EE8ISO8859P2 NLS_SORT BINARY NLS_CALENDAR GREGORIAN NLS_RDBMS_VERSION 7.3.3.0.0 GLOBAL_DB_NAME PPB.WORLD EXPORT_VIEWS_VERSION 3 |