Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle Databaseのデータ・プロテクション詳解

Oracle Databaseのデータ・プロテクション詳解

2020年11月19日開催
Oracle Database Technology Night #40 前半 Oracle Databaseのデータ・プロテクション詳解

データベースのデータ永続化はハード・ディスクやフラッシュ・メモリーのような不揮発性デバイスに依存しています。

これらストレージ・デバイスの障害はデータベース・システムの障害に直結し、場合によっては記録されたはずのデータを失うという深刻な事態を招きます。

一般的にはストレージ装置の可用性はRAIDを想像すると思います。しかし、RAIDというのはストレージ・デバイスの冗長化であるため、ハード・ディスクやフラッシュ・メモリーの故障にしか対処できません。

Oracle Databaseはストレージ・デバイスに格納されているはずのデータに破損が生じたことを検出する能力があり、場合によっては自動修復することも可能です。

今回はOracle Databaseのデータ・プロテクションについて解説します。
前半はOracle Databaseが持つデータ・プロテクション機能の全体観を見ます。
そして後半はその中でもAutomatic Storage Management(ASM)を詳解します。
ASMはOracle Database専用のボリューム・マネージャ兼ファイルシステムとして機能します。
データベース用途を考慮して設計されたASMは何を解決しようとしたのか、20世紀のI/Oサブシステムまでさかのぼって解説します。

oracle4engineer

