ORACLEデータベースの手動作成

本ページではデータベースをDBCAによるGUIではなくsqlplusによるCUIベースで手動作成する方法を記載します。 手動作成する手順を覚えておくと、一連の作業をシェル等で自動化したりGUIが使用できない環境でも構築できるようになります。

本手順で作成される環境

本手順のコマンド等は10g以降を対象にしています。(9iまでのバージョンでも基本的な手順はほぼ同一ですがcreate database文等を一部変更する必要があります)
インスタンスのSIDやDB_NAME ORCL112M
キャラクタセット JA16SJIS
ナショナルキャラクタセット AL16UTF16
標準ブロックサイズ 8K
エクステント管理方式 LOCAL管理
セグメント管理方式 フリーリスト管理(SYSAUX以外)
UNDO管理方式 自動UNDO管理
追加オプション(JVMやORACLE TEXT)など なし(最小構成)

手順概要

1 初期化パラメータファイルの準備
2 ディレクトリの作成
3 サービスの登録(Windowsのみ)
4 データベースをNOMOUNTで起動
5 create database文を実行
6 ディクショナリやプロシージャの作成スクリプト実行

1 初期化パラメータファイルの準備

以下のように作成するデータベースの初期化パラメータファイルを$ORACLE_HOME/dbs(Windows以外)または%ORACLE_HOME%\database(Windows)に作成します。 ほとんどのパラメータはDB作成後に変更できますが、compatible、db_block_size、db_name、undo_managementは変更できない可能性があるため気をつけてください。

・11gのサンプル
control_files='J:\program\oracle\oradata\ORCL112M\control01.ctl'
diagnostic_dest='J:\program\oracle'
compatible='11.2.0.1.0'
db_block_size=8192
db_domain=''
db_file_multiblock_read_count=16
db_name='ORCL112M'
processes=150
job_queue_processes=10
nls_language='JAPANESE'
nls_territory='JAPAN'
open_cursors=300
sga_target=500M
pga_aggregate_target=16M
workarea_size_policy=AUTO
undo_management='AUTO'
undo_tablespace='UNDOTBS01'
remote_login_passwordfile='EXCLUSIVE'
・10gのサンプル
control_files='E:\oracle\oradata\ORCL112M\control01.ctl'
user_dump_dest='E:\oracle\admin\ORCL112M\udump'
background_dump_dest='E:\oracle\admin\ORCL112M\bdump'
core_dump_dest='E:\oracle\admin\ORCL112M\cdump'
compatible='10.2.0.1.0'
db_block_size=8192
db_domain=''
db_file_multiblock_read_count=16
db_name='ORCL112M'
instance_name='ORCL112M'
processes=150
fast_start_mttr_target=300
open_cursors=300
sga_target=500M
pga_aggregate_target=16M
workarea_size_policy=AUTO
undo_management='AUTO'
undo_retention=10800
undo_tablespace='UNDOTBS01'
remote_login_passwordfile='EXCLUSIVE'

2 ディレクトリの作成

パラメータで指定しているログが作成されるディレクトリとデータファイルを作成するディレクトリを作成します。
例)
mkdir J:\program\oracle\admin\ORCL112M\adump
mkdir J:\program\oracle\admin\ORCL112M\bdump
mkdir J:\program\oracle\admin\ORCL112M\cdump
mkdir J:\program\oracle\admin\ORCL112M\dpdump
mkdir J:\program\oracle\admin\ORCL112M\udump
mkdir J:\program\oracle\oradata\ORCL112M

3 サービスの登録(Windowsのみ)

Windowsの場合はOS上にインスタンスを起動するサービスをoradimで作成します。 以下のコマンドの場合パスワードファイルも一緒に作成されます。
C:\>oradim -new -sid ORCL112M -intpwd change_on_install -pfile 'J:\program\oracle\product\10.2.0\db_1\database\initORCL112M.ora'

4 データベースをNOMOUNTで起動

データベースをNOMOUNTで起動します。起動できない場合はパラメータファイルに誤りがありますので修正します。 また、制御ファイルを読み込んでいない状態では日本語エラーメッセージが文字化けするためNLS_LANGの設定を英語表示に変えておきます。
C:\>set ORACLE_SID=ORCL112M

C:\>set NLS_LANG=AMERICAN_AMERICA.JA16SJIS

C:\>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Sat May 28 01:43:20 2011

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

Connected to an idle instance.

SYS@ORCL112M > startup nomount
ORACLE instance started.

Total System Global Area  521936896 bytes
Fixed Size                  2177328 bytes
Variable Size             159385296 bytes
Database Buffers          352321536 bytes
Redo Buffers                8052736 bytes

5 create database文を実行

create database文を実行しデータベースを作成します。作成が終わった段階でOPENモードになります。
create database ORCL112M
logfile
  group 1 ('J:\program\oracle\oradata\ORCL112M\REDO01.LOG') SIZE 512M,
  group 2 ('J:\program\oracle\oradata\ORCL112M\REDO02.LOG') SIZE 512M
