2017-04-25 32 views
0

我正在使用Oracle數據庫爲我的應用程序進行自動化測試,我想在某些步驟之間重置/重新創建數據庫。重置oracle數據庫進行測試的最快方法

哪個是重置Oracle數據庫的最佳/最快的方法?

+1

與誰投這屬於人不同意。關於DBA,SE。自動化測試Fixtures絕對是開發人員的顧慮ñ。 – APC

+0

測試的範圍是什麼?我們在談論多少數據?你想多久進行一次初始化(什麼是「在一些步驟之間」的時間刻度)? – APC

+0

數據量很大。我目前正在測試ERP系統,已經有大約150個表。我已經嘗試了一些替代方法:內存(失敗),數據泵(expdp和impdp),刪除用戶(級聯)並重新應用所有腳本以再次創建/生成數據。 –

回答

3

既然你說過你想重置整個數據庫,閃回數據庫可能是你的工具。閃回數據庫使用歸檔日誌(因此您必須首先處於歸檔日誌模式)和閃回日誌,以撤消數據庫上的所有內容以將數據庫恢復到特定時間點或指定的還原點。

閃回日誌設置是您配置保留時間(以分鐘爲單位)以及日誌位置的最大大小。

配置快速恢復區存儲閃回日誌:

alter system set db_recovery_file_dest='L:\Oracle\FRA' scope=both; 
alter system set db_recovery_file_dest_size=100G scope=both; 
alter system set db_flashback_retention_target = 1440 scope=both; --1 day 

開啓閃回數據庫:

alter database flashback on; 

創建一個還原點,這只不過是一個指針的SCN更多當恢復點被採取時:

create restore point before_changes; 

您可以創建儘可能多的恢復e點,因爲他們只是指針,他們沒有任何額外的空間。也就是說,如果達到db_flashback_retention_target或db_recovery_file_dest_size參數(以先到者爲準),還原點將會滾降。

您可以通過創建閃回保證還原點來防止這些還原點的滾動。但是,必須注意保證閃回數據庫還原點,因爲如果達到任一參數,數據庫將無法訪問(在這種情況下,您必須刪除保證閃回數據庫還原點或增加這些參數的值。

已運行測試後,您可以閃回通過:

shutdown immediate; 
startup mount; 
flashback database to restore point before_changes; 
alter database open resetlogs; 

你可以閱讀有關閃回數據庫,並從Oracle 11.2 docs還原點

+0

謝謝,我認爲這是我需要的。我會嘗試這一點,如果它的工作,我會接受你的答案。 –

相關問題