博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle Data Guard Feature 12cR2系列(一)
阅读量:2448 次
发布时间:2019-05-10

本文共 7417 字,大约阅读时间需要 24 分钟。

   Data Guard是Oracle推出的一种高可用性数据库方案,从Oracle 9i开始正式更名为Oracle Data Guard。 
  Data Guard在11g中引入Active Data Guard,12c又赋予了新的功能,如: Far Sync Instance等。
  本文将分为系列文章,介绍12cR2中Data Guard与我们最为息息相关的新特性。

| Far Sync Instance

Far Sync Instance,实际上是一个级联备库,该特性似乎为两地三中心设计提供的解决方案。使用该特性可以解决远距离传输的延迟时间,同时也增加了主备容灾的距离,可进一步实现数据零丢失的同时,又可以减少主库的压力。以下是官方提供的示意图:

从上述图中可以看出,实际上Far Sync实例数据库是一个级联备用数据库,它充当终端数据库的日志存储库,可以理解为日志中转站。这个实例非常特殊,仅仅只有参数文件,控制文件和密码文件,以及备用日志文件。它不包含任何数据文件,因此无法打开,无法运行日志应用,也无法转换为任何类型的备库。并且只有日志传输服务在远程同步备用数据库上处于活动状态。

远程同步实例的优势在于:它可以是主数据库的本地Archive Log存储库,以最高可用性模式运行,其中物理或逻辑备用数据库可以位于远端站点上。由于它和主库距离较近,同主库端采取同步传输,网络延时很小,而用异步将日志分发到终端备库,因此对主库性能影响很小。

当发生角色转换,例如:switchover/failover时,对Far Sync实例是透明的,即角色转换和12c之前的版本是相同的。

考虑到整个架构的高可用性,Far Sync实例也可以配置多个,以防止Far Sync实例造成地单点故障。如上图,配置两个Far Sync实例以防止引起单点故障。同时在配置多个Far Sync实例时,可以使用Enhanced Alternate Destination的新特性。对FS1,FS2配置Alternate Destinations,并将FS1设置高优先级,FS2设置为相对较低的优先级,当FS1出现故障时,主库会自动将归档日志传输到FS2。而在切换过程中对下级的任意备库,都是完全透明的,实现了Far Sync实例的高可用性。

|  Enhancing Support for Alternate Destinations

在Oracle 9.2中日志传输备用目标的概念被引入,当初始目标不再可用时,作为单一故障切换的备用目标。在Oracle Database 12cR1(12.1)中,增强了这一功能可以使用一个首选目标,第二个作为备用目标,并且在初始目标再次可用时具有自动重新配置和简单故障恢复功能。但是不支持新的Oracle Active Data Guard远程同步实例和实时级联功能。

该功能提供了更大的灵活性来定义优先级的规则,并提供了许多用于定义失败状态策略的选项。无论使用何种配置,目的是都为了满足各种数据保护和高可用性目标。

从12.2.0.1开始通过设置LOG_ARCHIVE_DEST_n参数中的GROUP和PRIORITY属性来完成。

示例:

点击(此处)折叠或打开

  1. LOG_ARCHIVE_DEST_2=’SERVICE=chicagoFS SYNC
  2. VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=1’
  3. LOG_ARCHIVE_DEST_STATE_2=ENABLE
  4. LOG_ARCHIVE_DEST_3=’SERVICE=chicagoFS1 SYNC
  5. VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=1’
  6. LOG_ARCHIVE_DEST_STATE_3=ALTERNATE
  7. LOG_ARCHIVE_DEST_4=’SERVICE=chicagoFS2 ASYNC
  8. VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=2’
  9. LOG_ARCHIVE_DEST_STATE_4=ALTERNATE

以上配置会产生以下结果:

1. 日志将优先传输到远程同步实例chicagoFS;

2. 如果chicagoFS不可用时,将使用chicagoFS1;

3. 如果chicagoFS恢复后,由于优先级相同chicagoFS将成为备用目标;

4. 如果chicagoFS和chicagoFS1都不可用时,将使用chicagoFS2(此示例中将会异步传输到chicagoFS2);

5. 如果chicagoFS和chicagoFS1恢复后,主库日志传输会恢复到可用的首选目标

| Automatically Synchronize Password Files in Oracle Data Guard Configurations

在12cR2中,当主库密码文件(包含SYS,SYSDG等)发生修改后,会自动同步到Oracle Data Guard配置。这个功能很够温暖了吧。

此功能提供了解决了该版本前,当主库密码文件发生改变后,需要手动同步到备库,才能将日志继续同步到备库,进一步简化了Oracle Data Guard配置的管理和维护成本。这个特性使所有的DBA都为之兴奋,从此再也不会为了因为主库密码发生改变没有同时更新到备库,导致主备库无法同步,甚至可能面临重新搭建备库。我想大家对上一次处理过因主库SYS密码改变导致重新搭建备库的经历还记忆犹新吧。

注:1.当有Far Sync实例时,仍需手动将修改后的密码文件同步到远程同步实例,一旦远程同步实例更新后,会自动同步到所有的物理备库。

 2. 当然也可以在Oracle 11g的版本设置redo_transport_user参数来实现同样的功能。

