使用sqlplus或者rman备份/还原数据库以进行oracle 10g测试

时间:2020-03-05 18:54:43  来源:igfitidea点击:

如果将Oracle 10g与我们的测试服务器一起使用,那么将数据库备份和还原到静态点的最有效/最简便的方法是什么,假设一旦创建了备份,我们总是想回到给定的点。

以下是一个示例用例:

  • 安装和配置所有软件
  • 修改数据到基础测试点
  • 以某种方式进行备份(这是问题的一部分,如何执行此操作)
  • 做测试
  • 返回第3步状态(还原回到备份点,这是问题的另一半)

最好通过sqlplus或者rman或者其他一些可编写脚本的方法来完成此操作。

解决方案

回答

我们可以使用Oracle中称为Flashback的一项功能,该功能允许我们创建一个还原点,在完成测试后可以轻松跳回到该还原点。

从网站上引用

Flashback Database is like a 'rewind
  button' for your database. It provides
  database point in time recovery
  without requiring a backup of the
  database to first be restored. When
  you eliminate the time it takes to
  restore a database backup from tape,
  database point in time recovery is
  fast.

回答

如果使用支持写时复制快照的文件系统,则可以将数据库设置为所需的状态。然后关闭所有内容并拍摄文件系统快照。然后进行测试,当我们准备重新开始时,可​​以回滚快照。假设我们有一个支持快照的文件系统,这可能比其他选项更简单。

回答

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

步骤如下:

  • 以挂载模式启动实例。启动力安装;
  • 创建还原点。创建还原点before_test保证闪回数据库;
  • 打开数据库。更改数据库打开;
  • 运行测试。
  • 关闭并安装实例。立即关闭;启动安装;
  • 闪回还原点。闪回数据库还原点before_test;
  • 打开数据库。更改数据库打开;

回答

根据我的经验,导入/导出可能是要走的路。导出会创建数据库的逻辑快照,因此我们不会发现它对大型数据库或者严格的性能要求很有用。但是,它非常适合制作快照以及在许多计算机上不可用的快照。

我在Rails项目上使用它来获取产品快照,我们可以在开发人员之间交换以进行集成测试,并且我们在rake脚本中完成了这项工作。我们编写了一个小的sqlplus脚本,该脚本销毁了数据库,然后在顶部导入了转储文件。

我们可能要检查的一些文章:
OraFAQ备忘单
甲骨文维基

Oracle显然不再喜欢imp / exp来支持数据泵,当我们使用数据泵时,我们需要我们无法拥有的东西(即,在共享环境中无法获得SYSDBA特权)。因此,请看一下,但如果数据泵不是首选,请不要沮丧,旧的imp / exp仍然存在:)

我不建议RMAN进行这种事情,因为RMAN需要进行大量设置,并且需要在数据库中进行配置(它也具有自己的目录数据库来进行备份,这在裸机还原中是一个痛苦的说法)。

回答

@Michael Ridley解决方案完全可以编写脚本,并且可以与任何版本的oracle一起使用。

这正是我的工作,我有一个脚本,该脚本每周运行一次,

  • 回滚文件系统
  • 应用生产存档日志
  • 拍摄新的" Pre-Data-Masking" FS快照
  • 重置日志
  • 应用"预生产"数据屏蔽。
  • 拍摄新的" Post-Data-Masking"快照(允许回滚以发布蒙版数据)
  • 打开数据库

这使我们可以将开发数据库保持在生产数据库附近。

为此,我使用ZFS。

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

但是,如果我们运行的是10g,则可能要考虑的第一件事是Flashback,因为Flashback已内置在数据库中。