1. 程式人生 > >Oracle資料庫備份與恢復 - RMAN恢復

Oracle資料庫備份與恢復 - RMAN恢復

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               
RMAN恢復原理
首先還是得理解Oracle資料庫恢復的一個原理。資料庫恢復是指將資料庫恢復到一個一致性的狀態,整個恢復操作可以分為兩個步驟,資料庫修復(RESTORE)和恢復(RECOVER)。

Oracle官方文件上關於Restore和Recover的解釋:  The two most important RMAN commands used in database recovery are:
  • RESTORE, which retrieves files from RMAN backups based on the contents of the RMAN repository
  • RECOVER, which performs complete or point-in-time media recovery using available datafiles and redo logs.
Restore是指將要恢復的檔案從備份集中讀取出來。 Recover是指應用所有重做日誌,將資料庫恢復到崩潰前的狀態,或者應用部分REDO,將資料庫恢復到指定的時間點。

上圖是一個最典型的恢復過程,資料庫在SCN=100時執行了資料庫備份,在SCN=500時資料庫出現介質錯誤,需要通過備份進行恢復。 
操作步驟:
1.首先使用SCN=100時建立的資料庫備份將資料庫恢復到備份時的狀態,這個操作就是修復(RESTORE)。 2.然後重新應用SCN 100~500之間生成的所有重做日誌,這個操作就是恢復(RECOVER),最後資料庫被恢復到崩潰前的狀態。
由上可知,Oracle資料庫中的備份恢復必然是先有備份,然後才能做恢復的操作。不管是RMAN備份恢復,或者是使用者管理的備份和恢復,恢復操作都是從備份時間點向前進行恢復,不可能直接將當前狀態向後恢復到之前的某個時間點(Oracle 10g R2新推出的Flashback Database特性開始支援,直接從當前時間點向之前的時間點恢復)。
RMAN如何選擇備份集 很多新接觸RMAN的朋友都會有這樣的疑問:我執行過很多次備份,早也備份是晚也備份,昨天也備份今天也備份,在恢復的時候,RMAN怎麼知道從哪個備份集中選擇檔案用來恢復呢?  答案其實很簡單,RMAN一開始也不知道,它只是遵循固定的規則,按照你的要求去尋找合適的備份集罷了,首先是尋找最近的可用的備份集(如果沒有指定UNTIL子句則從最近的備份開始,如果指定了UNTIL,則從滿足UNTIL的備份集開始),如果能找到,那麼運氣不錯,恢復將會繼續正常進行,如果找到了多個,還有更加細緻的規則,從中選擇一個RMAN覺著最優的備份集來做恢復(如優先選擇映象複製,因為RMAN認為這樣恢復時會更快)。如果最終一個備份集都沒找到,嘿嘿,那就只有一個選擇了:報錯。

