Slide 1

Slide 1 text

Oracle Database Technology Night #40 前半 Oracle Databaseのデータ・プロテクション詳解 日本オラクル株式会社 日下部明 2020/11/19

Slide 2

Slide 2 text

Safe harbor statement 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とする ものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することを確約 するものではないため、購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリース、時期及び価格については、弊社の裁量により決定され、変 更される可能性があります。 Copyright © 2020, Oracle and/or its affiliates 2

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

データの保存はハード・ディスク・ドライブやフラッシュ・メモ リーのような不揮発性ストレージ・デバイスに依存している。 ストレージ・デバイスの故障はデータを失う。 そのためストレージ・デバイスの障害対策は必須。 しかし、データを失う要因はストレージ・デバイスの故障 以外にもある。 データを失わないためのより広範囲な考慮が必要。 データ・プロテクション(データ保護) • 障害からの保護 • セキュリティ(今日はこの話はしません) データ・プロテクション(データ保護) Copyright © 2020, Oracle and/or its affiliates 4

Slide 5

Slide 5 text

Oracleインスタンス + ストレージ上のデータベース・ファイル群 Oracle Databaseアーキテクチャ Copyright © 2020, Oracle and/or its affiliates 5 制御ファイル • データベース構成の情報 オンラインREDOログ・ファイル • 更新の履歴 データファイル • データの本体 Oracleインスタンス • 共有メモリ • プロセス群 データベース • 制御ファイル • オンラインREDOログ・ファイル • データファイル

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

ストレージ・デバイスが故障していなくても、格納されている ファイルのデータが破損している場合がある。 エラー・ログを出力するのは、その異常を検出した階層。 異常検出能力のない階層はエラー・ログを出力できない。 データを破損させた階層が破損させたことを直接ログに記 録していることは期待できない。 途中の経路が何らかのエラー・ログを残していたら間接的 にそれが原因と疑うしかない。 • ハードウェア・エラー • ネットワーク通信エラー • ... データを失う要因はストレージ・デバイスの故障以外にもある Copyright © 2020, Oracle and/or its affiliates 7 Oracle Database OS Multipath Driver Device Driver Host Bus Adapter Storage Controller Network CPU/Memory ? ERROR ?

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

データ破損に対処する機能はデータ破損検出能力が必要 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ログ/制御ファイル 破損検査 データ・ブロックの破損検査

Slide 11

Slide 11 text

ファイル破損を検出できるからその対処機能を実装可能 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'

Slide 12

Slide 12 text

ファイル破損を検出できるからその対処機能を実装可能 ファイル破損検出 • データ・ブロックの検査設定 • オンライン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

Slide 13

Slide 13 text

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 ブロックを更新する前にチェックサムを検査 し、更新後に再計算して付与する

Slide 14

Slide 14 text

Copyright © 2020, Oracle and/or its affiliates 14 破損が検出されるのは破損箇所を読んだとき ファイル・ブロックを読むときにチェックサムが検査される オンライン REDOログ・ ファイル LGWR oracle oracle Oracleサーバー・プロセス アーカイバ・プロセス データベース・バッファ・キャッシュ DBWn データベース・ライター・プロセス データファイル SGA oracle アーカイバ・プロセスがオンライン REDOログ・ファイルを読むときに 破損検査される OS データ・ファイルからデータ・ブロックを読むと きに破損検査される ARCn アーカイブ REDOログ・ ファイル

Slide 15

Slide 15 text

そのファイル・ブロックは無効なので処理停止、そのため破損が伝搬しない エラーで処理停止する場合の対処 • バックアップからのリストアおよびリカバリで復旧させる • 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'

Slide 16

Slide 16 text

Recovery Manager (RMAN) 破損検査付きバックアップおよびリストア・リカバリ

Slide 17

Slide 17 text

データファイルのコピーとREDOログの適用 バックアップおよびリストア・リカバリ Copyright © 2020, Oracle and/or its affiliates 17 制御ファイル • データベース構成の情報 オンラインREDOログ・ファイル • 更新の履歴 データファイル • データの本体 用語 意味 バックアップ (主にデータファイル) ファイルのコピーを取得すること リストア バックアップ・ファイルから書き戻すこと リカバリ REDOログをデータ・ブロックに適用すること Oracle Databaseではリストアとリカバリはセット 制御ファイルとREDOログ・ファイルの情報でデータファイルの内容を破損直前までもどす

Slide 18

Slide 18 text

18 バックアップおよびリストア・リカバリ INSERT UPDATE DELETE オンラインREDOログ 時間 アーカイブ・REDOログ オンラインREDOログ・ファイルは固定長循環 型なので、書き込み完了したファイルはアーカ イブREDOログ・ファイルにコピーされる。 データベースの更新はオンラインREDOログ・ ファイルに記録される。 時間

Slide 19

Slide 19 text

