OracleDatabaseをインストールしたら、テスト用にデータベースを作成する。一応OracleMasterを狙っているので、DatabaseConfigurationAssistantなんてものは使わず、CREATE DATABASEコマンドを発行して作りたい。
Oracleの操作は全てoracleユーザで行うため、oracleユーザでログインする。
データベースファイルやパラメータファイル、ログファイル、各種トレースファイルなどを格納するディレクトリを、OFAに準拠した形で作成する。(Oracle9iR2のOFAはインストールのページを参照)。
作成はoracleユーザで次のように行う。
$ mkdir $ORACLE_BASE/admin
$ mkdir $ORACLE_BASE/admin/ora920
$ mkdir $ORACLE_BASE/admin/ora920/bdump
$ mkdir $ORACLE_BASE/admin/ora920/cdump
$ mkdir $ORACLE_BASE/admin/ora920/create
$ mkdir $ORACLE_BASE/admin/ora920/pfile
$ mkdir $ORACLE_BASE/admin/ora920/udump
$ mkdir /home/oracle/oradata
$ mkdir /home/oracle/oradata/ora920
次のようなデータベースを作成する。各ファイルの分散などは一切考えず、とりあえず1つのディレクトリに全て配置する。
ORACLE_SID ora920 初期データベース格納先 /home/oracle/oradata/ora920 SYSTEM表領域 system01.dbf 100MB Redoログファイル 2グループ作成し、各グループにファイルは1つ
/home/oracle/oradata/ora920/log1a.rdo、/home/oracle/oradata/ora920/log2a.rdoUNDO表領域 undotbs01.dbf 50MB TEMPORARY表領域 temp01.dbf 100MB キャラクタセット JA16EUC ※ 各国語キャラクタ・セット AL16UTF16 ※OSがLINUXなので、内部データをEUCに統一する。クライアント側はEUCでもSJISでもOK。
上記の要件を満たすCREATE DATABASE文は次のようになる。
CREATE DATABASE ora920 DATAFILE '/home/oracle/oradata/ora920/system01.dbf' SIZE 100M AUTOEXTEND ON MAXSIZE UNLIMITED LOGFILE GROUP 1 ('/home/oracle/oradata/ora920/log1a.rdo') SIZE 1M, GROUP 2 ('/home/oracle/oradata/ora920/log2a.rdo') SIZE 1M UNDO TABLESPACE undotbs DATAFILE '/home/oracle/oradata/ora920/undotbs01.dbf' SIZE 50M AUTOEXTEND ON MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/home/oracle/oradata/ora920/temp01.dbf' SIZE 100M AUTOEXTEND ON MAXSIZE UNLIMITED CHARACTER SET ja16euc NATIONAL CHARACTER SET al16utf16;SQL*Plusを起動してこのコマンドを入力してもよいが、面倒なのでファイルとして保存する。(例、$ORACLE_BASE/admin/ora920/create/createdb.sql)
Oracleの起動にはパラメータファイルが必要である。サンプルのinit.oraファイルを、作成したいインスタンス用に用意する。
$ cd $ORACLE_HOME/dbs
$ cp init.ora $ORACLE_BASE/admin/ora920/pfile/initora920.ora作成したパラメータファイルをviで開き、編集する。
$ vi $ORACLE_BASE/admin/ora920/pfile/initora920.ora 変更・追加するパラメータは次のとおり。
db_name= ora920
db_domain =localdomain
control_files = ('/home/oracle/oradata/ora920/control01.ctl','/home/oracle/oradata/ora920/control02.ctl')
remote_login_passwordfile =none
background_dump_dest='/opt/oracle/admin/ora920/bdump'
user_dump_dest='/opt/oracle/admin/ora920/udump'
core_dump_dest='/opt/oracle/admin/ora920/cdump'
undo_management = AUTO
undo_tablespace = undotbs
fast_start_mttr_target = 300
compatible =9.2.0.1.0※コメントも外すこと。
Linuxの場合、データベース起動時に「$ORACLE_HOME/dbs」からパラメータファイルを探す。よって、ここに「initora920.ora」というシンボリックリンクを作成する。
$ ln -s /opt/oracle/admin/ora920/pfile/initora920.ora /opt/oracle/product/9.2.0/dbs/initora920.ora
各種ディレクトリ、データベース作成スクリプト、初期化パラメータファイルを作成したら、いよいよデータベースの作成である。
oracleユーザでSQL*Plusを次のように起動する。
# sqlplus /nolog SYSDBA権限でOracleに接続する。
SQL> connect / as sysdba インスタンスをNOMOUNTで起動させる。
SQL> startup nomount 「ORACLEインスタンスが起動しました」というメッセージが出れば成功。CREATE DATABASE文を発行する。
SQL> @$ORACLE_BASE/admin/ora920/create/createdb 「データベースが作成されました」というメッセージが出れば成功。作成と同時にオープンされているので、パラメータを確認してみよう。
SQL> show parameter
・・・パラメータファイルの変更が反映されていることが確認できる・・・
データベースは作成しただけでは使えず、データ・ディクショナリ・ビューと標準パッケージを作成しなければならない。
データ・ディクショナリ・ビューはcatalog.sqlを、標準パッケージはcatproc.sqlを実行すると作成されるので、SQL*Plusで次のように実行する。
SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql
SQL> @$ORACLE_HOME/rdbms/admin/catproc.sqlまた、SQL*Plusを使ってクライアントマシンから接続する場合、
systemユーザになってから以下のようにスクリプトを実行しておく。
SQL> @$ORACLE_HOME/sqlplus/admin/pupbld.sql