Oracle Database 10g XE(Windows版)の文字コードを変換する方法
Oracle Database 10gの無償版であるOracle Database 10g XE (Express Edition) をインストールした場合、データベースのデフォルトの文字コードは「AL32UTF8」となっている。有償版であれば「alter database」コマンドを使用することで文字コードを変更できるが、無償版ではコマンドを使用して文字コードを変更することはできない。
Oracle Database 10g XEで文字コードを変更したい場合は、インスタンスを新規に作成しなければならない。インスタンス作成の過程で文字コードを指定することになる。
■注意
新規に作成したインスタンスに対してはoracleの管理画面(http://127.0.0.1:8080/apex/)にアクセスできない。新規に作成したインスタンスに、別途Application Expressをインストールするとアクセスできるようになるらしい。
■インスタンスの作成手順
1.文字コードを一時的にSJISに設定する。Oracleからの標準出力を見るため。
> set NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE
2.Oracleを停止
Oracle Database 10g XE ではインスタンスは同時に一つしか起動できないため、デフォルトのインスタンスXEを停止する。
> oradim -SHUTDOWN -SID XE -SHUTTYPE SRVC,INST -SHUTMODE ABORT
3.新規Oracleインスタンスの作成
(1)データベース格納用ディレクトリの作成
コマンドプロンプトを起動し、下記をコマンドを実行する。
mkdir C:\oraclexe\app\oracle\admin\ORCL\adump mkdir C:\oraclexe\app\oracle\admin\ORCL\bdump mkdir C:\oraclexe\app\oracle\admin\ORCL\cdump mkdir C:\oraclexe\app\oracle\admin\ORCL\dpdump mkdir C:\oraclexe\app\oracle\admin\ORCL\pfile mkdir C:\oraclexe\app\oracle\admin\ORCL\udump mkdir C:\oraclexe\oradata\ORCL
(2)初期化パラメータ・ファイルを作成
initORCL.oraというファイル名で下記場所に作成する。
C:\oraclexe\app\oracle\product\10.2.0\server\database\initORCL.ora
下記の内容で作成する。
java_pool_size=0 large_pool_size=4194304 shared_pool_size=62914560 streams_pool_size=0 audit_file_dest='C:\oraclexe\app\oracle\admin\ORCL\adump' background_dump_dest='C:\oraclexe\app\oracle\admin\ORCL\bdump' compatible='10.2.0.1.0' control_files='C:\oraclexe\oradata\ORCL\control.dbf' core_dump_dest='C:\oraclexe\app\oracle\admin\ORCL\cdump' db_name='ORCL' 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' user_dump_dest='C:\oraclexe\app\oracle\admin\ORCL\udump'
(3)Windowsのサービスを作成
> set ORACLE_SID=ORCL > oradim -NEW -SID ORCL -INTPWD nandi -PFILE C:\oraclexe\app\oracle\product\10.2.0\server\database\initORCL.ora -startmode auto
> sqlplus / as sysdba SQL> startup nomount
(5)データベース作成
以下の内容をコピー&ペーストして、Enterキーを押す。(30秒くらいかかる。)
create database ORCL logfile group 1 ('C:\oraclexe\oradata\ORCL\redo1.dbf') size 32M, group 2 ('C:\oraclexe\oradata\ORCL\redo2.dbf') size 32M, group 3 ('C:\oraclexe\oradata\ORCL\redo3.dbf') size 32M character set JA16EUCTILDE national character set utf8 datafile 'C:\oraclexe\oradata\ORCL\system.dbf' size 240M autoextend on next 16M maxsize unlimited extent management local sysaux datafile 'C:\oraclexe\oradata\ORCL\sysaux.dbf' size 48M autoextend on next 8M maxsize unlimited undo tablespace undo datafile 'C:\oraclexe\oradata\ORCL\undo.dbf' size 48M autoextend on default temporary tablespace temp tempfile 'C:\oraclexe\oradata\ORCL\temp.dbf' size 8M autoextend on;
(6)スクリプトの実行
ユーザsys, systemで必要なスクリプト(カタログの作成など)を実行する。
エラーが結構出るが無視してよい。エラー原因は存在しないテーブルをdropしようとしてる処理など。
SQL> @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catalog.sql (1分くらいかかる。) SQL> @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catproc.sql (5分くらいかかる。) SQL> connect system/manager SQL> @C:\oraclexe\app\oracle\product\10.2.0\server\sqlplus\admin\pupbld.sql SQL> quit
(7)Windowsの環境変数にORACLE_SIDを登録する。
変数:ORACLE_SID
値:ORCL
(8)サービスを自動起動に設定する。
[スタート] -> [ファイル名を指定して実行]をクリックし、名前欄に「services.msc」を入力する。
OracleServiceORCLを右クリック -> プロパティをクリックする。スタートアップの種類を自動に設定し、
「OK」をクリックする。
■Oracle Textのインストール
> sqlplus sys/manager as sysdba SQL> @?\ctx\admin\catctx manager SYSAUX TEMP NOLOCK SQL> connect CTXSYS/manager SQL> @?\ctx\admin\defaults\drdefja.sql SQL> quit
■確認
sqlplusコマンドを実行しログインできるかどうか確認する。初期ユーザはsystem、パスワードはmanagerである。
>sqlplus system/manager SQL>
■インスタンスの切り替え方法
UTF-8ベースのXEとShift-JISベースのORCLを使い分けることができる。
・XEを停止してORCLを起動
C:\>oradim -SHUTDOWN -SID XE -SHUTTYPE SRVC,INST -SHUTMODE ABORT C:\>oradim -STARTUP -SID ORCL
・ORCLを停止してXEを起動
C:\>oradim -SHUTDOWN -SID ORCL -SHUTTYPE SRVC,INST -SHUTMODE ABORT C:\>oradim -STARTUP -SID XE
■参照サイト
http://www.fourmeisters.com/blog/hisama2/2007/07/shift_jis_on_oracle_xe.html