DBA インスタンス

Oracleの構成

・ メモリ上のインスタンス(メモリ領域、プロセス)
・ ディスク上のデータベースファイル(物理ファイル)
から成る
oracle_instance_list

インスタンスとは?

データベースを構成する
・ メモリ情報
・ 物理ファイル(データベースファイル)
の内のメモリ情報
・ SGA(システムグローバルエリア)
・ バックグラウンドプロセス
から成る
oracle_instance_list2

SGA

システムグローバルエリア
高速アクセスの為にOracleデータベースが稼働するコンピュータ内に保持されるメモリ領域
複数のユーザーで共有される
oracle_instance_list3

データベースバッファキャッシュ

データファイルの内容を保持する領域
データをファイルでなくメモリ上に置く事で処理速度の向上を図っている
サーバープロセスは最初にここから読み書きし(速い)、無い場合にデータファイルを操作する(遅い)。
更新内容はDBWnプロセスによりデータファイルへ書き込まれる。

共有プール

・ SQL文解析結果
・ SQL文実行計画
・ データディクショナリ情報
 「Oracle データディクショナリ・ビュー」参照

REDOログバッファ

REDO情報を保持する領域
REDO情報 = データベースへの変更情報
(Insert等のDML文、Commit/RollBack等も含む)
commit時、一定時間経過時等に、
REDOログバッファ
→
REDOログファイル へ、
LGWRプロセスによって書き込まれる。
その後REDOログバッファはクリアされる

ラージプール

オプション
・ 共有サーバー時のセッション情報
・ RMAN使用時のデータ

Javaプール

オプション
JVMに含まれるセッション固有のデータを保持
JAVAストアドプロシージャ実行時のJAVAの情報

バックグラウンドプロセス

oracle_instance_list

プロセス名 機能 補足
SMON サーバープロセス監視
インスタンスリカバリ
PMON ユーザープロセス管理
ロールバック
DBWn DBバッファキャッシュ→データファイルへ書込み
LGWR REDOログバッファ→REDOログファイルへ書込み
CKPT DBWnへ実行指示
ARCn REDOログファイル→Archiveログファイルを作成
RMAN バックアップ/リカバリツール ≠バックグラウンドプロセス
MMON アラート通知

SMON

システムモニター
(1)重要なタスク
 ・ インスタンスリカバリ
  (サーバー側の障害時≠PMON)
 ・ 無効になったトランザクションのリカバリ等
(2)メンテナンス・タスク
 ・ 一時領域の再利用
 ・ データ・ディクショナリのクリーンアップ
 ・ UNDO表領域の管理等
を実行

PMON

プロセスモニター
・ ユーザープロセス
 (クライアント側の障害時≠SMON)
・ ディスパッチャプロセス
が異常終了した場合にプロセスのリカバリを実行
・データベースバッファキャッシュのクリーンアップ
・リソース解放(ロールバック、ロック解除)
・プロセス、ディスパッチャ再起動

DBWn

データベースライタープロセス
データベースバッファキャッシュ
↓
データファイル
へ書き込む。
書き込むタイミングはCKPTプロセスが指示する

LGWR

ログライタープロセス
REDOログバッファ
↓
REDOログファイル
へ書き込む。
「REDOログバッファ」参照

CKPT

チェックポイントプロセス
チェックポイントでDBWnにシグナルを送る
データベースの全てのデータファイルと制御ファイルを更新
最新のチェックポイントを示す

ARCn

アーカイバプロセス
・ REDOログ・ファイルが一杯になる
・ オンラインREDOログの切替えが発生
の場合に、
REDOログファイル
↓
アーカイブ記憶領域
へコピーする

RMAN

Recovery Manager
・ バックアップ
・ リストア
・ リカバリ
用Oracle標準ツール
以下の方法で起動・操作可能
・ OSから起動、コマンドラインで操作
・ EMで操作(バックグラウンドで起動・実行される)
RMANを使用せずにOSの機能だけでのバックアップ、リストア、リカバリと比較して、
・ バックアップ:世代管理、不要バックアップの自動削除
・ リストア:必要なバックアップファイルの自動取得
等のメリットがある。
「DBA バックアップ」参照
「DBA リカバリ」参照

MMON

マネージメント・モニター
・統計情報の取得
・各値に対して、しきい値(メトリック)を超えた場合のアラート通知処理
表領域の不足等

データベース起動の流れ

