Oracleの基本的なアーキテクチャについてはこちら
SQLの処理の流れ
共有プール
- SQLが発行されるとサーバプロセスがそのSQLを受け取り、SQLの処理を行う。
- まずは、共有プール上でSQLの解析結果が無いかチェック。
- 解析結果があれば、それを再利用(ソフトパース)。なければ、解析を行い解析結果を共有プール上に保持(ハードパース)。

データベースバッファキャッシュ
- 共有プールで処理がされたあと、DBバッファキャッシュにSQLを処理するためのデータがあるかチェック。
- 必要なデータがあればそれを再利用。なければ、DBWR(データベース・ライター・プロセス)がデータファイルから必要なデータをDBバッファキャッシュ上に読み込む。
- 今回発行されたSQLがデータの検索(select)であれば、そのまま結果をユーザプロセスに返す。検索ではなく、変更処理(DML(insert/update/delete))であれば、DBバッファキャッシュ上でデータの変更を行う。

REDOログバッファ(※変更処理の場合)
- データを変更すると、その変更履歴(REDOレコード)が生成され、REDOログバッファにためられる。
- REDOログバッファにある程度の変更履歴がたまると、LGWR(ログ・ライター・プロセス)がオンラインREDOログ・ファイルに変更履歴を書き出す(未コミットも含め書き出す)。

データベースバッファキャッシュ(※変更処理の場合)
- DBバッファキャッシュ上の変更済みのデータはDBWRがデータファイルに書き出す。
