Oracle 10g XE データベースの作成

XEのデフォルトのデータベースのキャラクターセットは AL32UTF8 だが、JA16SJIS で動かしたかったのと、
ためしに動かすだけにしてはデフォルトのデータベースの容量が大きかったので新たにデータベースを作成した。
ただし、XE は同時に 1インスタンスしか起動できない制限があるので作成したデータベースの方だけを起動するようにする。

新たに追加するデータベースのSIDはTESTにする。環境はWindows2000

1) 初期パラメータファイルの作成

まず、pfileを作成して initTEST.ora と言う名前で %ORACLE_HOME%\database に置く。

また、新規データベース用に以下のディレクトリを作っておく。(必要ないかも)

2) サービスの作成

Windowsの場合、サービスを作らないといけない。ただし、この時に別のインスタンス用のサービスが起動してると
失敗するので、サービスを止めた後に行う。

 C:\> net stop OracleServiceXE
 C:\> oradim -NEW -SID TEST -INTPWD oracle -MAXUSERS 5 -STARTMODE manual
 C:\> net stat OracleServiceTEST

あと、PCを再起動したあとに XE の方が起動してしまうので、「コンピュータの管理」から OracleServiceXE のプロパティを開いて、自動起動しないようにしておく。

3) spfileの作成

サービスが起動したら、コマンドプロンプトを開いて接続する。まず pfile から spfile を作る。
SPデータベースを作成する。

 C:\> set ORACLE_SID=TEST
 C:\> set DB_NAME=TEST
 C:\> sqlplus / as sysdba
 
 SQL*Plus: Release 10.2.0.1.0 - Production on 火 5月 30 16:15:01 2006
 
 Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
 アイドル・インスタンスに接続しました。
 SQL> create spfile from pfile;
 
 ファイルが作成されました。
4)データベースの作成

spfileを作ったらデータベースを作成する。

 SQL> startup nomount;
 ORACLEインスタンスが起動しました。
 
 Total System Global Area  146800640 bytes
 Fixed Size                  1286220 bytes
 Variable Size              71307188 bytes
 Database Buffers           71303168 bytes
 Redo Buffers                2904064 bytes
 SQL>
   2 create database TEST
   3 maxlogfiles 32
   4 maxlogmembers 5
   5 maxdatafiles 100
   6 maxloghistory 100
   7 noarchivelog
   8 datafile 'd:\oraclexe\oradata\test\system.dbf' size 100M
   9 sysaux datafile 'd:\oraclexe\oradata\test\sysaux.dbf' size 100M
   10 default tablespace users
   11 datafile 'd:\oraclexe\oradata\test\users.dbf' size 100M
   12 undo tablespace undo
   13 datafile 'd:\oraclexe\oradata\test\undo.dbf' size 20M
   14 default temporary tablespace temp
   15 tempfile 'd:\oraclexe\oradata\test\temp.dbf' size 10M
   16 extent management local uniform size 128K
   17 character set JA16SJIS;

データベースを作成した直後は、SYSTEM,SYS ユーザが作成されてデータベースがオープンした状態になっている。

5) データディクショナリビューの作成

このままではデータディクショナリビューとPL/SQL用のパッケージが無いので、スクリプトを実行して作成する。これは若干時間がかかるのでじっくり待つ。

 SQL> @%ORACLE_HOME%\RDBMS\ADMIN\catalog.sql
 SQL> @%ORACLE_HOME%\RDBMS\ADMIN\catproc.sql
6) tnsnames.oraの修正

このままではsqlplusから接続できないので、TEST の接続情報を tnsnames.ora に追加してやる。

TEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dcdl24)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = TEST)
    )
  )

以上で、完了。