データベースの作成 Oracle9iR2版

 OracleDatabaseをインストールしたら、Oracle入門学習用にデータベースを作成する。OracleMasterの取得を狙っているので、DatabaseConfigurationAssistant(データベースを作成するGUIツール)なんてものは使わず、CREATE DATABASEコマンドを発行して作りたい。
 Windowsの場合、OracleServerをインストールしたユーザがデータベース管理者としてORA_DBAグループが付くので、そのユーザでログインする。

1.必要なフォルダの作成

パラメータファイルやデータファイルなどを配置するためのフォルダを作成する。

2.CREATE DATABASE文の作成

 次のようなデータベースを作成する。各ファイルの分散などは一切考えず、とりあえず1つのディレクトリに全て配置する。

ORACLE_SIDorcl92
初期データベース格納先C:\oracle\oradata\orcl92
SYSTEM表領域system01.dbf 100MB
Redoログファイル2グループ作成し、各グループにファイルは1つ
log1a.rdo、log2a.rdo
UNDO表領域undotbs01.dbf 50MB
TEMPORARY表領域temp01.dbf 100MB
キャラクタセットJA16SJIS ※
各国語キャラクタ・セットAL16UTF16

※OSがWindowsなので、内部データをSJISに統一する。クライアント側はEUCでもSJISでもOK。

 上記の要件を満たすCREATE DATABASE文は次のようになる。

CREATE DATABASE orcl92
	DATAFILE 'C:\oracle\oradata\orcl92\system01.dbf' SIZE 100M
		AUTOEXTEND ON MAXSIZE UNLIMITED
	LOGFILE
		GROUP 1 ('C:\oracle\oradata\orcl92\log1a.rdo') SIZE 1M,
		GROUP 2 ('C:\oracle\oradata\orcl92\log2a.rdo') SIZE 1M
	UNDO TABLESPACE undotbs
		DATAFILE 'C:\oracle\oradata\orcl92\undotbs01.dbf' SIZE 50M
		AUTOEXTEND ON MAXSIZE UNLIMITED
	DEFAULT TEMPORARY TABLESPACE temp
		TEMPFILE 'C:\oracle\oradata\orcl92\temp01.dbf' SIZE 100M
		AUTOEXTEND ON MAXSIZE UNLIMITED
	CHARACTER SET ja16sjis
	NATIONAL CHARACTER SET al16utf16;

 SQL*Plusを起動してこのコマンドを入力してもよいが、スクリプトとして作成して「C:\oracle\ora90\admin\orcl92\create」内にcreatedb.sqlというファイル名で保存し、SQL*Plusからスクリプトを実行するという方法を取る。ファイルを作成するのが面倒な場合はこれをダウンロードし、「C:\oracle\ora90\admin\orcl92\create」フォルダに保存する。

3.パラメータファイルの準備

 Oracleの起動にはパラメータファイルが必要である。initSID.oraファイルを、作成したいインスタンス用に用意する。サンプルファイル「C:\oracle\ora90\admin\sample\pfile\initsmpl.ora」を「C:\oracle\ora90\admin\orcl92\pfile」にコピーし、「init.ora」というファイル名に変更する。
 作成したパラメータファイルをメモ帳などで開き、次のように編集する。

db_name=orcl92
control_files = ("C:\oracle\oradata\orcl92\control01.ctl","C:\oracle\oradata\orcl92\control02.ctl")
remote_login_passwordfile = none
db_domain = localdomain
background_dump_dest="C:\oracle\admin\orcl92\bdump"
user_dump_dest="C:\oracle\admin\orcl92\udump"
core_dump_dest="C:\oracle\admin\orcl92\cdump"
undo_management = AUTO
undo_tablespace = undotbs
compatible = 9.2.0.1.0

 ※コメントも外すこと。

 コピーしたサンプル初期化ファイルには、Oracle9iでは使えない古いパラメータが使われているので、それらをコメントアウトする。(これらをそのままにしておいてもOracleデータベースは起動するが、WARNINGエラーが出る)

# text_enable = TRUE
# job_queue_interval = 10
# distributed_transactions = 5

 Windowsの場合、データベース起動時に「C:\oracle\ora90\database」からパラメータファイルを探す。よって、ここに「initorcl92.ora」というファイルを作成し、先ほど作成したパラメータファイルをリンクする。

ifile="C:\oracle\admin\orcl92\pfile\init.ora"

 これらの作業も面倒ならこれをダウンロードして「C:\oracle\ora90\admin\orcl92\pfile」フォルダに保存し、続いてとこれをダウンロードし、「C:\oracle\ora90\database」フォルダに保存する。

3.Oracleサービスの作成および開始

 ここからの作業はコマンドプロンプトを使用する。WindowsXPの場合はスタートメニューから「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」を選択してコマンドプロンプト・ウィンドウを表示させる(コマンドプロンプトは良く使うので、デスクトップにショートカットを作っておくと便利)。

 データベースを作成する前に、そのデータベースを実行するWindowsサービスを作成する。サービスはORADIMユーティリティを使用して作成する。コマンドプロンプト画面から次のようにコマンドを入力してリターンキーを押す。

C:\> oradim -NEW -SID orcl92 -STARTMODE manual

 何もメッセージが表示されずにプロンプトが表示されれば成功(のはず)である。なお、ORADIMユーティリティを使用すると、ログファイル「oradim.log」が「C:\oracle\ora90\database」に作成される。このファイルを参照すると、処理が成功したかどうかがチェックできる。

