Backup And Recovery User's Guide-為完全資料庫恢復做準備

LuiseDalian發表於2014-02-26

為完全資料庫恢復做準備

雖然RMAN簡化了大多數的資料庫還原和恢復任務,那你也必須基於丟失的資料檔案和恢復目標規劃資料庫還原和恢復的策略。

識別還原和恢復的資料庫檔案

這個技術用於根據丟失的檔案型別確定哪個檔案需要還原和恢復。

識別丟失的控制檔案

資料庫的控制檔案丟失通常是顯而易見的。當多路化的任何控制檔案不可訪問時,資料庫都會立即關閉。

如果在CONTROL_FILES初始化引數指定的每個位置上沒有有效的控制檔案,則在你試圖啟動資料庫時,資料庫會報錯。

 

如果你從備份還原了控制檔案,然後必須執行整個資料庫的介質恢復並使用OPEN RESETLOGS選項開啟它,

即使沒有資料檔案必須被還原。

識別需要介質恢復的資料檔案。

何時和如何恢復依賴於資料庫的狀態和它的資料檔案的位置。

1)使用RMAN識別資料檔案

確定哪個資料檔案丟失了的最簡單的技術就是執行VALIDATE DATABASE命令,它會嘗試讀取所有指定的資料檔案。

RMAN> VALIDATE DATABASE;

 

Starting validate at 20-OCT-06

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=90 device type=DISK

could not read file header for datafile 7 error reason 4

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of backup command at 10/20/2007 13:05:43

RMAN-06056: could not access datafile 7

--結果表明資料檔案7不可訪問,然後執行下面的命令獲取表空間的名稱和資料檔案7的名稱

RMAN> REPORT SCHEMA;

 

Report of database schema for database with db_unique_name RDBMS

 

List of Permanent Datafiles

===========================

File Size(MB) Tablespace           RB segs Datafile Name

---- -------- -------------------- ------- ------------------------

1    450      SYSTEM               ***     +DATAFILE/tbs_01.f

2    86       SYSAUX               ***     +DATAFILE/tbs_ax1.f

3    15       UD1                  ***     +DATAFILE/tbs_undo1.f

4    2        SYSTEM               ***     +DATAFILE/tbs_02.f

5    2        TBS_1                ***     +DATAFILE/tbs_11.f

6    2        TBS_1                ***     +DATAFILE/tbs_12.f

7    2        TBS_2                ***     +DATAFILE/tbs_21.f

 

List of Temporary Files

=======================

File Size(MB) Tablespace           Maxsize(MB) Tempfile Name

---- -------- -------------------- ----------- --------------------

1    40       TEMP                 32767       +DATAFILE/tbs_tmp1.f

2)使用SQL識別資料檔案

雖然VALIDATE DATABASE是確定資料檔案是否不可訪問的很好的技術,但也可以使用SQL查詢來獲得更詳細的資訊。

練習:確定資料檔案是否需要恢復

--練習:確定資料檔案是否需要介質恢復

--1. 啟動SQL*Plus並使用管理員許可權連線到目標資料庫

--2. 執行查詢,確定資料庫的狀態.如果返回OPEN,則資料庫是開啟的,否則有些資料檔案需要介質恢復。

SELECT STATUS FROM V$INSTANCE;

--3. 查詢v$DATAFILE_HEADER確定資料檔案的狀態,該查詢返回的每一行會表明資料是需要介質恢復,或者是有需要還原的錯誤.

--   RECOVER列會表明檔案是否需要介質恢復; ERROR列表明在讀取和驗證資料檔案頭時是否有錯誤

 

--   a.如果ERROR列不為NULL,則資料庫檔案頭部不能被讀取和驗證.檢查引起這個錯誤的臨時的硬體或作業系統的問題。

--      如果沒有這樣的問題,則必須還原這個檔案或切換到其它的拷貝。

--   b.如果ERROR列為NULL並且RECOVER列為yes,則該檔案需要介質恢復(也可以需要從備份還原)

 

--   注意因為V$DATAFILE_HEADER只讀取每個資料檔案的頭部,並不檢測資料檔案需要被還原的所有問題。

--         例這個檢視並不能斷定資料檔案是否包含損壞的資料塊。

SELECT FILE#, STATUS, ERROR, RECOVER, TABLESPACE_NAME, NAME

FROM   V$DATAFILE_HEADER

WHERE  RECOVER = 'YES' OR (RECOVER IS NULL AND ERROR IS NOT NULL);

 

--4. (可選)查詢V$RECOVER_FILE通過資料檔案的編號來列出需要恢復的資料檔案,帶有狀態和錯誤資訊。

--注意:對於從備份還原的控制檔案,或是在影響資料檔案介質失敗之後重新建立的控制檔案,不能使用V$RECOVER_FILE.

--     被還原的或重新建立的控制檔案不包括更新V$RECOVER_FILE實際需要的資訊。

SELECT FILE#, ERROR, ONLINE_STATUS, CHANGE#, TIME  FROM  V$RECOVER_FILE;

 

-- 為了獲取資料檔案和表空間的名稱,也可以通過檔案號對V$DATAFILEV$TABLESPACE檢視進行連線操作。

-- ERROR列會標識出每個需要恢復的檔案的問題。

SELECT r.FILE# AS df#, d.NAME AS df_name, t.NAME AS tbsp_name, d.STATUS, r.ERROR, r.CHANGE#, r.TIME

FROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE t

WHERE t.TS# = d.TS# AND d.FILE# = r.FILE#;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1090340/,如需轉載,請註明出處,否則將追究法律責任。

相關文章