本文接该系列文章的上一篇:ADG架构搭建3 – 一主一备ADG主备切换


前言

请先参照文章《ADG架构搭建1–Oracle安装》完成第三台服务器的Oracle安装。

本文将完成的ADG架构为:一个主库(ruiadg1)和两个备库(ruiadg2、ruiadg3).

正文

一、修改主备库的tnsnames.ora和listener文件

1.修改主备库tnsnames.ora文件

$ vi $ORACLE_HOME/network/admin/tnsnames.ora

已知服务器 ruiadg1 和 ruiadg2 的ip地址分别为192.168.10.13 和 192.168.10.14 ,假设服务器ruiadg3的ip地址为192.168.10.15。

添加ORCL_STANDBY的相关配置:

ruiadg1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.13)(PORT = 1521)))(CONNECT_DATA =(SID = ruiadg)))ruiadg2 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.14)(PORT = 1521)))(CONNECT_DATA =(SID = ruiadg))
)ruiadg3 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.15)(PORT = 1521)))(CONNECT_DATA =(SID = ruiadg)))

2.修改备库2(ruiadg3)listener.ora文件

在《ADG架构搭建2 – 搭建一主一备ADG架构》中已修改主库(ruiadg1)和备库1(ruiadg2)的listener.ora文件,此处只需修改备库2(ruiadg3)的listener.ora文件。

$ vi $ORACLE_HOME/network/admin/listener.ora

添加静态监听:

SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = ruiadg)(ORACLE_HOME = /oracle/app/product/12.1.0/dbhome_1)(SID_NAME = ruiadg))
)

listener.ora修改完成后,需重启监听:

$ lsnrctl stop
$ lsnrctl start

二、修改备库2(ruiadg3)归档模式

1.查看归档模式

SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     7
Current log sequence           9

2.修改归档模式

若当前为非归档模式,需要修改为归档模式。方法如下:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.Total System Global Area 4999610368 bytes
Fixed Size                  3721080 bytes
Variable Size            1090521224 bytes
Database Buffers         3892314112 bytes
Redo Buffers               13053952 bytes
Database mounted.
SQL> alter database archivelog;Database altered.SQL> alter database open;Database altered.SQL> archive log list
Database log mode           Archive Mode
Automatic archival           Enabled
Archive destination           USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     8
Next log sequence to archive   10
Current log sequence           10

三、设置主库(ruiadg1)为强制归档

SQL> alter database force logging;

因主库出现故障后,可能会遇到将备库2切换为主库的情况,所以这里把备库2设置为强制归档。

四、配置参数

说明:
ADG架构的日志传输方式有3种:ARCH方式,LGWR SYNC方式,LGWR ASYNC(默认)方式。
若要了解更多请移步《Oracle Data Guard详解》。

这里我们配置ARCH方式。

1.简易版

修改主库(ruiadg1)参数

SQL> alter system set log_archive_dest_1='location=/oradata/arch';SQL> alter system set log_archive_dest_2='service=ruiadg2 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;SQL> alter system set log_archive_dest_3='service=ruiadg3 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg';

[1] /oradata/arch 目录的创建:

# cd /
# mkdir -p /oradata/arch
# chown oracle:oinstall /oradata/arch

修改备库1(ruiadg2)参数

SQL> alter system set fal_client=ruiadg2;SQL> alter system set fal_server='ruiadg1','ruiadg3';SQL>alter system set standby_archive_dest='/oradata/archlog';

修改备库2(ruiadg3)参数

SQL> alter system set fal_client=ruiadg3;SQL>alter system set fal_server='ruiadg1','ruiadg2';SQL>alter system set standby_archive_dest='/oradata/archlog';

2.完整版

配置完成上述的主备库参数,已经可以实现ADG的配置了。
但是为了便于ADG架构主备库的切换,最好将主备库参数配置如下:

修改主库(ruiadg1)参数

