歸檔路徑更改後,如何對資料庫進行恢復(轉)

zhouwf0726發表於2019-06-07
歸檔路徑更改後,如何對資料庫進行恢復?
有時候我們可能會因為磁碟空間的原因,對歸檔路徑進行更改,那麼這個時候應如何對資料庫進行恢復呢?
下面的測試:
idle>drop tablespace test_dest including contents and datafiles;
表空間已丟棄。
idle>create tablespace test_dest datafile
2 'd:ora92oradataoracletest_dest01.dbf' size 5m;
表空間已建立。
idle>show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string D:ora92oradataoraclearchive
idle>alter system switch logfile;
系統已更改。
idle>alter system switch logfile;
系統已更改。
idle>alter system switch logfile;
系統已更改。
idle>alter system switch logfile;
系統已更改。
idle>alter system set log_archive_dest='D:ora92oradataoraclearchive_bak' scope=both;
系統已更改。
idle>alter system switch logfile;
系統已更改。
idle>alter system switch logfile;
系統已更改。
idle>alter system switch logfile;
系統已更改。
idle>alter system switch logfile;
系統已更改。
----切換歸檔路徑後,再次switch logfile,使切換後的歸檔目錄中有archive log(這樣例項恢復的時候才會到此目錄中去找歸檔日誌)
idle>shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
---刪除資料檔案TEST_DEST01.DBF
idle>startup
ORACLE 例程已經啟動。
Total System Global Area 80812656 bytes
Fixed Size 453232 bytes
Variable Size 58720256 bytes
Database Buffers 20971520 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 6 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 6: 'D:ORA92ORADATAORACLETEST_DEST01.DBF'
idle>alter database create datafile 'd:ora92oradataoracletest_dest01.dbf' as 'd:ora92oradataoracletest_dest01.dbf';
資料庫已更改。
idle>show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string D:ora92oradataoraclearchive_bak
idle>recover datafile 6;
ORA-00279: 更改 1417082392 (在 07/25/2006 17:36:59 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORA92ORADATAORACLEARCHIVE_BAKARC_20_1.ARC
ORA-00280: 更改 1417082392 對於執行緒 1 是按序列 # 20 進行的
指定日誌: {=suggested | filename | AUTO | CANCEL}
autoORA-00308: 無法開啟存檔日誌 'D:ORA92ORADATAORACLEARCHIVE_BAKARC_20_1.ARC'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
ORA-00308: 無法開啟存檔日誌 'D:ORA92ORADATAORACLEARCHIVE_BAKARC_20_1.ARC'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
---因為現在的歸檔日錄是切換後的目錄,而表空間test_dest建立資訊是記錄在切換之前的目錄當中。
---切換後的目錄當中,找不到那些歸檔日誌。

---這裡將歸檔路徑修改為之前的路徑.
idle>alter system set log_archive_dest='D:ora92oradataoraclearchive' scope=both;
系統已更改。
idle>recover datafile 6;
ORA-00279: 更改 1417082392 (在 07/25/2006 17:36:59 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORA92ORADATAORACLEARCHIVEARC_20_1.ARC
ORA-00280: 更改 1417082392 對於執行緒 1 是按序列 # 20 進行的
指定日誌: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 1417082434 (在 07/25/2006 17:37:41 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORA92ORADATAORACLEARCHIVEARC_21_1.ARC
ORA-00280: 更改 1417082434 對於執行緒 1 是按序列 # 21 進行的
ORA-00278: 此恢復不再需要日誌檔案
'D:ORA92ORADATAORACLEARCHIVEARC_20_1.ARC'

ORA-00279: 更改 1417082436 (在 07/25/2006 17:37:42 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORA92ORADATAORACLEARCHIVEARC_22_1.ARC
ORA-00280: 更改 1417082436 對於執行緒 1 是按序列 # 22 進行的
ORA-00278: 此恢復不再需要日誌檔案
'D:ORA92ORADATAORACLEARCHIVEARC_21_1.ARC'

ORA-00279: 更改 1417082440 (在 07/25/2006 17:37:48 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORA92ORADATAORACLEARCHIVEARC_23_1.ARC
ORA-00280: 更改 1417082440 對於執行緒 1 是按序列 # 23 進行的
ORA-00278: 此恢復不再需要日誌檔案
'D:ORA92ORADATAORACLEARCHIVEARC_22_1.ARC'

ORA-00279: 更改 1417082442 (在 07/25/2006 17:37:50 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORA92ORADATAORACLEARCHIVEARC_24_1.ARC
ORA-00280: 更改 1417082442 對於執行緒 1 是按序列 # 24 進行的
ORA-00278: 此恢復不再需要日誌檔案
'D:ORA92ORADATAORACLEARCHIVEARC_23_1.ARC'

ORA-00308: 無法開啟存檔日誌 'D:ORA92ORADATAORACLEARCHIVEARC_24_1.ARC'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
---因為arc_24在切換後的歸檔目錄中,所以找不到該歸檔日誌。
---再次將歸檔路徑進行切換:idle>alter system set log_archive_dest='D:ora92oradataoraclearchive_bak' scope=both;
系統已更改。
idle>recover datafile 6;ORA-00279: 更改 1417082442 (在 07/25/2006 17:37:50 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORA92ORADATAORACLEARCHIVE_BAKARC_24_1.ARC
---- 要求接上之前的日誌流。ORA-00280: 更改 1417082442 對於執行緒 1 是按序列 # 24 進行的

指定日誌: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 1417082464 (在 07/25/2006 17:38:08 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:ORA92ORADATAORACLEARCHIVE_BAKARC_25_1.ARC
ORA-00280: 更改 1417082464 對於執行緒 1 是按序列 # 25 進行的
ORA-00278: 此恢復不再需要日誌檔案
'D:ORA92ORADATAORACLEARCHIVE_BAKARC_24_1.ARC'

已應用的日誌。
完成介質恢復。
---至此,恢復完成。
idle>alter database open;
資料庫已更改。
idle>select file_name,status from dba_data_files where file_id = 6;
FILE_NAME
--------------------------------------------------------------------------------
STATUS
---------
D:ORA92ORADATAORACLETEST_DEST01.DBF
AVAILABLE

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

相關文章