適用於:
Oracle 資料庫 – 11gR2
問題:
通常執行效能指標測試時,必須在開始新執行之前先載入乾淨的資料庫。確保乾淨資料庫的一種方法,是在每次測試執行之前重新建立整個資料庫,但根據資料庫的大小而定,這種方法可能非常耗時或效率低落。
解決方案:
本文說明如何使用 Oracle 的快閃回復功能,將資料庫快速還原至執行工作負載前的存在狀態。更具體來說,本文將說明如何使用「保證還原點」的步驟。
還原點:
還原點僅是與時間戳記或資料庫 SCN 相關聯的名稱。您可以建立正常的還原點,或是保證還原點。兩者之間的差異在於保證還原點可讓您快閃至還原點,無論 DB_FLASHBACK_RETENTION_TARGET 的初始參數為何,也就是此還原點將永遠可用 (假設您在快閃還原區域擁有足夠空間)。
注意:在本文中,並未開啟快閃回復紀錄。
保證還原點:
先決條件:建立保證還原點需要下列先決條件:
- 使用者必須具備 SYSDBA 系統權限
- 必須已建立快閃復原區域
- 資料庫必須處於 ARCHIVELOG 模式
建立保證還原點:
在您建立或遷移新資料庫後,首先要建立保證還原點,以在開始新工作負載之前每次都能快閃回復。步驟如下:
- $> su – oracle
- $> sqlplus / as sysdba;
- 查看是否已啟用 ARCHIVELOG
SQL> select log_mode from v$database;
若步驟 3 顯示 ARCHIVELOG 並未啟用,請跳至以下的步驟 8。
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> alter database archivelog;
- SQL> alter database open;
- SQL> create restore point CLEAN_DB guarantee flashback database;
其中 CLEAN_DB 是為保證還原點提供的名稱。
檢視保證還原點
SQL> select * from v$restore_point;
確認新建立的還原點資訊。此外,請記下 SCN# 以供參考,我們會將此稱為「參考 SCN#」
快閃回復至保證還原點
現在,若要將資料庫還原至保證還原點,請按照以下步驟操作:
- $> su – oracle
- $> sqlplus / as sysdba;
- SQL> select current_scn from v$database;
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> select * from v$restore_point;
- SQL> flashback database to restore point CLEAN_DB;
- SQL> alter database open resetlogs;
- SQL> select current_scn from v$database;
將以上步驟 9 的 SCN# 與參考 SCN# 比較。
注意:以上步驟 9 的 SCN# 不一定完全與參考 SCN# 相同,但會十分類似。
參考資料: