Oracle 11g Express をインストールしたが、文字コードを変更する必要があった。

Express ではインスタンスをひとつしか作成できないため、既存のインスタンスを削除し、新しいインスタンスを作る。新しいインスタンスを作成する際に文字コードを指定する。以下、その手順。

1. データベースの停止


C:\work>net stop OracleServiceXE
OracleServiceXE サービスを停止中です.......
OracleServiceXE サービスは正常に停止されました。


2. インスタンスの削除


C:\work>oradim -DELETE -SID XE
インスタンスが削除されました。


3.不要なファイルを削除

デフォルトのインスタンスのspfile削除
C:\oraclexe\app\oracle\product\11.2.0\server\dbs\*

デフォルトのインスタンスのpfileやパスワードファイルを削除
C:\oraclexe\app\oracle\product\11.2.0\server\database\* (oradba.exe以外)

デフォルトのインスタンスの制御ファイルとデータファイルを削除
C:\oraclexe\app\oracle\oradata\XE\*

4. 初期化パラメータファイルを作成

C:\oraclexe\app\oracle\product\11.2.0\server\database\initXE.ora を作成
java_pool_size=4194304
large_pool_size=4194304
shared_pool_size=62914560
streams_pool_size=0
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'

5.インスタンスを作成


C:\work>oradim -NEW -SID XE -SYSPWD sys -PFILE C:\oraclexe\app\oracle\product\11.2.0\server\database\initXE.ora
インスタンスが作成されました。


6.インスタンス起動


C:\work>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on 水 6月 5 16:36:31 2013

Copyright (c) 1982, 2010, Oracle. All rights reserved.

アイドル・インスタンスに接続しました。

SQL> startup nomount
ORACLEインスタンスが起動しました。

Total System Global Area 146460672 bytes
Fixed Size 1382148 bytes
Variable Size 83888380 bytes
Database Buffers 58720256 bytes
Redo Buffers 2469888 bytes


7.DB作成パラメータファイルを作成

C:\oraclexe\app\oracle\product\11.2.0\server\database\createDB.ora を作成


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 JA16SJISTILDE
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;


8.データベースを作成


SQL> @C:\oraclexe\app\oracle\product\11.2.0\server\database\createDB.ora

データベースが作成されました。


9.カタログ定義スクリプトの実行


SQL>@C:\oraclexe\app\oracle\product\11.2.0\server\RDBMS\ADMIN\catalog.sql

COMP_TIMESTAMP CATALOG 2013-06-05 16:47:48


10.PL/SQLパッケージ作成スクリプトの実行
SQL>@C:\oraclexe\app\oracle\product\11.2.0\server\RDBMS\ADMIN\catproc.sql

SQL>
SQL> SELECT dbms_registry_sys.time_stamp('CATPROC') AS timestamp FROM DUAL;

TIMESTAMP
--------------------------------------------------------------------------------

COMP_TIMESTAMP CATPROC 2013-06-05 17:07:07

1行が選択されました。

SQL>
SQL> SET SERVEROUTPUT OFF
SQL>
SQL>
SQL>

11.PRODUCT_USER_PROFILE表に対するSELECT権限をPUBLICに付与

SQL> connect system/manager
接続されました。
SQL> @C:\oraclexe\app\oracle\product\11.2.0\server\sqlplus\admin\pupbld.sql
:
SQL>
SQL> -- End of pupbld.sql

12.確認

SQL> SELECT PARAMETER, VALUE FROM NLS_DATABASE_PARAMETERS
2 WHERE PARAMETER LIKE '%CHARACTERSET%';

PARAMETER VALUE
------------------------------ --------------------------
NLS_CHARACTERSET JA16SJISTILDE
NLS_NCHAR_CHARACTERSET UTF8


13.環境変数を設定

ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server
ORACLE_SID = XE
NLS_LANG = JAPANESE_JAPAN.JA16SJISTILDE