Oracle
邏輯備用數據庫測試
主數據庫:11.2.0.3 企業
備用數據庫:12.1.0.2 企業
我發現了幾篇關於在物理備用數據庫上進行更改的文章,但我一直很難找到如何在瞬態邏輯備用數據庫上啟用使用者測試(然後閃回他們的更改並重新啟用日誌傳輸和 SQL 應用之後測試已完成)。
根據我對邏輯備用數據庫的了解,我編寫了以下過程。但是,這是未經測試的,因為如果我搞砸了備用數據庫,我不能簡單地通過 RMAN 重新複製數據庫,因為數據庫版本不同。我基本上必須重新複製主數據庫,為 dataguard 重新配置備用數據庫,升級備用數據庫版本等等……基本上,如果可能的話,我寧願避免很多工作……
如果有這方面經驗的人可以查看我的以下程序並讓我知道我是否忘記了任何事情,或者我應該注意或註意哪些潛在問題/警告,我將不勝感激:
*注意:主 => 備用日誌傳輸在 log_archive_dest_3 中指定
PRIMARY alter system set log_archive_dest_state_3=defer scope=both; STANDBY alter database stop logical standby apply; alter database guard none; alter database flashback on; create restore point before_testing guarantee flashback database; *AFTER TESTING IS DONE* STANDBY flashback database to restore point 'before_testing'; drop restore point before_testing; alter database flashback off; alter database guard all; alter database start logical standby apply immediate; PRIMARY alter system set log_archive_dest_state_3=enable scope=both;
我的程序似乎有效…我能夠測試邏輯數據庫,然後將其帶回精確副本邏輯備用並重新啟用 SQL 應用而沒有問題。
然而,我的程序有一個小的改變:閃回數據庫要求數據庫處於掛載狀態,而改變數據庫打開需要resetlogs 或noresetlogs。
因此,修改後的程序如下:
PRIMARY alter system set log_archive_dest_state_3=defer scope=both; STANDBY alter database stop logical standby apply; alter database guard none; alter database flashback on; create restore point before_testing guarantee flashback database; *AFTER TESTING IS DONE* STANDBY shutdown immediate; startup mount; flashback database to restore point 'before_testing'; alter database open resetlogs; alter database guard all; alter database start logical standby apply immediate; drop restore point before_testing; alter database flashback off; PRIMARY alter system set log_archive_dest_state_3=enable scope=both;