Oracle DG系列:STANDBY DATABASE的前世今生

2021-08-17 15:35:22 浏览数 (1)

Oracle Data Guard是Oracle MAA(Maximum Availability Architecture)中的成员之一,也是MAA中技术要求最简单的方案之一。随着Oracle新功能的引入如Active Standby Database后,加速了Oracle Data Guard的普及。响应去I的趋势和X86架构的流行,对Oracle Data Guard的普及更起到了锦上添花的影响。

Oracle Data Guard在当下已经成为X86架构下核心数据库系统的标配,并且凭借技术要求低、成本低、数据的一致性强、实时功能、可查询等众多优点,逐渐在银行的两地三中心方案中替代基于存储复制的技术,成为目前银行、金融、电信行业的首选数据库容灾解决方案

2020即将到来,在此之际我们推出Oracle Data Guard系列讲堂。我们将会从STANDBY DATABASE数据库最开始的版本开始,让大家了解它的前世、今生。我们也将围绕STANDBY DATABASE部署、运维管理、故障处理等方面,让理论知识轻松上手,在实战中变得唾手可得。我们也将测试Oracle 12C版本中的每一个新功能,让新功能不再停留于简单的文字,而是能真正的运用到我们的运维工作中,解决实际遇到的相关问题。

下面开始Oracle Data Guard系列的第一讲:STANDBY DATABASE的前世今生

前世(Standby Database)

  • 1996年 7i

1996年Oracle发布了7.3版本,其中推出了一个具有跨时代的功能:Standby Database,此时Standby Database(备库)可以看成是主库的一个基于文件的备份。主库与备库的同步只能依赖于归档日志,而归档日志依赖于第三方工具从主库传输到备库。在备库mount状态下手动RECOVER命令来应用归档日志(RECOVER [FROM ’location’] STANDBY DATABASE)。备库只能启动到MOUNT阶段,备库端可通过激活命令将数据库从备库状态转为主库状态。

其部署非常简单,主库不需要做任何参数修改。

备库由DB_FILE_STANDBY_NAME_CONVERT和LOG_FILE_STANDBY_NAME_CONVERT参数来支持数据文件和日志文件路径名的自动转换。

备库变成主库的唯一方式就是FAILOVER

  • 1998年 8i

1998年Oracle发布了8.1.5版本,Standby Database在这个版本中得到了质的飞越,Standby Database的运维变得更加简单,Standby Database不仅仅有容灾功能,同时还引入了只读功能,使得原来在主库环境中消耗大量资源的报表业务可以移植到备库端运行。

在Manual Recovery Mode的基础上引入了Managed Recovery Mode(备库在收到归档日志后自动的进行RECOVER操作,同时引入了RECOVER MANAGED STANDBY DATABASE命令)、Read-Only Mode(可以将备库启动自读模式,可以查询数据,可以往临时表空间中写入数据,可以在任一时刻切回到manual recovery mode或者是managed recovery mode)。最大同时支持4个Managed Recovery Mode的Standby Database,Manual Recovery Mode的Standby Database理论不受限制。

在Managed Recovery Mode下备用数据库的归档日志存放在参数STANDBY_ARCHIVE_DEST指定的目录中,DB_FILE_NAME_CONVERT替换DB_FILE_STANDBY_NAME_CONVERT参数,LOG_FILE_NAME_CONVERT替换LOG_FILE_STANDBY_NAME_CONVERT参数。

同时,Oracle推出“Standby Database Concepts and Administration”专门的文档。

今生(Data Guard)

  • 2001年 9i

