欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Data Guard 10g 创建过程总结

程序员文章站 2022-05-08 08:06:57
...

1.    架构

Oracle 10g 中,传输日志到备用节点数据库的进程为ARCH LGWR 。(在11g 中,LGWR LNS 替代,但10g 中是不是LGWR 我不确定!)

( 墙内: xxtp://mikixiyou.iteye.com/blog/1489087 )

在备用节点上通过参数log_archive_config fal_client fal_server 接收日志,并和主节点通讯,标识该日志是否被应用。

Data Guard 采用最大可用模式,保证数据实时同步到最少一个节点上。因为我们选择第一个备用节点作为数据实时同步点,同步进程采用LGWR 进程。

2.    配置

在一个主节点两个备用节点的Data Guard 10g 的环境中,各个节点的初始化参数的主要配置项。

在主节点的初始化参数文件配置:

*.log_archive_config='dg_config=(codb,codg,codg2)'
*.log_archive_dest_1='location=/oradata/xxcodb/archive_logs_codb'
*.log_archive_dest_2='service=codb_standby lgwr sync affirm  valid_for=(online_logfiles,primary_role) db_unique_name=codg'
*.log_archive_dest_3='service=codb_standby2 arch async affirm  valid_for=(online_logfiles,primary_role) db_unique_name=codg2'
*.log_archive_dest_state_2='enable'
*.log_archive_dest_state_3='enable'

在备用节点一的初始化参数文件配置:

*.db_name='codb'
*.db_unique_name='codg'
*.fal_client='code_standby'
*.fal_server='codb_primary'
*.log_archive_config='dg_config=(codb,codg,codg2)'
*.log_archive_dest_1='location=/oradata/archivelog/ valid_for=(all_logfiles,all_roles) db_unique_name=codg'
*.log_archive_format='%t_%s_%r.dbf'

在备用节点二的初始化参数文件配置:

*.db_name='codb'
*.db_unique_name='codg2'
*.fal_client='codb_standby'
*.fal_server='codb_primary'
*.log_archive_config='dg_config=(codb,codg2)'
*.log_archive_dest_1='location=/u01/archivelog_standby/ valid_for=(all_logfiles,all_roles) db_unique_name=codg2'
*.log_archive_format='%t_%s_%r.dbf'

主节点和备用节点之间的通讯是通过Oracle Net 实现的。在参数fal_client fal_server 上就用到Oracle Net 中的配置信息。

在主节点的tnsnames.ora 文件中,关于DG 的配置项如下所示:

CODB_PRIMARY =
 (DESCRIPTION =
   ( ADDRESS = (PROTOCOL = TCP)(HOST = codb1-vip.xxsc.com.cn)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = codb2-vip.xxsc.com.cn)(PORT = 1521))
  (LOAD_BALANCE = yes)
  (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = codb)
  )
 )-

CODB_STANDBY =
 (DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.219)(PORT = 1521))
  )
  (CONNECT_DATA =
    (SID = codb)
  )
 )

CODB_STANDBY2 =
 (DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.90)(PORT = 1521))
  )
  (CONNECT_DATA =
    (SID = codb)
  )
 )

在备用节点一的tnsnames.ora 文件中,关于DG 的配置项如下所示:

CODB_PRIMARY =
 (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = codb1-vip.xxsc.com.cn)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = codb2-vip.xxsc.com.cn)(PORT = 1521))
  (LOAD_BALANCE = yes)
  (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = codb)
  )
 )

CODB_STANDBY =
 (DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.219)(PORT = 1521))
  )
  (CONNECT_DATA =
    (SERVICE_NAME = codb)
  )
 )

 

在备用节点二的tnsnames.ora 文件中,关于DG 的配置项如下所示:

CODB_PRIMARY =
 (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = codb1-vip.xxsc.com.cn)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = codb2-vip.xxsc.com.cn)(PORT = 1521))
  (LOAD_BALANCE = yes)
  (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = codb)
  )
 )

CODB_STANDBY =
 (DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.90)(PORT = 1521))
  )
  (CONNECT_DATA =
    (SERVICE_NAME = codb)
  )
 )

3.    总结

日志传输

在主节点上,使用RMAN 备份删除归档日志文件时,会提示不能删除归档日志文件。提示信息类似于“RMAN-08137: WARNING: archive log not deleted as it is still needed”

这个提示信息意味着归档日志文件在DG 环境中的备用节点上还需要使用,可能需要再次传输到备用节点,也可能是备用节点应用了没有给主节点说明其已经被应用了,从而导致主节点必须保存这个归档日志文件。

当然,我们也可以从OS 级别强制删除掉这些文件。但这样操作的结果,有可能导致DG 同步机制被破坏掉。

因此,我们先从主节点上检查哪些归档日志文件没有被应用。查找的方式如下:

SQL> select max (SEQUENCE#),DEST_ID,APPLIED  from v$archived_log group by DEST_ID,APPLIED ;

MAX(SEQUENCE#)   DEST_ID APP
-------------- ---------- ---
       61669         1 NO
       61665         3 NO
       61669         3 NO
       61667         2 NO
       61669         2 YES

SQL>

根据结果,我们发现log_archive_dest_3 通过到节点二的归档日志文件有问题。

检 查节点二上的参数配置,发现错误是参数log_archive_config 配置错了。正确的配置应该 是*.log_archive_config='dg_config=(codb,codg2)' ,但这 里*.log_archive_config='dg_config=(codbi,codg2)' ,导致了备用节点无法将通过fal_server 判断 主节点信息。

从这个错误中,我们可以分析出这样的结论。

在主节点上通过参数log_archive_dest_2 配置的传输方式将日志文件同步到备用节点的。

传 输方式为“service=codb_standby lgwr sync affirm  valid_for=(online_logfiles,primary_role) db_unique_name=codg“ 。这里使用的db_unique_name 的值是备用节点中该参数的值。

使用LGWR 传输时,这个参数值一定不能错,否则会导致主节点LGWR 不能工作,从而导致数据库宕机。

在备用节点上通过参数fal_client fal_server 和主节点通讯日志是否接受到,是否应用了。

备用节点通过参数log_archive_dest_1 的值将主节点传输过来的归档日志文件存储到指定位置。对于物理灾备节点,只需要配置一个该类型的参数就可以。而对于逻辑灾备 节点,还需要配置一个用于保存 apply 之后生成的归档日志文件的路径值。

 

相关标签: oracle data guard