暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

【DG】DataGuard搭建-11gR2单主单备

原创 甚至熊熊 2021-04-12
2426

整理一份DG的搭建流程,参考了一些教程及文档,环境是Oracle 11gR2 1+1。DG计划整理三篇:搭建、概念、维护。

一、环境规划

主库 Primary 备库 Standby
操作系统 CentOS Linux release 7.7.1908 (Core) CentOS Linux release 7.7.1908 (Core)
数据库版本 11.2.0.4 11.2.0.4
IP 192.168.10.131 192.168.10.151
db_name pxk2 pxk2
instance_name pxk2 sbdb
db_unique_name pxk2 sbdb
tnsname tnspxk2 tnssbdb
服务名 pxk2 pxk2
提前准备 安装数据库软件、DBCA建库、监听 安装数据库软件

说明

  • 主库和备库建议采用相同服务器配置
  • 主库和备库建议采用相同OS版本
  • 主库和备库需要采用相同数据库版本(含PSU)
  • db_name相同
  • db_unique_name不同
  • db_instance不同

二、主库参数配置

1.启用force logging(强制记录日志)

--查看 select log_mode,force_logging from v$Database; --启用 alter database force logging;

2.启用归档

--查看 archive log list; select log_mode from v$database; --启用 shutdown immediate startup mount alter database archivelog; alter database open;

3.配置主库监听和TNS

监听

--监听文件默认路径$ORACLE_HOME/network/admin/listener.ora --配置静态监听,增加SID_LIST_LISTENER部分,然后lsnrctl reload --LISTENER是默认监听名称,静态监听配置SID_LIST_LISTENER与其对应 LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.131)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = pxk2) --GLOBAL_DBNAME对应监听里的服务名 (SID_NAME = pxk2) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) ) )

配置完成
状态为UNKONWN代表静态监听
image.png

TNS

--TNS文件默认路径$ORACLE_HOME/network/admin/tnsnames.ora --方便主备切换服务名设置相同,配置如下: tnspxk2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.131)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pxk2) ) ) tnssbdb = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.151)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pxk2) ) )

4.配置主库参数

--1.修改归档文件名后缀为.arc(可选) alter system set log_archive_format='%t_%s_%r.arc' scope=spfile; --2.检查db_unique_name show parameter db_unique_name alter system set db_unique_name='pxk2' scope=spfile; --3.修改log_archive_config参数,括号中为主备库的db_unique_name alter system set log_archive_config='DG_CONFIG=(pxk2,sbdb)' scope=both; --4.配置log_archive_dest_1,主库归档位置 alter system set log_archive_dest_1='LOCATION=/oradata/archivelog/pxk2 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pxk2' scope=both; --5.配置log_archive_dest_2,备库归档参数,采用LGWR异步传输方式 alter system set log_archive_dest_2='SERVICE=tnssbdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sbdb' scope=both; --6.修改归档日志进程的最大数量(可选) alter system set log_archive_max_processes=30 scope=both; show parameter log_archive_max_processes; --7.检查数据库口令文件的使用模式 show parameter remote_login_passwordfile alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile; --8.修改/etc/hosts文件,追加主备库IP与主机名对应关系,备库同样配置 --如果 tns文件里的HOST直接配置的是IP则,可以不用维护hosts文件 echo "192.168.10.131 pxk" >> /etc/hosts echo "192.168.10.151 pxk2sd >> /etc/hosts --9.修改db_file_name_convert参数,主备库数据文件名称跟路径对应对应关系 --主库跟备库存放文件的路径不一定一样,如果一样的话可以不指定,但是不一样就需要指定,一般来说主库跟备库的实例名是不一样的,所以肯定是需要设置该参数 --前面路径是备库数据文件路径,后面是主库路径 alter system set db_file_name_convert='/oracle/app/oracle/oradata/sbdb','/oradata/datafile/pxk2/' scope=spfile; --10.修改log_file_name_convert参数,主备库日志文件名称跟路径对应对应关系 alter system set log_file_name_convert='/oracle/app/oracle/oradata/sbdb','/oradata/datafile/pxk2/' scope=spfile; --11.设置standby_file_management为auto --设置文件管理模式,此项设置为自动,不然在主库创建数据文件后,备库不会自动创建 --有教程要求先保持manual,增加完standby redolog后再改为auto alter system set standby_file_management=auto; --12.修改fal_client及fal_server alter system set fal_client='tnspxk2' scope=both; --本地tns alter system set fal_server='tnssbdb' scope=both; --备库tns

部分参数修改没有添加说明,放到概念篇

三、备库参数配置

1.密码文件,主库和备库的SYS密码必须一致

--方式1:使用 orapwd 设置相同密码 orapwd file=orapwsbdb password= --方式2:scp主库密码文件到备库$ORACLE_HOME/dbs目录下,并修改密码文件名为orapwsbdb

2.设置pfile文件并启动到nomount状态

在dbs目录下创建initsbdb.ora并参考主库添加参数