2001年Oracle发布了9i版本,此版本中Standby Database的功能继续得到增强,并引入了自动管理工具(broker)等等新功能,让Standby Database迎来了脱胎换骨的感觉。Standby Database改名为Data Guard

  1. 自动监控和管理(broker)使得Data guard管理变得更为简单。
  2. 引入切换 功能,在之前的版本中只有FAILOVER。
  3. 引入FAL(Fetch archive log)功能来自动解决GAP的归档日志。当备库发现缺失归档日志后,会根据FAL参数配置,主动去抓取归档日志。
  4. 引入STANDBY LOG FILE功能,实现了日志的实时传输,同时可以实现NO DATA LOSS。最大保护和最大可用模式必须要求standby log file存在。官方文档要求standby log file必须和源库大小一致。关于归档日志组的个数参考官方的2句话“The minimum configuration should have one more standby redo log group than the primary database.During testing, the easiest way to determine if the current standby log configuration is satisfactory is to examine the contents of the RFS process trace file and the database alert log. If messages indicate that the RFS process frequently has to wait for a group because archiving did not complete, add more standby log groups.
  5. 将Managed Recovery Mode模式的备库增加到10个。
  6. 在原来3种备库模式上,引入Delayed Mode。延迟指延迟运用而非延迟传输。
  7. 引入FAL_CLIENT,FAL_SERVER, REMOTE_ARCHIVE_ENABLE,STANDBY_FILE_MANAGEMENT,ARCHIVE_LAG_TARGET等新的参数。
  8. 引入standby_file_management参数,实现备库库端数据文件自动添加工作。
  9. 多个视图增加列、新增加多个视图用于Data guard的管理(如V$DATAGUARD_STATUS)
  10. 引入Logical standby database
  11. 引入数据库保护的3种模式,最大保护、最大可用、最大性能
  12. 引入级联的日志路径。
  13. 在physical standby databases中启用并行恢复。
  14. ARCn进程支持对standby redo log的备份。
  15. 日志传输的多个属性增加如(ARCH | LGWR [NO]AFFIRM [NO]ALTERNATE [NO]DELAY [NO]DEPENDENCY [NO]MAX_FAILURE [NO]QUOTA_SIZE [NO]QUOTA_USED [NO]REGISTER | REGISTER [=location_format] NOREOPEN SYNC | ASYNC)
  16. 支持自定义日志传输进程(ARCH|LGWR),默认为ARCH,
  17. 支持自定义网络传输模式(SYNC|ASYNC),默认为ASYNC。
  • 2003年 10g

2003年Oracle发布了10G版本,此版本在9i中奠定Data guard的功能的基础上,主攻完善Data guard的管理功能。

  1. 引入Fast-start failover,优化原先手动failover时需要执行大量的命令。
  2. Data Guard环境中支持flashback database功能的使用,包括在Data Guard切换过程时和备库端运行时。大大减少主备库FAILOVER时主库重建的次数,也可以利用备库端flashback来随时还原误操作丢失的数据。
  3. 异步日志传输模式的优化,引入LNSn(local network server)进程来分担lgwr异常传输日志的功能,减少lgwr的负担,减少日志传输对主库性能的影响。
  4. 优化ARCH模式下日志传输速度,引入MAX_CONNECTIONS参数,指定多个ARCn进程来传输日志。
  5. 优化备库转为报表数据库,备库可以临时激活成读写的数据库供报表业务运行,在报表业务运行过程中,主库的归档日志也会同步到备库端。报表运行完成后,可能通过flashback database功能将数据库闪回到备库模式,自动的与主库同步。
  6. 数据库到open模式时tempfile文件的自动重建,前提是tempfile路径已经存在或者是FRA路径已经配置。
  • 2007年 11g

2007年Oracle发布了11G版本,此版本让Data guard实现真正的腾飞,让Data Guard从原来作为“不出问题就想不起的功能”变成了可以为业务产生价值的功能,这所有的变换都是由于11G中引入了Active Standby Database

  1. 日志传输引用压缩功能,大大提供日志传输效率,减少了日志传输延迟。
  2. 增强日志传输认证功能,引入了SSL功能。
  3. 简化Data Guard的管理。
  4. 物理备库数据库支持滚动升级
  5. 支持异构的备库模式(需要具有相同的endine)
  6. 不再支持ARCH日志传输模式。
  7. 支持active standby database,备库可以从原来的mount阶段启动到open read only阶段,并且可以对外提供读服务。此功能是真正让Dataguard实现腾飞、大规模使用的功能,让原来一直处于备用状态的数据库和硬件资源终于可以为业务服务。
  8. 引用snapshot standby
  9. 可以利用备库来发现写丢失。
  10. 增强RMAN在Data Guard的功能,支持在备库端对数据库进行备份,也支持duplicate从主库传输数据文件到备库来搭建备份环境,不再仅依赖于rman的历史备份文件。
  11. 支持30个备库
  12. FAL_CLIENT初始化参数不再需要
  13. 支持主库在mount状态flush redo,将未传输到备库的日志传输到备库。
  14. FRA默认归档路径从LOG_ARCHIVE_DEST_10改到LOG_ARCHIVE_DEST_1
  15. 在ADG下引入STANDBY_MAX_DATA_DELAY参数,最大应用延迟。
  16. 在ADG下主库或者备库的坏块可以利用未损坏的块来自动修复。
  17. 异构平台搭建DG得到进一步增强。
  • 2013年 12c

