手动搭建一套Oracle Dataguard
手动搭建一套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本地文件管理)。
前置工作
- 在primarydb服务器上安装好Oracle数据库,配置好Oracle环境变量,例如主库配置
ORACLE_SID=bangkok
。- 在standby服务器上仅安装Oracle软件(不安装数据库实例),配置
ORACLE_SID=bangkokdg
。- 配置好主备库服务器的
/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相关推荐
- Oracle dataguard一主两备环境搭建
Oracle dataguard一主两备环境搭建 测试环境说明: 主 库:Reahat 6.5 x64 + Oracle 11.2.0.3 x64 单机(IP:192.168.6.10 db) D ...
- ORACLE Dataguard安装
ORACLE Dataguard安装 花了一周时间,终于部署和稳定都整理好了. 拷贝到blog里, 留份记录. 也算是对大家的贡献吧. 当然这篇技术文档很大一部分归功于这位仁兄: http://bl ...
- 腾讯 Tars 基础框架手动搭建——填掉官方 Guide 的坑
背景 Tars 简介 腾讯 Tars 是腾讯内部使用的 TAF(Tencent Application Framework)的对外开源版,去掉了许多冗杂多余的部分.该框架集开发.运维.微服务.RPC ...
- 直播回顾丨神策数据王朋:如何搭建一套高可用的前端异常监控系统?
本文根据神策数据资深前端研发工程师王朋在神策「大数据技术系列直播课」第二季"前端专题"第四讲的直播整理. 本次分享主要分为三大部分:前端异常监控概述,异常监控的背景意义,以及做一个 ...
- oracle不一致性关闭下次,Oracle DataGuard
```1.文档介绍 本实施方案主要对Oracle DataGuard实施部署作相应的说明.以便实施人员能根据当前业务特点,规划.建设符合高可用.高可靠的数据库集群系统.具体由Oracle DG环境拓扑 ...
- 【转载】15分钟搭建Linux操作系统+Oracle数据库的环境
2019独角兽企业重金招聘Python工程师标准>>> 一直想学习下Linux下Oracle数据库方面的运维,但从头安装Linux操作系统,再装Oracle数据库的过程确实非常繁琐, ...
- oracle 共享硬盘主从,oracle dataguard主从切换
前言: 众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据:另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动 ...
- Oracle dataguard 正常切换和应急切换
Oracle dataguard 正常切换和应急切换 oracle dataguard提供异地容灾方案,能有效的防止单点故障和提供高可用技术,这里介绍dataguard正常主备切换和应急切换(应急切换 ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...
最新文章
- win10多合一原版系统_win10多合一系统下载_win10多合一系统下载地址-系统城
- 5.1 最小二乘法,左逆,投影矩阵
- 01_jeecms建站
- Windows之node.js安装
- 基于微型计算机系统的实时时钟设计,基于51单片机的实时时钟设计报告.doc
- 控制台调用天气API例子
- Google Chrome安装错误,lsb = 4.0 is needed by google-chrome-stable-13.0.782.112-95650.i386
- 「大数据干货」基于Hadoop的大数据平台实施——整体架构设计
- [二分 树形DP] CEOI2017. Mousetrap
- Java对大文件MD5解密详解
- Android Wear和二维码
- 设定是否使用IOB中的寄存器
- AFN TTP状态 412 - 前置条件失败
- sharding异常之no table route info
- 服务器信号有杂音怎么回事,电脑麦克风有杂音滋滋怎么解决
- 电脑族应该怎么保护眼睛
- 初探机器学习与评分卡模型
- u-boot (1) —— 编译分析
- tp-link 怎么打开ssh服务_如何用Xshell远程连接VPS服务器
- 【iKcamp线下】微信小程序技术沙龙
热门文章
- 南京海事学院计算机怎么样,客观评价:江苏海事职业学院和南京信息职业学院哪所好?...
- 电感知识:参数、线圈、作用、型号、规格、命名、应用、与磁珠的联系与区别、计算公式、测量、注意事项
- 线下门店数字化转型核心武器,智能工牌+会话智能!
- Linux 基础命令备忘(二)
- 公布我高一时的赚钱模式
- php 新闻上一条下一条
- ES:Too many open files in system
- Python 3.6 生成器之Send方法
- 传感器技术----热电偶测量
- [分享]HP大中华区总裁孙振耀退休十五天后九大感言