手动搭建一套Oracle Dataguard

  • 前置工作
  • 主库配置
    • 开启归档模式
    • 配置监听和服务名解析
    • 创建standby日志组
    • 配置DG参数
  • 备库配置
    • 创建数据库目录
    • 配置监听和服务名解析
    • 修改参数文件
    • 使用参数文件启动数据库为NOMOUNT
    • 使用RMAN duplicate主库到备库
    • 开启日志应用进程
  • 检查主备状态

数据库版本:Oracle 19c

服务器配置如下:

主机名 私网IP 操作系统 性能 角色
primarydb 172.16.171.96 Centos 7.5 4C16G 主库
standbydb 172.16.171.97 Centos 7.5 4C16G 备库

数据库文件管理模式为OMF(Oracle本地文件管理)。

前置工作

  1. 在primarydb服务器上安装好Oracle数据库,配置好Oracle环境变量,例如主库配置ORACLE_SID=bangkok
  2. 在standby服务器上仅安装Oracle软件(不安装数据库实例),配置ORACLE_SID=bangkokdg
  3. 配置好主备库服务器的/etc/hosts文件:
primarydb   primarydb   172.16.171.96
standbydb   standbydb   172.16.171.97

主库配置

开启归档模式

确认主库有没有开启归档模式。如果没有,按照以下步骤开启归档:

alter database force logging;
shutdown immediate;startup mount;
alter database archivelog;
archive log list;alter database open;
select name, log_mode, force_logging from v$database;

配置监听和服务名解析

配置$ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER=(SID_LIST = (SID_DESC =(GLOBAL_DBNAME = bangkok)(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)(SID_NAME = bangkok) ))LISTENER = (DESCRIPTION_LIST = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = primarydb)(PORT =1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ))

重启监听使配置生效:

lsnrctl stop
lsnrctl start
lsnrctl status

配置$ORACLE_HOME/network/admin/tnsnames.ora

BANGKOK = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = primarydb)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = bangkok)))BANGKOKDG = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = standbydb)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = bangkokdg)(UR = A)))

验证服务名解析:

tnsping bangkok
tnsping bangkokdg

创建standby日志组

在主库上添加standby日志组,日志大小与online日志保持一致,数量要比online日志多一组。

set lines 200
col member for a80
--查看日志文件
select * from v$logfile;
--查看日志组数量及大小
select thread#, group#, bytes/1024/1024 size_mb from v$log;THREAD#   GROUP#    SIZE_MB
-------   ------    -------1        1        20481        2        20481        3        2048

根据上面SQL的结果可知当前实例有3个日志组,所以至少需要创建4个standby日志组。

alter database add standby logfile group 11 size 2048M;
alter database add standby logfile group 21 size 2048M;
alter database add standby logfile group 31 size 2048M;
alter database add standby logfile group 41 size 2048M;

再次检查日志文件和standby日志:

select * from v$logfile;
select thread#, group#, sequence#, archived, status from v$standby_log;
--archived列的值应为YES,status列的值为UNASSIGNED

配置DG参数

在主库上配置Dataguard相关参数:

--配置DG主备库
alter system set log_archive_config='DG_CONFIG=(bangkok,bangkokdg)' scope=both;--配置本地归档路径
alter system set log_archive_dest_1='LOCATION=/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=bangkok' scope=both;--配置备库归档
alter system set log_archive_dest_2='SERVICE=bangkokdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,
PRIMARY_ROLE) DB_UNIQUE_NAME=bangkokdg' scope=both;alter system set log_archive_dest_state_1=ENABLED scope=both;
alter system set log_archive_dest_state_2=ENABLED scope=both;alter system set FAL_SERVER=bangkokdg scope=both;
alter system set FAL_CLIENT=bangkok scope=both;alter system set standby_file_management=auto;--配置主备库数据文件名称转换关系
alter system set db_file_name_convert='/oradata/BANGKOKDG/datafile', '/oradata/BANGKOK/datafile' scope=spfile;--配置主备库日志文件名称转换关系
alter system set log_file_name_convert='/oradata/BANGKOKDG/onlinelog', '/oradata/BANGKOK/onlinelog',
'/oradata/fats_recovery_area/BANGKOKDG/onlinelog', '/oradata/fats_recovery_area/BANGKOK/onlinelog' scope=spfile;

生成参数文件:

create pfile from spfile;

将参数文件和密码文件拷贝到备库:

scp $ORACLE_HOME/dbs/initbangkok.ora oracle@172.16.171.97:$ORACLE_HOME/dbs/
scp $ORACLE_HOME/dbs/orapwbangkok oracle@172.16.171.97:$ORACLE_HOME/dbs/

备库配置

