使用sqlplus或rman进行oracle 10g测试的备份/恢复数据库

时间:2008-09-15 22:36:03

标签: sql oracle backup oracle10g rman

将Oracle 10g与我们的测试服务器一起使用,将数据库备份和还原到静态点的最有效/最简单的方法是,假设您始终希望在创建备份后返回给定点。

示例用例如下

  1. 安装并配置所有软件
  2. 将数据修改为基本测试点
  3. 以某种方式进行备份(这是问题的一部分,如何做到这一点)
  4. 做测试
  5. 返回步骤3状态(恢复到备份点,这是问题的另一半)
  6. 最好通过sqlplus或rman或其他一些可编写脚本的方法来完成。

5 个答案:

答案 0 :(得分:6)

您无需在基准时间进行备份。只需启用闪回数据库,创建有保证的还原点,运行测试并闪回到先前创建的还原点。

这样做的步骤是:

  1. 以挂载模式启动实例。

    启动力量安装;

  2. 创建还原点。

    创建还原点before_test保证闪回数据库;

  3. 打开数据库。

    alter database open;

  4. 运行测试。

  5. 关闭并装入实例。

    立即关机; startup mount;

  6. 闪回到还原点。

    闪回数据库恢复点before_test;

  7. 打开数据库。

    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一起使用。

这正是我所做的,我有一个每周运行一次的脚本

  1. 回滚文件系统
  2. 应用生产存档日志
  3. 采用新的“数据屏蔽前”FS快照
  4. 重置日志
  5. 应用“预生产”数据屏蔽。
  6. 采用新的“后数据屏蔽”快照(允许回滚以发布屏蔽数据)
  7. 打开数据库
  8. 这使我们能够将我们的开发数据库保持在我们的生产数据库附近。

    为此,我使用ZFS。

    此方法也可用于您的应用程序,甚至整个“环境”(例如,您可以使用单个(脚本)命令“回滚”整个环境。

    如果您正在运行10g,那么您可能首先要考虑的是Flashback,因为它内置于数据库中。