Oracle Direct Seminar <Insert Picture Here> 今さら聞けない!? Oracle 入門 ~ 後編 ~ 日本オラクル株式会社
Agenda 1. Oracle の基本動作 2. Oracle のファイル群 3. Oracle のプロセス群と専用メモリ領域. データベース内部動作 今さら聞けない!? オラクル入門 ~ 後編 ~. データベース内部動作 検索時の動作更新時の動作バックアップについて <Insert Picture Here> Copyright 2007, Oracle. All rights reserved. 2
データベースアクセス クライアント データベースサーバ SQL 文 Oracle 専用のメモリ領域 アプリケーションサーバ Copyright 2007, Oracle. All rights reserved. 3
データベースアクセス メモリ上のデータを検索する データベースサーバ Oracle 専用の SGA メモリ領域 SGA バックグラウンド プロセス常駐プロセス インスタンス ディスク上のデータを読み込む メモリ上の更新データをディスクに書き込む データファイル REDO ログファイル アーカイブ REDOログファイル 制御ファイルパラメータファイル Copyright 2007, Oracle. All rights reserved.
Oracle のファイル群 データファイルデータファイル 表データを格納するファイル以外にもいくつかのファイルが存在 REDO REDOログファイル パラメータファイルパラメータファイル アーカイブアーカイブ REDO REDO ログファイルログファイル 制御ファイル制御ファイル Copyright 2007, Oracle. All rights reserved. 5
システム グローバル領域 (SGA) 処理を高速にするための共有メモリー領域 データベース バッファ キャッシュ REDO ログ バッファ 共有プール 表データ 索引データ UNDO 情報 などを一時的に格納 更新履歴情報 を一時的に格納 SQL 文の情報 DB の管理情報 などを保持 Copyright 2007, Oracle. All rights reserved. 6
バックグラウンド プロセス PMON SMON DBWR SGA CKPT SMON インスタンス回復を実施 PMON ユーザプロセスの回復を実施 DBWR (DBライター) データの書き込み CKPT チェックポイントの処理実施 LGWR ( ログライター ) ログの書き込み ARCH アーカイブファイルを生成 LGWR データ ファイル 制御ファイル REDO ログファイル ARCH アーカイブファイル Copyright 2007, Oracle. All rights reserved. 7
Agenda 1. Oracle の基本動作 2. Oracle のファイル群 3. Oracle のプロセス群と専用メモリ領域. データベース内部動作 今さら聞けない!? オラクル入門 ~ 後編 ~. データベース内部動作 検索時の動作更新時の動作バックアップについて <Insert Picture Here> Copyright 2007, Oracle. All rights reserved. 8
データ検索時の動作 (SQL 文解析 ) 検索 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 1 検索要求 Select * from ~; 2 SQL 文を解析して実行計画をメモリ上に保持 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 9
SQL 文の解析とは SELECT d.dname,e.empno,e.ename,e.job from emp e,dept d where e.deptno=d.deptno; 1. SQL 文をチェック 2. 実行計画を作成 3. 共有 SQL 領域に格納 発行された SQL 文 1 2 SQL 文のチェック 実行計画の作成 同じSQLが今までにあったか 指定されている表や列が本当にあるのか ( 妥当性 ) アクセス権限は正しいか などをチェック! 作成された実行計画 データをどのように持ってくるのか 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=5 Card=1 Bytes=392) 1 0 HASH JOIN (Cost=5 Card=1 Bytes=392) 2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=2 Card= Bytes=) 3 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=2 Card=1 Bytes=238) 3 共有 SQL 領域に格納 Copyright 2007, Oracle. All rights reserved. 10
実行計画の格納 共有プール ライブラリ キャッシュ REDO ログ バッファ データ ディクショナリ キャッシュ データベース バッファ キャッシュ SELECT name FROM emp SELECT name FROM emp SELECT name FROM dept 各ユーザが同一の SQL を実行した場合 同じ共有 SQL 領域を利用 Copyright 2007, Oracle. All rights reserved. 11
データ検索時の動作 (SQL 文解析 ) 検索 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 1 検索要求 Select * from ~; 2 SQL 文を解析して実行計画をメモリ上に保持 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 12
データ検索時の動作 ( メモリ検索 ) 検索 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 3 キャッシュ上でデータ検索 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 13
データ検索時の動作 ( ディスク読込み ) 検索 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール データをキャッシュに展開 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 1
データ検索時の動作 ( 結果を返す ) 検索 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 5 検索結果を返す データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 15
データ更新時の動作 (SQL 文解析 ) 更新 8 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 1 更新要求 Update ~; 2 SQL 文を解析して実行計画をメモリ上に保持 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 16
データ更新時の動作 ( メモリ検索 ) 更新 8 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 3 キャッシュ上でデータ検索 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 17
データ更新時の動作 ( ディスク読込み ) 更新 8 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール データをキャッシュに展開 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 18
データ更新時の動作 ( 更新ログ生成 ) 更新 8 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 8 5 更新履歴を記録 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 19
データ更新時の動作 (UNDO 生成 ) 更新 8 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 8 UNDO 8 6 更新前イメージを UNDO 領域に格納し 行データを更新 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 20
データ更新時の動作 ( ログ書き込み ) 7 コミット要求 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 9 コミット完了通知 8 UNDO 8REDO ログ ファイルへの書き込み 8 LGWR DISK 上のデータ ファイルには更新データが反映されていない 8 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 21
データ更新時の動作 ( データ書込み ) データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 8 UNDO DBWR データ ファイルへの書き込み コミットとは非同期! 8 8 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 22
更新中のインスタンス障害 ~ データ更新時の動作 ~ 7 コミット要求 データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール 9 コミット完了通知 8 UNDO 8 インスタンス障害 メモリ内の更新データが無くなる LGWR DISK 上のデータ ファイルには更新データが反映されていない 8 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 23
更新中のインスタンス障害 ~ データ更新時の動作 ~ データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール インスタンス再起動時に自動的にリカバリを実行 8 SMON 8 データ ファイル REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 2
データ更新時の動作 ( ログ書き込み ) データベース バッファ キャッシュ SGA REDO ログ バッファ 共有プール LGWR 1 つの REDO ログ ファイルがいっぱいになると次の REDO ログ ファイルに切り替わる ログ スイッチ REDO ログ ファイル Copyright 2007, Oracle. All rights reserved. 25
データベース運用モード ARCHIVELOG モード NOARCHIVELOG モード 52 52 5 51 5 53 53 循環して REDO ログを使用し 上書き前にアーカイブする 循環して REDO ログを使用 Copyright 2007, Oracle. All rights reserved. 26
アーカイブ REDO ログ ファイル 循環書込みを行うため 更新履歴情報が上書きされる アーカイブ REDO ログ ファイル 51 51 53 ログ順序番号 52 53 ARCH 52 5 REDO ログ ファイル 更新履歴を残しておく為に REDO ログ ファイルのコピーをとっておく Copyright 2007, Oracle. All rights reserved. 27
NOARCHIVELOG モード運用時の リカバリの制限 DataFile1 2 DataFile1 [ 時間 ] 1 障害発生 DataFile2 全データベースのバックアップをリストアする DataFile2 データ ファイルのバックアップ 更新履歴情報がないので バックアップ時点のデータまでをリカバリ データベースとしての一貫性を保つために全 DB ファイルをリストア Copyright 2007, Oracle. All rights reserved. 28
障害直前の状態まで復旧可能 アーカイブ REDO ログ ファイル ARCH1 ARCH2 ARCH9 3 アーカイブ適用 1 週間前現在 2 リストア [ 時間 ] 1 障害発生 DataFile1 データ ファイルのバックアップ DataFile1 REDO ログ REDO ログ ファイル適用 障害直前の状態まで復旧可能 Copyright 2007, Oracle. All rights reserved. 29
バックアップ ファイルの管理 アーカイブ REDO ログ ファイル ARCH1 ARCH2 ARCH3 ARCH ARCH5 ARCH6 ARCH7 データ ファイル [ 時間 ] Data File データ ファイルのバックアップ Data File データ ファイルのバックアップ Data File データ ファイルのバックアップ A B C Bのバックアップを取得したタイミングで過去のデータ ファイル及びARCH1からARCH3まで削除可能 Copyright 2007, Oracle. All rights reserved. 30
Enterprise Manager 10g を利用したバックアップ Copyright 2007, Oracle. All rights reserved. 31
バックアップ操作概要 (1) Copyright 2007, Oracle. All rights reserved. 32
バックアップ操作概要 (2) Copyright 2007, Oracle. All rights reserved. 33
Agenda 1. Oracle の基本動作 2. Oracle のファイル群 3. Oracle のプロセス群と専用メモリ領域. データベース内部動作 今さら聞けない!? オラクル入門 ~ 後編 ~. データベース内部動作 <Insert Picture Here> Copyright 2007, Oracle. All rights reserved. 3
詳しい説明 システム導入のご相談は Oracle Direct まずはお問合せください http://www.oracle.co.jp/direct 0120-155-096 Copyright 2007, Oracle. All rights reserved. 35
Copyright 2007, Oracle. All rights reserved. 36