暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

【实施方案】Oracle 11g RAC搭建dg单实例备库

原创 Jose Chen 2021-12-22
3254

基础信息

1、 搭建环境

操作系统:Centos 7.4
数据库版本:Oracle 11g

2、角色规划

角色       db_name   hostname    数据库版本    归档目录    db_unique_name
primary       orcl            rac01        11.2.0.4.0        +log                 orcl
primary       orcl            rac02        11.2.0.4.0        +log                 orcl
standby       orcl           racdg        11.2.0.4.0        +log                 orcldb

注:主库和备库的db_name必须一致

3、 IP规划

##primary主库
192.168.10.70 rac01
192.168.10.71 rac02
192.168.10.73 rac01-vip
192.168.10.74 rac02-vip
1.1.2.1 rac01-priv
1.1.2.2 rac02-priv
192.168.10.72 rac-scan

##standby 备库
192.168.10.66 racdg

实施步骤

1、 设置归档模式

[oracle@rac01 ~]$ srvctl stop database -d orcl -o immediate
—关库

[oracle@rac01 ~]$ srvctl start database -d orcl -o mount
—启动到mount

SQL> alter database archivelog;

SQL> alter database open;
—主库两个节点都操作一遍

SQL> alter system set db_recovery_file_dest_size=150G;
SQL> alter system set db_recovery_file_dest=’+LOG’;
SQL> Alter system switch logfile
SQL> select recid, name, first_time from v$archived_log;
—设置归档日志的目录,及其上限大小
注:DG环境下,决定归档目录的参数不是db_recovery_file_dest,而是log_archive_dest_1

2、开启force logging模式

SQL> alter database force logging;
SQL> select force_logging from v$database;
注:该模式下,哪怕sql语句注释不产生redo日志,数据库也会强制生成日志

3、主库添加standby日志组

alter database add standby logfile thread 1 ‘+DATA’ size 1024m;
alter database add standby logfile thread 2 ‘+DATA’ size 1024m;
–主库两个节点各执行6次
注:需要比现有的redo log组数量多一个,并且大于或等于现有redo log大小

4、编辑主库及备库的tnsname.ora

注:考虑到grid用户存在,分别在oracle,grid用户的$ORACLE_HOME/network/admin目录下,编辑tnsname.ora文件

追加如下内容
primary =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.73)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.74)(PORT = 1521))
) --此处的两个IP分别为两个节点的VIP
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.10.66)(PORT = 1521))
) --此处为dg备库的真实IP
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)(UR=A)
)
)

TAR =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.73)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

AUX =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.66)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldb)
)
)

注:TAR和AUX用于RMAN同步两个数据库的时候使用,不然会报错

5、修改监听文件

节点一
su – grid
cd $ORACLE_HOME/network/admin

追加如下内容
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2/db_1)
–ORACLE用户下的$ORACLE_HOME路径
(SID_NAME = orcl1)
)
)

节点二
su – grid
cd $ORACLE_HOME/network/admin

追加如下内容
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2/db_1)
–ORACLE下的$ORACLE_HOME路径
(SID_NAME = orcl2)
)
)

备库
su – oracle
cd $ORACLE_HOME/network/admin
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcldg)
(ORACLE_HOME = /u01/app/oracle/product/11.2/db_1)
(SID_NAME = orcl)
)
)
注:由于备库也是用的ASM存储,存在grid用户,tnsping不通的时候,可以在grid下的监听文件中,也追加该参数

重启监听

主库
srvctl stop listener
srvctl start listener

备库
lsnrctl stop
lsnrctl start

6、修改参数文件

主库
alter system set db_unique_name=‘orcl’ scope=spfile sid=’*’; #该参数需要重启生效
alter system set log_archive_config=‘dg_config=(orcl,orcldg)’ scope=both sid=’*’;
alter system set log_archive_dest_1=‘location=+LOG valid_for=(all_logfiles,all_roles) db_unique_name=orcl’ scope=both sid=’*’;
注:此处的定义了归档文件的生成目录

alter system set
log_archive_dest_2=‘service=standby
valid_for=(online_logfiles,primary_role) db_unique_name=orcldg’ scope=both sid=’*’;

alter system set log_archive_dest_state_1=enable scope=both sid=’*’;
alter system set log_archive_dest_state_2=enable scope=both sid=’*’;
alter system set standby_file_management=‘auto’ scope=both sid=’*’;
alter system set fal_server=‘standby’ scope=both sid=’*’;
—重启数据库生效

备库
alter system set db_unique_name=‘orcldg’ scope=spfile ; #该参数需要重启生效
alter system set log_archive_config=‘dg_config=(orcl,orcldg)’ scope=spfile ;
alter system set log_archive_dest_1=‘location=+LOG valid_for=(all_logfiles,all_roles) db_unique_name=orcldg’ scope=spfile ;
注:此处的定义了归档文件的生成目录

alter system set log_archive_dest_2=‘service=primary valid_for=(online_logfiles,primary_role) db_unique_name=orcl’ scope=spfile ;

alter system set log_archive_dest_state_1=enable scope=spfile ;
alter system set log_archive_dest_state_2=enable scope=spfile ;
alter system set standby_file_management=‘auto’ scope=spfile ;
alter system set fal_server=‘primary’ scope=spfile ;
—重启数据库生效

7、传输密码文件到备库

scp /u01/app/oracle/product/11.2/db_1/dbs/orapworcl1 oracle@192.168.10.66:/u01/app/oracle/product/11.2/db_1/dbs
注:主备库的密码需要一致

8、备库启动到nomount

Startup nomount

9、启动复制传输

命令测试主备库之间的tns和监听是否配置正常
sqlplus sys/oracle@primary as sysdba
sqlplus sys/oracle@standby as sysdba

主库Oracle用户下
rman target sys/oracle@primary auxiliary sys/oracle@standby

duplicate target database for standby from active database nofilenamecheck;

10、备库开启实时应用

alter database recover managed standby database using current logfile disconnect;
实时应用,日志传输到备用库后会实时读取日志中的信息并解析。
注:数据库重启,需要使用该命令,重新开启实时同步

11、测试

主库创建测试表,观察备库是都会自动生成该表

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

文章被以下合辑收录

评论