Oracle Active Data Guard(ADG)是Oracle数据库高可用性和灾备方案之一,可以在主数据库中创建一个兄弟监护者拷贝,可以远程保持与主数据库同步的数据,并且可以实现快速切换机制,确保数据的高可用性。它使数据库管理员能够优化资源利用率,提供实时数据保护和快速故障转移方案,使数据库的持久性和可用性得到了很大的提高。
Oracle ADG可以应用于各种情况,例如地理位置分散的数据中心,以及需要分布式计算的异构环境。通过ADG配置,我们可以实现跨地理位置复制数据库,同时可以提高读写性能,提供应用程序的负载均衡。我们来看一个例子:
SQL>CREATE DATABASE LINK p1.example.com CONNECT TO SYSTEM IDENTIFIED BY oracle USING 'p1.example.com';
SQL>CREATE DATABASE LINK p2.example.com CONNECT TO SYSTEM IDENTIFIED BY oracle USING 'p2.example.com';
SQL>CREATE DATABASE LINK p3.example.com CONNECT TO SYSTEM IDENTIFIED BY oracle USING 'p3.example.com';
SQL>CREATE DATABASE LINK p4.example.com CONNECT TO SYSTEM IDENTIFIED BY oracle USING 'p4.example.com';
设想我们有一个名为“db.example.com”的主数据库,我们还有四个拓扑独立的Oracle实例,它们分别位于“p1.example.com”、“p2.example.com”、“p3.example.com”、“p4.example.com”等主机上。如果需要在这些实例之间传输数据,则需要创建多个数据库链接。通过ADG的支持,我们可以在节点“db.example.com”上增加一个附属节点以创建一个同步的备份实例。仅仅需要一些时间,就可以立即完成这样的设置操作。
自Oracle 18c以来,Oracle支持了一项新特性,即数据库配置可灵活扩展地支持ADG数据库。在这个新版本中,你可以运行一个仅用于读取的实例,也可以在多个远程部署区域之间进行数据复制。这包括在不同云供应商和企业服务器之间的异构环境部署,因为Oracle无需绑定于任何特定的平台。
在使用Oracle ADG时,我们需要考虑以下两个方面:
- 附属节点数据保持与主节点同步,并能自动切换
- 在切换过程中,不会造成数据损失或错误
为了再次强调这一点,我们可以通过以下的图中来诠释:
+-------+ +-------+
| DB1 | | DB2 |
+-------+ +-------+
^ |
| |
| |
+-------------+ | +--------------+ +-------------+
| Standby DB
在上面的图中,我们有一个名为“Active DB”的主数据库,这个数据库是一个活动数据库,我们还有一个名为“Standby DB”的备份数据库,它是一个跟主数据库同步的实例,它是备份数据库。同时,我们有第二个“Active DB”数据库,这是另一个跟主实例同步的实例,而它还充当了附属实例的角色。
在这种情况下,如果“Active DB”实例所在的云发生故障,我们需要切换到“Standby DB”数据库或其他任何附属实例。这时,我们只需要将“Standby DB”设置为主要实例,重新配置它的同步关系并开始新的复制。在这之后,我们的主要事务就可以继续处理。如果主机恢复正常,我们可以将其重新配置为兄弟式复制。
在整个ADG过程中,我们可以使用如下命令来启动或停止数据库实例:
[oracle@db ~]$ srvctl start database -d oradb
手动切换数据库实例:
SQL>recover managed standby database cancel;
SQL>alter database recover managed standby database finish;
Oracle Active Data Guard对Oracle数据库的备份与恢复加载的方法是非常有帮助的。Oracle ADG不仅可以提供备份数据库,同时也可以为企业提供大规模的事务支持,可以继续进行长期的容错测试,并减轻I/O负载,增加用户交互和应用程序性能。