2013年6月Oracle发布了12C的版本,19C的版本也是12.2最后的一个版本,如果在12C版本中选择安装哪一个版本,建议直接安装19C的版本。12C的发布可以看见Oracle引入了很多开源产品类似的功能,如sharing。在12C的版本中,Data Guard没有引入太多本质的新功能,还是在之前的版本基础上讲Data Guard与12C的新功能整合,使报表业务在Data Guard环境运行变得更简单、更容易。

  • 12.1
  1. 增加sysdg组,专门用于Data Guard的管理。
  2. 实时级联备库(real-time cascade database)
  3. 引入far sync实例,专门用于中转日志。
  4. 最大可用模式下,支持LOG_ARCHIVE_DEST_n的SYNC和NOAFFIRM两个属性一起使用,减少在最大可用模式下,对主库的性能影响。
  5. 支持在备库端在线的移动数据文件,也支持在主库上在线移动数据文件,备库库不受任何的影响。
  6. GDS支持Data Guard平台。
  7. 在ADG模式下,支持对临时表的DML操作
  8. 在ADG模式下,支持序列的使用
  9. 在RAC下切换DG,不再需要关闭其它实例,只保留一个实例用于DG切换,可以使用新命令,ALTER DATABASE SWITCHOVER TO STANDBY;
  10. Oracle Data Guard切换到物理备用数据库时支持应用程序连续性。 它还支持在最大可用性数据保护模式下快速启动故障转移到物理备用数据库。
  • 12.2
  1. 多实例日志应用(Multi-Instance Redo Apply)
  2. Oracle Active Data Guard(ADG)环境中的备用数据库支持Oracle Database In-Memory列存储(IM列存储)
  3. Oracle Active Data Guard is integrated with Oracle Sharding
  4. 可以在RMAN DUPLICATE命令上使用新的FAR SYNC选项来创建Oracle Data Guard far sync实例
  5. Oracle Diagnostic Pack与Oracle Active Data Guard集成。
  6. 主库上完成的密码文件更改将自动传播到备用数据库。 唯一的例外是far sync实例
  7. 引入STANDBY_DB_PRESERVE_STATES参数,用于物理备用数据库转换为主数据库后,是否在切换/故障转移期间将所有会话保持与备用数据库的连接。
  8. 可以在Oracle Data Guard环境中对新表空间和现有表空间以及现有数据库进行加密和解密
  9. 引入DATA_GUARD_SYNC_LATENCY参数,能够定义在至少一个同步备用数据库确认已收到重做日志之后,主数据库在断开后续目标之前可能等待的最长时间(以秒为单位)。
  10. 可以使用新的PL/SQL过程检测丢失的写操作以及主数据库和物理备用数据库之间的不一致。
  11. 引入ENABLED_PDBS_ON_STANDBY参数,使能够指定PDB的子集,以便在CDB的物理备用数据库上进行复制。
  • 18c
  1. 备库多实例日志应用支持BCT文件,也支持In-Memory
  2. RMAN通过网络的方式刷新备库(RECOVER STANDBY DATABASE FROM SERVICE service_name)
  3. ADG环境中,支持全局临时表的创建
  4. VDATAGUARD_PROCESS替换 VMANAGED_STANDBY视图。
  5. 数据库nologging扩展了两种新模式:Standby Nologging for Load Performance and Standby Nologging for Data Availability.
  6. 在ADG环境中,支持本地临时表空间的使用。
  • 19C
  1. ADG环境中备库支持DML语句,会自动转到主库环境执行。
  2. ADG环境中,无效对象执行时会自动的编译。
  3. 备库在mount状态时,当主库使用闪回数据库时,备库会随着一起闪回。
  4. 主库闪回点的信息,自动同步到备库环境。

0 人点赞