Oracle Databaseは、インスタンスとデータベースファイルから構成されています。 
- インスタンス・・・Oracleの処理を担う常駐部分のこと。SGA(System Global Area)というメモリー領域とバックグラウンドプロセスから構成される。
- データベースファイル・・・データベースを構成するファイル群のこと。データファイル、REDOログファイル、制御ファイルから構成される。「データベース」と呼ばれるもの。
参考:https://docs.oracle.com/cd/F19136_01/nonpub_db_techarch/db-19c-architecture.html
インスタンスを停止してもデータベースのファイルは残る
上で確認した「インスタンス」と「データベースファイル」は、存在する期間も異なります。インスタンスは起動時にメモリーを確保し、停止時にそのメモリーを解放します。一方、データファイルなどはストレージに残ります。翌日に同じデータベースを起動できるのは、前日のインスタンスが残っているからではなく、新しく起動したインスタンスが、保存済みのファイルを使用するからです。
反対に、まだデータベースファイルを開かず、インスタンスだけを起動した状態もあります。これが後のレッスンで扱うNOMOUNTです。「インスタンスが起動している」という情報だけでは、一般ユーザーが表を問い合わせられる状態かどうかは判断できません。
データベースとインスタンスの対応関係
| 構成 | 対応関係 | 読み取るポイント |
|---|---|---|
| 単一インスタンス構成 | 1つのデータベースを1つのインスタンスが管理する | 通常の起動・停止の説明では、この構成を前提に考える |
| Oracle RAC | 複数のインスタンスが、同じデータベースのファイル群を共有する | 各インスタンスには、それぞれSGAとバックグラウンド・プロセスがある |
| 同一ホスト上の複数データベース | 例えば販売用と検証用のデータベースに、それぞれ別のインスタンスを用意する | 1台のサーバーにインスタンスが複数あるだけでは、RACとは限らない |
1つのインスタンスが同時にマウントするデータベースは1つです。RACで増えるのは、1つのデータベースに対応するインスタンスの数です。インスタンスを増やすことと、別のデータベースを作ることを区別しましょう。
CDB・PDBとの関係
マルチテナント構成では、CDB(コンテナ・データベース)の中にPDB(プラガブル・データベース)を配置します。PDBはアプリケーションから独立したデータベースのように利用できますが、PDBごとに専用のインスタンスが必ず起動するわけではありません。CDBのインスタンスが各PDBを管理します。CDB/PDBによるデータベースの構成と、単一インスタンス/RACというインスタンスの構成は、別の観点です。
構成を判断するときの着眼点
説明文に「複数」が出てきたら、何が複数なのかを確認します。ユーザーが複数でも、SGAがユーザーごとに作られるわけではありません。データファイルが複数でも、それだけでデータベースが複数になるわけではありません。インスタンス数、データベース数、ホスト数を分けて数えると、構成を読み違えにくくなります。
参考:Oracle Database 19c Concepts:Oracle Database Instance。
Oracleデータベースを利用するにはインスタンスの起動が必要
Oracle データベースを利用するには、インスタンスを起動してデータベースを「オープン」する必要があります。 インスタンスの起動・停止を実行するにはSQL*Plusに接続してコマンドを実行します。SQL*Plusへの接続は例えば以下のようなコマンドで行います。
$ sqlplus / as sysdba
インスタンスの起動はSQL*Plusに接続した状態で以下のコマンドを使用します。
SQL > startup
インスタンスの停止はSQL*Plusに接続した状態で以下のコマンドを使用します。
SQL > shutdown
SQL*Plusへの接続方法とインスタンスの起動停止についての詳細は後続のレッスンで実施します。