STERFIELD

2016/03/30

Oracle 11gでキャラクタセットをSJISに変更する

Oracle 11gでキャラクタセットをSJISに変更する

Oracle 11gでキャラクタセットを変更するということを行ったので、そのログを記事にしてみました。
Oracle 11gではデフォルトで、UTF8でデータベースが作成されるのですが、SJISで作成されたdumpデータをそのままリストアしようとすると、「ORA-12899: 列 string の値が大きすぎます」などのエラーが発生し、
部分的にデータがリストアできません。
そのため完全にリストアさせるためには、Oracle 11gのリスナーをCharacter setをSJISにした上で、作成する必要があります。
結構時間がかかります(mysqlでは2、3分で終わるのに対し、1時間ぐらいかかる)。

インスタンスの削除

前のリスナー、インスタンスで作成されたファイルの削除

インスタンスの作成

以下の内容を
C:\oraclexe\app\oracle\product\11.2.0\server\database\initXE.ora
に保存し、コマンドプロンプトで下記を実行。
oradim -NEW -SID XE -SYSPWD manager -PFILE C:\oraclexe\app\oracle\product\11.2.0\server\database\initXE.ora

インスタンスの起動

以下の内容を下記に保存
C:\oraclexe\app\oracle\product\11.2.0\server\database\createDB.ora

データベースの作成

下記を実行する。
ここで結構時間がかかります。

以上で、キャラクタセットの変更が完了です。
SELECT PARAMETER, VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE ‘%CHARACTERSET%’;
で確認することができます。

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい