Oracle XE で文字コード変更

テーマ:

Oracle XE (Oracle Database 10g Express Edition) は、インストールした時点でDBが出来てます。

ちなみに、設定内容は、


DATABASE NAME = XE

CHARACTER SET = AL32UTF8


となってます。

インストール時に変更できないかと調べてみましたが、どうやらRMANを使用してもともと用意されたDBをリカバリする形でDBを作成しているため、どうにもならなそう…。


DB名はまだよいとして、キャラクタセットは変更したい!!!

ということで、今回はOracleXEでDBの再作成を行います。


まず、Oracle XE の前知識。


・DBCAは存在しない

・Oracle EM (Oracle Enterprise Manager) は存在せず、変わりにカスタマイズされたAPEX (Oracle Application Express) による管理機能が提供されている。

・いくつかの制限DBの制限(最大4GBのユーザデータ、同時起動は1インスタンスのみ、1CPUしか利用しない、最大1GBのメモリしか利用しない等。)


となってます。


ここでまずポイントとなるのは、インスタンスは同時に1つしか起動できないため、あたらしいDBを作成するには、既存のDB(XE)を停止させる必要があります。


それと、APEXによるDB管理機能が提供されていますが、APEXのデータははDB自体にもっているため、新しいDBには管理機能がなくなってしまいます。


APEXのインストールについては別途記載するつもりですが、今のところ新しいDBへの管理機能はインストールできてません。元のDBからエクスポートするなどして移行できないものでしょうか?どなたかヒント等でも知っていれば教えていただけると助かります。m(_ _)m



それではいよいよ、DBの作成手順です。

今回は、以下の内容で作成します。


DATABASE NAME = ORCL

CHARACTER SET = JA16SJISTILDE


1. 現インスタンスの停止


Oracle XEでは、同時に複数のインスタンスは起動できないため、現在のインスタンス(XE)を停止します

----------------------------------------------------------------------------------------
[oracle@localhost ~]$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 火 2月 12 13:07:48 2008

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


Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
に接続されました。
SQL> shutdown immediate

----------------------------------------------------------------------------------------

XEのインスタンスが不要な場合は、削除してしまってもかまいません。

Oracle10gからはDBの削除に「drop database」が用意されているため、それを使用します。

上記に続けて以下を実行します

----------------------------------------------------------------------------------------

SQL> startup restrict mount
SQL> drop database;

SQL> quit
[oracle@localhost ~]$ rm -rf /usr/lib/oracle/xe/app/oracle/admin/XE
[oracle@localhost ~]$ rm -rf /usr/lib/oracle/xe/oradata/XE
----------------------------------------------------------------------------------------

2. ディレクトリの作成

インスタンスの作成に必要なディレクトリを作成します。

----------------------------------------------------------------------------------------
[oracle@localhost ~]$ mkdir -p /usr/lib/oracle/xe/app/oracle/admin/ORCL/adump
[oracle@localhost ~]$ mkdir -p /usr/lib/oracle/xe/app/oracle/admin/ORCL/bdump
[oracle@localhost ~]$ mkdir -p /usr/lib/oracle/xe/app/oracle/admin/ORCL/cdump
[oracle@localhost ~]$ mkdir -p /usr/lib/oracle/xe/app/oracle/admin/ORCL/dpdump
[oracle@localhost ~]$ mkdir -p /usr/lib/oracle/xe/app/oracle/admin/ORCL/pfile
[oracle@localhost ~]$ mkdir -p /usr/lib/oracle/xe/app/oracle/admin/ORCL/udump
[oracle@localhost ~]$ mkdir -p /usr/lib/oracle/xe/app/oracle/flash_recovery_area
[oracle@localhost ~]$ mkdir -p /usr/lib/oracle/xe/oradata/ORCL
----------------------------------------------------------------------------------------

3. パスワードファイルの作成

パスワードファイルを作成します。

パラメータは例です。詳細はヘルプ等を確認してください。

----------------------------------------------------------------------------------------
[oracle@localhost ~]$ cd /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/dbs

[oracle@localhost ~]$ orapwd file=orapwORCL password=oracle force=y

----------------------------------------------------------------------------------------

4. 環境変数の変更

ORACLE_SIDを変更します。

今後も使用するので、設定ファイルで変更します。(XEをORCLに変更)

----------------------------------------------------------------------------------------
[oracle@localhost ~]$ cd /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/

[oracle@localhost ~]$ vi oracle_env.sh

ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_HOME
ORACLE_SID=ORCL
export ORACLE_SID
NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export NLS_LANG
PATH=$ORACLE_HOME/bin:$PATH
export PATH
if [ $?LD_LIBRARY_PATH ]
then
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
else
LD_LIBRARY_PATH=$ORACLE_HOME/lib
fi
export LD_LIBRARY_PATH

[oracle@localhost ~]$ ./oracle_env.sh

[oracle@localhost ~]$ env | grep ORACLE_SID
ORACLE_SID=ORCL
----------------------------------------------------------------------------------------

5. init.oraの作成

初期化ファイルを作成します。

設定内容は適宜変更してください。

以下は設定例です。

----------------------------------------------------------------------------------------
[oracle@localhost ~]$ cd /usr/lib/oracle/xe/app/oracle/admin/ORCL/pfile[oracle@localhost ~]$ vi init.ora

db_domain = ''
db_name = 'ORCL'
control_files = (/usr/lib/oracle/xe/oradata/ORCL/control01.ctl, /usr/lib/oracle/xe/oradata/ORCL/control02.ctl, /usr/lib/oracle/xe/oradata/ORCL/control03.ctl)
db_block_size = 8192
user_dump_dest = '/usr/lib/oracle/xe/app/oracle/admin/ORCL/udump'
background_dump_dest = '/usr/lib/oracle/xe/app/oracle/admin/ORCL/bdump'
core_dump_dest = '/usr/lib/oracle/xe/app/oracle/admin/ORCL/cdump'
shared_pool_size = 83886080
open_cursors = 300
db_block_size = 8192
db_file_multiblock_read_count = 16
sessions = 20
sga_target = 286261248
shared_servers = 4
undo_management = 'AUTO'
undo_tablespace = 'UNDOTBS1'
dispatchers = '(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
remote_login_passwordfile = 'EXCLUSIVE'
db_recovery_file_dest_size = 10G
db_recovery_file_dest = '/usr/lib/oracle/xe/app/oracle/flash_recovery_area'
processes = 150

----------------------------------------------------------------------------------------

6. DB及びユーザー表領域の作成

CREATE DATABASE及びCREATE TABLESPACEを実行します。

パラメータ等は例です。

----------------------------------------------------------------------------------------
[oracle@localhost ~]$ cd /usr/lib/oracle/xe/app/oracle/admin/ORCL/pfile[oracle@localhost ~]$ vi createdb.sql

CREATE DATABASE "ORCL"
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
DATAFILE '/usr/lib/oracle/xe/oradata/ORCL/system01.dbf' SIZE 300M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/usr/lib/oracle/xe/oradata/ORCL/sysaux01.dbf' SIZE 120M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/usr/lib/oracle/xe/oradata/ORCL/temp01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE '/usr/lib/oracle/xe/oradata/ORCL/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
CHARACTER SET JA16SJISTILDE
NATIONAL CHARACTER SET AL16UTF16
LOGFILE GROUP 1 ('/usr/lib/oracle/xe/oradata/ORCL/redo01.log') SIZE 100M,
GROUP 2 ('/usr/lib/oracle/xe/oradata/ORCL/redo02.log') SIZE 100M,
GROUP 3 ('/usr/lib/oracle/xe/oradata/ORCL/redo03.log') SIZE 100M;


CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/usr/lib/oracle/xe/oradata/ORCL/users01.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
ALTER DATABASE DEFAULT TABLESPACE "USERS";

[oracle@localhost ~]$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 火 2月 12 13:07:48 2008

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


Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
に接続されました。
SQL> startup nomount pfile="init.ora";
SQL> @createdb.sql;


----------------------------------------------------------------------------------------

7. スクリプトの実行

スクリプトを実行し、必要な機能をインストールします。

インストールものは例です。適宜変更してください。

----------------------------------------------------------------------------------------
[oracle@localhost ~]$ sqlplus "/ as sysdba"

SQL> @/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/admin/catalog.sql;
SQL> @/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/admin/catblock.sql;
SQL> @/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/admin/catproc.sql;
SQL> @/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/admin/catoctk.sql;
SQL> @/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/rdbms/admin/owminst.plb;
SQL> conn SYSTEM/oracle
SQL> @/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/sqlplus/admin/pupbld.sql;
SQL> @/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/sqlplus/admin/help/hlpbld.sql helpus.sql;
----------------------------------------------------------------------------------------


8. oratabの編集

----------------------------------------------------------------------------------------
[oracle@localhost ~]$ vi /etc/oratab

ORCL:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server:N
----------------------------------------------------------------------------------------


9. oratabの編集

46行目あたりを編集

XE→ORCL

----------------------------------------------------------------------------------------
[root@localhost ~]# vi /etc/init.d/oracle-xe

ORACLE_SID=ORCL
----------------------------------------------------------------------------------------


以上でインストールは完了です。

tnsnames.ora や listener.ora は、適宜変更してください。