Oracle-11g
使用 RMAN 恢復 Oracle 數據庫
我是一名從事 DBA 工作的應用程序開發人員。我必須在我們的測試伺服器上恢復一個 oracle 數據庫。使用 RMAN 備份數據庫,並且在此伺服器上完成的最後一次數據庫還原是在 2011 年。RMAN 備份每天都在執行。無論如何,我想恢復測試數據庫以匹配生產生產數據庫。我可以從生產伺服器複製所需的數據文件和控製文件,並將其放在測試伺服器上放置備份文件的確切位置,或者如何解決這個問題。我想執行時間點恢復。我不想破壞生產數據庫。由於生產伺服器每天都在備份數據庫,我想我會複製前天的副本並將其放在測試伺服器上,並在進行時間點恢復時將路徑名提供給 RMAN.. 請建議我該怎麼做..這是我用來恢復的程式碼,如果可以,請告訴我。謝謝
SET NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS" SET ORACLE_SID= rman target / nocatalog shutdown immediate; startup mount; run { SET UNTIL TIME "TO_DATE('set to whatever time you want to recover','DD-MON-YYYY HH24:MI:SS')"; restore database; recover database; alter database open resetlogs; }
您不希望您的測試數據庫保留與生產數據庫相同的內部 ID 號。因此最好使用 RMAN 的命令 DUPLICATE,因為它設置了不同的 id(以及新的數據庫名稱)。此命令專門設計用於執行您需要的操作。
在目前控製文件可用時恢復和恢復數據庫:
- 連接到目標數據庫和(可選)恢復目錄數據庫後,確保數據庫已安裝。
STARTUP MOUNT
- 執行以下操作: 如果未配置自動通道,則手動分配一個或多個通道。
執行
SHOW ALL
以查看目前配置。使用命令恢復數據庫
RESTORE
,使用命令恢復數據庫RECOVER
。此範例使用自動通道執行恢復並跳過只讀歷史表空間:
RESTORE DATABASE; RECOVER DATABASE # optionally, delete logs restored for recovery and limit disk space used DELETE ARCHIVELOG MAXSIZE 1M SKIP TABLESPACE history; # optionally, skip the recovery of some tablespaces
- 檢查輸出以查看恢復是否成功。如果是這樣,請打開數據庫:
ALTER DATABASE OPEN;