SQL> alter system set fal_client=ruiadg1;SQL>alter system set fal_server='ruiadg2','ruiadg3';SQL>alter system set standby_archive_dest='/oradata/archlog';SQL>alter system set standby_archive_dest='/oradata/archlog';SQL> alter system set log_archive_dest_1='location=/oradata/arch';SQL> alter system set log_archive_dest_2='service=ruiadg2 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;SQL> alter system set log_archive_dest_3='service=ruiadg3 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg';

修改备库1(ruiadg2)参数

SQL> alter system set fal_client=ruiadg2;SQL> alter system set fal_server='ruiadg1','ruiadg3';SQL>alter system set standby_archive_dest='/oradata/archlog';SQL> alter system set log_archive_dest_1='location=/oradata/arch';SQL> alter system set log_archive_dest_2='service=ruiadg1 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;SQL> alter system set log_archive_dest_3='service=ruiadg3 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg';

修改备库2(ruiadg3)参数

SQL> alter system set fal_client=ruiadg3;SQL> alter system set fal_server='ruiadg1','ruiadg2';SQL>alter system set standby_archive_dest='/oradata/archlog';SQL> alter system set log_archive_dest_1='location=/oradata/arch';SQL> alter system set log_archive_dest_2='service=ruiadg1 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;SQL> alter system set log_archive_dest_3='service=ruiadg2 ARCH SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg';

补充:
若要设置为其他两种日志传输方式,只需修改log_archive_dest_2参数的值。

LGWR SYNC:
主库(ruiadg1)
SQL> alter system set log_archive_dest_2='service=ruiadg2 LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg ';
备库(ruiadg2)
SQL> alter system set log_archive_dest_2=‘service=ruiadg1 LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;

LGWR ASYNC:
主库(ruiadg1)
SQL> alter system set log_archive_dest_2=‘service=ruiadg2 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg ';
备库(ruiadg2)
SQL> alter system set log_archive_dest_2=‘service=ruiadg1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;

由于LGWR ASYNC 是默认方式,故可简写如下:
主库(ruiadg1)
SQL> alter system set log_archive_dest_2=‘service=ruiadg2 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg ';
备库(ruiadg2)
SQL> alter system set log_archive_dest_2=‘service=ruiadg1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ruiadg’;

五、数据同步

在备库(ruiadg2,ruiadg3)执行

