Oracle 主库rac + 备库rac 11.2.0.4的DG环境部署

0    645    1

Tags:

👉 本文共约5287个字,系统预计阅读时间或需20分钟。

前言部分

导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:

① 主库为rac,备库为rac的物理dg的搭建(重点)

② dbca 静默方式创建rac数据库

③ 如何将数据库加入crsctl管理

④ rac库修改归档路径和归档模式

⑤ 如何添加standby日志

⑥ 简单物理dg的维护

本文简介

虽然之前已经多次安装过dg了,但都是基于单实例的,无论是物理还是逻辑的,感觉都非常轻松,没有碰到大的问题,但是最近同事安装dg老是碰到问题,尤其是在执行duplicate命令的时候报错,所以我想还是自己也搭建的试试吧,顺便也写写文档。

相关知识点扫盲

Physical Standby使用的是Media Recovery 技术,在数据块级别进行恢复,这种方式没有数据类型的限制,可以保证两个数据库完全一致。 Physical Standby数据库只能在Mount 状态下进行恢复,也可以是打开,但只能已只读方式打开,并且打开时不能执行恢复操作。Logical Standby使用的是Logminer 技术,通过把日志内容还原成SQL 语句,然后SQL引擎执行这些语句,Logminer Standby不支持所有数据类型,可以在视图DBA_LOGSTDBY_UNSUPPORTED 中查看不支持的数据类型,如果使用了这种数据类型,则不能保证数据库完全一致。LogicalStandby数据库可以在恢复的同时进行读写操作。

不少未实际接触过dg的初学者可能会下意识以为data guard是一个备份恢复的工具。我要说的是,这种形容不完全错,dg拥有备份的功能,某些情况下它甚至可以与primary数据库完全一模一样,但是它存在的目的并不仅仅是为了恢复数据,应该说它的存在是为了 确保企业数据的高可用性,数据保护以及灾难恢复 ( 注意这个字眼,灾难恢复) 。dg提供全面的服务包括:创建,维护,管理以及监控standby数据库,确保数据安全,管理员可以通过将一些操作转移到standby数据库执行的方式改善数据库性能 ,构建高可用的企业数据库应用环境。

在Data Gurad 环境中,至少有两个数据库,一个处于Open 状态对外提供服务,这个数据库叫作Primary Database。 第二个处于恢复状态,叫作Standby Database。 运行时primary Database 对外提供服务,用户在Primary Database 上进行操作,操作被记录在联机日志和归档日志中,这些日志通过网络传递给Standby Database。 这个日志会在Standby Database 上重演,从而实现Primary Database 和Standby Database 的数据同步。
Oracle Data Gurad 对这一过程进一步的优化设计,使得日志的传递,恢复工作更加自动化,智能化,并且提供一系列参数和命令简化了DBA工作。
如果是可预见因素需要关闭Primary Database,比如软硬件升级,可以把Standby Database 切换为Primary Database 继续对外服务,这样即减少了服务停止时间,并且数据不会丢失。如果异常原因导致Primary Database 不可用,也可以把Standby Database 强制切换为Primary Database继续对外服务,这时数据损失都和配置的数据保护级别有关系。因此Primary 和Standby 只是一个角色概念,并不固定在某个数据库中。

问题:RAC 和DG 有什么区别

RAC, Data Gurad, 高可用性体系中的二种工具,每个工具即可以独立应用,也可以相互配合。 他们各自的侧重点不同,适用场景也不同。

RAC 它的强项在于解决单点故障和负载均衡,因此RAC 方案常用于7*24 的核心系统,但RAC 方案中的数据只有一份,尽管可以通过RAID 等机制可以避免存储故障,但是数据本身是没有冗余的,容易形成单点故障。

Data Gurad 通过冗余数据来提供数据保护,Data Gurad 通过日志同步机制保证冗余数据和主数据之前的同步,这种同步可以是实时,延时,同步,异步多种形式。Data Gurad 常用于异地容灾和小企业的高可用性方案,虽然可以在Standby 机器上执行只读查询,从而分散Primary 数据库的性能压力,但是Data Gurad 决不是性能解决方案。

实验部分

创建物理备库的方法很多,对于Oracle 11g而言,可以直接从active database来创建,也可以基于10g 的RMAN备份方式来创建。

实验环境介绍