创建数据库目录

mkdir -p /oradata/BANGKOKDG/controlfile
mkdir -p /oradata/BANGKOKDG/datafile
mkdir -p /oradata/BANGKOKDG/onlinelog

配置监听和服务名解析

配置$ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER=(SID_LIST = (SID_DESC =(GLOBAL_DBNAME = bangkokdg)(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)(SID_NAME = bangkok) ))LISTENER = (DESCRIPTION_LIST = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = standbydb)(PORT =1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ))

配置$ORACLE_HOME/network/admin/tnsnames.ora

BANGKOK = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = primarydb)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = bangkok)))BANGKOKDG = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = standbydb)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = bangkokdg)(UR = A)))

修改参数文件

修改从主库拷贝过来的参数文件$ORACLE_HOME/dbs/initbangkok.ora。主要是对调主备库名位置。下面是有改动的部分。

*.audit_file_dest='/u01/app/oracle/admin/bangkokdg/adump'*.control_files='/oradata/BANGKOKDG/controlfile/o1_mf_kvodmbdo_.ctl','/oradata/fast_recovery_area/BANGKOKDG/controlfile/o1_mf_kvodmbfp_.ctl'*.db_file_name_convert='/oradata/BANGKOK/datafile','/oradata/BANGKOKDG/datafile'*.db_name='bangkok'*.db_recovery_file_dest='/oradata/fast_recovery_area'*.db_unique_name='bangkokdg'*.fal_client='BANGKOKDG'
*.fal_server='BANGKOK'*.log_archive_config='DG_CONFIG=(bangkokdg,bangkok)'
*.log_archive_dest_1='LOCATION=/oradata/archVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=bangkokdg'
*.log_archive_dest_2='SERVICE=bangkok LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=bangkok'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'*.log_file_name_convert='/oradata/BANGKOK/onlinelog','/oradata/BANGKOKDG/onlinelog', '/oradata/fast_recovery_area/BANGKOK/onlinelog', '/oradata/fast_recovery_area/BANGKOKDG/onlinelog'

重命名参数文件:

cd $ORACLE_HOME/dbs/
mv initbangkok.ora initbangkokdg.ora

使用参数文件启动数据库为NOMOUNT

利用上面修改好的参数文件,启动备库到NOMOUNT状态:

create spfile from pfile='/u01/app/oracle/product/19.0.0/dbhome_1/dbs/initbangkokdg.ora';
startup nomount;ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: No such file or directory

手动创建adump目录:

mkdir /u01/app/oracle/admin/bangkokdg/adump

启动备库到NOMOUNT状态:

startup nomount
--出现Oracle instance Started即可

启动监听:

lsnrctl start
lsnrctl status

验证服务名解析:

tnsping bangkok
tnsping bangkokdg

使用RMAN duplicate主库到备库

检查数据库名称:

show parameter name

重命名从主库拷贝过来的密码文件:

cd $ORACLE_HOME/dbs/
mv orapwbangkok orapwbangkokdg

连接RMAN并duplicate主库到备库:

rman target sys/syspassword@bangkok auxiliary sys/syspassword@bangkokdgRMAN> run {allocate channel cl1 type disk;allocate channel cl2 type disk;allocate auxiliary channel c1 type disk;allocate auxiliary channel c2 type disk;duplicate target database for standby from active database nofilenamecheck;release channel c1;release channel c2;release channel cl1;release channel cl2;
}

复制完成后检查备库状态:

archive log list;
--归档模式已打开select database_role, protection_mode, protection_level, open_mode from v$database;
--数据库角色应为PHYSICAL STANDBY,打开模式为MOUNTED

开启日志应用进程

打开备库:

alter database open;

开启日志应用进程:

alter database recover managed standby database using current logfile disconnect from session;

检查主备状态

查看备库日志应用情况:

select name, sequence#, thread#, applied from v$archived_log;
select thread#, max(sequence#) from v$archived_log where applied='YES' order by thread#;

查看归档错误:

select dest_id, error from v$archived_dest where error is not null;

查看归档有无GAP:

select * from v$archive_gap;

查看备库日志状态:

select group#, thread#, sequence#, archived, status from v$standby_log;

查看备库状态信息:

select message from v$dataguard_status;

查看主备库的DG配置参数:

set lines 220
col name for a25
col value for a120select name,value from v$parameter where name in ('fal_server','log_archive_dest_1',
'log_archive_dest_2','log_archive_dest_state_2',
'log_archive_dest_3','log_archive_dest_state_3',
'log_archive_config','db_file_name_convert','log_file_name_convert');

查看主备库的切换状态:

