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

我想使用Selenium来testing一个Web应用程序,但为了成功地完成testing,必须在已知状态下对数据库运行testing。

Seleniumtesting的logging和运行不在本网站的范围之内,所以我只寻求在每次testing执行之后如何最好地恢复数据库的build议。

一些细节:

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

理想情况下,这个过程应该是脚本化的,以便它可以通过计划的任务经常和自动地重新执行。

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

由于您已经购买了Windows Oracle许可证,所以最好的办法是build立一个Nexenta服务器,并使用iSCSI作为正常的Windows文件系统访问ZFS。 要记住的关键是不要在Oracle运行时创build或恢复快照。

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

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

要以编程方式执行此操作,可以使用DBUnit (Java)。

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

我会用expdp来包装一个shell脚本来导出schema,impdp再导入它。 在运行testing用例之前,导出数据库,并自动化执行运行后shell脚本的seleniumtesting,该脚本将执行impdp(或imp for old Oracle)命令行以恢复数据库。

这就是我们在testing中的做法。