快速将 Oracle 数据库恢复到已知状态

快速将 Oracle 数据库恢复到已知状态

我想使用 Selenium 来测试 Web 应用程序,但为了成功完成测试,必须针对已知状态的数据库运行测试。

Selenium 测试的记录和运行不属于本网站的范围,因此我仅寻求有关如何在每次测试执行后最好地恢复数据库的建议。

一些细节:

  • 当前数据库大小为 30GB,但只需要恢复约 4GB
  • 数据库是运行在 Windows Server 2003 上的 Oracle 11g 标准版
  • 需要恢复 6 个不同架构中的数据

理想情况下,应该对该过程进行脚本化,以便可以通过计划任务频繁且自动地重新执行。

答案1

最简单、最快捷的方法是将数据库放在使用 ZFS 的 OpenSolaris 机器上,并在启动 Oracle 之前执行 ZFS 快照。

由于您已经支付了 Windows Oracle 许可证,因此实现此目的的最佳方法是设置 Nexenta 服务器并使用 iSCSI 将 ZFS 作为普通 Windows 文件系统进行访问。要记住的关键是不要在 Oracle 运行时创建或恢复快照。

快照和恢复几乎是即时的。

如果您看到 Illumos 这个名字,那就是新名称 OpenSolaris。

答案2

要以编程方式执行此操作,您可以使用数据库单元(Java)。

使用 Oracle 工具,您可以使用SQLLDR

答案3

我将用 expdp 包装一个 shell 脚本来导出架构,并用 impdp 再次导入它。在运行测试用例之前,请导出数据库,并自动执行 selenium 测试,让它们执行运行后的 shell 脚本,该脚本将执行 impdp(或旧版 Oracle 的 imp)命令行以恢复数据库。

这就是我们在测试中所做的事情。

相关内容