キャラクタセットの変換

Oracle データベースのキャラクタセットを変換する場合、
移行ユーティリティの CSALTER を使用する。
Oracle9i までは alter database characterset が利用できたが、
10g 以降は廃止されている。



この CSALTER というユーティリティを使用する場合は、
事前に CSSCAN (Character Set SCANner) で検証を行う必要がある。
ここでは CSSCAN の仕組みやインストール、実行方法などについて。

スキャン方法

CSSCANには、以下の2種類の方法がある。

Language and Character Set File Scanner

テキストファイルのデータをスキャンする方法

Database Character Set Scanner

データベースを直接スキャンする方法

インストール

CSSCAN の利用前に csminst.sql を実行して、管理テーブルを作成する。

スクリプト内部では、ユーザ作成や権限付与などを行っている。
2回目以降の実行を考慮してか、例えばユーザは drop ⇒ create の順で実行される。

そのため、初回実行時は存在しないユーザを drop しようとして
エラーが出力されるが、この類のエラーは無視して問題ない。
(ユーザが存在した場合にだけ drop するという分岐を入れるだけなのにね・・・。)

% cd $ORACLE_HOME/rdbms/admin

% sqlplus / as sysdba

SQL> @csminst.sql

 

実行方法

以下3つの方法から選択できる。

対話型

% CSSCAN
Username: ※   ⇒ ユーザ名を指定
Password: ※   ⇒ パスワードを指定
Connected to:
Oracle Database 11g Release 11.1.0.7.0
(1)Full database, (2)User, (3)Table, (4)Column: 1 > ※   ⇒ スキャン対象を数字指定
Current database character set is JA16EUC.               ⇒ 既存のキャラクタセット表示
Enter new database character set name: > ※              ⇒ 新しいキャラクタセット指定
Enter array fetch buffer size: 1024000 > ※              ⇒ フェッチサイズ指定
Enter number of scan processes to utilize(1..32): 1 > ※ ⇒ プロセス数を数字指定
Enumerating tables to scan...

引数にパラメータを指定

CSSCAN <ユーザ>/<パスワード> FULL=y TOCHAR=JA16EUC ARRAY=10240 PROCESS=3

パラメータファイルの使用

CSSCAN <ユーザ>/<パスワード> PARFILE=<ファイル名>

※PARFILEに指定したパラメータファイルの内容
USERID=hoge/hoge
full=y
tochar=JA16EUC
array=1024000
process=1