挨拶
初めまして、日本システム開発株式会社の鈴木です。
技術者として更なる向上を目指すためQiitaアウトプットをする取り組みを行っています。
技術者としては経験が浅く発信内容はとにかく試したものの覚書になります。
今回は資格取得勉強中に苦戦したOracleデータベースのOracleインスタンスについて備忘録を書いていきます。
Oracleインスタンス
OracleインスタンスとはOracleデータベースの処理の中心となる SGA(システムグローバル領域) というメモリ領域と バックグラウンドプロセス というデータベース管理に必要なプロセスの2つとなります。インスタンスは(Oracle Real Application Clustersを使用しないかぎり)データベースファイルと1:1で対応します。
バックグランドプロセス
データベースライター(DBWn)
DBWnはデータベースバッファキャッシュ内の更新データをデータベースファイルに反映するプロセスです。高速化のためにディスク上のデータベースファイルではなくメモリ上のキャッシュを編集する際に、更新されたキャッシュ上のブロックをデータベースファイルに反映する役割を持ちます(キャッシュに読み込む処理はサーバプロセスが行います)。
チェックポイント(CKPT)
DBWnにデータファイルへの更新を指示するバックグランドプロセス
ログライター(LGWR)
復旧用REDOログをREDOログファイルへ書き込むプロセスです。キャッシュの更新履歴(REDOデータ)はメモリ上に保存されますがトランザクションがコミットしたタイミングでLGWRが書き込みを行います。
システムモニター(SMON)
インスタンス 異常終了時に整合性復旧を行うプロセス
プロセスモニター(PMON)
プロセス 異常終了時にプロセスがロックしていたリソースの開放を行うバックグランドプロセス
管理モニター(MMON)
性能分析で使用される統計情報を収集する
アーカイバ(ARCn)
REDOログファイルは多重化して破損に備えます。その際に多重化しているログファイルの一つを1グループとして、更にグループを切り替えてログファイルを保存していきます。このグループの切り替え(ログスイッチ)時にREDOログファイルをアーカイブログファイルとして指定ディレクトリに保存するバックグランドプロセス。
SGA(システムグローバル領域)
データベースバッファキャッシュ
データベースのブロックを編集する際にディスク上のファイルを開くと処理が遅いため、キャッシュとしてメモリ上に読み込む際のメモリ領域。更新や読み込みは一度このデータベースバッファキャッシュにキャッシュされる。
共有プール
解析済みのSQL情報やデータベースディクショナリ情報をキャッシュする領域
REDOログファイル
LGWRがREDOログファイルへ書き込む前のREDOログ履歴のキャッシュ。トランザクションがコミットされる前まで更新。
まとめ
今回は、Oracleインスタンスの主要な構成要素であるSGAとバックグラウンドプロセスについて解説しました。SGAは高速なデータアクセスと処理効率化のために、バックグラウンドプロセスはデータベースの安定稼働とデータ保全のために、それぞれ重要な役割を担っています。