Oracle データベースを作成する

February 17, 2022

今回やること

前回 に引き続き、今回は Database Configuration Assistant (DBCA) を用いてデータベースを作成していきます。

ORACLE_HOME と Oracle データベースの関連について

同一データベースサーバー上における ORACLE_HOME 環境変数と Oracle データベースの関連性は以下の通りとなります。

  • 1 つの ORACLE_HOME には、特定のリリースの Oracle ソフトウェアをインストールし、1 つの ORACLE_HOME に複数のリリースの Oracle ソフトウェア (例えば 18c と 19c) を同時にインストールすることはできない
  • 同一データベースサーバー上に複数の ORACLE_HOME を作成可能であり、それらは異なるリリースでも同一のリリースでも良い
  • ある ORACLE_HOME に関連するデータベースは複数作成可能であり、例えば 19c の Oracle データベースを作成する場合は 19c の ORACLE_HOME を複数作成する必要は無い

Oracle データベースの内部構造

実際にインストールに入る前にここで Oracle データベースの内部構造について簡単に触れておきます。Oracle データベースという単位はデータベースインスタンス及びデータベースファイルから構成され、それぞれ主に以下のコンポーネントから成り立ちます。

データベースインスタンス
コンポーネント 説明
システムグローバル領域 (SGA) インスタンス起動時に割り当てられるメモリ領域。プロセス及びスレッドから同時にアクセスされる内部データ構造の維持、ディスクから読み取られるブロックデータのキャッシュ、オンライン REDO ログファイルに書き込まれる前の REDO データのバッファ、SQL 実行計画の格納といった目的で機能する
バックグラウンドプロセス REDO ログバッファのデータをオンライン REDO ログに書き込む、データベースバッファの内容をデータファイルに書き込む、といったような役割を持つ複数のプロセス群
サーバープロセス クライアントの要求に基づいて処理を実行するためのプロセス。SQL を解析し共有プールに入れ、実行計画を作成して実行、データベースバッファキャッシュまたはディスクからバッファを読み取る、といったことを行う。サーバープロセスが使用するメモリ領域を プログラムグローバル領域 (PGA) という

[参考]
- Oracleデータベース・インスタンス
- プロセス・アーキテクチャ

データベースファイル
コンポーネント 説明
データファイル 永続ストレージ上に Oracle Database が作成した物理ファイルであり、表やインデックス等のデータ構造が含まれる
一時ファイル 一時表領域に属するデータファイル
制御ファイル データベースの物理コンポーネントを追跡するためのルートファイル
オンライン REDO ログ データに対する変更が記録される一連のファイル

[参考]
- 物理記憶域構造

事前準備

$ORACLE_HOME/bin 配下には DBCA をはじめとし、複数のユーティリティが存在しています。そのため、ここにパスを通しておくと楽になるかと思います。
以下の内容を .bashrc に追加しておきます。

.bashrc
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export PATH

DBCA を用いたデータベースの作成

まずは以下のコマンドにより DBCA を起動します。

$ dbca

すると以下のように実行したい操作を選択する画面が表示されるので、ここでは Craete a database をチェックします。

Select Database Operation

create database in oracle 1

次に作成する Oracle データベースの詳細について入力する画面に遷移します。それぞれの項目の内容及び今回入力する例は以下の通りです。

項目 説明 今回の入力例
Global databaes name データベースを識別する名前 “<データベース名>” もしくは “<データベース名>.<ドメイン名>” という形式となる。原則的に「データベース名 = SID (ORACLE_SID) の関係が成り立つ」 ora1
Storage type データベースファイルをどの記憶領域に配置するかを指定する。File System もしくは Automatic Storage Management (ASM) から選択可能。前者はデータベースファイルのパスを指定し、後者は ASM ディスクグループにデータベースファイルを配置する File System
Database file location Storage typeFile System を指定した場合はデータベースファイルを格納するディレクトリパスを指定、ASM を指定した場合は ASM ディスクグループ名を指定する {ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}
Fast Recovery Area (FRA) バックアップ及びリカバリの領域を指定する {ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}
Database character set データベースに使用するキャラクタセットを選択する AL32UTF8 - Unicode UTF-8 Universal character set
Administrative password SYS や SYSTEM などの間利用ユーザーのパスワード。これらの管理用ユーザーはデータベース作成時に自動で作成される 非表示
Create as Container database これから作成するデータベースを、マルチテナントコンテナデータベースとする場合に選択。これは 1 つのデータベース (コンテナデータベース) の中に複数の仮想的なデータベース (プラガブルデータベース) を持つことができる構成 未チェック

Select Database Creation Mode

create database in oracle 2

入力するとサマリー画面が表示されるので、[Finish] ボタンをクリックします。

Summary

create database in oracle 3

すると以下のように進行状況がモニターできるようになります。

Progress Page

create database in oracle 4

完了すると以下のような画面が表示され、SID や Server Parameter File name 、また dbca のログの場所等が確認できます。

create database in oracle 5

また、実際にテーブルファイルが作成されていることも確認できます。

$ ls -l $ORACLE_BASE/oradata/ORA1/datafile 
total 1787944
-rw-r----- 1 oracle oinstall 524296192 Feb 17 19:48 o1_mf_sysaux_k0x778hg_.dbf
-rw-r----- 1 oracle oinstall 943726592 Feb 17 19:48 o1_mf_system_k0x75vcv_.dbf
-rw-r----- 1 oracle oinstall  33562624 Feb 17 19:10 o1_mf_temp_k0x79qlh_.tmp
-rw-r----- 1 oracle oinstall 356524032 Feb 17 19:54 o1_mf_undotbs1_k0x781l1_.dbf
-rw-r----- 1 oracle oinstall   5251072 Feb 17 19:13 o1_mf_users_k0x782n8_.dbf

なお、これらのはじめから作成されている表領域はそれぞれ簡単に以下のようなものとなります。

表領域 説明
EXAMPLE Oracle データベースに含まれているサンプルスキーマ
SYSTEM データベースを管理うsるための表領域
SYSAUX SYSTEM 表領域に対する補助表領域
TEMP SQL 文の処理中に生成された一時データが格納される領域
UNDOTBS1 データベースが UNDO 情報の保存に使用する、UNDO 表領域
USERS 永続的なユーザーオブジェクト及びデータの格納に使用される表領域

 © 2023, Dealing with Ambiguity