November 19, 2020
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Oracleインスタンス + ストレージ上のデータベース・ファイル群 Oracle Databaseアーキテクチャ Copyright © 2020, Oracle and/or

    its affiliates 5 制御ファイル • データベース構成の情報 オンラインREDOログ・ファイル • 更新の履歴 データファイル • データの本体 Oracleインスタンス • 共有メモリ • プロセス群 データベース • 制御ファイル • オンラインREDOログ・ファイル • データファイル
  2. Copyright © 2020, Oracle and/or its affiliates 6 Oracleサーバー・プロセスがメモリを更新しバックグラウンド・プロセスがファイルに永続化 Oracle

    Databaseアーキテクチャ REDOログ・バッファ オンラインREDOログ・ファイル LGWR oracle oracle Oracleサーバー・プロセス ログ・ライター・プロセス データベース・バッファ・キャッシュ DBWn データベース・ライター・プロセス データファイル SGA oracle Oracleサーバー・プロセスに よるSQL処理はメモリを更新 バックグラウンド・プロセスが ファイルに永続化 OS
  3. Oracle Databaseのデータ・プロテクション機能 Copyright © 2020, Oracle and/or its affiliates 8

    Flashback Log Backup RMAN 検査付きバックアップ Flashback Database 過去のある時点に戻す ASM 書き込み多重化 REDOログ/制御ファイル 多重化 Oracleインスタンス ストレージ データ・ブロックの破損検査 REDOログ/制御ファイル 破損検査
  4. Active Data Guardによるリモート・レプリケーション Oracle Databaseのデータ・プロテクション機能 Copyright © 2020, Oracle and/or

    its affiliates 9 Flashback Log Backup Data Guard REDO検査付きレプリケーション Active Data Guard ブロック破損自動修復 Oracleインスタンス ストレージ Oracleインスタンス プライマリ・データベース スタンバイ・データベース
  5. データ破損に対処する機能はデータ破損検出能力が必要 Oracle Databaseのデータ・プロテクション機能 Copyright © 2020, Oracle and/or its affiliates

    10 Flashback Log Backup RMAN 検査付きバックアップ Flashback Database 過去のある時点に戻す ASM 書き込み多重化 REDOログ/制御ファイル 多重化 Data Guard REDO検査付きレプリケーション Active Data Guard ブロック破損自動修復 Oracleインスタンス ストレージ Oracleインスタンス REDOログ/制御ファイル 破損検査 データ・ブロックの破損検査
  6. ファイル破損を検出できるからその対処機能を実装可能 Oracle Databaseはデータベース構成ファイルの破損を1ブロック単位で検出可能 Copyright © 2020, Oracle and/or its affiliates

    11 制御ファイル • データベース構成の情報 オンラインREDOログ・ファイル • 更新の履歴 データファイル • データの本体 ORA-01578: Oracleデータ・ブロックに障害が発生しました(ファイル番号4、ブロック番号27) ORA-01110: データファイル4: '/u01/app/oracle/oradata/orcl/users01.dbf'
  7. ファイル破損を検出できるからその対処機能を実装可能 ファイル破損検出 • データ・ブロックの検査設定 • オンラインREDOログ・ファイルと制御ファイル • チェックサム • ファイル多重化

    データベースの過去の状態にアクセスしたい • Flashback 検出したファイル破損に対処する機能群 • Recovery Manager (RMAN) • バックアップおよびリストア・リカバリ • ファイル破損を検査しながらコピー • Data Guard • ブロック構造まで同じになるレプリケーション • 受信したREDOログを検査 • Active Data Guard • 自動ブロック・メディア・リカバリ • Automatic Storage Management (ASM) • ファイル破損の自動修復 Oracle Databaseのデータ・プロテクション Copyright © 2020, Oracle and/or its affiliates 12
  8. Copyright © 2020, Oracle and/or its affiliates 13 データ・ブロックとREDOブロックにチェックサムを付与する 初期化パラメータ

    DB_BLOCK_CHECKSUM (デフォルトはTYPICAL) REDOログ・バッファ オンラインREDOログ・ファイル LGWR oracle oracle Oracleサーバー・プロセス ログ・ライター・プロセス データベース・バッファ・キャッシュ DBWn データベース・ライター・プロセス データファイル SGA oracle DB_BLOCK_CHECKSUM= TYPICAL or FULL Oracleサーバー・プロセスが REDOブロックを生成するときに チェックサムを付与する OS DB_BLOCK_CHECKSUM=TYPICAL DBWnプロセスがブロックをファイルに書くと きにチェックサムを計算し付与する DB_BLOCK_CHECKSUM=FULL ブロックを更新する前にチェックサムを検査 し、更新後に再計算して付与する
  9. Copyright © 2020, Oracle and/or its affiliates 14 破損が検出されるのは破損箇所を読んだとき ファイル・ブロックを読むときにチェックサムが検査される

    オンライン REDOログ・ ファイル LGWR oracle oracle Oracleサーバー・プロセス アーカイバ・プロセス データベース・バッファ・キャッシュ DBWn データベース・ライター・プロセス データファイル SGA oracle アーカイバ・プロセスがオンライン REDOログ・ファイルを読むときに 破損検査される OS データ・ファイルからデータ・ブロックを読むと きに破損検査される ARCn アーカイブ REDOログ・ ファイル
  10. そのファイル・ブロックは無効なので処理停止、そのため破損が伝搬しない エラーで処理停止する場合の対処 • バックアップからのリストアおよびリカバリで復旧させる • Data Guardスタンバイ・データベースをプライマリに昇 格させてフェイルオーバー 冗長化ファイルにフェイルオーバーして処理続行 •

    オンラインREDOログ・ファイルのアーカイブ • RMANバックアップ・ファイルからのリストア 破損個所を自動修復 • ASM • Active Data Guard自動ブロック・メディア・リカバリ ファイル・ブロックの破損が検出されたら? Copyright © 2020, Oracle and/or its affiliates 15 データのコピーがあれば復旧可能 ORA-01578: Oracleデータ・ブロックに障害が発生しました(ファ イル番号4、ブロック番号27) ORA-01110: データ ファイル4: '/u01/app/oracle/oradata/orcl/users 01.dbf'
  11. データファイルのコピーとREDOログの適用 バックアップおよびリストア・リカバリ Copyright © 2020, Oracle and/or its affiliates 17

    制御ファイル • データベース構成の情報 オンラインREDOログ・ファイル • 更新の履歴 データファイル • データの本体 用語 意味 バックアップ (主にデータファイル) ファイルのコピーを取得すること リストア バックアップ・ファイルから書き戻すこと リカバリ REDOログをデータ・ブロックに適用すること Oracle Databaseではリストアとリカバリはセット 制御ファイルとREDOログ・ファイルの情報でデータファイルの内容を破損直前までもどす
  12. 19 バックアップおよびリストア・リカバリ INSERT UPDATE DELETE 時間 時刻t0 バックアップ (データファイルのコピー) 時間

    時刻t0に取得したデータ・ファイルのバックアッ プには最新でも時刻t0までの情報しか含ま れていない。 INSERT UPDATE DELETE
  13. 20 バックアップおよびリストア・リカバリ INSERT UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t1

    INSERT UPDATE DELETE INSERT UPDATE DELETE バックアップ (データファイルのコピー) 時間 時刻t1にデータファイルの破損を検出した。
  14. 21 バックアップおよびリストア・リカバリ INSERT UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t1

    データファイル障害発生 INSERT UPDATE DELETE INSERT UPDATE DELETE バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) 時刻t0に取得したデータ・ファイルのバックアッ プには最新でも時刻t0までの情報しか含ま れていない。
  15. 22 バックアップおよびリストア・リカバリ INSERT UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t1

    データファイル障害発生 INSERT UPDATE DELETE INSERT UPDATE DELETE リカバリ (REDOログの適用) バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) データファイルの状態が 時刻t1まで復元される。
  16. 推奨はRMAN • Oracle付属のバックアップ・ツール • Oracleサーバー・プロセスがデータベースのファイルにア クセスする仕組みを使ってファイルをコピー • Oracleインスタンス管理下で行われる操作 • RMAN以外の方法でコピーするすべての手法

    • Oracleインスタンスがコピーを関知しない • OSのファイル・コピー・コマンド • ストレージ機能のスナップショットやスプリット・ミラー Oracle Databaseの2種類の物理バックアップ手法 Copyright © 2020, Oracle and/or its affiliates 23 oracle rman データファイル (コピー元) バックアップ (コピー先) スナップショット スプリット・ミラー Recovery Manager (RMAN) ユーザー管理バックアップ RMANクライアント Oracleサーバー・ プロセス コピー元ボリューム バックアップ・ボリューム
  17. 確実にリカバリするための"Recovery" Manager • コピー時に破損検査が行われる • 破損が伝搬しない • バックアップしたファイルの破損検査も可能 • 破損領域がそのままコピーされる

    • バックアップも破損している場合がある • 誤った単位でボリュームをコピーしているとリカバリ時に なってはじめてリカバリ不能に気付く ファイル・コピー中のブロック破損検査 Copyright © 2020, Oracle and/or its affiliates 24 oracle rman データファイル (コピー元) バックアップ (コピー先) スナップショット スプリット・ミラー Recovery Manager (RMAN) ユーザー管理バックアップ RMANクライアント Oracleサーバー・ プロセス コピー元ボリューム バックアップ・ボリューム
  18. リストア中にバックアップ・ファイルの破損が検出されたらリストア元ファイルをフェイルオーバー RMANはバックアップ・ファイルを複数生成することができる。 リストア中にバックアップ・ファイルの破損が検出されると、 バックアップ・ファイルのフェイルオーバーが行われる。 また、過去のバックアップ・ファイルにさかのぼってのフェイル オーバーも行われる。 ファイル・コピー中のブロック破損検査 Copyright © 2020,

    Oracle and/or its affiliates 25 oracle rman データファイル バックアップ・ファイル1 RMANクライアント Oracleサーバー・ プロセス バックアップ・ファイル2 RMAN> restore tablespace pdb19a:users; (中略) チャネルORA_DISK_1: ORA-19870: バックアップ・ピース /home/oracle/tmp/backup/0nvfdrlv_1_1のリストア中 にエ ラーが発生しました ORA-19612: データファイル15はmissing or corrupt dataのためリスト アされませんでした。 以前のバックアップへのフェイルオーバー (中略) チャネルORA_DISK_1: バックアップ・ピース1がリストアされました チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:01 restoreを20-11-13で終了しました バックアップ・ファイル1の 破損を検出したので バックアップ・ファイル2に フェイルオーバー
  19. REDOログをリモート・データベースに転送してそこでリカバリを続ける Data Guardフィジカル・スタンバイ Copyright © 2020, Oracle and/or its affiliates

    29 オンライン REDOログ・ ファイル LGWR NSS RFS スタンバイ REDOログ・ ファイル データファイル REDOログ・ バッファ MRP0 PRn プライマリ・データベース スタンバイ・データベース REDO転送サービス 適用サービス データファイル プライマリ・データベース と同じになる データ・ブロックの更新 差分情報
  20. プライマリ・データベース障害で破損したREDOログは排除される Data Guard Physical Standby Copyright © 2020, Oracle and/or

    its affiliates 30 オンライン REDOログ・ ファイル LGWR NSS RFS スタンバイ REDOログ・ ファイル データファイル REDOログ・ バッファ MRP0 PRn プライマリ・データベース スタンバイ・データベース REDO転送サービス 適用サービス 破損検査される データファイル
  21. スタンバイ・データベースをREAD ONLYでOPEN状態にする Data Guard Physical Standby スタンバイ・データベースをリカバリするためにMOUNT状態 になっている。 Active Data

    Guard Data Guard Physical Standbyのスタンバイ・データベー スをREAD ONLYでOPENできるようにした。 • 自動ブロック・メディア・リカバリ Active Data Guard Copyright © 2020, Oracle and/or its affiliates 31 RFS スタンバイ REDOログ・ ファイル データファイル MRP0 PRn スタンバイ・データベース 適用サービス
  22. Copyright © 2020, Oracle and/or its affiliates 32 データ・ブロックの破損が検出されると対向データベースから正常ブロックを取り寄せてリカバリ Active

    Data Guard自動ブロック・メディア・リカバリ オンライン REDOログ・ ファイル oracle oracle Oracleサーバー・プロセス データファイル SGA 1. データ・ブロックの破損を 検出した データベース・ バッファ・ キャッシュ データファイル SGA プライマリ・データベース スタンバイ・データベース 2. 該当データ・ブロックを 取り寄せる 3. リカバリ 4. SQL処理は エラーなく継続 ※スタンバイ・データベースでブロック破損が検出されるとプライマリ・ データベースから該当ブロックを取り寄せてリカバリ
  23. ポイント・イン・タイム・リカバリ 1. 該当データファイルのアクセスしたい時刻(時刻t1)より前(時刻t0)のフル・バックアップからリストアする。 2. リカバリを途中(時刻t1)で止める。 ⇒データファイルのサイズが大きいとリストアにかなり時間がかかる。 過去のある時点のデータにアクセスしたい Copyright © 2020,

    Oracle and/or its affiliates 35 オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t2 リカバリ (REDOログの適用) バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) 時刻t1 リカバリを時刻t1までで止める 最新データの時刻はt2
  24. Flashback 1. 変更前データ・ブロック(UNDO表領域)の情報を意図 的に長時間保持。 2. 変更前データ・ブロックの情報を使って過去のデータに アクセスする。 ⇒ポイント・イン・タイムリカバリよりも早い。 変更前データ・ブロックを残しておく Flashback

    Copyright © 2020, Oracle and/or its affiliates 36 oracle Oracleサーバー・プロセス SGA データ・ブロックの更新前情 報をUNDO表領域に退避 UNDOデータ・ブロックのバックアップ ⇒ Flashback Database LGWR ユーザー表領域 UNDO表領域 DBWn Fast Recovery Area リカバリ・ライター・プロセス UNDOデータ・ブロックの長時間保持 ⇒ Flashback Query RVWR
  25. 指定した時刻までデータベースの状態を戻す Flashback Database 1. Fast Recovery Areaにバックアップしておいた、指定時刻(時刻t1)より前のUNDOブロックをリストア 2. REDOを適用して指定時刻(時刻t1)までロールフォワード ⇒データファイル全体をリストアするポイント・イン・タイムリカバリより速いし簡単

    Flashback Database Copyright © 2020, Oracle and/or its affiliates 37 オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t2 リカバリ (REDOログの適用) Flashback Log (UNDOブロックのバックアップ) リストア (UNDOブロックの書き戻し) 時刻t1 リカバリを時刻t1までで止める 最新データの時刻はt2
  26. デバイス・ ファイル Oracle Database専用のクラスタ・ボリューム・マネージャ兼クラスタ・ファイルシステム Oracle Automatic Storage Management Copyright ©

    2020, Oracle and/or its affiliates 42 ファイル構造 Oracle構造 POSIXファイルシステム ボリューム・マネージャ ファイルシステム 表、索引 表領域 ファイル ASM ASM 表、索引 表領域 ボリューム・マネージャ ファイルシステム ファイル
  27. ファイル破損を検出できるからその対処機能を実装可能 ファイル破損検出 • データ・ブロックの検査設定 • オンラインREDOログ・ファイルと制御ファイル • チェックサム • ファイル多重化

    データベースの過去の状態にアクセスしたい • Flashback 検出したファイル破損に対処する機能群 • Recovery Manager (RMAN) • バックアップおよびリストア・リカバリ • ファイル破損を検査しながらコピー • Data Guard • ブロック構造まで同じになるレプリケーション • 受信したREDOログを検査 • Active Data Guard • 自動ブロック・メディア・リカバリ • Automatic Storage Management (ASM) • ファイル破損の自動修復 Oracle Databaseのデータ・プロテクション Copyright © 2020, Oracle and/or its affiliates 43
  28. Our mission is to help people see data in new

    ways, discover insights, unlock endless possibilities.