使用管理主控台還原資料庫
還原至原始資料庫會以指定時間點的映像檔,取代原始的生產應用程式資料。還原作業會將應用程式還原至建立映像檔時的狀態,因此目前的所有應用程式資料都會遺失。這項操作無法復原。完成還原作業所需的時間取決於資料量。您也可以將資料庫還原至其他目標。
請按照這些操作說明,使用 RMAN 從管理控制台自動還原 Oracle 資料庫,並覆寫原始的正式版資料庫。
開啟管理控制台的「應用程式管理工具」,然後輸入資料庫應用程式名稱,或使用篩選器找出所需的資料庫映像檔。
在應用程式上按一下滑鼠右鍵,然後選取「存取權」。
在「存取」頁面中,選取圖片,然後按一下「掛接」選單下方的「還原」。
在「還原」頁面上,選取「傳統」 (而非「掛接及遷移」)。
使用「還原範圍」滑桿選取特定時間點,以還原資料庫。將滑桿工具滑到最左側,即可只還原資料庫,不套用任何記錄。
在「Username」中,輸入所選目標伺服器上的 Oracle 軟體擁有者。
在「Number of Channels」(管道數量) 欄位中,指定要設定資料庫還原作業平行處理的 RMAN 管道數量。
按一下「提交」。
系統會顯示警告對話方塊。詳閱內容,然後輸入
DATA LOSS
確認。這項工作會排入佇列,等待下一個可用的工作時段。您可以透過「Jobs Monitor」查看進度。
使用管理主控台將資料庫還原至任何目標
請按照這些操作說明,使用管理控制台的 RMAN,將 Oracle 資料庫還原至新目標。
- 在「App Manager」 >「Applications」清單中,按一下資料庫,然後選取「Access」。
- 選取要復原的備份圖片,然後選擇「還原」。
在「還原」頁面中,選取「傳統」。
- 目標:在所有設定中,下拉式選單都會顯示所有符合資格的 Oracle 資料庫伺服器。從下拉式選單中選取還原目標伺服器。
- 取代原始應用程式身分:只有在還原至與原始備份產生位置相同的設備上時,才能使用這個選項。
- 是:這會取代原始應用程式,並沿用原始應用程式的應用程式 ID、工作記錄、備份映像檔和備份方案。
- 否:這不會取代原始應用程式。還原作業會將新資料庫視為新應用程式。
- 前滾時間:選擇日期和時間,將受記錄檔保護的資料庫還原至所需時間點。
應用程式選項:
- DATABASESID:系統會預先填入受保護的資料庫 SID 名稱,且無法變更。
- USERNAME:系統會預先填入來源資料庫 Oracle 軟體擁有者。如果所選目標伺服器上的 Oracle 軟體擁有者不同,請更新 USERNAME。
- ORAHOME:系統會預先填入來源資料庫的 Oracle Home 路徑。 如果所選目標伺服器上的 Oracle Home 不同,請更新 Oracle Home 目錄。
- 進階選項:系統會預先填入這個選項,並顯示備份時來源的所有資料庫參數設定 (來自 pfile)。請確認還原目標資料庫伺服器 (來源或新目標) 的參數值是否正確。
對應選項:
目標資料庫類型:從下拉式清單中選取資料庫的資料庫目標類型 (ASM 磁碟群組或檔案系統)。ASM 格式的備份映像檔不支援檔案系統目標類型。
來源資料庫 備用圖片格式 還原目標 ASM ASM ASM ASM 檔案系統 ASM 檔案系統 檔案系統 檔案系統 從下拉式清單中,為三種檔案類型選取目標 ASM 磁碟群組和檔案系統對應:資料庫的資料檔案、控制檔案和重做記錄檔。
按一下「Pre-Flight Check」(飛行前檢查)。如果前置檢查失敗,請修正問題,然後再次執行前置檢查。
按一下「提交」,提交還原工作。
使用 RMAN 手動復原 Oracle 資料庫
如要手動復原 Oracle 資料庫,請參閱這些程序。
非 RAC、非 ASM、檔案系統
復原 Oracle 資料庫,該資料庫的資料檔案位於檔案系統中,並以檔案式暫存磁碟格式受到保護
從受保護的來源資料庫掛接映像檔。
在「Mount」(掛接) 視窗的「Mapping Options」(對應選項) 中,提供映像檔的掛接位置,例如:
/acttestdb
。如需如何掛接資料庫映像檔的操作說明,請參閱「掛接受檔案系統保護的 Oracle 資料庫映像檔,以存取資料」。資料庫備份映像檔已掛接至:
/acttestdb
受保護的封存記錄檔會掛接在:
/acttestdb_Log
設定 Oracle 環境,並使用 sqlplus 關閉資料庫:
sqlplus / as sysdba sql> shutdown immediate;
確認資料庫已關閉。結束資料庫的任何其餘程序。
ps -ef | grep database sid
使用已掛接磁碟區中的備份參數檔案,以 nomount 狀態啟動資料庫。備份參數檔案位於頂層掛接資料夾下方,例如
/acttestdb
設定 Oracle 環境,並使用 sqlplus 啟動資料庫:
sqlplus / as sysdba sql> startup nomount pfile='/acttestdb/database sid___backup.ora';
從現有 pfile 建立新的 spfile,然後重新啟動資料庫。
從 pfile 建立 spfile:
create spfile='$ORACLE_HOME/dbs/spfile_database sid.ora' from pfile='/acttestdb/database sid___backup.ora';
以 spfile 重新啟動資料庫,並處於 nomount 狀態:
shutdown immediate; startup nomount;
使用 RMAN 從已掛接的封存記錄檔映像檔還原控制檔案。使用記錄檔掛接映像檔中的最新控制檔案,例如:
/acttestdb_Log/cf D_sid-id_Target SID.ctl
或有多張記錄圖片:
/acttestdb_Log_1/cf-D_sid-id_Target SID.ctl
rman target / restore controlfile from '/acttestdb_Log_1/cf-D_<var>sid</var>-id_<var>id</var>.ctl' ;
掛載資料庫:
alter database mount;
將備份和災難復原服務掛接的資料庫映像檔和封存記錄映像檔中的資料檔案和封存記錄資料夾,編目至 RMAN:
run { catalog start with '+acttestdg/db_name/datafile' noprompt; catalog start with '+acttestdg/db_namearchivelog' noprompt; catalog start with 'mountpoint_log' noprompt; }
還原及復原資料庫:
run { restore database ; recover database; }
如要使用 yyyymmddhh24mi 格式,從特定時間點復原:
run { restore database; recover database until time "to_date('timestamp','yyyymmddhh24mi')"; }
開啟資料庫,並選擇重設記錄選項。
主要資料庫復原:
alter database open resetlogs;
如要復原 Data Guard 待命資料庫,請啟動 Data Guard 管理的復原程序:
alter database recover managed standby database nodelay disconnect;
資料庫可供讀取和寫入。
RAC 或獨立 ASM、檔案系統
使用 ASM 磁碟群組中的資料檔案,以檔案型暫存磁碟格式復原受保護的 Oracle 資料庫
從受保護的來源資料庫掛接映像檔。
在「對應選項」下方的「掛接」視窗中,提供映像檔的掛接位置,例如:
/acttestdb
。如需如何掛接資料庫映像檔的操作說明,請參閱「掛接受檔案系統保護的 Oracle 資料庫映像檔,以存取資料」。資料庫備份映像檔會掛接在掛接位置:
/acttestdb
受保護的封存記錄會掛載在以下位置:
/acttestdb_Log
關閉 Oracle 資料庫。從節點 1,切換為 Oracle OS 使用者:
su - oracle
設定 Oracle 環境,並使用 srvctl 停止所有節點的資料庫:
srvctl stop database -d <var>database_name</var>
確認資料庫已關閉 (所有節點)。結束資料庫的任何其餘程序。
ps -ef | grep <var>database_name</var>
使用已掛接磁碟區的備份參數檔案,以無掛接狀態啟動資料庫。備份參數檔案位於頂層掛接資料夾下方,例如
/acttestdb
設定 Oracle 環境,並使用 sqlplus 啟動資料庫:
sqlplus / as sysdba startup nomount pfile='/acttestdb/<var>database_name</var>___backup.ora';
建立新的 spfile,然後重新啟動資料庫。
如要取得磁碟群組下的原始 spfile 路徑,請執行下列步驟:
cat $ORACLE_HOME/dbs/init{database sid}.ora
例如:spfile=+{preferred disk group}/db_name/spfiledb_name.ora`
create spfile='+{preferred disk group}/{db name}/spfile<var>db_name</var>.ora' from pfile='/acttestdb/<var>db_name</var>___backup.ora';
以 spfile 重新啟動資料庫,並處於 nomount 狀態:
shutdown immediate; startup nomount;
使用 RMAN 從已掛接的備份和災難復原封存記錄檔映像檔還原控制檔案。使用記錄檔掛接映像檔中的最新控制檔案,例如:
/acttestdb_Log/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl
或有多張記錄圖片:
/acttestdb_Log_1/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl
target / restore controlfile from '/acttestdb_Log_1/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl' ; ```
掛載資料庫:
alter database mount;
將 Backup and DR 掛接資料庫映像檔和封存記錄映像檔中的資料檔案和封存記錄資料夾,編目至 RMAN:
run { catalog start with '/acttestdb/datafile' noprompt; catalog start with '/acttestdb/archivelog' noprompt; catalog start with '/acttestdb_Log' noprompt;}
還原及復原資料庫:
run { restore database ; recover database; }
如要使用 yyyymmddhh24mi 格式,從特定時間點復原:
run { restore database; recover database until time "to_date('<var>timestamp</var>','yyyymmddhh24mi')"; }
開啟資料庫,並選擇重設記錄選項。
- 主要資料庫復原:
alter database open resetlogs;
重設記錄後,RAC 設定還需要另一個步驟:關閉節點 1 上的資料庫,然後在所有節點上啟動資料庫。
使用 sqlplus 關閉資料庫:
sqlplus / as sysdba shutdown immediate; ``` Use srvctl to start the database across all nodes: ```srvctl srvctl start database -d <var>database_name</var> ``` + For Data Guard standby database recovery: + For non-RAC config: Start the Data Guard managed recovery process ```rman alter database recover managed standby database nodelay disconnect; ``` + For RAC config: Shut down the database on node 1 and start the database in mounted state across all nodes. 1. Use sqlplus to shut down the database: ```sqlplus / as sysdba shutdown immediate; ``` 1. Use srvctl to start the database in a mount state across all nodes: ```srvctl srvctl start database -d <var>database_name</var> -o mount ``` 1. Start the Data Guard managed recovery process: ```rman alter database recover managed standby database nodelay disconnect; ```
資料庫可供讀取和寫入。
RAC 或獨立 ASM、ASM 磁碟群組
使用 ASM 磁碟群組中的資料檔案,以 ASM 磁碟群組暫存磁碟格式還原受保護的 Oracle 資料庫
從受保護的來源資料庫掛接映像檔。在「Mount」視窗中,於 RAC 節點 1 的 ASM 下方,提供映像檔掛接的偏好磁碟群組。如要瞭解如何掛接資料庫映像檔,請參閱「掛接受 ASM 磁碟群組保護的 Oracle 資料庫映像檔,以存取資料」。
舉例來說,在掛接畫面中:
選取主機:RAC 節點 1 資料庫伺服器
首選磁碟群組:acttestdg
RAC 節點清單:RAC 節點 1 的 IP
備份參數檔案會複製到
/act/touch/<var>preferred_disk_group</var>/
下方,例如:/act/touch/acttestdg/<var>database_name</var>___backup.ora
關閉 Oracle 資料庫。
從節點 1,切換為 Oracle OS 使用者:
su - oracle
設定 Oracle 環境。使用 srvctl 停止所有節點的資料庫:
srvctl stop database -d <var>database_name</var>
確認資料庫已關閉 (所有節點)。結束資料庫的任何其餘程序。
ps -ef | grep <var>db_name</var>
使用在 /act/touch/acttestdg 下複製的備份參數檔案,以 nomount 狀態啟動資料庫。
設定 Oracle 環境。使用 sqlplus 啟動資料庫:
```sqlplus / as sysdba startup nomount pfile='/act/touch/acttestdg/<var>db_name</var>___backup.ora'; ```
建立新的 spfile,然後重新啟動資料庫。
如要取得磁碟群組下的原始 spfile 路徑,請執行下列步驟:
```sqlplus cat $ORACLE_HOME/dbs/init(database sid).ora ```
例如:spfile=+preferred disk group/db_name/spfiledb_name.ora
create spfile='+<var>preferred disk group</var>/<var>db_name</var>/spfile<var>db_name</var>.ora' from pfile='/act/touch/acttestdg/<var>db_name</var>___backup.ora';
以 spfile 重新啟動資料庫,並處於 nomount 狀態:
```sql shutdown immediate; startup nomount; ```
使用 RMAN 從備份和災難復原服務掛接的封存記錄檔映像檔還原控制檔案。 使用 Log 已掛接映像檔中的最新控制檔案,例如:
/acttestdb_Log/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl
或如果有多個記錄映像檔:/acttestdb_Log_1/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl
```rman rman target / restore controlfile from '/acttestdg_Log_1/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl' ; ```
掛載資料庫:
```rman alter database mount; ```
將備份和災難復原服務掛接的資料庫映像檔和封存記錄映像檔中的資料檔案和封存記錄資料夾,編目至 RMAN:
```rman run { catalog start with '+acttestdg/<var>db_name</var>/datafile' noprompt; catalog start with '+acttestdg/<var>db_name</var>/archivelog' noprompt; catalog start with '/acttestdg_Log' noprompt;} ```
還原及復原資料庫:
```rman run { restore database ; recover database ; } ```
如要從特定時間點復原,請執行下列復原指令:
```rman run { restore database; recover database until time "to_date('<var>timestamp</var>','yyyymmddhh24mi')"; } ```
開啟資料庫,並選擇重設記錄選項。
主要資料庫復原:
alter database open resetlogs;
RAC 設定需要另一個步驟:重設記錄後,請關閉節點 1 上的資料庫,然後在所有節點上啟動資料庫。使用 sqlplus 關閉資料庫:
/ as sysdba shutdown immediate;
使用 srvctl 在所有節點啟動資料庫:
start database -d <var>database_name</var>
如要復原 Data Guard 待命資料庫,請按照下列步驟操作:
非 RAC 設定:啟動 Data Guard 管理的復原程序:
alter database recover managed standby database nodelay disconnect;
如果是 RAC 設定:關閉節點 1 上的資料庫,並在所有節點上以掛接狀態啟動資料庫。
使用 sqlplus 關閉資料庫:
as sysdba shutdown immediate;
使用 srvctl 在所有節點以掛接狀態啟動資料庫:
start database -d <var>database_name</var> -o mount
啟動 Data Guard 代管復原程序:
alter database recover managed standby database nodelay disconnect;
資料庫可供讀取和寫入。
復原 Oracle 表空間和資料檔案
如要復原單一表空間資料檔案 (例如因資料損毀而復原):
將備份/復原設備中的最新資料庫快照,掛接到 Oracle 伺服器。
將資料庫備份快照編目至 RMAN。
使用備份快照還原及復原表空間,詳情請參閱這篇文章。
在 ASM 磁碟群組上還原正式版資料庫的單一表空間
如要將生產資料庫的單一表空間還原至主要節點,請按照下列步驟操作:
如「將 Oracle 資料庫掛接為標準掛接點」一文所述,掛接資料庫時間點快照。
在「Mount」視窗的「Mapping Options」下方,提供映像檔的掛接位置。舉例來說,如果是 ASM 磁碟群組下的映像檔,請在「Preferred Disk Group」(偏好的磁碟群組) 下提供磁碟群組名稱;如果是檔案系統下的映像檔,請提供掛接位置,例如
/acttestdb
。如需如何掛接受檔案系統保護的資料庫映像檔的操作說明,請參閱「掛接受檔案系統保護的 Oracle 資料庫映像檔,以便存取資料」。
如要瞭解如何掛接受 ASM 磁碟群組保護的資料庫映像檔,請參閱「掛接受 ASM 磁碟群組保護的 Oracle 資料庫映像檔,以便存取資料」。
從主要節點以 Oracle OS 使用者身分登入資料庫伺服器。
設定資料庫環境並登入 RMAN:
rman target /
在 RMAN 提示中,編目備份資料檔案和封存記錄資料夾:
範例:受 ASM 磁碟群組保護的資料庫映像檔: (已掛接的 ASM 磁碟群組名稱「+ acttestdg」):
```rman catalog start with '+acttestdg/<var>db_name</var>/datafile' noprompt; catalog start with '+acttestdg/<var>db_name</var>/archivelog' noprompt; catalog start with ‘/<var>mountpoint_log</var>'; noprompt; (If archivelogs are protected by Backup and DR) ```
示例:受檔案系統保護的資料庫映像檔 (已掛接的檔案系統名稱為「/acttestdb」):
```rman catalog start with '/acttestdb/datafile' noprompt; catalog start with '/acttestdb/archivelog' noprompt; catalog start with '/acttestdb_log/archivelog' noprompt; ``` (If archivelogs are protected by Backup and DR)
現在您可以執行所有 RMAN 復原指令,例如:
完成後,請卸載並刪除映像檔。
復原表空間
如要復原表空間,請按照下列步驟操作:
```rman
restore tablespace <var>tablespace name</var>;
recover tablespace <var>tablespace name</var>;
```
復原資料檔案
如要復原資料檔案,請按照下列步驟操作:
```rman
restore datafile <var>file#</var>;
recover datafile <var>file#</var>;
```
復原損毀的資料庫區塊
如要復原損毀的資料庫區塊,請按照下列步驟操作:
如「將 Oracle 資料庫掛接為標準掛接點」一文所述,掛接資料庫時間點快照。
在「Mount」(掛接) 視窗中,選取「Mapping Options」(對應選項),然後提供映像檔的掛接位置。舉例來說,如果是 ASM 磁碟群組中的映像檔,請在「Preferred Disk Group」(偏好的磁碟群組) 下方提供磁碟群組名稱;如果是檔案系統中的映像檔,請提供掛接位置,例如:/acttestdb。
如需如何掛接受檔案系統保護的資料庫映像檔,請參閱「掛接受檔案系統保護的 Oracle 資料庫映像檔,以便存取資料」。
如要瞭解如何掛接受 ASM 磁碟群組保護的資料庫映像檔,請參閱「掛接受 ASM 磁碟群組保護的 Oracle 資料庫映像檔,以便存取資料」。
從主要節點以 Oracle OS 使用者身分登入資料庫伺服器。
設定資料庫環境並登入 sqlplus,然後查詢 v$database_block_corruption,檢查損毀的區塊:
```sh sqlplus / as sysdba sql> SELECT * FROM V$DATABASE_BLOCK_CORRUPTION; ```
登入 RMAN,復原所有損毀的區塊:
```rman rman target / RECOVER CORRUPTION LIST; ```
區塊復原後,資料庫會將其從 V$DATABASE_BLOCK_CORRUPTION 中移除。
如要復原個別損毀的區塊 (例如:資料檔案 8 和區塊 13):
從 RMAN 提示
```rman recover datafile 8 block 13; ```
復原遺失的控制檔案
如要復原遺失的控制檔案,請按照下列步驟操作:
如「將 Oracle 資料庫掛接為標準掛接」一文所述,掛接資料庫時間點快照。
在「Mount」(掛接) 視窗中,選取「Mapping Options」(對應選項),然後提供映像檔的掛接位置。舉例來說,如果是 ASM 磁碟群組下的映像檔,請在「Preferred Disk Group」(偏好的磁碟群組) 下提供磁碟群組名稱;如果是檔案系統下的映像檔,請提供掛接位置,例如
/acttestdb
。如需如何掛接受檔案系統保護的資料庫映像檔的操作說明,請參閱「掛接受檔案系統保護的 Oracle 資料庫映像檔,以便存取資料」。
如要瞭解如何掛接受 ASM 磁碟群組保護的資料庫映像檔,請參閱「掛接受 ASM 磁碟群組保護的 Oracle 資料庫映像檔以存取資料」。
從主要節點以 Oracle OS 使用者身分登入資料庫伺服器。
設定資料庫環境並登入 sqlplus,然後關閉資料庫並以 nomount 狀態啟動:
如果是獨立資料庫:
```sql sqlplus / as sysdba sql> shutdown immediate; sql> startup nomount; ```
如要從已掛接的映像檔節點關閉 RAC 資料庫,請在所有節點執行下列操作:
```sh srvctl stop database -d <var>db_name</var> sql> startup nomount; ```
從備份和災難復原服務掛接的映像檔還原控制檔案。
例如:
/acttestdb
(檔案系統) 和+acttestdg
(適用於 ASM)```rman rman target / restore controlfile from '/acttestdb/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl' ; (Filesystem mount) restore controlfile from '+acttestdb/cf-D_<var>db_name</var>-id_<var>db_id</var>.ctl' ; (ASM mount) ```
從 sqlplus 掛接並開啟資料庫:
```sql sqlplus / as sysdba sql> alter database mount; sql> recover database until cancel; sql> alter database open resetlogs; ```
復原 Oracle 可插式資料庫
如要復原 Oracle 12c 以上版本的可插式資料庫 (PDB),請按照下列步驟操作:
從來源資料庫伺服器掛接映像檔,以進行復原。在「Mount」(掛接) 視窗中,於 RAC 節點 1 的 ASM 下方,提供映像檔掛接的偏好磁碟群組。如要瞭解如何掛接資料庫映像檔,請參閱「掛接受 ASM 磁碟群組保護的 Oracle 資料庫映像檔,以存取資料」。
關閉可插式資料庫:
從節點 1 到 Oracle 使用者
su
su - oracle
設定 Oracle 環境。以「sysdba」使用者身分連線至 Oracle 資料庫:
/ as sysdba alter pluggable database <var>pluggable_db_name</var> close;
將 Backup and DR 掛接資料庫映像檔和封存記錄映像檔中的資料檔案和封存記錄資料夾,編目至 RMAN:
run { catalog start with '+acttestdg/<var>db_name</var>/datafile' noprompt; catalog start with '+acttestdg/<var>db_name</var>/archivelog' noprompt; catalog start with '/acttestdg_Log' noprompt; }
還原及復原可插式資料庫
run { restore pluggable database <var>pluggable_db_name</var>; recover pluggable database <var>pluggable_db_name</var> until time "to_date('<var>required time stamp</var>>';,';yyyymmddhh24mi')"; }
開啟可插式資料庫:
alter pluggable database <var>pluggable_db_name</var> open;
可插拔資料庫已開啟,可供讀取和寫入。
Oracle DBA 指南
- Oracle 資料庫的備份和災難復原
- 保護 Oracle 資料庫的必要條件
- Oracle 修補程式和已知問題
- 準備要保護的 Oracle 資料庫
- 探索及保護 Oracle 資料庫
- Oracle 資料庫的詳細資料和設定
- 搭配備份和災難復原服務使用 dNFS
- 保護已探索到的 Oracle 資料庫
- 將 Oracle 資料庫掛接為標準掛接點
- 建立 Oracle 資料庫的即時虛擬副本
- 還原及復原 Oracle 資料庫
- 使用掛接和遷移功能即時復原 Oracle 資料庫
- 使用備份和災難復原工作流程佈建環境