项目primary dbphysical standby db
db 类型racrac
db version11.2.0.4.011.2.0.4.0
db 存储ASMASM
主机IP地址/hosts配置22.188.194.31 LHRAXXTDB3
22.188.194.33 LHRAXXTDB3-vip
222.188.194.31 LHRAXXTDB3-priv
22.188.194.32 LHRAXXTDB4
22.188.194.34 LHRAXXTDB4-vip
222.188.194.32 LHRAXXTDB4-priv
22.188.194.35 LHRAXXTDB-scan
22.188.194.64 LHRAXXTDB1
22.188.194.65 LHRAXXTDB1-vip
222.188.194.64 LHRAXXTDB1-priv
22.188.194.66 LHRAXXTDB2
22.188.194.67 LHRAXXTDB2-vip
222.188.194.66 LHRAXXTDB2-priv
22.188.194.68 LHRAXXTDB-scan
OS版本及kernel版本AIX 64位 7.1.0.0AIX 64位 7.1.0.0
OS hostnameLHRAXXTDB3 LHRAXXTDB4LHRAXXTDB1 LHRAXXTDB2
platform_nameAIX-Based Systems (64-bit)AIX-Based Systems (64-bit)
db time zone1414
字符集ZHS16GBKZHS16GBK
compatible11.2.0.4.011.2.0.4.0
归档模式Archive ModeArchive Mode
ORACLE_SIDDGPRIDGPHY
db_name/GLOBAL_DBNAMETESTDGTESTDG
db_unique_nameTESTDGTESTDGPHY
TNS_NAMETNS_DGPRITNS_DGPHY
磁盘组+DATA+DATA
归档路径GPFS方式共享路径: /archGPFS方式共享路径: /arch
ORACLE_HOME/oracle/app/oracle/product/11.2.0/db/oracle/app/oracle/product/11.2.0/db
dbid28368867462836886746
注:标红的选项是必填,且需要特别关注的项目

该环境中我主要是为了区分dg中各种参数配置的是tnsnames、oracle_sid、dbname还是db_unique_name,所以设置的值不同,一般情况这4者可以设置成一样的,dg中db_unique_name、oracle_sid和tns可以设置成一样的。

主库操作

先创建主库

注意:sid不能含有下横线,如DG_PRI会报错:

The SID name can only contain alphanumeric characters.

静默方式创建一个rac主库:

主库前期准备

force logging + archivelog

  1. 创建一个用户lhr用于测试
  2. 修改主库为force logging模式
  3. 修改主库为归档模式

select INST_ID, dbid,name,DB_UNIQUE_NAME,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

为主库添加standby redo log

为主库添加standby redo log,简要描述一下standby redo log的作用

实际上就是与主库接收到的重做日志相对应,也就是说备库调用RFS进程将从主库接收到的重做日志按顺序写入到standby logfile

在主库创建standby logfile是便于发生角色转换后备用

sandby redo log创建原则:

a)、确保standby redo log的大小与主库online redo log的大小一致

b)、如主库为单实例数据库:standby redo log组数=主库日志组总数+1

c)、如果主库是RAC数据库:standby redo log组数=(每线程的日志组数+1)*最大线程数

d)、不建议复用standby redo log,避免增加额外的I/O以及延缓重做传输

修改主库参数文件

使用下面的命令修改主库参数(此时主库应当使用spfile启动参数)

LOG_ARCHIVE_CONFIG = 'DG_CONFIG ( db_unique_name, db_unique_name, ... )' 主库与备库端采用相同设置。
LOG_ARCHIVE_DEST_n ='SERVICE=。。。。。 SERIVCE: 用于指定备用数据库的TNSNAMES描述符
db_file_name_convert、 log_file_name_convert 参数值为路径,可以直接写db_unique_name, 如果使用ASM,可以设置为*.db_file_name_convert =('+DATA','+RECOVERY')

fal_server、 fal_client 参数值为TNSNAMES描述符

配置主库和备库的监听

为主库和备库配置监听,整个DG的redo传输服务,都依赖于Oracle Net,因此需要为主备库配置监听,且需要配置静态监听

配置方法多种多样,可用netmgr,netca,以及直接编辑listener.ora 与tnsnames.ora文件

下面是配置之后的listener.ora 与tnsnames.ora文件内容

more $ORACLE_HOME/network/admin/listener.ora

主库

在主库的第一个节点的监听文件中加入如下内容:

将上边所说的内容加入文件:/oracle/app/11.2.0/grid/network/admin/listener.ora ,然后重启监听器,lsnrctl stop , lsnrctl start,需要注意的是rac下是在grid用户下修改监听文件的。

备库

监听配置参考主库的操作:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复