アーキテクチャ(3大要素)
| 要素 |
内容 |
| メモリ側 |
SGA、PGA |
| ディスク側 |
データベース |
| プロセス側 |
ユーザプロセス、サーバープロセス、バックグラウンドプロセス |
ディスク側
| 要素 |
内容 |
| データファイル |
ユーザのデータを保持 (例)社員情報など |
| オンラインREDOログ・ファイル |
DB内で行われたすべての変更履歴を保持 (例)障害からの復旧などで使われる |
| 制御ファイル |
DBを稼働させる上で必要な情報を保持 (例)DB名など |
プロセス
| 要素 |
内容 |
| ユーザプロセス |
クライアント側で生成される。SQLの発行を行う。 |
| サーバプロセス |
DBサーバ側で生成される。発行されたSQLを受け取り→処理→SQLの結果をユーザプロセスに返す。 |
| バックグラウンドプロセス |
Oracleの内部的な処理を行う。 (例)メモリ上で変更されたデータをDB側に書き出すなど |
メモリ側
| 要素 |
内容 |
| SGA |
共有メモリ領域。 |
| PGA |
ユーザ固有の非共有メモリ領域。主にソート処理でつかわれる。この領域を使ってもソートが終わらなければ、ディスク側でソート処理を行う |
| SGAの中身 |
内容 |
| データベース・バッファ・キャッシュ |
データファイル上のデータを読み込み、データの変更処理をおこなうところ。 |
| REDOログ・バッファ |
データの変更履歴を保持するところ。 |
| 共有プール |
SQLの解析や解析結果を保持するところ。 |
※解析とは、SQLの構文に間違いが無いかや、指定された表などにアクセスする権限があるかなどの様々なチェックのこと
共有プールの中身
| 共有プールの中身 |
内容 |
| ライブラリ・キャッシュ |
SQLやそのSQLの解析結果、実行計画を保持(共有SQL領域)。 |
| ディクショナリ・キャッシュ |
SQLを解析するために必要なデータ・ディクショナリの情報を保持。 |
※実行計画とは、データにアクセスするための最適な方法 (例)全表スキャンを使うのか、索引スキャンを使うのかなど |
|
※データ・ディクショナリとは、DB内の管理表。Oracleの中でも最も大事な表。
SQLの処理の流れはこちら