在了解了上述3个特性外,接下来咱们部署一套高可用的容灾环境:一主一备二个Far Sync实例,要求Far Sync实例实现高可用性。创建和配置Far Sync实例非常轻松,过程如此简单,和传统搭建备库完全一样。因此我将介绍配置Far Sync实例的所有步骤:

1. 创建控制文件。

点击(此处)折叠或打开

  1. SQL> ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/tmp/ctrlfsync01.ctl';
  2. Database altered.
  3. SQL>
  2. 从SPFILE创建PFILE,并修改相应的参数。

点击(此处)折叠或打开

  1. SQL> CREATE PFILE='/tmp/initfsync.ora' FROM SPFILE;
  2. File created.
  3. SQL>
   主库orcl部分参数:

点击(此处)折叠或打开

  1. DB_UNIQUE_NAME=orcl
  2. LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,fsync,fsync2)'
  3. LOG_ARCHIVE_DEST_2='SERVICE=fsync SYNC AFFIRM
  4. VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fsync GROUP=1 PRIORITY=1’
  5. LOG_ARCHIVE_DEST_STATE_2=ENABLE
  6. LOG_ARCHIVE_DEST_3='SERVICE=fsync2 SYNC AFFIRM
  7. VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fsync2 GROUP=1 PRIORITY=2’
  8. LOG_ARCHIVE_DEST_STATE_3=ALTERNATE
   Far Sync实例fsync:

点击(此处)折叠或打开

  1. DB_UNIQUE_NAME=fsync
  2. CONTROL_FILES='/oradata/fsync/control01.ctl'
  3. DB_FILE_NAME_CONVERT='+data','/oradata/fsync'
  4. LOG_FILE_NAME_CONVERT='+data','/oradata/fsync'
  5. FAL_SERVER=orcl
  6. LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,fsync,fsync2)'
  7. LOG_ARCHIVE_DEST_1='LOCATION=/oradata/arch/fsync
  8. VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=fsync'
   Far Sync实例fsync2:

点击(此处)折叠或打开

  1. DB_UNIQUE_NAME=fsync2
  2. CONTROL_FILES='/oradata/fsync2/control01.ctl'
  3. DB_FILE_NAME_CONVERT='+data','/oradata/fsync2'
  4. LOG_FILE_NAME_CONVERT='+data','/oradata/fsync2'
  5. FAL_SERVER=orcl
  6. LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,fsync,fsync2)'
  7. LOG_ARCHIVE_DEST_1='LOCATION=/oradata/arch/fsync2
  8. VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=fsync2'
   3. 生成SPFILE。

点击(此处)折叠或打开

  1. SQL>CREATE SPFILE='/u01/app/oracle/products/12.2.0/db_1/dbs/spfilefsync.ora' FROM PFILE='/tmp/initfsync.ora' ;
  2. File created.
  3. SQL>

4. 拷贝步骤1和步骤3生成的文件到Far Sync实例fsync和fsync2。

5. 拷贝密码文件的Far Sync实例fsync和fsync2。

6. 在Far Sync实例上配置监听。

点击(此处)折叠或打开

  1. SID_LIST_LISTENER =
  2. (SID_LIST =
  3. (SID_DESC =
  4.   (GLOBAL_DBNAME = fsync)
  5.   (ORACLE_HOME =/u01/app/oracle/products/12.2.0/db_1)
  6.   (SID_NAME = fsync)
  7. )
  8. (SID_DESC =
  9.   (GLOBAL_DBNAME = fsync2)
  10.   (ORACLE_HOME =/u01/app/oracle/products/12.2.0/db_1)
  11.   (SID_NAME = fsync2)
  12. )
  13. )

7. 主库创建网络服务名到Far Sync实例fsync和fsync2。

主库网络服务名:orcl;Far Sync:fsync,fsync2

点击(此处)折叠或打开

  1. ORCL =
  2. (DESCRIPTION =
  3. (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.70.124)(PORT = 1521))
  4. (CONNECT_DATA =
  5.   (SERVER = DEDICATED)
  6.   (SERVICE_NAME = orcl)
  7. )
  8. )
  9. fsync=
  10. (DESCRIPTION =
  11. (ADDRESS = (PROTOCOL = TCP)(HOST =10.10.70.120)(PORT = 1521))
  12. (CONNECT_DATA =
  13.   (SERVER = DEDICATED)
  14.   (SERVICE_NAME = fsync)
  15. )
  16. )
  17. fsync2=
  18. (DESCRIPTION =
  19. (ADDRESS = (PROTOCOL = TCP)(HOST =10.10.70.122)(PORT = 1521))
  20. (CONNECT_DATA =
  21.   (SERVER = DEDICATED)
  22.   (SERVICE_NAME = fsync2)
  23. )
  24. )
    8. 启动Far Sync实例fsync和fsync2到mount状态。