RMAN能做哪些恢復 在之前的文章Oracle資料庫備份與恢復 - RMAN備份 裡,寫到了RMAN可以做多種備份,包括: 1.整庫備份、2.表空間的備份、3.資料檔案的備份、4.控制檔案備份、5.歸檔檔案的備份、6.初始化引數檔案的備份、7.對備份集備份 對於恢復,RMAN中提供了多種不同級別的恢復方式,你既可以恢復整個資料庫,也可以只恢復某個或某幾個表空間,或某個或某幾個資料檔案,還可以單獨恢復控制檔案、初始化引數檔案,或者歸檔檔案。說白了就一條,用RMAN備份的就都能被恢復。
1.對資料庫進行完全恢復 如果當前資料庫只剩下控制檔案和SPFILE,其他資料檔案因為某些原因導致全部丟失,不過幸運的是之前建立過整庫的備份,並且執行備份操作之後,所有的歸檔檔案和重做日誌檔案都還在,這種情況下你就可以將資料庫恢復到崩潰前那一刻的狀態,而這種恢復方式,就叫做完全介質恢復。
做資料庫完全恢復,需要資料庫處於MOUNT狀態(如果資料庫處於OPEN狀態會報ORA-19573錯誤
啟動資料庫到載入狀態: RMAN> STARTUP MOUNT;

connected to target database (not started)
Oracle instance started
database mounted

Total System Global Area    1071333376 bytes

Fixed Size                     1375792 bytes
Variable Size                637534672 bytes
Database Buffers             427819008 bytes
Redo Buffers                   4603904 bytes

執行恢復操作(恢復分兩步,有先有後的): RMAN> restore database;

Starting restore at 15-JUL-15
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=63 device type=DISK

channel ORA_DISK_1: restoring datafile 00001
input datafile copy RECID=2 STAMP=884555266 file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\DATAFILE\O1_MF_SYSTEM_BSTBH904_.DBF
destination for restore of datafile 00001: E:\APP\TIANPAN\ORADATA\PTIAN\SYSTEM01.DBF
channel ORA_DISK_1: copied datafile copy of datafile 00001
output file name=E:\APP\TIANPAN\ORADATA\PTIAN\SYSTEM01.DBF RECID=0 STAMP=0
channel ORA_DISK_1: restoring datafile 00002
input datafile copy RECID=3 STAMP=884555292 file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\DATAFILE\O1_MF_SYSAUX_BSTBJDFQ_.DBF
destination for restore of datafile 00002: E:\APP\TIANPAN\ORADATA\PTIAN\SYSAUX01.DBF
channel ORA_DISK_1: copied datafile copy of datafile 00002
output file name=E:\APP\TIANPAN\ORADATA\PTIAN\SYSAUX01.DBF RECID=0 STAMP=0
channel ORA_DISK_1: restoring datafile 00003
input datafile copy RECID=4 STAMP=884555305 file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\DATAFILE\O1_MF_UNDOTBS1_BSTBK5V1_.DBF
destination for restore of datafile 00003: E:\APP\TIANPAN\ORADATA\PTIAN\UNDOTBS01.DBF
channel ORA_DISK_1: copied datafile copy of datafile 00003
output file name=E:\APP\TIANPAN\ORADATA\PTIAN\UNDOTBS01.DBF RECID=0 STAMP=0
channel ORA_DISK_1: restoring datafile 00004
input datafile copy RECID=7 STAMP=884555314 file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\DATAFILE\O1_MF_USERS_BSTBKKVB_.DBF
destination for restore of datafile 00004: E:\APP\TIANPAN\ORADATA\PTIAN\USERS01.DBF
channel ORA_DISK_1: copied datafile copy of datafile 00004
output file name=E:\APP\TIANPAN\ORADATA\PTIAN\USERS01.DBF RECID=0 STAMP=0
channel ORA_DISK_1: restoring datafile 00005
input datafile copy RECID=5 STAMP=884555312 file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\DATAFILE\O1_MF_EXAMPLE_BSTBKF80_.DBF
destination for restore of datafile 00005: E:\APP\TIANPAN\ORADATA\PTIAN\EXAMPLE01.DBF
channel ORA_DISK_1: copied datafile copy of datafile 00005
output file name=E:\APP\TIANPAN\ORADATA\PTIAN\EXAMPLE01.DBF RECID=0 STAMP=0
Finished restore at 15-JUL-15

RMAN> RECOVER DATABASE;

Starting recover at 15-JUL-15
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 105 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_09\O1_MF_1_105_BSWC39YH_.ARC
archived log for thread 1 with sequence 106 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_10\O1_MF_1_106_BSYCRLNG_.ARC
archived log for thread 1 with sequence 107 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_11\O1_MF_1_107_BT10F9Y9_.ARC
archived log for thread 1 with sequence 108 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_11\O1_MF_1_108_BT1M9PW5_.ARC
archived log for thread 1 with sequence 109 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_15\O1_MF_1_109_BTCH29LR_.ARC
archived log file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_09\O1_MF_1_105_BSWC39YH_.ARC thread=1 sequence=105
archived log file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_10\O1_MF_1_106_BSYCRLNG_.ARC thread=1 sequence=106
archived log file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_11\O1_MF_1_107_BT10F9Y9_.ARC thread=1 sequence=107
media recovery complete, elapsed time: 00:00:22
Finished recover at 15-JUL-15

RMAN>

開啟資料庫: 
RMAN>  ALTER DATABASE OPEN;

database opened

RMAN>

2.表空間恢復 在執行恢復之前,如果被操作的表空間未處於OFFLINE狀態,必須首先通過ALTER TABLESPACE ... OFFLINE語句將其置為離線。 SQL> select * from v$tablespace;
       TS# NAME                           INCLUDED_IN_DATABASE_BACKUP BIGFILE FLASHBACK_ON ENCRYPT_IN_BACKUP
---------- ------------------------------ --------------------------- ------- ------------ -----------------
         0 SYSTEM                         YES                         NO      YES          
         1 SYSAUX                         YES                         NO      YES          
         2 UNDOTBS1                       YES                         NO      YES          
         4 USERS                          YES                         NO      YES          
         3 TEMP                           NO                          NO      YES          
         6 EXAMPLE                        YES                         NO      YES          
6 rows selected
以恢復Example表空間為例。
操作步驟如下:  RMAN> SQL 'ALTER TABLESPACE EXAMPLE OFFLINE IMMEDIATE';  RMAN> RESTORE TABLESPACE EXAMPLE;  RMAN> RECOVER TABLESPACE EXAMPLE;  RMAN> SQL 'ALTER TABLESPACE  EXAMPLE ONLINE';  上述執行的四個指令碼,表示將表空間置於OFFLINE狀態,執行RESTORE命令,執行RECOVER命令,最後將表空間置為ONLINE狀態。
RMAN> SQL 'ALTER TABLESPACE EXAMPLE OFFLINE IMMEDIATE';

sql statement: ALTER TABLESPACE EXAMPLE OFFLINE IMMEDIATE

RMAN> RESTORE TABLESPACE EXAMPLE;

Starting restore at 15-JUL-15
using channel ORA_DISK_1

channel ORA_DISK_1: restoring datafile 00005
input datafile copy RECID=5 STAMP=884555312 file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\DATAFILE\O1_MF_EXAMPLE_BSTBKF80_.DBF
destination for restore of datafile 00005: E:\APP\TIANPAN\ORADATA\PTIAN\EXAMPLE01.DBF
channel ORA_DISK_1: copied datafile copy of datafile 00005
output file name=E:\APP\TIANPAN\ORADATA\PTIAN\EXAMPLE01.DBF RECID=0 STAMP=0
Finished restore at 15-JUL-15

RMAN> RECOVER TABLESPACE EXAMPLE;

Starting recover at 15-JUL-15
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 105 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_09\O1_MF_1_105_BSWC39YH_.ARC
archived log for thread 1 with sequence 106 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_10\O1_MF_1_106_BSYCRLNG_.ARC
archived log for thread 1 with sequence 107 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_11\O1_MF_1_107_BT10F9Y9_.ARC
archived log for thread 1 with sequence 108 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_11\O1_MF_1_108_BT1M9PW5_.ARC
archived log for thread 1 with sequence 109 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_15\O1_MF_1_109_BTCH29LR_.ARC
archived log file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_09\O1_MF_1_105_BSWC39YH_.ARC thread=1 sequence=105
archived log file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_10\O1_MF_1_106_BSYCRLNG_.ARC thread=1 sequence=106
archived log file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_11\O1_MF_1_107_BT10F9Y9_.ARC thread=1 sequence=107
media recovery complete, elapsed time: 00:00:03
Finished recover at 15-JUL-15

RMAN> SQL 'ALTER TABLESPACE  EXAMPLE ONLINE';

sql statement: ALTER TABLESPACE  EXAMPLE ONLINE

RMAN>

3.資料檔案的恢復 恢復表空間實際就是恢復其所對應的資料檔案(一個表空間可能對應多個數據檔案),因此恢復資料檔案的操作步驟與上極其相似。  同樣在恢復操作之前,如果需要被恢復的資料檔案未處於OFFLINE狀態,需要通過ALTER DATABASE DATAFILE ... OFFLINE語句(注意喲,執行的語句不一樣了)將其置為離線。
SQL>  select file#, name,status, enabled from v$datafile;
     FILE# NAME                                                                             STATUS  ENABLED
---------- -------------------------------------------------------------------------------- ------- ----------
         1 E:\APP\TIANPAN\ORADATA\PTIAN\SYSTEM01.DBF                                        SYSTEM  READ WRITE
         2 E:\APP\TIANPAN\ORADATA\PTIAN\SYSAUX01.DBF                                        ONLINE  READ WRITE
         3 E:\APP\TIANPAN\ORADATA\PTIAN\UNDOTBS01.DBF                                       ONLINE  READ WRITE
         4 E:\APP\TIANPAN\ORADATA\PTIAN\USERS01.DBF                                         ONLINE  READ WRITE
         5 E:\APP\TIANPAN\ORADATA\PTIAN\EXAMPLE01.DBF                                       ONLINE  READ WRITE

SQL> 
以恢復datafile 5為例。
操作步驟如下:
RMAN> SQL 'ALTER DATABASE DATAFILE 5 OFFLINE'; 
RMAN> RESTORE DATAFILE 5; 
RMAN> RECOVER DATAFILE 5; 
RMAN> SQL 'ALTER DATABASE DATAFILE 5 ONLINE';
例項如下:
RMAN> SQL 'ALTER DATABASE DATAFILE 5 OFFLINE';

sql statement: ALTER DATABASE DATAFILE 5 OFFLINE

RMAN> RESTORE DATAFILE 5;

Starting restore at 15-JUL-15
using channel ORA_DISK_1

channel ORA_DISK_1: restoring datafile 00005
input datafile copy RECID=5 STAMP=884555312 file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\DATAFILE\O1_MF_EXAMPLE_BSTBKF80_.DBF
destination for restore of datafile 00005: E:\APP\TIANPAN\ORADATA\PTIAN\EXAMPLE01.DBF
channel ORA_DISK_1: copied datafile copy of datafile 00005
output file name=E:\APP\TIANPAN\ORADATA\PTIAN\EXAMPLE01.DBF RECID=0 STAMP=0
Finished restore at 15-JUL-15

RMAN> RECOVER DATAFILE 5;

Starting recover at 15-JUL-15
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 105 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_09\O1_MF_1_105_BSWC39YH_.ARC
archived log for thread 1 with sequence 106 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_10\O1_MF_1_106_BSYCRLNG_.ARC
archived log for thread 1 with sequence 107 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_11\O1_MF_1_107_BT10F9Y9_.ARC
archived log for thread 1 with sequence 108 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_11\O1_MF_1_108_BT1M9PW5_.ARC
archived log for thread 1 with sequence 109 is already on disk as file E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_15\O1_MF_1_109_BTCH29LR_.ARC
archived log file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_09\O1_MF_1_105_BSWC39YH_.ARC thread=1 sequence=105
archived log file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_10\O1_MF_1_106_BSYCRLNG_.ARC thread=1 sequence=106
archived log file name=E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\ARCHIVELOG\2015_07_11\O1_MF_1_107_BT10F9Y9_.ARC thread=1 sequence=107
media recovery complete, elapsed time: 00:00:04
Finished recover at 15-JUL-15

RMAN> SQL 'ALTER DATABASE DATAFILE 5 ONLINE';

sql statement: ALTER DATABASE DATAFILE 5 ONLINE

RMAN>

4.歸檔日誌檔案的恢復 恢復歸檔檔案也是使用RESTORE命令,如果只是為了在恢復資料檔案後應用歸檔檔案,那並不需要手動對歸檔檔案進行恢復,RMAN會在RECOVER的時候自動對適當的歸檔進行恢復。 恢復歸檔檔案也非常靈活,RMAN的RECOVER命令中提供了多種限定條件,可以精確指定恢復哪些備份的歸檔檔案,例如,恢復歸檔序號為20到30之間的歸檔檔案: 
RMAN> RESTORE ARCHIVELOG SEQUENCE BETWEEN 20 AND 30;
示例:
RMAN> RUN{ 
2> SET ARCHIVELOG DESTINATION TO 'F:\ORACLE\BACKUP\ARCLOG1'; 
3> RESTORE ARCHIVELOG SEQUENCE BETWEEN 15 AND 20; 
4> SET ARCHIVELOG DESTINATION TO 'F:\ORACLE\BACKUP\ARCLOG2'; 
5> RESTORE ARCHIVELOG SEQUENCE BETWEEN 21 AND 30; 
6> SET ARCHIVELOG DESTINATION TO 'F:\ORACLE\BACKUP\ARCLOG3'; 
7> RESTORE ARCHIVELOG SEQUENCE BETWEEN 31 AND 40;  
8> }


5.控制檔案的恢復 看到控制兩字就該知道,這類事物一般都處於領導階層,Oracle資料庫的控制檔案雖然個頭不大(最大不超過20000個數據塊),但是地位非凡,這倒正應了那句話:濃縮的都是精華。Oracle資料庫例項啟動後(即啟動到NOMOUNT模式),要通過載入控制檔案確定資料檔案、重做日誌檔案的路徑(進入到MOUNT模式),然後才能開啟資料庫(Finally,OPEN資料庫)。因此,沒有了控制檔案,想順利啟動Oracle資料庫是不可能的。
當然,控制檔案中並不是只有資料檔案和重做日誌檔案的路徑(如果僅有這些,這個導字早就被別人領了),還包括資料庫名稱、資料庫建立資訊、表空間資訊、資料檔案狀態、日誌檔案資訊、備份資訊、檢查點資訊等。該檔案不僅在資料庫啟動過程中需要,在Oracle資料庫執行過程中,控制檔案也需要發揮重要作用,如記錄檢查點的相關資訊、歸檔檔案路徑、備份資訊(假如採用RMAN執行備份的話),以及資料庫發生結構修改(流行詞彙形容叫領導班子調整,類似新增刪除表空間、資料檔案、日誌檔案)等操作都需要同步到控制檔案。如果在Oracle資料庫執行過程中,由於某些原因導致控制檔案無法訪問,則資料庫也無法繼續正常工作。

控制檔案是一個二進位制檔案,不能直接通過文字編輯工具修改,一般這個檔案中的內容都是由Oracle自行維護。一個Oracle資料庫至少要擁有一個控制檔案,鑑於其重要地位(領導嘛),Oracle對其的保護有加,在預設情況下,控制檔案就會有兩、三份冗餘(就是一模一樣的檔案存在兩、三份),這幾份檔案的一致性由Oracle自動維護,當然啦,冗餘的數量和冗餘檔案的位置可以由DBA指定,Oracle建議控制檔案至少要有兩份冗餘,並且儲存在不同的磁碟中,以提高該檔案的可用性。

查詢當前資料庫擁有的控制檔案,最常用的是通過下列兩種方式進行。

通過初始化引數CONTROL_FILES查詢:
SQL> SELECT NAME FROM V$CONTROLFILE; 
NAME
--------------------------------------------------------------------------------
E:\APP\TIANPAN\ORADATA\PTIAN\CONTROL01.CTL
E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\CONTROL02.CTL

SQL> SHOW PARAMETER CONTROL_FILES;  
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      E:\APP\TIANPAN\ORADATA\PTIAN\CONTROL01.CTL, E:\APP\TIANPAN\FLASH_RECOVERY_AREA\PTIAN\CONTROL02.CTL

SQL> 
雖說控制檔案個頭很小,但丟了確實是件很麻煩的事情,注意,這個麻煩不是指恢復控制檔案需要很高深的技術、較高難度的操作,而是由於控制檔案在Oracle資料庫中的重要地位,因此連恢復方式都被特別得看重,以至於恢復控制檔案的方法靈活,多種多樣,變幻莫測。 1.從自動備份中恢復 由於沒有了控制檔案,目標資料庫只能啟動到NOMOUNT狀態,不過在啟動資料庫之前,必須首先通過SET命令設定DBID: 示例:
RMAN> SET DBID=1415261003;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;

2.從備份集中恢復 在啟動資料庫之前,必須首先通過SET命令設定DBID:  RMAN> SET DBID=1415261003;  啟動資料庫到NOMOUNT狀態: RMAN> STARTUP NOMOUNT;  執行RESTORE命令時指定控制檔案所在備份片段的詳細路徑:  RMAN> RESTORE CONTROLFILE FROM 'f:\oracle\backup\c- 2. 1415261003-20090413-00';
6.SPFILE初始化引數檔案 雖然DBA可以通過BACKUP SPFILE命令手動備份伺服器端的初始化引數檔案,不過一般都不會主動執行,因為RMAN在備份控制檔案時會自動備份SPFILE。

相對於其他檔案的備份,SPFILE最不重要(或者說最容易被恢復)。除了可以通過備份方式保障擁有可用的SPFILE外,資料庫在執行過程中也會在Alert檔案中留下資料庫啟動時的初始化引數資訊。甚至即使這些都丟失了也沒有關係,如果你對資料庫足夠了解,還是能夠手動地創建出一份SPFILE出來,只是麻煩一些罷了。即使是執行中的資料庫丟失了SPFILE也不會導致資料庫崩潰(只不過下次啟動時如果還沒有能創建出一份來,資料庫就起不來了,嘿嘿),因此SPFILE的恢復相對來說,可以更加從容。

通過RMAN恢復初始化引數的過程與恢復控制檔案極其類似。
在啟動資料庫之前,必須首先通過SET命令設定DBID: 
RMAN> SET DBID=1415261003;
啟動資料庫到NOMOUNT狀態: 
RMAN> STARTUP NOMOUNT;
執行恢復命令,將SPFILE恢復到預設路徑下:
RMAN> RESTORE SPFILE FROM AUTOBACKUP;


參考&整理 《塗抹Oracle》  控制檔案(Control Files)


           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述