文章说明

第一次完成了基础的物理备库搭建,便于后续回顾故写下该文章,有关DG的认知还很浅显,文章中不乏有许多的问题,若有错误或配置不完善的地方请大家指出,希望该文章能在大家搭建dg的过程中起到帮助。

环境信息说明

搭建步骤

一、确认主备物理环境信息

修改主数据库hosts文件,同时将该文件复制替换至备库

[root@orclpr ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.194   orclpr
192.168.1.195   orcldg[root@orclpr ~]$ scp /etc/hosts root@orcldg:/etc/hosts

检查两台主机连接情况

# orclpr ping orcldg
[root@orclpr ~]# ping orcldg
PING orcldg (192.168.1.195) 56(84) bytes of data.
64 bytes from orcldg (192.168.1.195): icmp_seq=1 ttl=64 time=0.306 ms
64 bytes from orcldg (192.168.1.195): icmp_seq=2 ttl=64 time=0.397 ms
64 bytes from orcldg (192.168.1.195): icmp_seq=3 ttl=64 time=0.442 ms
64 bytes from orcldg (192.168.1.195): icmp_seq=4 ttl=64 time=0.500 ms
64 bytes from orcldg (192.168.1.195): icmp_seq=5 ttl=64 time=0.401 ms
……
--- orcldg ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 5999ms
rtt min/avg/max/mdev = 0.306/0.406/0.500/0.056 ms# orcldg ping orclpr
[root@orcldg ~]# ping orclpr
PING orclpr (192.168.1.194) 56(84) bytes of data.
64 bytes from orclpr (192.168.1.194): icmp_seq=1 ttl=64 time=0.317 ms
64 bytes from orclpr (192.168.1.194): icmp_seq=2 ttl=64 time=0.350 ms
64 bytes from orclpr (192.168.1.194): icmp_seq=3 ttl=64 time=0.438 ms
64 bytes from orclpr (192.168.1.194): icmp_seq=4 ttl=64 time=0.410 ms
64 bytes from orclpr (192.168.1.194): icmp_seq=5 ttl=64 time=0.319 ms--- orclpr ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.317/0.366/0.438/0.054 ms

检查防火墙状态,若为开启状态,建议关闭,也可放行1521端口。

# 主库防火墙状态
[root@orclpr ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: inactive (dead) since Fri 2021-03-19 08:35:51 CST; 6 days agoDocs: man:firewalld(1)Process: 959 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)Main PID: 959 (code=exited, status=0/SUCCESS)Mar 17 19:31:15 orclpr systemd[1]: Starting firewalld - dynamic firewall daemon...
Mar 17 19:31:15 orclpr systemd[1]: Started firewalld - dynamic firewall daemon.
Mar 19 08:35:50 orclpr systemd[1]: Stopping firewalld - dynamic firewall daemon...
Mar 19 08:35:51 orclpr systemd[1]: Stopped firewalld - dynamic firewall daemon.# 备库防火墙状态
[root@orcldg ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: inactive (dead) since Fri 2021-03-19 08:35:38 CST; 6 days agoDocs: man:firewalld(1)Process: 975 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)Main PID: 975 (code=exited, status=0/SUCCESS)Mar 17 17:15:56 orcldg systemd[1]: Starting firewalld - dynamic firewall daemon...
Mar 17 17:15:59 orcldg systemd[1]: Started firewalld - dynamic firewall daemon.
Mar 19 08:35:37 orcldg systemd[1]: Stopping firewalld - dynamic firewall daemon...
Mar 19 08:35:38 orcldg systemd[1]: Stopped firewalld - dynamic firewall daemon.

检查主、备库SELinux,并关闭SELinux

[root@orclpr ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled  # 将该值改成disabled后重启服务器即可
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

二、配置主库日志模式

将主库模式修改为强制日志模式,为了防止部分直接路径插入而不记录日志的部分信息不能够传递到备库。

[oracle@orclpr dbs]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Thu Mar 25 14:52:12 2021
Version 19.7.0.0.0
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.0.0.0SQL> alter database force logging;

三、配置静态监听

修改监听文件listener.ora,该文件默认位于"$ORACLE_HOME/network/admin"路径下(本文位置为/u01/app/oracle/product/12.2.3/db_1/network/admin/listener.ora)
根据自身数据库及主机信息修改相关参数即可。

# 修改主库监听文件,完成修改后重启监听服务。
[oracle@orclpr ~]$ cat /u01/app/oracle/product/12.2.3/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.3/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)  # 数据库全局名,单例数据库与实例名相同(SID_NAME = orcl)      # 数据库实例名))LISTENER = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = orclpr)(PORT = 1521)) # 监听主机信息)ADR_BASE_LISTENER = /u01/app/oracle# 修改备库监听文件,完成修改后启动监听服务。
[oracle@orcldg ~]$ cat /u01/app/oracle/product/12.2.3/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.3/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)(SID_NAME = orcl)))LISTENER = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = orcldg)(PORT = 1521)))ADR_BASE_LISTENER = /u01/app/oracle