--将备库启动至nomount状态
SQL> shutdown immediateDatabase closed.
Database dismounted.
ORACLE instance shut down.SQL> startup nomountORACLE instance started.Total System Global Area 4999610368 bytes
Fixed Size                  3721080 bytes
Variable Size            1090521224 bytes
Database Buffers         3892314112 bytes
Redo Buffers               13053952 bytes--从主库同步数据至备库
$ rman target sys/rui@ruiadg1 auxiliary sys/rui@ruiadg2 --前面是主库,后面是辅库Recovery Manager: Release 12.1.0.2.0 - Production on Thu Aug 26 14:23:52 2021Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.connected to target database: RUIADG (DBID=3080921516)
connected to auxiliary database: RUIADG (not mounted)RMAN> DUPLICATE TARGET DATABASE for standby FROM ACTIVE DATABASE nofilenamecheck;Recovery Manager: Release 12.1.0.2.0 - Production on Thu Aug 26 14:23:52 2021Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.connected to target database: RUIADG (DBID=3080921516)
connected to auxiliary database: RUIADG (not mounted)RMAN> DUPLICATE TARGET DATABASE for standby FROM ACTIVE DATABASE nofilenamecheck;Starting Duplicate Db at 26-AUG-21
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=249 device type=DISKcontents of Memory Script:
{backup as copy reusetargetfile  '/oracle/app/product/12.1.0/dbhome_1/dbs/orapwruiadg' auxiliary format'/oracle/app/product/12.1.0/dbhome_1/dbs/orapwruiadg'   ;
}
executing Memory ScriptStarting backup at 26-AUG-21
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=26 device type=DISK
Finished backup at 26-AUG-21contents of Memory Script:
{restore clone from service  'ruiadg1' standby controlfile;
}
executing Memory ScriptStarting restore at 26-AUG-21
using channel ORA_AUX_DISK_1channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oracle/app/oradata/ruiadg/control01.ctl
output file name=/oracle/app/fast_recovery_area/ruiadg/control02.ctl
Finished restore at 26-AUG-21contents of Memory Script:
{sql clone 'alter database mount standby database';
}
executing Memory Scriptsql statement: alter database mount standby databasecontents of Memory Script:
{set newname for tempfile  1 to"/oracle/app/oradata/ruiadg/temp01.dbf";switch clone tempfile all;set newname for datafile  1 to"/oracle/app/oradata/ruiadg/system01.dbf";set newname for datafile  3 to"/oracle/app/oradata/ruiadg/sysaux01.dbf";set newname for datafile  4 to"/oracle/app/oradata/ruiadg/undotbs01.dbf";set newname for datafile  6 to"/oracle/app/oradata/ruiadg/users01.dbf";restorefrom service  'ruiadg1'   clone database;sql 'alter system archive log current';
}
executing Memory Scriptexecuting command: SET NEWNAMErenamed tempfile 1 to /oracle/app/oradata/ruiadg/temp01.dbf in control fileexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEexecuting command: SET NEWNAMEStarting restore at 26-AUG-21
using channel ORA_AUX_DISK_1channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /oracle/app/oradata/ruiadg/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /oracle/app/oradata/ruiadg/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to /oracle/app/oradata/ruiadg/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service ruiadg1
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00006 to /oracle/app/oradata/ruiadg/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 26-AUG-21sql statement: alter system archive log currentcontents of Memory Script:
{switch clone datafile all;
}
executing Memory Scriptdatafile 1 switched to datafile copy
input datafile copy RECID=1 STAMP=1081607081 file name=/oracle/app/oradata/ruiadg/system01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=1081607081 file name=/oracle/app/oradata/ruiadg/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=1081607081 file name=/oracle/app/oradata/ruiadg/undotbs01.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=4 STAMP=1081607081 file name=/oracle/app/oradata/ruiadg/users01.dbf
Finished Duplicate Db at 26-AUG-21RMAN>--启动备库
SQL> alter database open;Database altered.SQL> alter database recover managed standby database disconnect from session;Database altered.

命令摘要:
– 启动备库至nomount状态
SQL> shutdown immediate
SQL> startup nomount

– 同步数据
$ rman target sys/rui@ruiadg1 auxiliary sys/rui@ruiadg2
RMAN> DUPLICATE TARGET DATABASE for standby FROM ACTIVE DATABASE nofilenamecheck;

– 启动备库并应用日志
SQL> alter database open;
SQL> alter database recover managed standby database disconnect from session;

六、测试ADG有效性

1.在主库(ruiadg1)建表并插入数据

SQL> create table test1 (name varchar(20),age int);
SQL> insert into test1 values ('rui',22);
SQL> commit;

2.在主库手动切log

SQL> alter system switch logfile;

3.在备库(ruiadg2,ruiadg3)查看数据同步状况

select * from test1;

到这里,我们已经完成了一主一备ADG架构的搭建,是不是很开心?


上一篇:ADG架构搭建3 – 一主一备ADG主备切换
下一篇:ADG架构搭建5 – 一主两备ADG主备切换

