我正在使用 Oracle 数据库对我的应用程序进行自动化测试,我想在某些步骤之间重置/重新创建数据库。
重置 Oracle 数据库的最佳/最快方法是什么?
最佳答案
既然您说要重置整个 数据库,闪回数据库可能是适合您的工具。闪回数据库使用存档日志(因此您必须首先处于存档日志模式)和闪回日志以撤消数据库上的所有内容,将数据库恢复到特定时间点或命名的恢复点。
闪回日志设置是您配置保留时间(以分钟为单位)以及日志位置的最大大小。
配置快速恢复区来存储闪回日志:
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;
您可以根据需要创建任意数量的还原点,并且它们不会占用任何额外空间,因为它们只是指针。也就是说,如果达到 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 中阅读有关闪回数据库和还原点的信息.
关于oracle - 重置 oracle 数据库以进行测试的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43613655/