使用sqlplus或者rman备份/还原数据库以进行oracle 10g测试
如果将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已内置在数据库中。