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
之后生成的归档日志文件的路径值。
分享到:
相关推荐
全面的oracle10g datagard的创建方法指导手册
使用SQL*oader乘10racle Data Pump导入和导出数据 使用SQL重放、变更管理和缓存结果 使用闪回和自动撤消管理功能避免人为错误 构建和调整PL/SQL触发器、函数和程序包 使用Java、JDBC和XMIL开发数据库应用...
ORACLE 10G入门与实践 Part1~Part5 <br/>目录: 第1章 Oracle...备份与恢复实战 第8章 数据库安全管理 第9章 使用Oracle Data Guard创建备用数据库 第10章 典型的基于Oracle 10g的应用开发模型
ORACLE 10G入门与实践 Part1~Part5 <br/>目录: 第1章 Oracle...备份与恢复实战 第8章 数据库安全管理 第9章 使用Oracle Data Guard创建备用数据库 第10章 典型的基于Oracle 10g的应用开发模型
ORACLE 10G入门与实践 Part1~Part5 <br/>目录: 第1章 Oracle...备份与恢复实战 第8章 数据库安全管理 第9章 使用Oracle Data Guard创建备用数据库 第10章 典型的基于Oracle 10g的应用开发模型
ORACLE 10G入门与实践 Part1~Part5 <br/>目录: 第1章 Oracle...备份与恢复实战 第8章 数据库安全管理 第9章 使用Oracle Data Guard创建备用数据库 第10章 典型的基于Oracle 10g的应用开发模型
内容主要包括oracle10g概述、oracle企业管理器的介绍、oracle数据库的创建、常用oracle方案对象的操作、实例与oracle的启动关闭、oracle网络服务、备份与恢复实战、数据库安全管理、使用oracle data guard创建备用...
2 Oracle Data Guard远程容灾技术 1 Oracle Data Guard简介 Data Guard是Oracle公司提出的数据库容灾技术,它提供了一种管理、监测和自动运行的体系 结构,用于创建和维护一个或多个备份数据库。与远程磁盘镜像技术...
16 ADG Oracle 11g:ORACLE ACTIVE DATA GUARD 17 ADG Oracle 11gR2 使用copy 数据文件搭建物理 Data Guard 18 ADG Oracle 11gR2-Data Guard 单机到集群 19 ADG Oracle 11gR2-Data Guard 单机到集群 20 ADG ...
5.7 如何创建存储过程以及创建存储过程的原因 146 5.8 函数的创建和使用 149 5.9 调用PL/SQL程序 151 5.10 本章测验 152 第6章 数据库管理员 153 6.1 了解DBA的工作 154 6.2 执行日常操作 154 6.2.1 体系结构...
11.3.5修改Data Guard保护模式 11.4逻辑Standby数据库 11.4.1创建逻辑Standby数据库的前提条件 11.4.2补充日志及日志记录规则 11.4.3验证主数据库唯一标识 11.4.4创建逻辑Standby数据库 11.4.5管理日志应用...
Data Guard 实时查询物理备用数据库,而无需停止恢复操作(针对初学者)。 PL/SQL 性能 探究代码内联、“真正的”原生编译、PLS 计时器、简单整数的使用等内容。 数据仓库和 OLAP 浏览这些领域的新特性,包括按...
6.2.5 Data Guard有关的参数 45 6.2.5.1 DB_UNIQUE_NAME 45 6.2.5.2 LOG_ARCHIVE_CONFIG 45 6.2.5.3 LOG_ARCHIVE_DEST_1 45 6.2.5.4 LOG_ARCHIVE_DEST_2 46 6.2.5.5 LOG_ARCHIVE_DEST_STATE_1 46 6.2.5.6 LOG_...