前回の記事でOracle Database 12cをインストールしました。 quotto.hatenablog.com
まだインストールしただけで、使えるDBインスタンスがありません。
ということで今回はDBインスタンスの作成手順をまとめます。
インスタンスを作る場合はDBCAで実施するのが主流だと思われますが、本記事ではCREATE DATABSE文を使ってゴリゴリ手作りしていきます!!
ちなみにDBCAでもレスポンスファイルを作り、サイレントに作成することができるためCUI環境しかなければそちらの方が簡単な気がします。
環境
- CentOS release 6.5
- OracleDatabase 12.1.0.2.0 EnterpriseEdition
なお本記事は公式の管理者ガイドからポイントをピックアップした内容です。
これに従っておけば問題ないはずです。
Oracle Databaseの作成および構成
インスタンス識別子を決める
OracleDBの中で一意の値となるように、インスタンス識別子(SID)を決めましょう。
$ export ORACLE_SID=mydb
初期化パラメータファイル・サーバパラメータファイルの作成
Oracleではインスタンス起動時にバイナリ形式の「サーバパラメータファイル」(SPFILE)が優先的に利用されますが、インスタンス作成時は最初にテキスト編集可能な「初期化パラメータファイル」(PFILE)を作成しそれを基にSPFILEを生成します。
PFILEは「initORACLE_SID.ora」
レスポンスファイルの時と同様に、初期化パラメータファイルもインストール時にテンプレートが付いています。
「$ORACLE_HOME/dbs/init.ora」がそれです。
このファイルをコピーします。
このとき名称は「initORACLE_SID.ora」となるようにしましょう。
例えばORACLE_SIDがmydbであれば「initmydb.ora」です。
この命名規則に従うことで、サーバパラメータファイル作成時にデフォルトでこのPFILEが使われます。
PFILEの編集内容
いくつか設定項目がありますが、公式ガイドで最低限設定が必要となっているのは次の3つです。
- DB_NAME:CREATE DATABASE文で指定するデータベース識別子
- CONTROL_FILES:制御ファイルのパス。未指定の場合初期化パラメータファイルと同じ場所に作成される。
- MEMORY_TARGET:指定するとOracleが自動でメモリを管理してくれる。
私はこんな感じで修正しました。
db_name='mydb' memory_target=536M processes = 150 audit_file_dest='/opt/app/oracle/admin/mydb/adump' audit_trail ='db' db_block_size=8192 db_domain='' db_recovery_file_dest='/opt/app/oracle/fast_recovery_area' db_recovery_file_dest_size=2G diagnostic_dest='/opt/app/oracle/diag' dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)' open_cursors=300 remote_login_passwordfile='EXCLUSIVE' undo_tablespace='undotbs' control_files = (ora_control1, ora_control2) compatible ='12.1.0'
サーバパラメータファイルの作成
OSDBAユーザにて、SYSDBA権限でログインします。
その後「CREATE SPFILE」文で先ほど作った初期化パラメータファイルを基にサーバパラメータファイルを生成します。
$ su - oracle $ sqlplsu / as sysdba Connected to an idle instance. SQL> CREATE SPFILE FROM PFILE; File created.
これで初期化パラメータファイルと同じ場所にサーバパラメータファイルが作成されます。
$ ls -la $ORACLE_HOME/dbs total 19132 drwxr-xr-x 2 oracle oinstall 4096 Aug 22 22:02 . drwxr-xr-x 71 oracle oinstall 4096 Aug 12 23:05 .. -rw-rw---- 1 oracle oinstall 1544 Aug 20 01:34 hc_mydb.dat -rw-r--r-- 1 oracle oinstall 3004 Aug 15 22:04 initmydb.ora -rw-r--r-- 1 oracle oinstall 2992 Feb 3 2012 init.ora -rw-r----- 1 oracle oinstall 24 Aug 12 23:04 lkMYDB -rw-r----- 1 oracle oinstall 9781248 Aug 20 01:34 ora_control1 -rw-r----- 1 oracle oinstall 9781248 Aug 20 01:34 ora_control2 -rw-r----- 1 oracle oinstall 1536 Aug 20 22:02 spfilemydb.ora #これ
デフォルトの名称は「spfileORACLE_SID.ora」となり、この命名規則によりインスタンス起動時に自動でこのサーバパラメータファイルが読み込まれます。
ちなみにサーバパラメータファイルの作成時には、「CREATE SPFILE='$ORACLE_HOME/spfilemydb.ora' FROM PFILE='$ORACLE_HOME/dbs/initmydb.ora'」のように明示的に入力・出力パスを指定することも可能です。
インスタンスの起動
インスタンスを起動します。
ただしDBはまだありませんので、NOMOUNTオプションを忘れずに。
SQL> STARTUP NOMOUNT ORACLE instance started. Total System Global Area 562036736 bytes Fixed Size 2926760 bytes Variable Size 465569624 bytes Database Buffers 88080384 bytes Redo Buffers 5459968 bytes
データベースの作成
いよいよメインです。
ディレクトリの作成
ログファイル、DBファイルを格納するためのディレクトリはあらかじめ作っておきます。
$ mkdir -p $ORACLE_HOME/oradata/mydb
CREATE DATABASE文の発行
詳細は省きます!!公式ガイドを思う存分参照してくれたまえ!
SQL>CREATE DATABASE mynewdb USER SYS IDENTIFIED BY sys_password USER SYSTEM IDENTIFIED BY system_password LOGFILE GROUP 1 ('/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/redo01.log') SIZE 100M, GROUP 2 ('/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/redo02.log') SIZE 100M, GROUP 3 ('/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/redo03.log') SIZE 100M MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 1024 CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/system01.dbf' SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED SYSAUX DATAFILE '/u01/app/oracle/oradata/mydb/sysaux01.dbf' SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED DEFAULT TABLESPACE users DATAFILE '/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/users01.dbf' SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/temp01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED UNDO TABLESPACE undotbs1 DATAFILE '/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED USER_DATA TABLESPACE usertbs DATAFILE '/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/usertbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
アプリケーション用の表領域作成
前述のCREATA DATABASEでは、インスタンスに必要となる表領域だけ作成しています。 アプリケーションように別途表領域の作成が必要です。
-- テーブル表領域 CREATE TABLESPACE apps_tbs LOGGING DATAFILE '/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/apps01.dbf' SIZE 500M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL; -- インデックス表領域 CREATE TABLESPACE indx_tbs LOGGING DATAFILE '/opt/app/oracle/product/12.1.0/dbhome_1/oradata/mydb/indx01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
スクリプトの実行
この手順も忘れずに。
CREATE DATABASEを発行しただけではデータ・ディクショナリ、ビュー、シノニム、PL/SQLが使えません。
最後の仕上げにこれらを有効化するために3つのSQLスクリプトを実行します。
SQL>@$ORACLE_HOME/rdbms/admin/catalog.sql SQL>@$ORACLE_HOME/rdbms/admin/catproc.sql SQL>@$ORACLE_HOME/sqlplus/admin/pubbld.sql
スクリプトの実行はかなり時間がかかりましたのでご注意を。
これで完了
パラメータファイル作ったり、CREATE DATABASE文たくさん書いて、表領域作って、スクリプト実行してと色々とやらなければなりませんが、ひとつひとつは難しくはありません。
「いつもGUIでサクサクっとDB作っているよー」という方、裏で何が行われているのかを知る意味でも参考にしていただければ幸いです。
完全詳解+精選問題集(オラクルマスタースタディガイド) 【オラクル認定資格試験対策書】ORACLE MASTER Bronze[12c SQL基礎](試験番号:1Z0-061)完全詳解+精選問題集(オラクルマスタースタディガイド)](https://images-fe.ssl-images-amazon.com/images/I/51cYiedFyhL._SL160_.jpg)
【オラクル認定資格試験対策書】ORACLE MASTER Bronze[12c SQL基礎](試験番号:1Z0-061)完全詳解+精選問題集(オラクルマスタースタディガイド)
- 作者: エディフィストラーニング株式会社,西昭彦,飯室美紀,鈴木佐和,岡野友紀,矢島祐子
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/03/21
- メディア: 単行本
- この商品を含むブログ (2件) を見る
![図解入門 よくわかる 最新Oracleデータベースの基本と仕組み [第4版] 図解入門 よくわかる 最新Oracleデータベースの基本と仕組み [第4版]](https://images-fe.ssl-images-amazon.com/images/I/610-KwZ1RQL._SL160_.jpg)
図解入門 よくわかる 最新Oracleデータベースの基本と仕組み [第4版]
- 作者: 水田巴
- 出版社/メーカー: 秀和システム
- 発売日: 2015/10/27
- メディア: Kindle版
- この商品を含むブログを見る