OracleDatabaseをインストールしたら、Oracle入門学習用にデータベースを作成する。OracleMasterの取得を狙っているので、DatabaseConfigurationAssistant(データベースを作成するGUIツール)なんてものは使わず、CREATE DATABASEコマンドを発行して作りたい。
Windowsの場合、OracleServerをインストールしたユーザがデータベース管理者としてORA_DBAグループが付くので、そのユーザでログインする。
パラメータファイルやデータファイルなどを配置するためのフォルダを作成する。
- C:\oracle\ora90\admin\orcl92
- C:\oracle\ora90\admin\orcl92\bdump
- C:\oracle\ora90\admin\orcl92\cdump
- C:\oracle\ora90\admin\orcl92\create
- C:\oracle\ora90\admin\orcl92\pfile
- C:\oracle\ora90\admin\orcl92\udump
- C:\oracle\oradata
- C:\oracle\oradata\orcl92
次のようなデータベースを作成する。各ファイルの分散などは一切考えず、とりあえず1つのディレクトリに全て配置する。
ORACLE_SID orcl92 初期データベース格納先 C:\oracle\oradata\orcl92 SYSTEM表領域 system01.dbf 100MB Redoログファイル 2グループ作成し、各グループにファイルは1つ
log1a.rdo、log2a.rdoUNDO表領域 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」フォルダに保存する。
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 = 5Windowsの場合、データベース起動時に「C:\oracle\ora90\database」からパラメータファイルを探す。よって、ここに「initorcl92.ora」というファイルを作成し、先ほど作成したパラメータファイルをリンクする。
ifile="C:\oracle\admin\orcl92\pfile\init.ora" これらの作業も面倒ならこれをダウンロードして「C:\oracle\ora90\admin\orcl92\pfile」フォルダに保存し、続いてとこれをダウンロードし、「C:\oracle\ora90\database」フォルダに保存する。
ここからの作業はコマンドプロンプトを使用する。WindowsXPの場合はスタートメニューから「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」を選択してコマンドプロンプト・ウィンドウを表示させる(コマンドプロンプトは良く使うので、デスクトップにショートカットを作っておくと便利)。
データベースを作成する前に、そのデータベースを実行するWindowsサービスを作成する。サービスはORADIMユーティリティを使用して作成する。コマンドプロンプト画面から次のようにコマンドを入力してリターンキーを押す。
C:\> oradim -NEW -SID orcl92 -STARTMODE manual 何もメッセージが表示されずにプロンプトが表示されれば成功(のはず)である。なお、ORADIMユーティリティを使用すると、ログファイル「oradim.log」が「C:\oracle\ora90\database」に作成される。このファイルを参照すると、処理が成功したかどうかがチェックできる。
続いて、データベースの作成を行う。コマンドプロンプト画面から次のように入力し、SQL*Plusを起動する(=の前後にスペースを入れない)。
C:\> set oracle_sid=orcl92
C:\> sqlplus /nologSYSDBA権限で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スクリプトで指定したとおりのファイル(データベース・ファイル)が作成されているので、確認する。
- control1.ctl
- control2.ctl
- log1a.rdo
- log1b.rdo
- system01.dbf
- temp01.dbf
- undotbs01.dbf
startup nomountでインスタンスが起動しなかったり、create databaseで失敗した場合、「C:\oracle\ora90\admin\orcl92\bdump」内のアラートファイルをチェックし、原因を突き止める。
この作業を行う前にデータベースをオープンしておく必要がある。
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をデフォルトのデータベースとして指定するために、レジストリを変更する。
- レジストリエディタを起動する(regedit)
- 「HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0」を選択する
- 「編集」メニューから「新規」→「文字列値」を選択する
- 作成された値の名前を「ORACLE_SID」にする
- 作成した「ORACLE_SID」をダブルクリックする
(「文字列の編集」ダイアログボックスが表示される)- 「値のデータ」テキストボックスに「orcl92」と入力し、OKボタンをクリック
(「ORACLE_SID」のデータが「orcl92」になる)- レジストリエディタを終了する
上記設定を行った後パソコンを再起動すると、コマンド・プロンプトからOracleDatabaseを起動する際、「set oracle_sid=orcl92」を入力する必要が無くなる。また、Oracleサービスを自動起動するように設定している場合は「orcl92」データベースが起動される。
テスト用のデータベースなので、サーバを起動してもサービスが開始されないように構築した。OracleDatabaseを利用するには、まずサービスを開始させる必要がある。
- スタートメニューから「設定」→「コントロールパネル」を開く
- 「管理ツール」を開く
- 「サービス」を開く
- 「OracleService
orcl92」を開始させる- 状態が「開始」になったら、サービスウィンドウを閉じる
これで、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してからサーバをシャットダウンしなければならない。
テスト用のデータベースなので、立ち上げ時に自動的にOracleDatabaseが起動しないように作成したが、自動的に起動するように設定するには、ORADIMユーティリティで次のように実行する。
C:\> oradim -EDIT -SID orcl92 -STARTMODE auto ORADIMユーティリティのパラメータは次のように調べることができる。
C:\> oradim -?