将Oracle 10g与我们的测试服务器一起使用,将数据库备份和还原到静态点的最有效/最简单的方法是,假设您始终希望在创建备份后返回给定点。
示例用例如下
最好通过sqlplus或rman或其他一些可编写脚本的方法来完成。
答案 0 :(得分:6)
您无需在基准时间进行备份。只需启用闪回数据库,创建有保证的还原点,运行测试并闪回到先前创建的还原点。
这样做的步骤是:
启动力量安装;
创建还原点before_test保证闪回数据库;
alter database open;
立即关机; startup mount;
闪回数据库恢复点before_test;
alter database open;
答案 1 :(得分:5)
您可以在Oracle中使用名为Flashback的功能,它允许您创建一个还原点,您可以在完成测试后轻松跳回到该点。
引自网站
闪回数据库就像一个'倒带' 按钮'为您的数据库。它提供 数据库时间点恢复 无需备份 数据库首先要恢复。什么时候 你消除了所需的时间 从磁带恢复数据库备份, 数据库的时间点恢复是 快。
答案 2 :(得分:2)
根据我的经验,导入/导出可能是要走的路。导出会创建数据库的逻辑快照,因此您不会发现它对大型数据库或严格的性能要求有用。然而,它非常适合制作快照以及在许多机器上使用的东西。
我在rails项目中使用它来获取一个prod快照,我们可以在开发人员之间进行交换以进行集成测试,我们在rake脚本中完成了这项工作。我们编写了一个小的sqlplus脚本,它破坏了数据库,然后将转储文件导入到顶部。
您可能想要查看的一些文章: OraFAQ Cheatsheet Oracle Wiki
Oracle显然不再喜欢imp / exp而不支持data pump,当我们使用数据泵时,我们需要我们不能拥有的东西(即我们无法在共享环境中获得的SYSDBA权限) 。所以看一看,但如果数据泵不是你的包,请不要灰心,旧的imp / exp仍在那里:)
我不推荐RMAN用于此类事情,因为RMAN需要大量设置并且需要在数据库中进行配置(它还有自己的目录数据库用于备份,这对于裸机还原来说是一个痛苦的谚语)。
答案 3 :(得分:1)
如果您使用的是支持copy-on-write快照的文件系统,则可以将数据库设置为所需的状态。然后关闭所有内容并获取文件系统快照。然后进行测试,当你准备重新开始时,你可以回滚快照。假设您有一个支持快照的文件系统,这可能比其他选项更简单。
答案 4 :(得分:0)
@Michael Ridley解决方案完全可编写脚本,并且可以与任何版本的oracle一起使用。
这正是我所做的,我有一个每周运行一次的脚本
这使我们能够将我们的开发数据库保持在我们的生产数据库附近。
为此,我使用ZFS。
此方法也可用于您的应用程序,甚至整个“环境”(例如,您可以使用单个(脚本)命令“回滚”整个环境。
如果您正在运行10g,那么您可能首先要考虑的是Flashback,因为它内置于数据库中。