4.Oracleデータベースの作成

 続いて、データベースの作成を行う。コマンドプロンプト画面から次のように入力し、SQL*Plusを起動する(=の前後にスペースを入れない)。

C:\> set oracle_sid=orcl92
C:\> sqlplus /nolog

 SYSDBA権限でOracleに接続する。

SQL> connect / as sysdba

 インスタンスをNOMOUNTで起動させる。

SQL> startup nomount

 「ORACLEインスタンスが起動しました」というメッセージが出れば成功(1〜2分)。パラメータファイルの配置などに失敗すると、エラーが表示されてインスタンスが起動しない。その場合は上記作業をやり直す。
 インスタンスの起動に成功したら、先ほど作成したcreatedbスクリプトを実行してデータベースを作成する。

SQL> @C:\oracle\ora90\admin\orcl92\create\createdb.sql

 「データベースが作成されました」というメッセージが出れば成功。作成と同時にデータベースが開いているので、パラメータを確認してみよう。

SQL> show parameter
・・・パラメータファイルの変更が反映されていることが確認できる・・・

 また、「C:\oracle\oradata\orcl92」フォルダを見ると、createdbスクリプトで指定したとおりのファイル(データベース・ファイル)が作成されているので、確認する。

 startup nomountでインスタンスが起動しなかったり、create databaseで失敗した場合、「C:\oracle\ora90\admin\orcl92\bdump」内のアラートファイルをチェックし、原因を突き止める。

5.データベース作成後の作業

 この作業を行う前にデータベースをオープンしておく必要がある。
 6.の起動方法を参照のこと。

 データベースは作成しただけでは使えず、データ・ディクショナリ・ビューと標準パッケージを作成しなければならない。
 データ・ディクショナリ・ビューはcatalog.sqlを、標準パッケージはcatproc.sqlを実行すると作成されるので、SQL*Plusで次のように実行する。

SQL> @C:\oracle\ora90\rdbms\admin\catalog.sql(2分ほど)
SQL> @C:\oracle\ora90\rdbms\admin\catproc(40分ほど)

 引き続き、SQL*Plusの製品情報を作成するスクリプトを実行する。このスクリプトはSYSTEMユーザで実行しなければならない。

SQL> connect system/manager
SQL> @C:\oracle\ora90\sqlplus\admin\pupbld.sql

 以上の作業により、orcl92という名前のデータベースがノートパソコン内に作成された。次のように入力して、SQL*Plusおよびコマンドプロンプトを終了する。

SQL> disc
SQL> exit
C:\> exit

次に、orcl92をデフォルトのデータベースとして指定するために、レジストリを変更する。

  1. レジストリエディタを起動する(regedit)
  2. 「HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0」を選択する
  3. 「編集」メニューから「新規」→「文字列値」を選択する
  4. 作成された値の名前を「ORACLE_SID」にする
  5. 作成した「ORACLE_SID」をダブルクリックする
    (「文字列の編集」ダイアログボックスが表示される)
  6. 「値のデータ」テキストボックスに「orcl92」と入力し、OKボタンをクリック
    (「ORACLE_SID」のデータが「orcl92」になる)
  7. レジストリエディタを終了する

 上記設定を行った後パソコンを再起動すると、コマンド・プロンプトからOracleDatabaseを起動する際、「set oracle_sid=orcl92」を入力する必要が無くなる。また、Oracleサービスを自動起動するように設定している場合は「orcl92」データベースが起動される。

6.起動・停止方法

 テスト用のデータベースなので、サーバを起動してもサービスが開始されないように構築した。OracleDatabaseを利用するには、まずサービスを開始させる必要がある。

  1. スタートメニューから「設定」→「コントロールパネル」を開く
  2. 「管理ツール」を開く
  3. 「サービス」を開く
  4. 「OracleServiceorcl92」を開始させる
  5. 状態が「開始」になったら、サービスウィンドウを閉じる

これで、OracleDatabaseを利用する準備が整った。orcl92データベースを起動するには、コマンドプロンプトを開き、次のコマンドを実行する。

C:\> sqlplus /nolog
SQL> connect / as sysdba
アイドル・インスタンスに接続しました。
SQL> startup

データベースがマウントされました。
データベースがオープンされました。
SQL> disc
〜接続が切断されました。
SQL> exit
C:\>

データベースの停止は次のとおり。

C:\> sqlplus /nolog
SQL> connect / as sysdba
接続されました。
SQL> shutdown
データベースがクローズされました。
データベースがアンマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> disc
〜接続が切断されました。
SQL> exit
C:\>

※Windowsの場合、サーバのシャットダウン時、OracleDatabaseを自動的にSHUTDOWNしてくれないので、手動でSHUTDOWNしてからサーバをシャットダウンしなければならない。

7.その他

 テスト用のデータベースなので、立ち上げ時に自動的にOracleDatabaseが起動しないように作成したが、自動的に起動するように設定するには、ORADIMユーティリティで次のように実行する。

C:\> oradim -EDIT -SID orcl92 -STARTMODE auto

ORADIMユーティリティのパラメータは次のように調べることができる。

C:\> oradim -?

[ TOP ]