HOME > オラクルの仕組編
オラクルの仕組
オラクルの内部の仕組みは大きく分けて、SGAと呼ばれるメモリー領域、各種の役割を持ったプロセス群、データやログを格納する物理ファイル群(データベースファイル・その他ファイル)の3つから構成されています。
そのうち、メモリー領域(SGA)とプロセス群をあわせて「オラクルインスタンス」、物理ファイル群を「オラクルデータベース」と呼んでいます。
オラクルインスタンス
メモリー領域(SGA)とプロセス群から成るオラクルインスタンスは、以下のような構成になっています。SGAのサイズを確認するには「SHOW SGA」コマンドで確認できます。
SGA (SystemGrobalArea) | |
---|---|
共有プール |
最近実行したSQLやデータディクショナリ情報を格納するメモリー領域。 ライブラリキャッシュと、データディクショナリキャッシュにより構成される (SHARED_POOL_SIZEにてサイズを指定する) ライブラリキャッシュ: 直前に実行したSQLやそのSQLの解析結果、実行計画情報を格納するメモリ情報 データディクショナリキャッシュ: 直前に実行したSQLにより使用したデータディクショナリの表情報、およびそのデータディクショナリに対する権限情報を格納するメモリ領域 ユーザグローバル領域: 共有サーバ接続時にセッション情報やカーソル情報を格納するメモリ領域。但し、ラージプールが作成されている場合はラージプールに格納される。 |
データベース バッファキャッシュ |
最近使用したデータを格納するメモリー領域。 |
REDOログバッファ |
データベースに対して行われた変更履歴(ログ)を格納するメモリー領域。 (LOG_BUFFERにてサイズを指定する) |
ラージプール | 共有サーバのセッション情報やI/Oスレーブ、バックアップのリストア等大量のデータを扱う場合に使用するメモリ領域 ラージプールはオプションであり、通常データベース作成直後には作成されていない。 |
Javaプール | Javaプログラムを実行するのに必要なメモリ領域。Javaプールはオプションであり通常データベース作成直後には作成されていない。 |
バックグラウンドプロセス | |
---|---|
DBWn: データベースライタープロセス |
プロセス名: ORA_DBWn_<SID> データベースバッファキャッシュ内の変更データを、データファイルに書込むプロセス。 |
LGWR: ログライタープロセス |
プロセス名: ORA_LGWR_<SID> REDOログバッファ内のデータベース変更履歴情報を、REDOログファイルに書込むプロセス。 以下の条件の時に実行されます。 ・トランザクションがコミットした時 ・DBWnが使用済みバッファをデータファイルに書き込む直前 ・REDOログバッファの1/3が使用された時 ・3秒おき ・1MBのREDOレコードが存在する時 |
CKPT: チェックポイントプロセス |
プロセス名: ORA_CKPT_<SID> データベースバッファキャッシュ内の変更内容がデータベースに書込まれる時に、制御ファイルにデータベースのステータス情報を書込むプロセス。 以下の条件の時に実行されます。 ・ログスイッチが発生した時 ・OracleServer正常停止時 ・alter system checkpoint; 実行時 ・表領域をオフラインにした時 ・オンラインバックアップの開始時 ・FAST START CHECKPOINTが設定されている時 |
SMON: システムモニタプロセス |
プロセス名: ORA_SMON_<SID> OPEN時にデータベースの整合性をチェックするプロセスで、整合性が取れていない時にはリカバリを行うプロセス。 |
PMON: プロセスモニタプロセス |
プロセス名: ORA_PMON_<SID> プロセスが正常終了しない場合(異常終了時)に、リソースを正常化させる機能を持つプロセス。 |
その他プロセス | |
---|---|
ARCn: アーカイバ |
プロセス名: ORA_ARCn_<SID> アーカイブを取得する設定(パラメータ:LOG_ARCHIVE_START=TRUE)の場合のみ有効。 REDOログ・ファイルの内容を、アーカイブログファイルへコピーするプロセス。 |
RECO: リカバラー |
プロセス名: ORA_RECO_<SID> 分散データベース環境(パラメータ=DISTRIBUTED_TRANSACTIONS)の場合のみ有効。 ネットワーク/ノード障害のために保留されている分散トランザクションがある場合、ローカルのRECOプロセスは定間隔でリモート・データベースに接続し、ローカル・データベースを自動的にコミット、またはロールバックする。 |
LCKn: ロック |
パラレル・サーバー構成でのみ使用。 最大10個のLCKnプロセス(LCK1...LCK9)によって、内部インスタンス・ロックを制御する |
Dnnn: ディスパッチャー |
プロセス名: ORA_Dnnn_<SID> マルチスレッド・サーバー構成でのみ使用。 接続されたユーザー・プロセスから使用可能な共有サーバー・プロセスへ要求を割り当て、該当するユーザー・プロセスに応答する。処理結果をユーザ・プロセスに戻す。 使用されているトランスポート・プロトコルごとに、1つのディスパッチャー・プロセスが必要(D000...Dnnn) |
Snnn: 共有サーバ |
プロセス名: ORA_Snnn_<SID> 接続しているユーザー・プロセスからの要求を、ユーザー・プロセスに代わって処理する。 専用サーバー構成では、1つのサーバー・プロセスが1つのユーザー・プロセスの要求を処理する。マルチスレッド・サーバー構成では、多くのユーザー・プロセスが、わずかなサーバー・プロセスを共有する |
オラクルデータベース
物理ファイルから成るオラクルデータベースは、以下のようなファイルで構成されています。
物理ファイル | |
---|---|
制御ファイル | DBの管理情報を保持しているファイル。非常に重要。 |
データファイル | DBのデータが保存されているファイル。 1表領域=nファイルとなる。(n>=1) |
REDOログファイル | DBへ行われた変更が記録されているファイル。2つ以上のファイルを循環的に使用する。 |
初期化パラメータファイル | DB起動時に読み込む初期化情報が記録されたファイル。 バイナリ形式のSPFILEとテキスト形式のPFILEがある。 |
アーカイブログファイル | REDOログファイルをアーカイブしたファイル。アーカイブログモードの時にのみ作成される。 |
パスワードファイル | パスワード認証を採用しているときに使用するファイル。orapwdコマンドで作成。 |
アラートファイル |
障害が発生したときに、その情報が記録されるファイル。 BACKGROUND_DUMP_DEST(初期化パラメータ)に指定したフォルダに作成される。 ファイルの最大サイズを指定できないため、定期的に手動で管理する必要がある。 |
バックグラウンド トレースファイル |
バックグラウンドプロセスから出力されるエラーログ。 BACKGROUND_DUMP_DEST(初期化パラメータ)に指定したフォルダに作成される。 MAX_DUMP_FILE_SIZEにて最大サイズを設定できる。 |
ユーザ トレースファイル |
サーバプロセスから出力されるログ。 USER_DUMP_DEST(初期化パラメータ)に指定したフォルダに作成される。 MAX_DUMP_FILE_SIZEにて最大サイズを設定できる。 |
データファイルの内部では、さらに以下のような構成で管理されています。
データファイル記憶領域 | |
---|---|
ブロック (block) |
オラクルの最小単位領域 (初期化パラメータのdb_block_sizeに設定) |
エクステント (extent) |
ブロックが集まってできた領域 (セグメントの拡張はエクステント単位で行う) |
セグメント (segment) |
エクステントが集まってできた領域 (1つのオブジェクトは1セグメントである) |
表領域 (tablespace) |
セグメントの集合体 (物理ファイル単位でもある) |
ご参考に→オブジェクト/TABLESPACE編もごらんください。