タイトル: インスタンス
SEOタイトル: Oracle インスタンス 完全ガイド(SGA / バックグラウンドプロセス / データベースとの分離 / 起動と停止)
| この記事の要点 |
|
インスタンスとは
Oracle Database は、ほかの一般的な RDBMS とは少し違う独特の用語体系を持ちます。中でも重要な区別が 「インスタンス」と「データベース」の分離です。
| 用語 | 正体 | 性質 |
|---|---|---|
| インスタンス | SGA(共有メモリ)+ バックグラウンドプロセス群 | 揮発性 — OS のメモリ上に存在。電源を切ると消える |
| データベース | データファイル / REDO ログ / 制御ファイル / パラメータファイル | 永続性 — ディスク上のファイル群 |
インスタンスは「データベースを使うための実行環境」、データベースは「データそのもの」と覚えるのが分かりやすいでしょう。データベースは存在するが、起動していなければアクセスできません。「インスタンスを起動する」=「メモリを確保してバックグラウンドプロセスを立ち上げる」です。
インスタンスを構成する 2 つの要素
1. SGA(System Global Area)
すべてのプロセスから共有される共有メモリ領域です。主な構成要素は次の通りです。
| 領域 | 役割 |
|---|---|
| データベースバッファキャッシュ | データファイルから読み込んだブロックをキャッシュ |
| REDO ログバッファ | 更新内容を一時的にバッファし、後で REDO ログファイルに書き出す |
| 共有プール | SQL 文の実行計画やディクショナリ情報をキャッシュ |
| Large Pool | バックアップやパラレル処理など大きな割り当てが必要なオブジェクト用 |
| Java Pool / Streams Pool | Java プロシージャや Streams 機能用 |
2. バックグラウンドプロセス
SGA を読み書きし、データファイルやログファイルとやり取りする常駐プロセス群です。
| プロセス | 役割 |
|---|---|
| DBWn(DB Writer) | バッファキャッシュの更新済みブロックをデータファイルに書き出す |
| LGWR(Log Writer) | REDO ログバッファを REDO ログファイルに書き出す(COMMIT 時に重要) |
| CKPT(Checkpoint) | チェックポイントを発生させ、制御ファイル・ヘッダを更新 |
| SMON(System Monitor) | クラッシュリカバリ、一時セグメントの解放 |
| PMON(Process Monitor) | 異常終了したセッションのクリーンアップ |
| ARCn(Archiver) | REDO ログをアーカイブ領域にコピー(ARCHIVELOG モード時) |
データベースとの違い
「データベース」と呼ぶ実体は、ディスク上の以下のファイル群です。
- データファイル(.dbf) — 実際のデータ本体
- REDO ログファイル — 更新履歴。リカバリに必須
- 制御ファイル — データベースの構成情報(ファイルの場所など)
- パラメータファイル(spfile / pfile) — インスタンス起動時の設定
- アーカイブログ(任意) — REDO ログを長期保存
これらは電源を落としてもディスク上に残ります。インスタンスは起動時に制御ファイルを読み、SGA を確保し、データファイル・REDO ログをマウントしてオープンします。
1 インスタンス : 1 データベースが基本
通常のシングル構成では 1 インスタンスが 1 データベースを開く関係です。一方、Oracle RAC(Real Application Clusters)では複数ノードの複数インスタンスが同一のデータベースを共有します。これは可用性とスケールアウトのための構成です。
| 構成 | インスタンス数 | データベース数 |
|---|---|---|
| シングル | 1 | 1 |
| RAC | 2 以上 | 1(共有) |
| マルチテナント(CDB/PDB) | 1 | 1 CDB + 複数 PDB |
起動と停止
インスタンスは SQL*Plus で SYSDBA 権限で接続して起動・停止します。
-- 起動
sqlplus / as sysdba
SQL> STARTUP;
-- NOMOUNT → MOUNT → OPEN の 3 段階を経て稼働状態に
-- 停止
SQL> SHUTDOWN IMMEDIATE;
-- 接続中のセッションをロールバックして停止
| 状態 | 意味 |
|---|---|
| NOMOUNT | SGA とバックグラウンドプロセスは起動。データベースはまだ開いていない |
| MOUNT | 制御ファイルを読み込んだ状態。リカバリ作業はここで実施 |
| OPEN | データファイル・REDO ログがオープン。通常利用可能 |
SHUTDOWN の種類
| コマンド | 挙動 |
|---|---|
SHUTDOWN NORMAL | 新規接続を拒否し、既存セッションが切れるまで待機 |
SHUTDOWN TRANSACTIONAL | 進行中トランザクション完了を待ってからセッション切断 |
SHUTDOWN IMMEDIATE | セッションをロールバックして即時停止(一般的に使われる) |
SHUTDOWN ABORT | 強制停止。次回起動時にクラッシュリカバリが必要 |
セッションとプロセスの関係
クライアントが Oracle に接続すると、セッションが確立されます。サーバ側には対応するサーバプロセス(専用サーバ構成)または共有サーバが割り当てられ、それぞれが PGA を持ちます。SGA を経由してデータをやり取りし、コミット時には LGWR が REDO ログを永続化します。
| 要素 | 所有者 | 共有範囲 |
|---|---|---|
| SGA | インスタンス | 全プロセスで共有 |
| PGA | 各サーバプロセス | 個別(共有しない) |
| セッション | 各クライアント接続 | 個別 |
FAQ
Q: インスタンス名(ORACLE_SID)とは?
A: 同じ OS 上で複数のインスタンスを区別する識別子。環境変数 ORACLE_SID で「どのインスタンスに接続するか」を切り替えます。
Q: PGA は SGA に含まれない?
A: 含まれません。PGA はサーバプロセスごとのメモリで、共有されません。詳細は PGA 記事を参照。
Q: インスタンスだけ再起動できる?
A: SHUTDOWN → STARTUP で実質的に再起動可能。データベース本体(ファイル)はそのままです。
Q: マルチテナント構成(CDB / PDB)ではどうなる?
A: 1 つの CDB インスタンスが複数の PDB を抱える構造になります。ALTER PLUGGABLE DATABASE で個別 PDB の起動・停止ができますが、インスタンスそのものは CDB に紐付きます。
関連
- データベースの構成 — 親カテゴリ
- Oracle データベース(インスタンスとデータベースの分離・CDB / PDB・物理構造)
- SGA(システムグローバル領域)
- PGA
- プロセス
- Oracle — カテゴリトップ