19 バックアップおよびリストア・リカバリ INSERT UPDATE DELETE 時間 時刻t0 バックアップ (データファイルのコピー) 時間 時刻t0に取得したデータ・ファイルのバックアッ プには最新でも時刻t0までの情報しか含ま れていない。 INSERT UPDATE DELETE

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

22 バックアップおよびリストア・リカバリ INSERT UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t1 データファイル障害発生 INSERT UPDATE DELETE INSERT UPDATE DELETE リカバリ (REDOログの適用) バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) データファイルの状態が 時刻t1まで復元される。

Slide 23

Slide 23 text

推奨は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サーバー・ プロセス コピー元ボリューム バックアップ・ボリューム

Slide 24

Slide 24 text

確実にリカバリするための"Recovery" Manager • コピー時に破損検査が行われる • 破損が伝搬しない • バックアップしたファイルの破損検査も可能 • 破損領域がそのままコピーされる • バックアップも破損している場合がある • 誤った単位でボリュームをコピーしているとリカバリ時に なってはじめてリカバリ不能に気付く ファイル・コピー中のブロック破損検査 Copyright © 2020, Oracle and/or its affiliates 24 oracle rman データファイル (コピー元) バックアップ (コピー先) スナップショット スプリット・ミラー Recovery Manager (RMAN) ユーザー管理バックアップ RMANクライアント Oracleサーバー・ プロセス コピー元ボリューム バックアップ・ボリューム

Slide 25

Slide 25 text

リストア中にバックアップ・ファイルの破損が検出されたらリストア元ファイルをフェイルオーバー 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に フェイルオーバー

Slide 26

Slide 26 text

1ブロック単位でリストアおよびリカバリ可能 ブロック・メディア・リカバリ RMANは破損を検出したそのブロックだけをリストアおよび リカバリすることが可能。 V$DATABASE_BLOCK_CORRUPTIONビューに現れる すべての破損データブロックを一括でリカバリする。 ブロック・メディア・リカバリ中はリカバリ対象以外のデータ・ ブロックへのアクセスは継続可能。 データファイル単位のリストアおよびリカバリでは、リカバリ中 のファイルにアクセスできないためそのファイルを含む表領域 をオフラインにしなければならない。 ブロック・メディア・リカバリ Copyright © 2020, Oracle and/or its affiliates 26 oracle rman データファイル バックアップ・ファイル RMANクライアント Oracleサーバー・ プロセス RMAN> recover datafile 18 block 131; RMAN> recover corruption list;

Slide 27

Slide 27 text

データファイルのコピーとREDOログの適用 Oracle Databaseではリストアとリカバリはセット 制御ファイルとREDOログ・ファイルの情報でデータファイルの内容を破損直前までもどす。 データファイルはデータファイルのバックアップとREDOログ・ファイルの情報から復元可能だが、オンラインREDOログ・ファイル の情報が最新の状態であるため、失うと復元できない。 • 制御ファイルとオンラインREDOログ・ファイルは複数ファイルに冗長化して持たせることが可能 • ASMで冗長化(破損を検出したら自動修復) バックアップおよびリストア・リカバリ Copyright © 2020, Oracle and/or its affiliates 27 制御ファイル • データベース構成の情報 • 複数ファイルを構成可能 オンラインREDOログ・ファイル • 更新の履歴 • 複数ファイルを構成可能 データファイル • データの本体

Slide 28

Slide 28 text

Data Guardフィジカル・スタンバイ Active Data Guard リモート・データベースでリカバリ

Slide 29

Slide 29 text

REDOログをリモート・データベースに転送してそこでリカバリを続ける Data Guardフィジカル・スタンバイ Copyright © 2020, Oracle and/or its affiliates 29 オンライン REDOログ・ ファイル LGWR NSS RFS スタンバイ REDOログ・ ファイル データファイル REDOログ・ バッファ MRP0 PRn プライマリ・データベース スタンバイ・データベース REDO転送サービス 適用サービス データファイル プライマリ・データベース と同じになる データ・ブロックの更新 差分情報

Slide 30

Slide 30 text

プライマリ・データベース障害で破損したREDOログは排除される Data Guard Physical Standby Copyright © 2020, Oracle and/or its affiliates 30 オンライン REDOログ・ ファイル LGWR NSS RFS スタンバイ REDOログ・ ファイル データファイル REDOログ・ バッファ MRP0 PRn プライマリ・データベース スタンバイ・データベース REDO転送サービス 適用サービス 破損検査される データファイル

Slide 31

Slide 31 text

スタンバイ・データベースを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 スタンバイ・データベース 適用サービス

Slide 32

Slide 32 text

Copyright © 2020, Oracle and/or its affiliates 32 データ・ブロックの破損が検出されると対向データベースから正常ブロックを取り寄せてリカバリ Active Data Guard自動ブロック・メディア・リカバリ オンライン REDOログ・ ファイル oracle oracle Oracleサーバー・プロセス データファイル SGA 1. データ・ブロックの破損を 検出した データベース・ バッファ・ キャッシュ データファイル SGA プライマリ・データベース スタンバイ・データベース 2. 該当データ・ブロックを 取り寄せる 3. リカバリ 4. SQL処理は エラーなく継続 ※スタンバイ・データベースでブロック破損が検出されるとプライマリ・ データベースから該当ブロックを取り寄せてリカバリ