状態 説明 必要なファイル SQLコマンド
Open
↑
使用可能 ・ REDOログファイル
・ データファイル
STARTUP
ALTER DATABASE OPEN
Mount
↑
データベースをマウント
Oracleが物理構成を保持
・ 制御ファイル STARTUP MOUNT
ALTER DATABASE MOUNT
NoMount
↑
インスタンス起動 ・ PFile
・ SPFile
STARTUP NOMOUNT
ShutDown 停止 「切断」参照

インスタンスの状態を確認するSQLは「Oracle データディクショナリ・ビュー/インスタンス」参照
起動に必要な権限については「SQL DCL:ユーザー、ロール、権限/システム権限」参照

プロセス

dba_process3
※図はRAC利用時で、複数インスタンス、複数DBファイルを使用

ユーザープロセス

ユーザの操作を受け付け、サーバープロセスに対してリクエストを送信する

サーバープロセス

・ ユーザープロセスからのリクエストを実行
・ 実行結果をユーザープロセスへレスポンス

専用サーバー接続

dba_process1
tnsnames.ora:SERVER=SHARED
共有サーバーに接続しない
クライアントからの接続(セッション)に対して1つのサーバプロセスが割り当てられる
高速
少数のユーザが長時間接続を維持するバッチ処理向け
多数のユーザが頻繁に接続~切断を繰り返すアプリでは遅い
(Webシステムでは接続プーリング機能により回避可能)
UNIXç³»
データベースへの接続~切断が1プロセス
Windowsç³»
データベースへの接続~切断が1スレッド

共有サーバー接続

dba_process2
tnsnames.ora:SERVER=SHARED
共有サーバーに接続できない場合はエラー
常時複数のサーバープロセスが待機しており、
ディスパッチャという受付サービスがクライアントからの要求を空いているサーバプロセスへ振り分ける
マルチスレッドサーバー(MTS:Multi Thread Server)接続とも呼ばれる。
サーバのリソースを効率的に使用できる反面、速度は専用サーバに劣る

PGA

プログラムグローバル領域
サーバープロセスに対して割り当てられる。
・ プライベートSQL領域
  セッション毎のカーソル、バインド情報
・ セッションメモリー
  セッション毎のログイン情報
・ SQL作業領域
  SQL文で使用するソート、結合情報。最も多く消費され易い
から成る。
他のサーバープロセスとは共有されない。
複数のサーバープロセスが起動している場合、複数のPGAが起動する。
個々のPGAの集合は、
インスタンスPGA(合計インスタンスPGA)
と呼ばれる。

UGA

User Global Area
SQL実行の際、ソートや結合時に使用されるメモリ領域
・ 専用サーバ接続時:PGAから割り当て
・ 共有サーバ接続時:ラージプールから割り当て

メモリ管理

自動メモリー管理

SGA、PGAの合計メモリサイズを指定すると、
負荷に応じてSGA、PGAに対して動的にメモリ容量が割り当てられる
PGAが複数ある場合も同様に動的に割り当てられる

手動メモリー管理

・ 自動共有メモリー管理: SGA用
  最大メモリ容量を設定すると、動的にメモリ容量が調整される

・ 手動共有メモリー管理: SGA用
  手動でメモリ容量を設定する

・ 自動PGAメモリー管理
  最大メモリ容量を設定すると、動的にメモリ容量が調整される

・ 手動PGAメモリー管理
  手動でメモリ容量を設定する

がある。

メモリアドバイザ

最適なメモリーサイズを選択できるグラフィカルツール
Oracle エンタプライズマネージャー使用方法参照

管理モード アドバイザ
自動メモリー管理 メモリーアドバイザ
自動共有メモリー管理 + 自動PGAメモリー管理
(自動メモリー管理:無効)
SGAアドバイザ
PGAアドバイザ
手動共有メモリー管理 + 自動PGAメモリー管理
(自動メモリー管理:無効 / 自動共有メモリー管理:無効)
PGAアドバイザ
共有プールアドバイザ
バッファキャッシュアドバイザ

「Oracle エンタプライズマネージャー使用方法②サーバー/メモリー・アドバイザ」参照

参考

REDO/UNDO

REDO
REDO情報 = データベースへの変更情報
DDL文、COMMIT/ROLLBACK命令等も含まれる
保存先:REDOログバッファ → REDOログファイル

UNDO
UNDO情報 = 変更前(COMMIT前)データ
ROLLBACKの為に使用
・変更が発生する度に更新される=COMMITされるまではデータが保障される
・保存先:UNDO表領域
UNDO表領域が不足すると「スナップショットが古すぎます」エラーが表示される
・UNDO保存=コミット後の保存時間
パラメータ:UNDO_RETENTIONで指定(規定:900)

Follow me!

前の記事

DBA DatabaseAdministrator

次の記事

DBA オブジェクト