目次
Oracleバックアップとは?
Oracleデータベースには障害が起きたときに備えてバックアップする機能が搭載されている。今回はOracleで障害が起きた時にどのようなバックアップが行うことができるのか調べてみよう。
ORACLEバックアップの種類
バックアップとはデータを再構築するために使用できるデータベースのコピーです。ORACLEでのバックアップは大きく二種類に分けられる。
- 物理バックアップ・・・データファイル、制御ファイルなどのデータベースを構成する物理ファイル群のコピーを作成すること。
- 論理バックアップ・・・Oracle Data Pumpを使用して表やストアドプロシージャなどの定義、データなどの論理データをバイナリファイルにエクスポートすること。後でそのバイナリファイルをデータベースにインポートすることでリストアする。
RMAN(Recovery Manager)による物理バックアップ
物理バックアップでは、「Recovery Manager(RMAN)」と呼ばれる機能を使用して、次に挙げる「データベースを構成する物理ファイル群」をディスクまたはテープにコピーする。
メモ
- 制御ファイル
- アーカイブREDOログファイル
- データファイル
- サーバーパラメータファイル
データベースのリストア
ファイルが破損または削除された場合に、バックアップ媒体にバックアップしてあるファイルのコピーを破損してしまったファイルの代わりに、元の場所または新しい場所にコピーする作業です。
バックアップの二種類のタイプ
バックアップには二種類のタイプがある。一貫性バックアップと非一貫性バックアップである。
一貫性バックアップ(オフラインバックアップ)
一貫性バックアップとは、コミットされた全ての変更内容がデータファイルに書き込まれている状態で取得したバックアップである。
”一貫性”の意味はトランザクションの一貫性が保たれた状態という意味。データベースを正常にクローズしてインスタンスを停止してから行う。
データベースを正常に停止する際に発生するチェックポイントによって「コミット済のトランザクションの変更内容」が全て、データファイルに書き込まれるためです。このバックアップでは、リストア操作が終了するとすぐにデータベースをオープンすることができる。
非一貫性バックアップ(オンラインバックアップ)
非一貫性バックアップとは、データファイルに適用されていない変更がある状態で取得したバックアップである。バックアップは、データベースをオープンした状態のままでも取得できる。データファイルをリストアした後で、REDOログファイルを使用してリカバリを実行する必要がある。
続きを見る
ORACLE SQL文の分類をイメージで覚えよう!
ORACLEデータベースのリカバリ機能
ORACLEデータベースで使用できる三種類のリカバリ機能(インスタンスリカバリ、メディアリカバリ、フラッシュリカバリ)について解説する。インスタンスの障害が起きた場合はインスタンスリカバリ(クラッシュリカバリ)を行う。メディア障害の場合はメディアリカバリを行う。ユーザーエラーからのリカバリはフラッシュバック機能を使う。
そもそもデータベースのリカバリとは?
リストアしたデータファイルにREDOログファイルを適用することで、データファイルに反映されていない変更情報を反映していく作業である。REDOログファイルには、バックアップ以降、現在までのトランザクションの変更情報が記録されている。リカバリを行うことで、データを障害発生直前の状態に復旧できる。
バックアップからデータファイルをリストアすると、そのデータファイルにはバックアップ取得時点のデータが格納される。リカバリ処理では、データファイルは反映されていないトランザクションを、オンラインREDOログファイルから適用し、またオンラインREDOログファイルに存在しない場合はアーカイブREDOログファイルから適用する。
インスタンスリカバリ
インスタンス障害の発生時点までにコミットされていたトランザクションの変更内容を適用するように、データベースをリカバリする。
インスタンス障害は、電源断やOSの異常終了、SHUTDOWN ABORTの実行、ORACLEの内部エラーなどによるインスタンスの異常停止などによって発生する。インスタンスリカバリはインスタンス障害の発生後、データベースを再起動した際にSMONによって自動的に実行される。
メディアリカバリ
メディアリカバリは、メディア障害時に消失または破損した「現行のデータファイル」をリカバリする。メディア障害時には、ディスク障害によるファイルの損失や、オペレーションミスによるファイルの損失などによって発生する。
メモ
- 破損したファイルのバックアップからリストアする
- オンラインREDOログファイルとアーカイブREDOログファイルを使用して、「リストアしたデータファイルに適用されていないトランザクションの変更情報」を適用する。(これを「ロールフォワード」)
- この時点のデータファイルには、コミット済みのトランザクションとコミットされていないトランザクションのデータが混在している。
- UNDOデータを使用して、未コミットのトランザクションがロールバックされる。
- データファイルがリカバリされた状態になる。
完全リカバリ
バックアップ時点からのREDOログファイルの全ての情報をデータファイルに反映することで、データベースを障害発生直前のコミット状態まで戻す。データを失うことなくリカバリが完了できるので「完全リカバリ」という。
Point in timeリカバリ
ターゲット時刻よりも前に作成された全てのデータファイルを含む、データベース全体のバックアップをリストアし、バックアップ時刻からターゲット時刻までのすべてのアーカイブREDOログファイルに格納されている変更をデータファイルに適用することでデータベースをターゲット時刻に戻す。
データベースを過去の任意の時点に戻すことができるが、ターゲット時刻から現在までのデータは適用されないので不完全リカバリとも呼ばれる。
-
Oracle関数の基本的な関数を実行してみよう。
続きを見る
フラッシュバック機能
フラッシュバック機能を使用すると、ユーザーエラー発生時に、バックアップのリストアやPoint-in-Timeリカバリを実行することなく、過去の時点のデータを表示したり、データベースを過去の時点に巻き戻したりすることができる。
※ユーザーエラーとは、ユーザーが誤って重要な表を削除したり、表の内容を削除・変更することによって発生するエラーです。
フラッシュバック問い合わせ
ターゲット時刻を指定してデータベースに問い合わせを行い、指定した時点の問い合わせ結果を参照する。
フラッシュバックバージョン問い合わせ
指定した期間内に一つ以上の表に存在していた全ての行の全てのバージョン結果を参照する。
フラッシュバックトランザクション問い合わせ
1つのトランザクション、または指定した期間内の全てのトランザクションによって行われた変更の結果を参照する。
フラッシュバック表
表を過去の指定の時点に戻す。
フラッシュバックドロップ
ユーザーが表を削除するとその表はゴミ箱に入れられる。削除した表とその依存オブジェクトをゴミ箱から戻すことができる。UNDOデータを使用する。
フラッシュバックデータベース
データベースを以前の時点まで戻し、データベースのPoint-in-Timeリカバリを効率的に行う。
Oracleデータベースには、バックアップやリカバリのファイル管理を簡略化する為の機能として「高速リカバリ領域」が用意されている。高速リカバリ領域をバックアップするための
高速リカバリ領域の構成は?
Oracleデータベースには、バックアップやリカバリのファイルを簡略化する為の機能として「高速リカバリ領域」が用意されている。高速リカバリ領域をバックアップの為のファイル格納用の領域にすると、バックアップファイルがOracleデータベースによって自動的に管理されるため、データベース管理者の負担が軽減される。
メモ
- バックアップ用に高速リカバリ領域を構成する
- 高速リカバリ領域をアーカイブREDOログの保存先にする
- オンラインバックアップを実行できるように、データベースをARCHIVELOGモードで運用する
高速リカバリ領域の構成
高速リカバリ領域は、データファイル群が格納されているディスクとは別のディスクに準備します。これはデータファイルとバックアップファイルが同時に壊れるリスクを防ぐ為です。高速リカバリ領域内のファイルは、Oracleデータベースによって自動的に管理され、保存方針に基づいて不要になったファイルは領域が足りなくなると自動的に削除される。
- データファイルの完全バックアップを2つ
- リカバリしたい期間の任意の時点のデータベースをリストアするために必要なバックアップ
- アーカイブREDOログファイル
高速リカバリ領域の場所
高速リカバリ領域の場所は、DB_RECOVERY_FILE_DEST初期化パラメータ、高速リカバリ領域のサイズはDB_RECOVERY_FILE_DEST_SIZE初期化パラメータで指定する。
-
Oracleデータベースシステムの構造を知ろう
続きを見る
NOARCHIVELOGモードとARCHIVELOGモード
データベースの稼働モードにはNORCHIVELOGモードとARCHIVELOGモードの二種類がある。
NOARCHIVELOGモード
満杯になったREDOロググループをアーカイブはせず、書き込み先が循環させて再利用される。
インスタンス障害からは保護されるが、メディア障害からは保護されない。実行可能なバックアップは一貫性バックアップのみである。実行可能なリカバリはインスタンスリカバリや一貫性バックアップをリストアした時点までのリカバリである。
ARCHIVELOGモード
満杯になったREDOロググループをアーカイブして、アーカイブREDOログファイルとして保存する。アーカイブログ済みのREDOログファイルは書き込み先が循環してきたら再利用される。ARCHIVELOGモードであればインスタンス障害とメディア障害の両方から保護される。実行可能なバックアップは一貫性バックアップ及び非一貫性バックアップである。インスタンスリカバリやメディアリカバリである(完全リカバリ、Point_in_Timeリカバリ)