DBA リカバリ

backup2

ステップ

ロールフォワード
REDOログファイルの内容を全て反映
・未コミットの命令も反映される
・UNDOデータも作成される
・一貫性バックアップの場合はコミット内容がデータファイルには反映されているので、
このステップだけでリカバリが完了する。
ロールバック
ロールバックした状態からUNDOデータを用いて未コミットの命令を戻す
→リカバリ完了

種類

リカバリ名 自動/手動 状態
インスタンスリカバリ
(クラッシュリカバリ:RAC環境)
自動実行(SMON)
(データベース異常停止時)
アーカイブREDOログファイル
を使用して
ロールフォワード/ロールバック
が自動で行われる
OPEN
メディアリカバリ 手動実行
(ディスク障害時等)
手動で、
・バックアップファイルをリストア
・ロールフォワード/ロールバック
を行う
MOUNT
フラッシュバック 手動実行
(ユーザー操作ミス時)
フラッシュバック」参照 OPEN

メディアリカバリオプション

オプション 内容 必要な
バックアップファイル
ON/OFF
ライン
ログ
モード
完全
リカバリ
バックアップ時点からのREDOログファイルの内容を全てリカバリ
(障害発生直前のCOMMIT状態まで)
データの損失無し
・制御ファイル
・データファイル
・アーカイブREDOログファイル
・REDOログファイル
・ON
・OFF
ARCHIVE
ログモード
Point-in-Time
リカバリ
(不完全リカバリ)

指定時刻より前のバックアップを利用して指定時刻までリカバリ
(指定時刻直前のCOMMIT状態まで)
指定時刻から後のデータは失われる
・OFF ARCHIVE
ログモード

リカバリ方法

リカバリ方法 内容
Oracle推奨リカバリ データリカバリアドバイザ」参照
ユーザー指示のリカバリ ユーザー指示のリカバリ」参照
フラッシュリカバリ フラッシュリカバリ」参照

データリカバリアドバイザ

=Oracle推奨リカバリ
【流れ】
DB:障害を検知

ADRへ障害情報格納

データリカバリアドバイザ実行

自動診断リポジトリ
ADR:Automatic Diagnostic Repository
障害情報を格納する為のDB外のディレクトリ構造

可用性 > バックアップ/リカバリ > 管理 > リカバリの実行
em_detareceveryadviser1
アドバイスが表示され、修復を実行できる
em_detareceveryadviser2

フラッシュリカバリ

バックアップ/リカバリ関連ファイルを自動管理する為の領域

種類

機能 内容
フラッシュバック問い合わせ 指定時刻における問い合わせ結果を取得する
フラッシュバックバージョン問い合わせ 指定期間内において、表の全行の履歴を取得する
フラッシュバックトランザクション問い合わせ 指定トランザクションによって実行された変更結果を取得する
フラッシュバック表 表を指定時点へ戻す
(1)フラッシュバック表関連の権限が必要
 「フラッシュバック表実行権限」参照
(2)対照の表の「行の移動」が有効
(3)UNDO表領域に変更前データがある
フラッシュバックドロップ 削除した表を戻す
・ゴミ箱(RECYCLEBIN)内のみ
・SYSTEM表領域内の表削除時はゴミ箱には入らない
フラッシュバックデータベース DBを指定時点まで戻す
(Point-in-Timeリカバリ)

設定

(1)NO ARCHIVELOGモード → ARCHIVELOGモード
(2)アーカイブREDOログの保存先をフラッシュリカバリ領域に
(3)フラッシュリカバリ領域の作成

可用性 > リカバリ設定
instance_recovery

(1)NO ARCHIVELOGモード → ARCHIVELOGモード
(2)アーカイブREDOログの保存先をフラッシュリカバリ領域に
アーカイブREDOログの保存先に「USE_DB_RECOVERY_FILE_DEST」を追加する
media_recovery

(3)フラッシュリカバリ領域の作成
flash_recovery
推奨サイズ
・データファイル完全バックアップ2つ分
・増分バックアップ分
・リカバリに必要なアーカイブREDOログファイル分

実行

フラッシュバック表
Oracle エンタプライズマネージャー使用方法③スキーマ/フラッシュバック表の実行」参照

ユーザー指示のリカバリ
可用性 > リカバリの実行 > ユーザー指示のリカバリ
flash_recovery2
「リカバリの有効範囲」を選択

論理リカバリ

impインポート

≠SQL*Plus
imp (ユーザ名)/(パスワード)
 インポートパス
 file=c:\test.dmp

 インポート元
 fromuser=(スキーマ名)

 インポート先
 touser=(スキーマ名)

 オブジェクト作成時のエラーを無視する
 ignore=y

datapumpインポート

≠SQL*Plus
データベース全体

impdp (ユーザ名)/(パスワード)

 指定ディレクトリからインポート
 directory=(ディレクトリ名)

 指定ファイルをインポート
 dumpfile=(ファイル名)

 DB全体をインポート

 full=y

 表領域

 tablespaces=(表領域名)

 スキーマ

 schemas=(スキーマ名)

 テーブル

 tables=(スキーマ名).(表名)

 データのみインポート
 content=DATA_ONLY

 上書き
 table_exsists_action=REPLACE

 異なるスキーマへ変更

 remap_schema=(エクスポートスキーマ名):(インポートスキーマ名)

 異なる表領域へ変更

 remap_tablespace=(エクスポート表領域名):(インポート表領域名)