ADG架构搭建4 -- 搭建一主两备ADG架构相关推荐

  1. ADG架构搭建5 -- 一主两备ADG主备切换

    本文接该系列文章的上一篇:ADG架构搭建4 – 搭建一主两备ADG架构 前言 在<ADG架构搭建3 – 一主一备ADG主备切换>一文中,已经带领大家完成了一主一备ADG的主备切换,相信大家 ...

  2. Oracle dataguard一主两备环境搭建

    Oracle dataguard一主两备环境搭建 测试环境说明: 主 库:Reahat 6.5 x64 + Oracle 11.2.0.3 x64 单机(IP:192.168.6.10  db)  D ...

  3. ADG架构搭建3 -- 一主一备ADG主备切换

    本文接该系列文章的上一篇:ADG架构搭建2 – 搭建一主一备ADG架构 前言 Oracle Dataguard的角色转换包含两类:Switchover和Failover.Switchover指主备之间 ...

  4. mysql一主两从读写分离搭建

    搭建一主两从的架构是为了将数据库的读写操作分离开来,master数据库写数据,slave数据库查数据,以此来提升数据库的性能,一主两从的架构原理为主库接收到写入数据的请求后往数据库里写入数据,binl ...

  5. 一主多备几影响 oracle,Oracle 10g 一主多备的搭建技巧

    在Oracle数据库环境中,一主一备是比较传统的使用方式,在灾难发生的时候,可以灵活的切换主备角色,依然可以保持服务的可访问性 在Oracle数据库环境中,一主一备是比较传统的使用方式,在灾难发生的时 ...

  6. linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例

    一.环境介绍 1.1.规划 序号 类别 版本 主机名 IP 端口 备注 1 OS CentOS release 6.9 (Final) (minimal) my1 172.16.210.180 830 ...

  7. 基于 Docker 搭建 MySQL 一主两从复制

    在Docker中搭建MySQL 一主两从复制 搭建环境 Centos 7.5 64位 MySQL 5.7.13 Docker 1.13.1 接下来,我们将会在一台服务器上安装docker,并使用doc ...

  8. Kubernetes集群环境搭建详细教程(一主两从)

    Kubernetes集群环境搭建详细教程(一主两从) 1.1 安装要求 在开始之前,部署Kubernetes 集群机器需要满足以下几个条件: 一台或多台机器,操作系统CentOS7.x-86_x64 ...

  9. 如何搭建亿级社交信息分享社交平台架构

    2019独角兽企业重金招聘Python工程师标准>>> 如何搭建亿级社交信息分享社交平台架构 架构 摘要如何搭建一个稳定.高并发的IM系统架构?怎样构建高并发即时通信系统?这个需求在 ...

最新文章

  1. 入门深度学习,先看看三位顶级大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton的联合综述
  2. Oracle 11g RAC ASM 错误之(1)
  3. web安全_皮卡丘_xss
  4. 【数据结构与算法】之深入解析“矩形区域不超过K的最大数值和”的求解思路与算法示例
  5. 【WXS】简要介绍说明
  6. 【转】博客美化(1)基本后台设置与样式设置
  7. 骨干云池存储方式_你好,我存个对象(大误)漫谈对象存储
  8. 扩展、统计线性化和无迹RTS平滑器
  9. Java学习笔记2.4.3 选择结构 - 多分支结构
  10. STM32从设置IO输入上下拉到寄存器GPIOx_BSRR、GPIOx_BRR
  11. SQL2000数据库脱机/只读/紧急模式 修复
  12. 《计算机网络自顶向下》笔记
  13. 基于S3C2451的嵌入式电子相册
  14. java 如何防止恶意注册表,如何防止恶意网页篡改注册表
  15. linux strcpy函数,C语言中函数strcpy ,strncpy ,strlcpy,strcpy_s的用法
  16. 2014年计算机求职总结--准备篇 (顺便也带点自己在美国准备的总结吧)
  17. postgresql学习(一)
  18. Linux OverCommit分析 - Linux内存管理
  19. 让项目管理理论“落地”——读《IT项目经理成长手记》有感
  20. GCM Google官方示例的简单介绍和使用

热门文章

  1. CocosCreator 渲染
  2. seafile 部署_seafile服务端的搭建
  3. 颠覆音视频会议市场 腾讯拿出“杀手锏”
  4. Java生成二维码 基于Google-Zxing
  5. 用python制作生日蛋糕_纯HTML5+CSS3制作生日蛋糕(代码易懂)
  6. 2021年计算机考研408数据结构真题(客观题)
  7. 大数据可视化陈为智慧树_知到智慧树_大数据可视化_大学课后答案
  8. Twaver-HTML5基础学习(23)页管理容器(TabBox)、选中模型(SelectionModel)
  9. Ubuntu16.04 下安装RTL8111/8168/8411 驱动
  10. linux服务器中开启新的ip端口