四、修改tnsname.ora文件

定义服务名,用于通过服务名连接数据库。
如下所示,修改tnsname.ora文件,同时将该文件复制到备库相同位置。

[oracle@orclpr ~]$ cat /u01/app/oracle/product/12.2.3/db_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.3/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.ORCLDG =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = orcldg)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))ORCLPR =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = orclpr)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))[oracle@orclpr ~]$ scp tnsname.ora oracle@orcldg:/u01/app/oracle/product/12.2.3/db_1/network/admin/tnsnames.ora

五、传输密钥文件

将主库的秘钥文件传输至备库,主库与备库之间的通信需要使用秘钥文件进行认证。

[oracle@orclpr ~]$ scp /u01/app/oracle/product/12.2.3/db_1/dbs/orapworcl oracle@orcldg:/u01/app/oracle/product/12.2.3/db_1/dbs/orapworcl

六、主库创建standby log

使用standby log能够实现日志信息的实时应用,减少主备数据库之间的数据差异。
standby log的数量官方建议为:日志组数量+1*线程数,本例子中redo日志组数量为3,线程数为1,故创建standby log为4,standby大小建议与redo日志大小相同。

SQL> alter database add standby logfile group 8('/u01/app/oracle/oradata/ORCL/sredo08.log') size 200m;
SQL> alter database add standby logfile group 9('/u01/app/oracle/oradata/ORCL/sredo08.log') size 200m;
SQL> alter database add standby logfile group 10('/u01/app/oracle/oradata/ORCL/sredo08.log') size 200m;
SQL> alter database add standby logfile group 11('/u01/app/oracle/oradata/ORCL/sredo08.log') size 200m;

七、修改主库参数信息

将主库参数文件导出为文本文件,并修改相关参数信息。

[oracle@orclpr admin]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Thu Mar 25 15:59:25 2021
Version 19.7.0.0.0
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.0.0.0SQL> create pfile='/tmp/prpfile.ora' from spfile;File created.# 如下修改参数文件信息
[oracle@orclpr admin]$ cat /tmp/prpfile.ora
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=13824425984
orcl.__inmemory_ext_roarea=0
orcl.__inmemory_ext_rwarea=0
orcl.__java_pool_size=0
orcl.__large_pool_size=67108864
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=5368709120
orcl.__sga_target=16106127360
orcl.__shared_io_pool_size=134217728
orcl.__shared_pool_size=2046820352
orcl.__streams_pool_size=0
orcl.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/ORCL/control01.ctl','/u01/app/oracle/fast_recovery_area/ORCL/control02.ctl'
*.db_block_size=8192
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=8256m
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'#==============================begin:需要添加的配置信息===========================================
# 若备库的数据文件路径与主库不同,需要进行配置,形式为:'备库路径','主库路径'
*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl_stdby','/u01/app/oracle/oradata/ORCL'
# 若备库的在线日志文件路径与主库不同,需要进行配置,形式为:'备库路径','主库路径'
*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl_stdby','/u01/app/oracle/oradata/ORCL'
# 数据库唯一名,主备库不得相同
*.db_unique_name='orclpr'
*.FAL_CLIENT='orcldg'
*.FAL_SERVER='orclpr'
*.local_listener=''
# 主备库列表信息
*.log_archive_config='DG_CONFIG=(orclpr,orcldg)'
# 主备库传输的归档日志存放位置及相关权限设置
*.log_archive_dest_1='LOCATION=/u01/arch/VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclpr'
*.log_archive_dest_2='SERVICE=orcldg lgwr SYNCVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=orcldg'
*.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
#==============================end:需要添加的配置信息===========================================*.log_archive_format='%t_%s_%r.dbf'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=5114m
*.processes=480
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=15341m
*.STANDBY_FILE_MANAGEMENT='auto'
*.undo_tablespace='UNDOTBS1'

