ORACLE MASTER 2019の上位資格“GOLD”の学習書、オラクルマスター教科書 Gold DBA Oracle Database Administration Ⅱ に記載されている内容を元に、Oracle Master DBA 2019で出題される技術内容、Oracleデータベースの保護に関する技術をまとめて紹介します。
https://www.amazon.co.jp/dp/B09XWYCT1K
この記事でまとめていることは以下の通りです。
- Oracle データベースインスタンスの障害時の処理
データベース障害と対処
データベースで発生する主な障害は以下の通りです。
- 文障害(SQL実行エラー)
- アプリケーション障害(ユーザープロセス障害)
- ネットワーク障害
- インスタンス障害
- メディア障害
- 人為的なデータロス
- 拠点災害
インスタンス障害とインスタンスリカバリ

Oralceインスタンスが以上終了すると、データベースは一貫性のとれていない不整合な状態になります。この不整合は、Oracle インスタンスが次回起動した際に自動的に修復されます。この修復される処理のことを「インスタンスリカバリ(もしくはクラッシュリカバリ)」と言います。
インスタンスリカバリの処理

インスタンスリカバリは、特定のチェックポイントから障害発生直前までの間に生成されたREDOデータをオンラインログファイル(オンラインREDOログファイル)から読み出し、データファイルに反映されていない変更をデータファイルに適用して、データファイル(データベース)の整合性を回復します。
インスタンスリカバリの処理の流れは以下の通りです。
- インスタンス起動時に直前のデータベース停止が正常停止か異常停止かをチェックする
- 異常停止している場合はMOUNT状態でインスタンスリカバリの実行を開始する
- 直近のチェックポイントから障害発生直前までの間のREDOデータを、データファイルに適用する(ロールフォワード)
- データベースをOPENする
- コミットされていないトランザクションによる変更がデータファイルに残っているため、UNDOを用いてこの変更を取り消す(ロールバック)。
※データベースのOPEN後にロールバックを実行するのはロールバックに関係ないデータに速やかにアクセスできるようにするため
インスタンスリカバリの所要時間とFAST_START_MTTR_TARGET 初期化パラメータ

インスタンスリカバリに要する時間を短くするには、「FAST_START_MTTR_TARGET 初期化パラメータ」に目標時間(単位は秒)を設定します。FAST_START_MTTR_TARGETに短い時間を設定すると、データベースバッファキャッシュ(メモリー領域)にキャッシュされている変更済みブロックをより頻繁にデータファイルに書き込むようになります。頻繁に読み書きするようになることで、データファイルに反映されていない変更済みブロックの数が減り、以上終了時の整合性回復に要する時間が短縮されます。
自動チェックポイントチューニング機能

FAST_START_MTTR_TARGET 初期化パラメータを設定すると、I/O量が増えるため、その影響を軽減するためにシステムの負荷が低い場合に書き込みを行う自動チェックポイントチューニング機能がOracle Database 10g以降で導入されています。
自動チェックポイントチューニング機能は、FAST_START_MTTR_TARGETが未設定、もしくは0以外に設定されている場合に有効になります。
メディア障害とバックアップ、リストア、リカバリ
Oracleインスタンスが異常終了した場合は、単に再度Oracleインスタンスを起動すれば、データベースの整合性を回復できます。しかし、ディスク障害や誤操作によるファイル削除などにより、Oracleデータベースを構成するファイルが破損または失われた場合(メディア障害)は、データベース管理者が障害内容に応じて復旧作業を行う必要があります。バックアップからファイルを復元することを「リストア」といいます。
データベースを「ARCHIVELOGモード」で運用しているとリカバリ処理を実行できます。
リストア後にリカバリ処理を実行するとREDOログファイルに記録された変更を適用できるため、障害発生直前の状態に復旧できます。リストアによってデータベースに適用された変更が失われることはありません。

人為的なデータロスとフラッシュバックテクノロジー
ユーザーの誤操作等によって意図せずデータが失われた場合、または、不適切な値に変更された場合、誤操作を行った時点よりも過去の時点のデータに復元する方法があります。フラッシュバックテクノロジーは、データを過去の時点に戻す、または、過去実行されたデータ変更処理の内容を調べるために有用な複数の機能を示す総称です。
以下はフラッシュバックテクノロジーに含まれる機能です。
- フラッシュバック問合せ・・・指定したある特定事典の表のデータを参照する
- フラッシュバックバージョン問合せ・・・指定した行について、期間内に実行された一連の変更履歴を確認
- フラッシュバックトランザクション問合せ・・・過去実行されたトランザクション(変更履歴)に関する情報を確認
- フラッシュバックデータアーカイブ・・・年単位など非常に古いデータを確認できるように、長期間の円光履歴を保持
- フラッシュバック表・・・表を過去のある時点のデータに戻す
- フラッシュバックトランザクション・・・過去実行されたトランザクション(変更処理)を打ち消す処理を実行
- フラッシュバックドロップ・・・削除された表をゴミ箱から元に戻せる
- フラッシュバックデータベース・・・データベース全体を過去の状態に戻せる