重置oracle数据库进行测试的最快方法

Nie*_*ves 6 testing oracle automated-tests oracle11g

我正在使用 Oracle 数据库对我的应用程序进行自动化测试,并且我想在某些步骤之间重置/重新创建数据库。

重置 Oracle 数据库的最佳/最快方法是什么?

小智 6

既然你说要重置整个数据库,那么闪回数据库可能就是你的工具。闪回数据库使用存档日志(因此您必须首先处于存档日志模式)和闪回日志以撤消数据库上的所有内容以将数据库恢复到特定时间点或指定的恢复点。

闪回日志设置是您配置保留时间(以分钟为单位)以及日志位置的最大大小。

配置快速恢复区以存储闪回日志:

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
Run Code Online (Sandbox Code Playgroud)

开启闪回数据库:

alter database flashback on;
Run Code Online (Sandbox Code Playgroud)

创建一个还原点,它只不过是一个指向还原点被采用时的 SCN 的指针:

create restore point before_changes;
Run Code Online (Sandbox Code Playgroud)

您可以根据需要创建任意数量的还原点,并且它们不会占用任何额外空间,因为它们只是指针。也就是说,如果达到 db_flashback_retention_target 或 db_recovery_file_dest_size 参数(以先到者为准),还原点将滚动。

您可以通过创建闪回保证还原点来防止这些还原点滚动。但是,必须注意保证闪回数据库还原点,因为如果达到任一参数,您的数据库将无法访问(在这种情况下,您必须删除保证闪回数据库还原点,或增加这些参数的值。

运行测试后,您可以通过以下方式闪回:

shutdown immediate;
startup mount;
flashback database to restore point before_changes;
alter database open resetlogs;
Run Code Online (Sandbox Code Playgroud)

您可以从 Oracle 11.2文档中了解闪回数据库和还原点。