db_name='pxk2' db_unique_name='sbdb' pga_aggregate_target=191889408 --设置跟主库一样 sga_target=575668224 --设置跟主库一样 audit_file_dest='/u01/app/oracle/admin/sbdb/adump' --创建这个路径 compatible='11.2.0.4.0' --兼容性参数 主备库要保持一致 log_archive_format='%t_%s_%r.arc' control_files='/u01/app/oracle/oradata/sbdb/control01.ctl','/u01/app/oracle/oradata/sbdb/control02.ctl' --注意修改文件路径中的实例名 log_archive_config='DG_CONFIG=(pxk2,sbdb)' log_archive_dest_1='LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sbdb' log_archive_dest_2='SERVICE=tnspxk2 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pxk2' db_file_name_convert='/oradata/datafile/pxk2/','/oracle/app/oracle/oradata/sbdb' --前面是对方的,后面是本地的 log_file_name_convert='/oradata/datafile/pxk2/','/oracle/app/oracle/oradata/sbdb' fal_client='tnssbdb' --该参数与主库设置相反 fal_server='tnspxk2' --该参数与主库设置相反 standby_file_management='AUTO'

用刚才编辑的pfile 创建spfile

startup nomount pfile='/oracle/app/oracle/product/11.2.0/db_1/dbs/initsbdb.ora'; create spfile from pfile; --关闭数据库正常启动到nomount状态 --查看是否使用spfile启动 show parameter spfile

3.备库配置监听与TNS

监听

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.151)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = pxk2) (SID_NAME = sbdb) (ORACLE_HOME = /oracle/app/oracle/product/11.2.0/db_1) ) ) ADR_BASE_LISTENER = /u01/app/oracle DIAG_ADR_ENABLED_LISTENER = OFF

TNS:

tnspxk2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.131)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pxk2) ) ) tnssbdb = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.151)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pxk2) ) )

3.修改/etc/hosts(见主库配置)

4.测试TNS

主库和备库分别测试:
tnsping tnsprod
tnsping tnssbdb

sqlplus sys/oracle@tnspxk2 as sysdba
sqlplus sys/oracle@tnssbdb as sysdba

注意
如果出现TNS-12543错误,关闭防火墙再试
如果tnsping出现 ORA-12541 错误,检查一下hosts文件里面是否配置正常,备库也要配置好

四、使用Duplicate创建物理standby

备库执行

--连接RMAN并连接辅助(auxiliary )实例,备库目前是nomount状态 rman target sys/oracle@tnspxk2 auxiliary sys/oracle@tnssbdb --执行复制 --nofilenamecheck不进行文件名检查(如果复制数据库时,备库的路径和原库一致,就需要加 nofilenamecheck,否则会报错。) duplicate target database for standby from active database nofilenamecheck;

注意

  1. 第一次duplicate时遇到ORA-17628错误,排查后发现为需要提前创建的文件夹没有创建
    参考http://blog.chinaunix.net/uid-20809130-id-5745814.html
  2. 之前设置过db_file_name_convert跟log_file_name_convert,这里就会按照设置的地址拷贝

五、添加Standby日志组并开启同步

1.主备库添加Standby 日志组

  • standby日志组数量:redo日志组数量+1
  • 添加前需要查看已有的日志组号
  • standby日志大小与普通日志相同大小即可
  • 为日后主备切换做准备,所以主库上也添加Standby日志
select * from v$log;

主库添加:

alter database add standby logfile group 5 ('/oradata/datafile/pxk2/stredo05.log') size 200M; alter database add standby logfile group 6 ('/oradata/datafile/pxk2/stredo06.log') size 200M; alter database add standby logfile group 7 ('/oradata/datafile/pxk2/stredo07.log') size 200M; alter database add standby logfile group 8 ('/oradata/datafile/pxk2/stredo08.log') size 200M;

备库添加:

alter database add standby logfile group 5 ('/oracle/app/oracle/oradata/sbdb/stredo05.log') size 200M; alter database add standby logfile group 6 ('/oracle/app/oracle/oradata/sbdb/stredo06.log') size 200M; alter database add standby logfile group 7 ('/oracle/app/oracle/oradata/sbdb/stredo07.log') size 200M; alter database add standby logfile group 8 ('/oracle/app/oracle/oradata/sbdb/stredo08.log') size 200M;

查看standby日志:

select * from v$standby_log;

打开备库:

alter database open;

2.设置同步

--1.开启实时同步(启动MRP进程),备库操作 alter database recover managed standby database using current logfile disconnect from session; alter database recover managed standby database using current logfile disconnect; --简写

日志记录:

image.png

--2.开启同步,日志切换才会同步 alter database recover managed standby database disconnect from session;

日志记录:

image.png

--3.停止同步(关闭MRP进程) alter database recover managed standby database cancel;

日志记录:

image.png

3.主备库检查模式

select open_mode,database_role,protection_mode,protection_level from v$database;

备库显示:
image.png
open_mode:备库标识为read only with apply ,表示应用了日志,如果关闭同步则这里只有read only
database_role:标识为主库 还是备库,此时为物理备库
protection_mode和protection_level 此时标识都是最大性能模式

六、总结

本篇整理了Oracle 11gR2环境下DG 1+1搭建过程,日志传输为LGWR ASYNC异步传输,开启real time apply

透明2.png

透明背景.png

最后修改时间:2021-04-12 16:07:45
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论