ORACLE/オラクルの仕組編

オラクルちょこっとリファレンス

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編もごらんください。

ToTop