Data Guard是Oracle提供完全的数据库备用的技术,防止灾难性事故发生。Data Guard以防各种系统、网络故障,不局限于地理位置。备用数据库可以与运行数据库在同一个房间,也可以在千里之外。但是像其它的故障切换解决方案一样,包括远程的监控和本地群集,当第一线的数据库在线时,备用数据库是空闲,不可用的。
一项新的Data Guard功能特性出现了,我们称之为Snapshot Standby,这个技术能让你将备用数据库处于临时的读写模式(read/write mode),在提供原始的HA/DR保护的同时还能让你测试数据库改变。单单这个功能特性就能改变公司管理数据库开发、更改控制、基准测试等的工作方式。应用程序升级等这些相关任务的方式也发生改变。
举个例子,假设你需要在你的生产数据库(production database)上对一个重要的存储过程进行修改。问题是不进行生产工作负荷测试,你就不知道这个修改到底对你的系统有多少性能的改善。Snapshot Standby和Database Replay(下面将会提到)联手的话,你就能测试任何情况。你所需要做的就是记录你主要数据库的生产工作负荷,将备用数据库设置为读写模式,在备用数据库上执行你修改的代码。接着在备用数据库上重放你记录的工作负荷,接着你就可以比较结果了。
当你把备用数据库设置为Snapshot Standby模式时,就会停止应用来自主要数据库的日志(日志仍旧在发送,只是他们暂时没有应用)。当你完成测试后,能将备用数据库调回读模式。这个时候备用数据库将会自动废除你之前的所有修改,返回到你测试前的状态,应用那些一直等待应用的日志。这样一来,备用数据库在物理上一直和主要数据库保持同步,只是暂时在逻辑上不同步。
Snapshot Standby还有许多时候能派上用场,从查找生产故障到磁盘布局分区的索引调整。在很重的用户负荷下,可以使用Snapshot Standby来测试备份,索引reorgs。它几乎可以做任何事情。
这里还有另外一个使用目的。DBA最重要的问题之一就是让分析员、开发者和其它的人员不能进入生产数据库。他们都有合法的理由来读取系统的数据,但是由于性能和顺应性的原因,你希望尽可能的限制他们的访问。通常的做法是你将提供另外一台服务器供他们使用,通过备份/恢复或者复制的方法,让这台数据库和生产数据库保持同步。使用Snapshot Standby这个功能特性,你只在一个数据库上就可以完成上述的功能。