使用sqlplus或rman备份/恢复Oracle 10g测试数据库

问题描述 投票:0回答:5

将 Oracle 10g 与我们的测试服务器结合使用,将数据库备份和恢复到静态点的最有效/最简单的方法是什么,假设您总是希望在创建备份后返回到给定点。

示例用例如下

  1. 安装并配置所有软件
  2. 修改基础测试点数据
  3. 以某种方式进行备份(这是问题的一部分,如何做到这一点)
  4. 进行测试
  5. 返回步骤3状态(恢复到备份点,这是问题的另一半)

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

sql oracle backup oracle10g rman
5个回答
6
投票

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

步骤如下:

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

    启动强制安装;

  2. 创建还原点。

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

  3. 打开数据库。

    更改数据库打开;

  4. 运行您的测试。

  5. 关闭并挂载实例。

    立即关闭; 启动挂载;

  6. 闪回还原点。

    闪回数据库恢复到 before_test 点;

  7. 打开数据库。

    更改数据库打开;


5
投票

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

引自网站,

闪回数据库就像“倒带” 按钮'为您的数据库。它提供 数据库时间点恢复 无需备份 首先要恢复的数据库。什么时候 你消除了所需的时间 从磁带恢复数据库备份, 数据库恢复时间点是 快。


2
投票

根据我的经验,导入/导出可能是最佳选择。 导出会创建数据库的逻辑快照,因此您不会发现它对于大型数据库或严格的性能要求有用。 然而,它非常适合制作快照以及在多台机器上使用的东西。

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

您可能想查看的一些文章: OraFAQ 备忘单 Oracle 维基

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

我不能推荐 RMAN 来做这种事情,因为 RMAN 需要大量的设置,并且需要在数据库中进行配置(它还有自己的用于备份的目录数据库,这对于裸机恢复来说是众所周知的痛苦)。


1
投票

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


0
投票

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

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

  1. 回滚文件系统
  2. 应用生产归档日志
  3. 拍摄新的“数据屏蔽前”FS 快照
  4. 重置日志
  5. 应用“预生产”数据屏蔽。
  6. 拍摄新的“数据屏蔽后”快照(允许回滚以发布屏蔽数据)
  7. 打开数据库

这使我们能够使我们的开发数据库靠近我们的生产数据库。

为此,我使用 ZFS。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.