DBA インスタンス
目次
Oracleの構成
・ メモリ上のインスタンス(メモリ領域、プロセス)
・ ディスク上のデータベースファイル(物理ファイル)
から成る
インスタンスとは?
データベースを構成する
・ メモリ情報
・ 物理ファイル(データベースファイル)
の内のメモリ情報
・ SGA(システムグローバルエリア)
・ バックグラウンドプロセス
から成る
SGA
システムグローバルエリア
高速アクセスの為にOracleデータベースが稼働するコンピュータ内に保持されるメモリ領域
複数のユーザーで共有される
データベースバッファキャッシュ
データファイルの内容を保持する領域
データをファイルでなくメモリ上に置く事で処理速度の向上を図っている
サーバープロセスは最初にここから読み書きし(速い)、無い場合にデータファイルを操作する(遅い)。
更新内容はDBWnプロセスによりデータファイルへ書き込まれる。
共有プール
・ SQL文解析結果
・ SQL文実行計画
・ データディクショナリ情報
「Oracle データディクショナリ・ビュー」参照
REDOログバッファ
REDO情報を保持する領域
REDO情報 = データベースへの変更情報
(Insert等のDML文、Commit/RollBack等も含む)
commit時、一定時間経過時等に、
REDOログバッファ
→
REDOログファイル へ、
LGWRプロセスによって書き込まれる。
その後REDOログバッファはクリアされる
ラージプール
オプション
・ 共有サーバー時のセッション情報
・ RMAN使用時のデータ
Javaプール
オプション
JVMに含まれるセッション固有のデータを保持
JAVAストアドプロシージャ実行時のJAVAの情報
バックグラウンドプロセス
プロセス名 | 機能 | 補足 |
---|---|---|
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:ユーザー、ロール、権限/システム権限」参照
プロセス
※図はRAC利用時で、複数インスタンス、複数DBファイルを使用
ユーザープロセス
ユーザの操作を受け付け、サーバープロセスに対してリクエストを送信する
サーバープロセス
・ ユーザープロセスからのリクエストを実行
・ 実行結果をユーザープロセスへレスポンス
専用サーバー接続
tnsnames.ora:SERVER=SHARED
共有サーバーに接続しない
クライアントからの接続(セッション)に対して1つのサーバプロセスが割り当てられる
高速
少数のユーザが長時間接続を維持するバッチ処理向け
多数のユーザが頻繁に接続~切断を繰り返すアプリでは遅い
(Webシステムでは接続プーリング機能により回避可能)
UNIX系
データベースへの接続~切断が1プロセス
Windows系
データベースへの接続~切断が1スレッド
共有サーバー接続
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)