set lines 220
col host_name for a15
col db_unique_name for a15
col switchover_status for a20select a.inst_id, a.db_unique_name,
a.database_role, a.protection_level, a.protection_mode, a.open_mode, a.switchover_status,
b.host_name, b.thread#
from gv$database a
left join gv$instance b
on a.inst_id=b.inst_id
order by a.inst_id;

查看备库日志应用进程:

select process,status,thread#,sequence# from v$managed_standby where process like 'MRP%';

REFERENCES
[1] https://blog.csdn.net/techsupporter/article/details/56831289
[2] https://www.cnblogs.com/Bccd/p/6362786.html
[3] https://www.modb.pro/db/491783
[4] https://www.modb.pro/db/58180
[5] https://www.shuzhiduo.com/A/gAJGrKL1zZ/

手动搭建一套Oracle Dataguard相关推荐

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

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

  2. ORACLE Dataguard安装

    ORACLE Dataguard安装 花了一周时间,终于部署和稳定都整理好了. 拷贝到blog里, 留份记录. 也算是对大家的贡献吧. 当然这篇技术文档很大一部分归功于这位仁兄:  http://bl ...

  3. 腾讯 Tars 基础框架手动搭建——填掉官方 Guide 的坑

    背景 Tars 简介 腾讯 Tars 是腾讯内部使用的 TAF(Tencent Application Framework)的对外开源版,去掉了许多冗杂多余的部分.该框架集开发.运维.微服务.RPC ...

  4. 直播回顾丨神策数据王朋:如何搭建一套高可用的前端异常监控系统?

    本文根据神策数据资深前端研发工程师王朋在神策「大数据技术系列直播课」第二季"前端专题"第四讲的直播整理. 本次分享主要分为三大部分:前端异常监控概述,异常监控的背景意义,以及做一个 ...

  5. oracle不一致性关闭下次,Oracle DataGuard

    ```1.文档介绍 本实施方案主要对Oracle DataGuard实施部署作相应的说明.以便实施人员能根据当前业务特点,规划.建设符合高可用.高可靠的数据库集群系统.具体由Oracle DG环境拓扑 ...

  6. 【转载】15分钟搭建Linux操作系统+Oracle数据库的环境

    2019独角兽企业重金招聘Python工程师标准>>> 一直想学习下Linux下Oracle数据库方面的运维,但从头安装Linux操作系统,再装Oracle数据库的过程确实非常繁琐, ...

  7. oracle 共享硬盘主从,oracle dataguard主从切换

    前言: 众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据:另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动 ...

  8. Oracle dataguard 正常切换和应急切换

    Oracle dataguard 正常切换和应急切换 oracle dataguard提供异地容灾方案,能有效的防止单点故障和提供高可用技术,这里介绍dataguard正常主备切换和应急切换(应急切换 ...

  9. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...

最新文章

  1. win10多合一原版系统_win10多合一系统下载_win10多合一系统下载地址-系统城
  2. 5.1 最小二乘法,左逆,投影矩阵
  3. 01_jeecms建站
  4. Windows之node.js安装
  5. 基于微型计算机系统的实时时钟设计,基于51单片机的实时时钟设计报告.doc
  6. 控制台调用天气API例子
  7. Google Chrome安装错误,lsb = 4.0 is needed by google-chrome-stable-13.0.782.112-95650.i386
  8. 「大数据干货」基于Hadoop的大数据平台实施——整体架构设计
  9. [二分 树形DP] CEOI2017. Mousetrap
  10. Java对大文件MD5解密详解
  11. Android Wear和二维码
  12. 设定是否使用IOB中的寄存器
  13. AFN TTP状态 412 - 前置条件失败
  14. sharding异常之no table route info
  15. 服务器信号有杂音怎么回事,电脑麦克风有杂音滋滋怎么解决
  16. 电脑族应该怎么保护眼睛
  17. 初探机器学习与评分卡模型
  18. u-boot (1) —— 编译分析
  19. tp-link 怎么打开ssh服务_如何用Xshell远程连接VPS服务器
  20. 【iKcamp线下】微信小程序技术沙龙

热门文章

  1. 南京海事学院计算机怎么样,客观评价:江苏海事职业学院和南京信息职业学院哪所好?...
  2. 电感知识:参数、线圈、作用、型号、规格、命名、应用、与磁珠的联系与区别、计算公式、测量、注意事项
  3. 线下门店数字化转型核心武器,智能工牌+会话智能!
  4. Linux 基础命令备忘(二)
  5. 公布我高一时的赚钱模式
  6. php 新闻上一条下一条
  7. ES:Too many open files in system
  8. Python 3.6 生成器之Send方法
  9. 传感器技术----热电偶测量
  10. [分享]HP大中华区总裁孙振耀退休十五天后九大感言