主要根据自身情况修改主备库的名称及数据文件、日志文件位置信息。
完成配置后,通过该文件重启数据库,并新建参数文件

# 关闭数据库
SQL> shutdown immediate;
# 使用pfile启动数据库
SQL> startup pfile=/tmp/prpfile.ora;
# 通过pfile重建spfile
SQL> create spfile from pfile='/tmp/prpfile.ora';

八、复制参数文件至备库,修改并启用

将主库参数文件传输至备库,修改相关参数信息。主要时为了在进行主备切换后,备库在转化为主库后能够再次形成主备关系。
修改的参数内容与上一节类似,只是当前的参数是以备库作为主库情况下进行的设置。

[oracle@orcldg ~]$ cat /tmp/ora_pfile
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=13824425984
orcl.__inmemory_ext_roarea=0
orcl.__inmemory_ext_rwarea=0
orcl.__java_pool_size=0
orcl.__large_pool_size=67108864
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=5368709120
orcl.__sga_target=16106127360
orcl.__shared_io_pool_size=134217728
orcl.__shared_pool_size=2046820352
orcl.__streams_pool_size=0
orcl.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.db_block_size=8192
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=8256m
*.db_unique_name='orcldg'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'#===========================begin:修改内容说明===================================================
*.control_files='/u01/app/oracle/oradata/orcl_stdby/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl_stdby/control02.ctl'
*.FAL_CLIENT='orclpr'
*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/orcl_stdby'
*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/orcl_stdby'
*.FAL_SERVER='orcldg'
*.local_listener=''
*.STANDBY_FILE_MANAGEMENT=AUTO
*.log_archive_config='DG_CONFIG=(orcldg,orclpr)'
*.log_archive_dest_1='LOCATION=/u01/arch/VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcldg'
*.log_archive_dest_2='SERVICE=orclprVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=orclpr'
*.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
#===========================end:修改内容说明===================================================*.log_archive_format='%t_%s_%r.dbf'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=5114m
*.processes=480
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=15341m
*.STANDBY_FILE_MANAGEMENT='auto'
*.undo_tablespace='UNDOTBS1'

完成修改后,启动数据库至nomount状态

SQL> startup nomount pfile=/tmp/prpfile.ora;

九、使用RMAN进行数据库复制

使用rman连接主、备库,复制主库相关文件至备库。

[oracle@orclpr dbs]$ rman target sys/Nhu_123456@orclpr auxiliary sys/Nhu_123456@orcldg
Recovery Manager: Release 19.0.0.0.0 - Production on Thu Mar 25 11:45:38 2021
Version 19.7.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
connected to target database: ORCL (DBID=1595238851)
connected to auxiliary database: ORCL (not mounted)RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE;

十、主备库信息检查

查询主库状态信息

SQL> select name,database_role,protection_mode,switchover_status from v$database;
NAME      DATABASE_ROLE    PROTECTION_MODE  SWITCHOVER_STATUS
--------- ---------------- -------------------- -------------
ORCL      PRIMARY      MAXIMUM PERFORMANCE  TO STANDBY

查询备库状态信息

SQL> select name,database_role,protection_mode,switchover_status from v$database;
NAME      DATABASE_ROLE    PROTECTION_MODE  SWITCHOVER_STATUS
--------- ---------------- -------------------- -------------
ORCLDG  PHYSICAL STANDBY MAXIMUM PERFORMANCE    NOT ALLOWED

开启备库,主库实施同步模式

开启备库

SQL> alter database open;

主库启用同步模式

SQL>  ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

功能验证

在主库新建数据表,并插入测试数据,查询备库是否正确同步信息。

SQL> create tablespace test datafile '/u01/app/oracle/oradata/ORCL/test01.dbf' size 5m;
SQL> create user tmpuser identified by tmpuser default tablespace test;
SQL> grant resource,connect,dba to tmpuser;
SQL> conn tmpuser/tmpuser;
SQL> create table tb_stu(id number(2),name varchar(10));
SQL> insert into tb_stu values (1,'test');
SQL> commit;

完成提交后,前往备库,查看上述主库操作是否在备库已同样生效。