maxinstances   1
maxlogmembers  3
maxlogfiles    240
maxloghistory  1000
maxdatafiles   512
character set "JA16SJIS"
national character set "AL16UTF16"
datafile 'J:\program\oracle\oradata\ORCL112M\SYSTEM01.DBF' size 500M EXTENT MANAGEMENT LOCAL
sysaux datafile 'J:\program\oracle\oradata\ORCL112M\SYSAUX01.DBF' size 300M
DEFAULT TABLESPACE USERS DATAFILE 'J:\program\oracle\oradata\ORCL112M\USERS01.DBF' SIZE 10M
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE 'J:\program\oracle\oradata\ORCL112M\TEMP01.DBF' SIZE 200M
UNDO TABLESPACE "UNDOTBS01" DATAFILE 'J:\program\oracle\oradata\ORCL112M\UNDOTBS01.DBF' SIZE 500M;

6 ディクショナリやプロシージャの作成スクリプト実行

SYSで接続しスクリプトを実行してディクショナリやパッケージを作成します。 作成後spoolログとアラーとログにORA-04031の発生等がないか念のため確認します。
SQL>spool
SQL>conn / as sysdba
--カタログ(ディクショナリ)の作成
SQL>@?/rdbms/admin/catalog.sql;
--プロシージャの作成く
SQL>@?/rdbms/admin/catproc.sql;
--以下は必須ではありませんがDBCAでDB作成した場合は実行されるため作成しますく
SQL>@?/rdbms/admin/catblock.sql;
SQL>@?/rdbms/admin/catoctk.sql;
--sqlplusを使用するためには以下のスクリプト実行が必要です
SQL>conn system/manager
SQL>@?/sqlplus/admin/pupbld.sql
SQL>spool off
以上で完了です。

補足1 Windows環境でデフォルト接続先データベースを変更する方法

DBCAでDBを作成すると作成したデータベースがローカル接続時のデフォルト接続先に変更されますが、本手順では変更されません。 ローカル接続時にデフォルトで接続するインスタンスはORACLE_HOMEとORACLE_SIDによって決まり、 同じORACLE_HOMEから起動している複数のデータベースがある場合は環境変数ORACLE_SIDが設定してあれば環境変数のSID、設定されていなければレジストリに登録してあるORACLE_SIDへ接続しようとします。 レジストリは通常は以下のようなパスになります。

~9i
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\<ORACLE_HOMEのインストール名>\ORACLE_SID
10g~
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<ORACLE_HOMEのインストール名>\ORACLE_SID

レジストリを参照している環境では上記のレジストリのORACLE_SIDの値を作成したDBのSIDに変更することでデフォルト接続先は変更することができます。

補足2 手動管理ベースのデータベースを作成する場合

エクステント管理方式:ディクショナリ管理(SYSAUXは必ずLOCAL)+手動UNDO管理で作成する場合は以下の手順で読み替えることで作成できます。

1 初期化パラメータファイルの準備
以下のように自動UNDO管理ではなく手動UNDO管理用のパラメータに変更します。
undo_management='AUTO'
undo_tablespace='UNDOTBS01'
undo_management='MANUAL'
rollback_segments='RBS01,RBS02,RBS03'

5 create database文を実行
以下のcreate database文を実行後、さらにロールバックセグメントの作成、一時表領域の作成等を実行します。
create database ORCL112M
logfile
  group 1 ('J:\program\oracle\oradata\ORCL112M\REDO01.LOG') SIZE 512M,
  group 2 ('J:\program\oracle\oradata\ORCL112M\REDO02.LOG') SIZE 512M
maxinstances   1
maxlogmembers  3
maxlogfiles    240
maxloghistory  1000
maxdatafiles   512
character set "JA16SJIS"
national character set "AL16UTF16"
datafile 'J:\program\oracle\oradata\ORCL112M\SYSTEM01.DBF' size 500M
sysaux datafile 'J:\program\oracle\oradata\ORCL112M\SYSAUX01.DBF' size 300M;
ロールバックセグメント用表領域とロールバックセグメントの作成
create tablespace RBS01 datafile 'J:\program\oracle\oradata\ORCL112M\RBS01.DBF' size 200M extent management DICTIONARY;
create rollback segment RBS01 TABLESPACE RBS01;
create rollback segment RBS02 TABLESPACE RBS01;
create rollback segment RBS03 TABLESPACE RBS01;
一時表領域の作成
create tablespace temp DATAFILE 'J:\program\oracle\oradata\ORCL112M\TEMP01.DBF' SIZE 200M extent management DICTIONARY temporary;
alter database default temporary tablespace temp;
ユーザ表領域の作成
create tablespace users DATAFILE 'J:\program\oracle\oradata\ORCL112M\USERS01.DBF' SIZE 10M extent management DICTIONARY;
alter database default tablespace users;

マニュアル

管理者ガイド10g リリース2(10.2)
SQL リファレンス10g リリース2(10.2)
★ORACLE案件承ります