Slide 33

Slide 33 text

Flashback 過去のある時点のデータにアクセスしたい

Slide 34

Slide 34 text

ファイルの破損ではなく、SQLが正常に実行されていった後での話 ポイント・イン・タイム・リカバリ 1. 該当データファイルのフル・バックアップからリストアする。 2. リカバリを途中で止める。 ⇒データファイルのサイズが大きいとリストアにかなり時間がかかる。 Flashback 1. 変更前データ・ブロック(UNDO表領域)の情報を意図的に長時間保持。 2. 変更前データ・ブロックの情報を使って過去のデータにアクセスする。 ⇒ポイント・イン・タイムリカバリよりも早い。 過去のある時点のデータにアクセスしたい Copyright © 2020, Oracle and/or its affiliates 34

Slide 35

Slide 35 text

ポイント・イン・タイム・リカバリ 1. 該当データファイルのアクセスしたい時刻(時刻t1)より前(時刻t0)のフル・バックアップからリストアする。 2. リカバリを途中(時刻t1)で止める。 ⇒データファイルのサイズが大きいとリストアにかなり時間がかかる。 過去のある時点のデータにアクセスしたい Copyright © 2020, Oracle and/or its affiliates 35 オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t2 リカバリ (REDOログの適用) バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) 時刻t1 リカバリを時刻t1までで止める 最新データの時刻はt2

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

指定した時刻までデータベースの状態を戻す 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

Slide 38

Slide 38 text

SWITCHOVER プライマリ・データベースとスタンバイ・データベースを入れ替 える。 FAILOVER プライマリ・データベースを切り捨ててスタンバイ・データベー スをプライマリに昇格させる。 スナップショット・スタンバイ・データベース スタンバイ・データベースを一時的にプライマリに昇格させる。 Data Guardの運用 Copyright © 2020, Oracle and/or its affiliates 38 P S S P P S P P P S P REDO転送方向

Slide 39

Slide 39 text

S FAILOVERテストをした後 FAILOVER プライマリ・データベース(A)を切り捨ててスタンバイ・データベース(B)をプライマリに昇格させる。 FAILOVER試験をする場合、旧プライマリ(A)は破損しているわけではないが、REDOログが異なるので旧プライマリ(A)と新 プライマリ(B)はREDOログの再同期はできなくなる。 旧プライマリ(A)をData Guardに組み込むには新プライマリ(B)のREDOを適用できる必要があり、FAILOVERコマンド発行 前のデータ・ブロックの状態が必要になる。 ⇒全データファイルのバックアップからのリストアは時間がかかる。 Data Guardの運用 Copyright © 2020, Oracle and/or its affiliates 39 P S P P REDO転送方向 データベースA データベースB バックアップ データベースAをData Guardスタンバイに するためにはFAILOVERコマンド発行前の フル・バックアップからリストア FAILOVERコマンド発行

Slide 40

Slide 40 text

S 組み合わせて使用する FAILOVER 旧プライマリ(A)をData Guardに組み込むには新プライマリ(B)のREDOを適用できる必要があり、FAILOVERコマンド発行 前のデータ・ブロックの状態が必要になる。 ⇒全データファイルのバックアップからのリストアは時間がかかる、もしくは 旧プライマリは破損しているわけではないので旧プライマリ(A)をFAILOVERコマンド発行前の時刻にFlashbackする。 ⇒フル・リストアするより簡単かつ高速 Data Guardの運用とFlashback Database Copyright © 2020, Oracle and/or its affiliates 40 P S P P FAILOVERコマンドを発行する前の時刻に FlashbackするとデータベースBと同じとみな せるのでREDO適用が可能になる REDO転送方向 データベースA データベースB FAILOVERコマンド発行

Slide 41

Slide 41 text

Automatic Storage Management (ASM)

Slide 42

Slide 42 text

デバイス・ ファイル Oracle Database専用のクラスタ・ボリューム・マネージャ兼クラスタ・ファイルシステム Oracle Automatic Storage Management Copyright © 2020, Oracle and/or its affiliates 42 ファイル構造 Oracle構造 POSIXファイルシステム ボリューム・マネージャ ファイルシステム 表、索引 表領域 ファイル ASM ASM 表、索引 表領域 ボリューム・マネージャ ファイルシステム ファイル

Slide 43

Slide 43 text

ファイル破損を検出できるからその対処機能を実装可能 ファイル破損検出 • データ・ブロックの検査設定 • オンライン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

Slide 44

Slide 44 text

Thank you Copyright © 2020, Oracle and/or its affiliates 44

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

Our mission is to help people see data in new ways, discover insights, unlock endless possibilities.