1. 程式人生 > >oracle dbf檔案丟失 無備份情況下ORACLE資料檔案丟失恢復

oracle dbf檔案丟失 無備份情況下ORACLE資料檔案丟失恢復

使用alter database create datafile恢復丟失資料檔案

如果由於誤刪除操作或其它物理原因呆滯Oracle資料庫資料檔案丟失。
在已開啟歸檔且所建立資料檔案之後的歸檔都在的情況下,即使資料庫沒有備份,其丟失資料檔案也是進行恢復的,且不會有資料丟失。

這裡我們可以使用以下語句來建立新的空資料檔案以替代舊資料檔案:

ALTER DATABASE ... CREATE DATAFILE <filenumber>;
ALTER DATABASE CREATE DATAFILE '<filename>' AS '<filename>'; 

並在之後使用recover datafile命令來進行資料恢復。

recover datafile <filenumber>;

ALTER DATABASE ... <create_datafile_clause>:
其中<create_datafile_clause>,我們可以使用CREATE DATAFILE來建立一個新的空資料檔案以替換舊的丟失檔案,這是一種在無備份情況下重建資料檔案的方法。
其中的<filename>或<filenumber>,必須被用於定位資料庫檔案。
你可以根據檔案編號定位檔案,檔案號可以在動態效能檢視v$datafile中找到file#,或在DBA_DATA_FILES資料字典檢視中找到FILE_ID列值。

  • 語法中可以用AS NEW以系統自生成的方式生成Oracle資料檔名,檔案大小將和被替換的舊檔案大小相同,生成的資料檔案存放在系統預設位置。
  • 語法中也可以用AS <filename>的形式來自定義一個新的資料檔名。
  • 如果最初丟失的資料檔案(檔名或檔案號)是一個Oracle管理的資料檔案,那麼在Oracle資料庫建立新檔案後,將會嘗試刪除最初的舊檔案。
  • 如果最初丟失的資料檔案是一個使用者自管理的資料檔案,那麼Oracle資料庫之後不會去刪除舊檔案。
  • 如果你在語句中省略AS語句,那麼Oracle資料庫將使用之前同名方式來建立新資料檔案,沿用之前的資料檔名和檔案號。

在新檔案建立後,進行資料恢復時,需要所有從最初舊資料檔案建立以來的歸檔日誌,應用到新檔案上。
Oracle在新檔案建立後會保持和舊檔案相同的檔案狀態。你需要進行介質恢復將新檔案恢復到舊檔案丟失前的狀態。

建立新資料檔案需要注意的限制:

SYSTEM表空間下首個數據檔案不可使用此語句進行檔案新建。
在CREATE DATAFILE語法中不能對臨時檔案指定autoextend語法。