Oracle Data Guard搭建——Physical Standby Database相关推荐

  1. oracle 11gr2 单机数据库使用asm,RHEL7上安装11gR2单机使用ASM存储搭建Physical Standby笔记...

    参考文献 一.背景介绍 接到需求要安装单机使用ASM存储的数据库,原本以为是轻车熟路的事情,emm,世界上哪有那么多轻松的活给你干,废话少说,进主题吧. 二. 关于安装思路 一直以来搭建的都是RAC+ ...

  2. oracle Data guard

    DATA GUARD的最主要的功能是冗灾.当然根据配置的不同,DATA GUARD还可以具备以下特点:高可用.性能提升.数据保护以及故障恢复等. DATA GUARD可以分为物理STANDBY和逻辑S ...

  3. Oracle Data Guard简介

    DATA GUARD的最主要的功能是冗灾.当然根据配置的不同,DATA GUARD还可以具备以下特点:高可用.性能提升.数据保护以及故障恢复等. DATA GUARD可以分为物理STANDBY和逻辑S ...

  4. oracle data guard方案,Oracle Data Guard 概念篇

    一个Data Guard 配置由一个生产库和一个或者多个standby数据库组成,在Data Guard配置中,主库和备库都既可以是rac环境,也可以是单机环境. 这篇文章主要介绍dataguard的 ...

  5. Oracle Data Guard 简介

    1.Oracle Data Guard概述 Oracle在版本7的时候,就支持Standby容灾备份数据库技术,并在Oracle8版本开始支持日志从生产数据库到备用数据库的自动传输.Oracle9i版 ...

  6. 使用 Oracle Enterprise Manager Cloud Control 12c 安装和管理 Oracle Data Guard

    2019独角兽企业重金招聘Python工程师标准>>> 使用 Oracle Enterprise Manager Cloud Control 12c 安装和管理 Oracle Dat ...

  7. oracle dg 增加redo组,【学习笔记】Oracle Data Guard 修改dataguard主库redo组数和大小

    天萃荷净 运维DBA反映检查到Oracle DataGuard环境redo日志较小,总结一下修改dataguard主库redo组数和大小方法 在一个dg环境中,配置的是实时同步,需要增加主库的redo ...

  8. Oracle Data Guard 角色转换

    实验环境:OEL+Oracle11.2.0.3+physical standby 众所周知,Data Guard已经是现今标准的主流容灾方案,由于日志传递对于网络适应程度强,且可以采用同步实时的传递方 ...

  9. Oracle Data Guard 角色转换(Role Transitions)

    查询视图V$DATABASE的DATABASE_ROLE列可以看到数据库当前的角色. 1.角色转换介绍 Oracle Data Guard让你可以使用SQL语句或者通过Oracle Data Guar ...

最新文章

  1. 漫谈C#之关键字(1)
  2. TypeError:“模块”对象不可调用
  3. 适用于macOS的Qt
  4. git版本回退命令_Git学习版本回退和管理文件的修改及删除操作
  5. springboot整合netty
  6. 2014东师计算机应用基础离线作业,2014秋东师《计算机应用基础》离线作业及答案...
  7. JS switch 分支语句
  8. Lnmp上安装Yaf学习(一)
  9. 揪出数据库中看不见的字符
  10. web框架 http协议
  11. [转载] java中对象作为参数传递给一个方法,到底是值传递,还是引用传递
  12. Linux下编译(安装)程序、编译库整理
  13. 深度学习_pytorch中的forward()的使用与解释
  14. matlab 隶属度计算,基于MATLAB实现的云模型计算隶属度
  15. c语言字符串作业题,C语言课后习题练习(四)
  16. ps制作台式计算机图标,ps制作计算机图标
  17. 华为云数据库VS自建数据库,上“云”不是智商税
  18. 2018年度最优秀mac软件及游戏推荐,个个万里挑一
  19. Java删除文件夹和文件(最经典普通的写法)
  20. MAFIA 算法解析

热门文章

  1. java——java删除指定文件或文件夹
  2. 微信小游戏客户端开发环境搭建
  3. HttpReques
  4. 开源风控系统radar部署
  5. Arduino开发-TFT_eSPI库学习
  6. 机器学习实战——K均值
  7. 软件项目经理需要了解的法律法规
  8. 新款H3C服务器图形化界面配置raid
  9. 混合颜色带的应用(一)
  10. python中ipaddr库用法详解