DBA リカバリ
ステップ
ロールフォワード
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外のディレクトリ構造
可用性 > バックアップ/リカバリ > 管理 > リカバリの実行
アドバイスが表示され、修復を実行できる
フラッシュリカバリ
バックアップ/リカバリ関連ファイルを自動管理する為の領域
種類
機能 | 内容 |
---|---|
フラッシュバック問い合わせ | 指定時刻における問い合わせ結果を取得する |
フラッシュバックバージョン問い合わせ | 指定期間内において、表の全行の履歴を取得する |
フラッシュバックトランザクション問い合わせ | 指定トランザクションによって実行された変更結果を取得する |
フラッシュバック表 |
表を指定時点へ戻す (1)フラッシュバック表関連の権限が必要 「フラッシュバック表実行権限」参照 (2)対照の表の「行の移動」が有効 (3)UNDO表領域に変更前データがある |
フラッシュバックドロップ | 削除した表を戻す ・ゴミ箱(RECYCLEBIN)内のみ ・SYSTEM表領域内の表削除時はゴミ箱には入らない |
フラッシュバックデータベース | DBを指定時点まで戻す (Point-in-Timeリカバリ) |
設定
(1)NO ARCHIVELOGモード → ARCHIVELOGモード
(2)アーカイブREDOログの保存先をフラッシュリカバリ領域に
(3)フラッシュリカバリ領域の作成
可用性 > リカバリ設定
(1)NO ARCHIVELOGモード → ARCHIVELOGモード
(2)アーカイブREDOログの保存先をフラッシュリカバリ領域に
アーカイブREDOログの保存先に「USE_DB_RECOVERY_FILE_DEST」を追加する
(3)フラッシュリカバリ領域の作成
推奨サイズ
・データファイル完全バックアップ2つ分
・増分バックアップ分
・リカバリに必要なアーカイブREDOログファイル分
実行
フラッシュバック表
「Oracle エンタプライズマネージャー使用方法③スキーマ/フラッシュバック表の実行」参照
ユーザー指示のリカバリ
可用性 > リカバリの実行 > ユーザー指示のリカバリ
「リカバリの有効範囲」を選択
論理リカバリ
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=(エクスポート表領域名):(インポート表領域名)