2017-04-25 27 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

谢谢,我认为这是我需要的。我会尝试这一点,如果它的工作,我会接受你的答案。 –

相关问题