2016/03/30
Oracle 11gでキャラクタセットをSJISに変更する
Oracle 11gでキャラクタセットを変更するということを行ったので、そのログを記事にしてみました。
Oracle 11gではデフォルトで、UTF8でデータベースが作成されるのですが、SJISで作成されたdumpデータをそのままリストアしようとすると、「ORA-12899: 列 string の値が大きすぎます」などのエラーが発生し、
部分的にデータがリストアできません。
そのため完全にリストアさせるためには、Oracle 11gのリスナーをCharacter setをSJISにした上で、作成する必要があります。
結構時間がかかります(mysqlでは2、3分で終わるのに対し、1時間ぐらいかかる)。
インスタンスの削除
1 | cleanup.bat |
前のリスナー、インスタンスで作成されたファイルの削除
1 2 3 | C:\oraclexe\app\oracle\product\11.2.0\server\dbs\* C:\oraclexe\app\oracle\product\11.2.0\server\database\*(oradba.exe以外) C:\oraclexe\app\oracle\oradata\XE\* |
インスタンスの作成
以下の内容を
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | audit_file_dest='C:\oraclexe\app\oracle\admin\XE\adump' compatible='11.2.0.1.0' control_files='C:\oraclexe\app\oracle\oradata\XE\control.dbf' core_dump_dest='C:\oraclexe\app\oracle\admin\XE\cdump' db_name='XE' dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)' job_queue_processes=2 open_cursors=300 os_authent_prefix='' pga_aggregate_target=40M remote_login_passwordfile='EXCLUSIVE' sessions=20 sga_target=140M shared_servers=1 undo_management='AUTO' undo_tablespace='UNDO' |
インスタンスの起動
1 2 3 | set ORACLE_SID=XE sqlplus "/ as sysdba" startup nomount 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | create database XE logfile group 1 ('C:\oraclexe\app\oracle\oradata\XE\redo1.dbf') size 32M, group 2 ('C:\oraclexe\app\oracle\oradata\XE\redo2.dbf') size 32M, group 3 ('C:\oraclexe\app\oracle\oradata\XE\redo3.dbf') size 32M character set JA16SJIS national character set utf8 datafile 'C:\oraclexe\app\oracle\oradata\XE\system.dbf' size 240M autoextend on next 16M maxsize unlimited extent management local sysaux datafile 'C:\oraclexe\app\oracle\oradata\XE\sysaux.dbf' size 48M autoextend on next 8M maxsize unlimited undo tablespace undo datafile 'C:\oraclexe\app\oracle\oradata\XE\undo.dbf' size 48M autoextend on default temporary tablespace temp tempfile 'C:\oraclexe\app\oracle\oradata\XE\temp.dbf' size 8M autoextend on; |
データベースの作成
下記を実行する。
ここで結構時間がかかります。
1 2 3 4 5 | @C:\oraclexe\app\oracle\product\11.2.0\server\database\createDB.ora @C:\oraclexe\app\oracle\product\11.2.0\server\RDBMS\ADMIN\catalog.sql @C:\oraclexe\app\oracle\product\11.2.0\server\RDBMS\ADMIN\catproc.sql connect system/manager @C:\oraclexe\app\oracle\product\11.2.0\server\sqlplus\admin\pupbld.sql |
以上で、キャラクタセットの変更が完了です。
SELECT PARAMETER, VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE ‘%CHARACTERSET%’;
で確認することができます。
Author Profile
スターフィールド編集部
SHARE