点击(此处)折叠或打开

  1. SQL> startup mount
  2. ORACLE instance started.
  3. Total System Global Area 536870912 bytes
  4. Fixed Size 8622776 bytes
  5. Variable Size 218107208 bytes
  6. Database Buffers 301989888 bytes
  7. Redo Buffers 8151040 bytes
  8. Database mounted.
  9. SQL>
    9. 创建Far Sync实例备用日志文件。

点击(此处)折叠或打开

  1. SQL> alter database add standby logfile '/oradata/fsync/standby01.log' size 50M;
  2. Database altered.
  3. SQL> alter database add standby logfile '/oradata/fsync/standby02.log' size 50M;
  4. Database altered.
  5. SQL> alter database add standby logfile '/oradata/fsync/standby03.log' size 50M;
  6. Database altered.
  7. SQL> alter database add standby logfile '/oradata/fsync/standby04.log' size 50M;
  8. SQL>
  
10. 验证Far Sync实例fsync和fsync2。

点击(此处)折叠或打开

  1. SQL> SELECT * FROM V$DATAGUARD_CONFIG;
  2. DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID
  3. ------------- ------------ ----------------- ------------- -----
  4. orcl NONE PRIMARY DATABASE 4306114 0
  5. fsync orcl FAR SYNC INSTANCE 0 0
  6. fsync2 UNKNOWN UNKNOWN 0 0
  7. 当前主库将归档日志传输到fsync中。
  8. [oracle@node1 fsync]$ ls -l
  9. -rw-r----- 1 oracle asmadmin 37376 Apr 12 23:21 2_27_964813855.dbf
  10. -rw-r----- 1 oracle asmadmin 67072 Apr 12 23:23 2_28_964813855.dbf
  11. -rw-r----- 1 oracle asmadmin 2409984 Apr 12 23:24 2_29_964813855.dbf
  12. -rw-r----- 1 oracle asmadmin 56320 Apr 12 23:25 2_30_964813855.dbf
  13. -rw-r
   
11. 主库开启最大可用模式。

点击(此处)折叠或打开

  1. SQL> ALTER DATABASE SET STANDBY TO MAXIMIZE AVAILABILITY;
  2. Database altered.
  3. Elapsed: 00:00:00.00
  4. SQL> SELECT NAME,DATABASE_ROLE,PROTECTION_MODE FROM V$DATABASE;
  5. NAME DATABASE_ROLE PROTECTION_MODE
  6. ----- -------------- -------------------------
  7. ORCL PRIMARY MAXIMUM AVAILABILITY
    12. 模拟Far Sync实例fsync故障,验证Far Sync实例高可用。

点击(此处)折叠或打开

  1. 将Far Sync实例fsync关闭
  2. SQL> shut abort
  3. ORACLE instance shut down.
  4. 查看主库当前日志传输:
  5. SQL> SELECT * FROM V$DATAGUARD_CONFIG;
  6. DB_UNIQUE_ PARENT_D DEST_ROLE CURRENT_SCN CON_ID
  7. ---------- -------- ----------------- ----------- ----------
  8. orcl NONE PRIMARY DATABASE 5089347 0
  9. fsync2 orcl FAR SYNC INSTANCE 0 0
  10. fsync UNKNOWN UNKNOWN 0 0
  11. SQL> select dest_id,status,error from v$archive_dest;
  12. DEST_ID STATUS ERROR
  13. ---------- -------- -------------------------------------------
  14.  1 VALID
  15.  2 ALTERNATE
  16.  3 VALID
  17. 主库将日志传输自动切换到fsync2上。
    至此整个高可用的Far Sync实例搭建完成。

| 作者简介

杨波,沃趣科技数据库技术专家

主要参与公司产品实施、测试、维护以及优化。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28218939/viewspace-2155109/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28218939/viewspace-2155109/

你可能感兴趣的文章
加密货币钱包提供商_每日新闻摘要:一位加密货币钱包开发者为了保护用户而黑客攻击
查看>>
chromebook刷机_每日新闻摘要:Google终止了将Windows引入Chromebook的项目
查看>>
vue alexa:_免费下载:在任何PC上使用Alexa免提
查看>>
2019新闻列表_每日新闻摘要:Google I / O 2019的期望
查看>>
如何修复破坏大照片的Undertow
查看>>
电子书pdf文件网站_如何转换PDF文件以便于阅读电子书
查看>>
如何在PowerPoint中水平翻转图片
查看>>
如何从Excel列表中的Word中创建邮件标签
查看>>
如何在Linux启动时轻松挂载分区
查看>>
outlook 加载配置项_如何禁用Outlook加载项进行故障排除
查看>>
如何导出或删除Outlook.com搜索历史记录
查看>>
dd-wrt固件_如何使用DD-WRT优先安排网络流量
查看>>
如何将您的计算机变成带有病态胡须的增压TiVo
查看>>
如何在Facebook Messenger中启用暗模式
查看>>
如何远程锁定或擦除iOS 5设备
查看>>
如何重命名您的AirPods
查看>>
powerpoint预览_如何添加,删除和重新排列PowerPoint幻灯片
查看>>
在Windows 7下最大限度地发挥多显示器的魔力
查看>>
如何使Ubuntu中的Gnome面板完全透明
查看>>
电子修补程序入门:购物清单
查看>>