oracle測試資料庫啟用

記錄每一次錯誤發表於2022-12-03

在實際運營環境中,我們經常碰到類似這樣的需求,譬如想不影響現網業務評估DB補丁在現網環境中執行的時間,或者是想在做DB切換前想連線Standby DB做實際業務執行的測試,如果在9i版本的時候,想做到這樣,在不搭建新測試環境的前提下,可以將Standby DB啟用後進行測試,但是啟用後的Standby DB將不能再用於容災,必須重建Standby DB。在10g以及11g之後,可以利用新特性很好的解決這個問題,啟用的Standby DB可以閃回到啟用前的狀態,繼續參與容災,而不需要重建。


下面簡單說明下實施的步驟:
 10g環境下:
1:確保設定了Flash Recovery Area。
SQL> show parameter db_recovery


NAME                                TYPE                  VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest                string                /data1/flash_recovery_area
db_recovery_file_dest_size          big integer            80G


如果沒設定,請使用alter system命令進行設定,需要重啟DB。
2:取消Standby DB的同步,建立可保障的還原點。
SQL> alter database recover managed standby database cancel;
SQL> create restore point beforetest guarantee flashback database;


3:啟用Standby庫進行測試
SQL> alter database activate standby database;
SQL> alter database open;
測試Standby DB已啟用並可寫開啟,之後可以開始進行測試。


4:將啟用的Standby 庫閃回並重新轉換為Standby DB。
SQL> startup mount force
SQL> flashback database to restore point beforetest;
SQL> alter database convert to physical standby ;


5:刪除之前建立的還原點並重新開啟同步
SQL> startup mount force
SQL> drop restore point beforetest;
SQL>  alter database recover managed standby database disconnect from session;


說明在這個過程中,主庫到備庫的日誌傳輸會報錯,建議在主庫上將到Standby DB的日誌傳輸先停止:
SQL> alter system set log_archive_dest_state_2=defer;
等閃回後再重新啟用日誌傳輸:
SQL> alter system set log_archive_dest_state_2=enable;


oracle 11g環境下:
步驟更簡單,11g中加入了Snapshot Standby Database的新特性,其實也就是上面10g功能的一個包裝而已,唯一不同的是在轉換為讀寫模式後任然可以繼續接受主庫過來的歸檔日誌。
步驟如下:
1:取消日誌應用
SQL> alter database recover managed standby database cancel;


2:重啟並轉換成Snapshot Standby Database。
SQL> shutdown immediate;
SQL> startup mount
SQL> alter database convert to snapshot standby;


3:開啟後可進行讀寫相關測試
SQL> alter database open;


4:重新轉換成physical Standby並開啟同步
SQL > shutdown immediate
SQL> startup mount
SQL> alter database convert to physical standby;
SQL> shutdown immediate;
SQL> startup nomount
SQl> alter database mount standby database;
SQL> alter database open;
SQL> alter database recover managed standby database disconnect from session;


需要注意的點:
10g中建立的還原點必須在閃回後進行刪除,否則閃回恢復區可能會被撐滿,導致DB Hang住。11g中不用擔心這個問題,在重新轉換為physical standby時會自動進行還原點刪除。


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

相關文章