ORACLE MASTER Bronze DBA 内容まとめ①

Oracle Databaseの基本を身につけるBronze DBAの資格勉強をしたので、自分の理解を深めるためにも、その内容を数回に分けてまとめてみます！
まず1回目は、後述する[Oracle Databaseを使用する流れ](#oracle-databaseを使用する流れデータベースの作成まで)の「データベースを作成する」までをまとめたいと思います。

## 参考書
今回の資格勉強では、日本オラクル株式会社のオラクルマスター教科書「Oracle DBA Oracle Database Fundamentals」を使いました。
この記事では、この参考書で学習した内容をOracle Databaseを使用するときの流れに沿って整理していきたいと思います。

## Oracle Databaseを使用する流れ（データベースの作成まで）

1. [Oracle ソフトウェアをインストールする](#1-oracleソフトウェアをインストールする)
1.1 [インストールする前の準備](#11-インストールする前の準備)
1.2 [ソフトウェアをインストールするためのツール](#12-ソフトウェアをインストールするためのツール)
1. [Oracleデータベースを作成する](#2-oracleデータベースを作成する)
2.1 [Database Configuration Assistant (DBCA)](#21-database-configuration-assistant-dbca)
2.2 [テンプレートの管理](#22-テンプレートの管理)
1. [Bronze DBAの勉強をして感じたこと](#3-bronze-dbaの勉強をして感じたこと)

## 1. Oracleソフトウェアをインストールする
### 1.1 インストールする前の準備
インストールするために必要な前提条件は次の4つ
* サポートされているバージョンであること
* 記憶域（ストレージ）の空き容量が十分にあること
* 物理メモリーサイズが十分にあること
* インストールに使用するOSユーザー、グループが存在すること

4つのうち、「インストールに使用するOSユーザー、グループが存在すること」以外の3つについては、[Oracle Databaseインストレーション・ガイド](https://www.oracle.com/jp/database/technologies/oracle-database-documentation.html)（2024/2/12時点）に具体的な条件が記載されているため、こちらを参照して設定変更を行います。
インストール前に準備が必要なOSユーザー、OSグループが次の通りです。

<table>
<caption>Oracleソフトウェアのインストールに必要なOSユーザー・OSグループ</caption>
<tr>
<th>OSユーザー</th><th></th>
</tr>
<tr>
<td>Oracleソフトウェア所有者</td>
<td>
・Oracleをインストール、管理するユーザー<br>
・Oracleインベントリグループ、OSDBAグループに所属<br>
・通常、ユーザー名は「oracle」とする
</td>
<tr>
<th>OSグループ</th><th></th>
<tr>
<td>Oracleインベントリグループ</td>
<td>
・Oracleに関連するファイルを所有するOSグループ<br>
・パッチの適用、既存インストールのアップグレード、Oracleソフトウェアの削除に使用する情報を格納<br>
・通常、グループ名は「oinstall」とする
</td>
</tr>
<tr>
<td>OSDBAグループ</td>
<td>
・Oracleの管理権限が付与されるグループ<br>
・通常、グループ名は「dba」とする
</td>
</tr>
</table>

また、より細かい権限制御を行うためのOSグループも存在します。
（Bronze DBAの出題範囲は超えるそうです。。。）

<details>
<summary>その他のOSグループ</summary>

<table>
<tr>
<td>OSOPERグループ</td>
<td>
・SYSOPER権限が付与されるOSグループ<br>
・通常、グループ名は「oper」とする
</td>
</tr>
<tr>
<td>OSBACKUPDBAグループ</td>
<td>
・SYSBACKUP権限（バックアップ、リカバリ関連の管理権限）が付与されるOSグループ<br>
・通常、グループ名は「backupdba」とする
</td>
</tr>
<tr>
<td>OSDGDBAグループ</td>
<td>
・SYSDG権限（Data Guard関連の管理権限）が付与されるOSグループ<br>
・通常、グループ名は「dgdba」とする
</td>
</tr>
<tr>
<td>OSKMDBAグループ</td>
<td>
・SYSKM権限（暗号化鍵関連の管理権限）が付与されるOSグループ<br>
・通常、グループ名は「kmdba」とする
</td>
</tr>
<tr>
<td>OSRACDBAグループ</td>
<td>
・SYSRAC権限（RAC関連の管理権限）が付与されるOSグループ<br>
・通常、グループ名は「racdba」とする
</td>
</tr>
</table>

</details>
<br>

ユーザー作成後、OSユーザーに以下の環境変数を設定します。
その前に注意点を2つ。
* 下の表の環境変数はLinux, UNIX環境のもの
* 環境変数はインストール後に設定することもできるが、先に設定しておくとデフォルト値として使用されるため便利

<table>
<caption>OracleソフトウェアをLinux, UNIX環境で稼働させるための環境変数</caption>
<tr>
<th>環境変数</th><th>説明</th>
</tr>
<tr>
<td>ORACLE_BASE</td>
<td>
・Oracle関連ファイルの基準となるディレクトリのパスを設定<br>
・Oracleに関連するほとんどのファイルがORACLE_BASE以下に配置される
</td>
</tr>
<tr>
<td>ORACLE_HOME</td>
<td>
・Oracleのソフトウェアを配置するディレクトリのパスを設定する<br>
・ORACLE_HOMEはORACLE_BASEのサブディレクトリに指定する
</td>
</tr>
<tr>
<td>ORACLE_SID</td>
<td>
・インスタンスの識別子であるSIDを設定する<br>
・この環境変数により、接続先インスタンスを識別する
</td>
</tr>
</table>

### 1.2 ソフトウェアをインストールするためのツール
OracleソフトウェアのインストールにはOracle Universal Installer (OUI)を使います。OUIでは次のことが行えます。
* Oracleソフトウェアのインストール
* インストール済みのOracle製品の一覧表示
* インストール前の前提条件のチェック
* 使用しないOracle製品の削除

#### ソフトウェアインストールの手順
① ORACLE_HOMEに設定したディレクトリにインストールファイルを展開する
② ORACLE_HOMEディレクトリにあるrunInstallerを実行してOUIを起動
③ 構成オプションを選択
　- Oracleのインストールのみを行うか、インストールと同時にデータベースも作成するかを選択する
　- ソフトウェアインストール後にDBCAというツールでデータベースを作成することも可能
④ インストールオプションの選択
⑤ データベースエディションの選択
⑥ インストール場所の指定
　- 「Oracleベース」にORACLE_BASEに設定したディレクトリのパスを指定
　- 「ソフトウェアの場所」にORACLE_HOMEに設定したディレクトリのパスを指定
⑦ インベントリの作成
　- 「oraInventoryグループ名」にOracleインベントリグループとして作成したOSグループを指定
⑧ 権限のあるオペレーティング・システム・グループを設定
　- [1.1 インストールする前の準備](#11-インストールする前の準備)の "その他のOSグループ" に記載したOSグループを設定
⑨ rootスクリプトの実行構成

<table>
<caption>構成スクリプト</caption>
<tr>
<th>スクリプト名</th><th>実行結果</th>
</tr>
<tr>
<td>orainstRoot.sh</td>
<td>
インベントリポインタファイル（インベントリの場所と管理グループが記録される）が作成される。
</td>
</tr>
<tr>
<td>root.sh</td>
<td>
oraenvスクリプト、coraenvスクリプト、dbhomeスクリプトが指定したディレクトリにコピーされる。
</td>
</tr>
</table>

⑩ 前提条件が満たされているかがチェックされ、結果が表示される
⑪ サマリーにここまでのステップで入力した項目が表示される
⑫ 製品のインストール
⑬ 構成スクリプトの実行の確認

全ステップが正常に完了すると、「終了」画面が表示される。

## 2. Oracleデータベースを作成する
OUIでOracleソフトウェアをインストールした際、ソフトウェアのインストールのみでデータベースを作成しなかった場合、DBCAを使用してデータベースを作成します。

### 2.1 Database Configuration Assistant (DBCA)
データベースの作成には、Oracleソフトウェアに含まれるDatabase Configuration Assistant (DBCA)を使います。
DBCAを起動するには、コマンドプロンプトで以下のdbcaコマンドを実行します。
`$ dbca`

#### DBCAを用いたデータベース作成の手順
① 「データベース操作の選択」画面でDBCAで実行する操作を選択する
　- 「データベースの作成」を選択する
② データベース作成モードを選択する
　- 「標準構成」か「拡張構成」かを選択する
　- 「標準構成」は一般的な構成で、DBCAでの入力項目が少なくなる
　　（標準構成では、下の表の項目を設定可能）
　- 「拡張構成」は記憶域の場所、初期化パラメータ、管理オプション、データベースオプション、管理用ユーザーのパスワード、サンプルスキーマ、メモリ管理方式などをカスタマイズ可能

<table>
<caption>「標準構成」で設定可能な項目</caption>
<tr>
<th>項目</th><th>説明</th>
</tr>
<tr>
<td>グローバル・データベース名</td>
<td>
・データベースを識別する名前<br>
・＜データベース名＞または＜データベース名＞.＜ドメイン名＞という形式で指定する
</td>
</tr>
<tr>
<td>記憶域タイプ</td>
<td>
・データベースファイルをどの記憶域に配置するかを指定する<br>
・ファイルシステムまたは自動ストレージ管理を選択可能<br>
　- ファイルシステム：「データベース・ファイルの位置」で指定したディレクトリ以下にデータベースファイルを配置<br>
　- 自動ストレージ管理：ASMディスクグループにデータベースファイルを配置
</td>
</tr>
<tr>
<td>データベース・ファイルの位置</td>
<td>
・「記憶域タイプ」でファイルシステムを選択した場合は、データベースファイルを格納するディレクトリを指定する<br>
・「記憶域タイプ」で自動ストレージ管理を選択した場合は、ASMディスクグループ名を指定する
</td>
</tr>
<tr>
<td>高速リカバリ領域</td>
<td>
・バックアップおよびリカバリの領域を指定する
</td>
</tr>
<tr>
<td>データベース文字セット</td>
<td>
・データベースに使用するキャラクタセット（Oracleにおける文字コード）を選択する
</td>
</tr>
<tr>
<td>管理者パスワード</td>
<td>
・管理用ユーザー（SYS, SYSTEMなど）のパスワードを入力する<br>
・管理用ユーザーはデータベース作成時に自動的に作成される
</td>
</tr>
<tr>
<td>コンテナ・データベースとして作成</td>
<td>
・作成するデータベースをマルチテナントコンテナデータベースとして作成する場合は選択する
　- マルチテナントコンテナデータベース：1つのデータベースの中に複数の仮想的なデータベースを持つことができる構成
</td>
</tr>
</table>

③ 「サマリー」画面でここまでの入力項目を確認する。
④ データベースの作成が開始されると「進行状況」ページが表示される。
⑤ データベース作成完了後、「Database Configuration Assistant」画面から次の2点の情報を確認できる。
* DBCAログファイルの場所
* グローバル・データベース名、SID、サーバーパラメータファイル名

### 2.2 テンプレートの管理
テンプレートとは・・・
DBCAでデータベースを作成する際のひな型。
データベースオプション、初期化パラメータ、記憶域属性（データファイル、表領域、制御ファイル、REDOログの属性）などの情報が含まれ、他のデータベースにコピーして共有することも可能。

<table>
<caption>テンプレートの種類</caption>
<tr>
<th>種類</th><th>説明</th>
</tr>
<tr>
<td>シード</td>
<td>
テンプレートにデータファイルが含まれ、シードデータベースの複製としてデータベースを新規作成する。<br>
シードテンプレートを使用した際に、自分で変更できる項目は次の5つ。<br>
● データベースの名前<br>
● データファイルの格納先<br>
● 制御ファイルの数<br>
● REDOロググループの数<br>
● 初期化パラメータ<br>
</td>
</tr>
<tr>
<td>非シード</td>
<td>
テンプレートにデータファイルが含まれず、新規作成するデータベースは柔軟に構成できる。<br>
その代わり、作成に時間はかかる。
</td>
</tr>
</table>

#### テンプレートの作成
データベース作成手順でも触れた「データベース操作の選択」画面で「テンプレートの管理」を選択すると作成可能。
既存のデータベースから作成されたテンプレートを使用すると、既存のデータベースの複製となるデータベースを作成することができる。
テンプレート作成のオプションは以下の３つ。

<table>
<caption>テンプレート作成のオプション</caption>
<tr>
<th>オプション</th><th>説明</th>
</tr>
<tr>
<td>既存のテンプレートからテンプレートを作成</td>
<td>
・事前構成済みの設定に基づく新しいテンプレートを作成可能<br>
・初期化パラメータ、記憶域パラメータ、カスタムスクリプトを使用するかなどの設定を追加、変更できる
</td>
</tr>
<tr>
<td>既存のデータベースからテンプレートを作成</td>
<td>
・既存のデータベースの構成情報（データベースオプション、表領域、データファイル、初期化パラメータなど）を持つ新しいテンプレートを作成可能<br>
・ユーザー定義のスキーマと、そのスキーマに格納されているデータは含まれない<br>
・元のデータベースはリモートにあってもローカルにあっても構わない
</td>
</tr>
<tr>
<td>
既存のデータベースからテンプレート作成<br>
データファイルを含める
</td>
<td>
・「既存のデータベースからテンプレートを作成」でテンプレートに含まれる要素に加えて、物理データファイルも含ませることができる<br>
（ユーザー定義のスキーマと、そのスキー目に格納されているデータが含まれる）<br>
・このオプションで作成されたテンプレートを使用して作成したデータベースは、元のデータベースと同一になる<br>
・元のデータベースはローカルにある必要がある
</td>
</tr>
</table>

#### テンプレートの削除
テンプレートの作成と同じく、「データベース操作の選択」画面で「データベース・テンプレートの削除」を選択すると、テンプレートを削除できる。

## 3. Bronze DBAの勉強をして感じたこと
勉強を始めたばかりの時は初めて聞くツールやパラメータが無限に出てきて、ひとつひとつを理解するのがとても大変でしたが、実際にデータベースを利用する際の流れに沿って理解することで、それぞれのツールなどの役割がはっきりして頭に入りやすくなりました。

また、業務中に勉強した単語を見たときはその意味が分かるだけでテンションが上がるので、そういったところもモチベーションアップにつながりました。

今後も上位資格への挑戦や、今回の記事の続きの作成に取り組んでいきたいと思います。