Oracle RAC11gR2 ADG搭建实施与应用

Wesley13
• 阅读 818

Oracle RAC11gR2 ADG搭建实施与应用

最近准备给一个生产项目上oracle 11g DataGuard,主备均为oracle 11.2.0.4软件,并在备库安装软件。这篇不讲述 DataGuard 的原理,只是oracle 11g DataGuard 搭建的详细过程。这次是生产库的RAC需要做一个DG,由于不知道SYS 用户密码,需要取回密码太麻烦,故不能使用 duplicate 方式,使用rman 全备 -->还原控制文件--> mount数据库还原数据文件 --> 追加日志 --> 主备同步。搭建过程中只需要修改部分参数以及网络监听,故不需要停机可白天完成,下面开始进入主题。

1、生产环境信息

系统名称

系统平台

IP****地址

数据库版本

数据量

XXXX系统

Linux

192.168.3.101

11.2.0.4.0

180G

XXXX系统

Linux

192.168.3.102

11.2.0.4.0

主库: Linux 环境下 Oracle 11.2.0.4  RAC,使用ASM 文件系统。

备库: Linux 环境下Oracle 11.2.0.4  单机文件系统管理。

2、环境安装配置

2.1 环境需求

  • 备库操作系统平台和版本要求与主库(生产库)一致。

  • 备库数据库软件版本要求与主库(生产库)一致。

2.2 环境检查

  • 确认主备数据库版本(关注企业版、标准版区别,标准版支持DG功能,不支持ADG)

    su – oracle

  • 确认数据数据文件存放位置(ASM或者文件系统)

    su – oracle

  • 确认数据库开启归档模式(若未开启归档,需与应用沟通开归档变更实施)

    su – oracle

  • 确认网络连通性

主备分别执行:

telnet IP port

在主库tnsnames.ora中添加:

beijingstb =

在备库tnsnames.ora中添加:

beijingstb =

主库:

2.3 备库安装 Oracle 数据库软件

2.3.1 AIX环境参数配置

2.3.1.1 确认系统包

lslpp -l bos.adt.base

2.3.1.2 编辑 hosts 文件

vi /etc/hosts

2.3.1.3 创建用户组和用户

--用户组创建

2.3.1.4  编辑环境变量

export PS1="[`whoami`@`hostname`:"'$PWD]$'

2.3.1.5  修改内核文件

vi /etc/security/limits

2.3.1.6  修改内存参数

vmo -p -o minperm%=3

2.3.1.7  修改网络参数

no -r -o ipqmaxlen=512

2.3.2 HPUX 环境参数配置

2.3.2.1  编辑 hosts 文件

vi /etc/hosts

2.3.2.2  创建用户组和用户

mkgroup id=300 oinstall

2.3.2.3  编辑环境变量

export PS1="[`whoami`@`hostname`:"'$PWD]$'

2.3.2.4  修改端口范围

/usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 9000

2.3.2.5  设置 core 文件创建信息

mkdir -p /var/cores

2.3.2.6  添加 ssh 网络连接

mkdir /usr/local 

2.3.2.7  修改配置参数

vi /etc/system

2.3.3 Linux 环境参数配置

2.3.3.1  检查系统包

rpm -qa|grep binutils

2.3.3.2  编辑 hosts 文件(主机名和IP对应)

vi /etc/hosts

2.3.3.3  修改配置参数

mkgroup id=300 oinstall

2.3.3.4  修改环境变量

vi .bash_profile

2.3.3.5  配置内核参数

vi /etc/sysctl.conf

2.3.3.6  修改资源限制

vi /etc/security/limits.conf

2.3.3.7  修改登陆配置文件

vi /etc/pam.d/login

2.3.4  Oracle 软件安装

执行 ./runInstaller 出现安装界面(本节主要是参考,截图为RAC 不过搭建 MAA 时也可参考此文)

1.选择只安装软件

Oracle RAC11gR2 ADG搭建实施与应用

2.选择跳过软件更新

Oracle RAC11gR2 ADG搭建实施与应用

3.勾选两个节点

Oracle RAC11gR2 ADG搭建实施与应用

4.从左边栏选择添加 simpfied chinese

Oracle RAC11gR2 ADG搭建实施与应用

5.选择企业版

Oracle RAC11gR2 ADG搭建实施与应用

6.设置 oracle_base 和软件安装目录

Oracle RAC11gR2 ADG搭建实施与应用

7.选择用户组

Oracle RAC11gR2 ADG搭建实施与应用

8.等待自动环境检查结束

Oracle RAC11gR2 ADG搭建实施与应用

9.点击“安装”

Oracle RAC11gR2 ADG搭建实施与应用

10.用root用户执行root.sh脚本

Oracle RAC11gR2 ADG搭建实施与应用

11.安装完成,点击“关闭”

Oracle RAC11gR2 ADG搭建实施与应用

2.3.5  创建 Oracle 监听

使用 netca 命令打开图形界面,配置数据库默认监听,这里直接贴图就欧克没啥可说的了。

Oracle RAC11gR2 ADG搭建实施与应用

Oracle RAC11gR2 ADG搭建实施与应用

Oracle RAC11gR2 ADG搭建实施与应用

Oracle RAC11gR2 ADG搭建实施与应用

Oracle RAC11gR2 ADG搭建实施与应用

Oracle RAC11gR2 ADG搭建实施与应用

Oracle RAC11gR2 ADG搭建实施与应用

3、****配置Oracle DataGuard

3.1 打开数据库强制日志

  • 确认数据库日志模式

    select name,log_mode,force_logging from v$database;

  • 打开强制日志

    alter database force logging;

3.2 创建备库密码文件

scp orapwbeijing oracle@192.168.3.101:$ORACLE_HOME/dbs/orapwbeijingstb

(有坑,一定要同步,RAC 的话,需要将节点一同步至节点2 再将节点1 密码文件传至备库,密码文件、参数文件名的大小写需要一致,不然也会出问题)

3.3 创建 standby 日志组

  • 查看原生产库的日志信息,大小与原生产库保持一致:

    set linesize 250

  • 添加 standby 日志组(日志组最好比主库多一至两组,这样可以确保在主库业务量较大的情况下不至于备库来不及应用备库日志)

    alter database add standby logfile group 4 '/app/oracle/oradata/beijing/redo4.dbf' size 500m;

3.4 修改主库参数文件

3.4.1 直接修改参数文件方式

创建pfile文件:

create pfile='/home/oracle/initbeijing.ora' from spfile;
  • 添加以下参数:

    vi /home/oracle/initbeijing.ora

  • 创建spfile:

    create spfile from pfile='/home/oracle/initbeijing.ora';

3.4.2   使用命令在数据库启动状态下进行参数修改:

--建议使用此方法修改参数,请按自己实际环境参考修改,如修改出现问题可用备份还原,

修改完后 create pfile='/home/oracle/pfile20190729.ora' from spfile;

将此 pfile 传至备库去修改,然后使用 pfile 启动到 nomount

最最后一步记得重新创新spfile,下次启动时则可以自动使用spfile启动。

create spfile from pfile;

3.5 创建备库参数文件

  • 传输主库参数文件到备库:

    scp /home/oracle/pfile20190729.ora oracle@192.168.3.101:/home/oracle/

  • 修改备库参数文件:

    cp /home/oracle/pfile20190729.ora /home/oracle/pfile20190729.ora_bak

3.6 主备库添加网络服务名

  • 在主库tnsnames.ora中添加:

    beijingstb =

  • 在备库tnsnames.ora中添加:

    beijingstb =

3.7   备库添加监听静态注册

  • 备库在listener.ora中添加:

    SID_LIST_LISTENER =

4、 数据库初始化

4.1 备份初始化恢复(两种方式)

4.1.1 远程在线初始化(不知主库sys密码)

  • 利用rman的duplicate生成备库:

    rman target sys/xxxxx@beijing auxiliary sys/xxxxxx@beijingstb

4.1.2  利用 rman 备份片生成备库:

--主库建立备份目录,注意 oracle 权限

将备份传输至备库

[oracle@up rmanbk]$ scp beijing_3078169696_*192.168.3.105:/backup/backup20190730/

使用 pfile 启动至 nomount 状态,恢复控制文件

SQL> startup nomount pfile='/home/oracle/pfile20190729.ora';  

启动数据库至 mount

sql 'alter database mount';

指定 catalog 还原、恢复数据库

--rman 列出备份文件

恢复过程中报错可忽略

--这里会报错,没有恢复归档日志所致,可忽略 

4.2  启动备库日志应用

alter database  recover managed standby database disconnect from session;

或者使用实时的日志应用

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

查看备库同步情况

set linesize 150;

4.3 取消应用日志然后启动备库为read only(11g新特性)

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

使用实时的日志应用

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

查看备库同步情况

set linesize 150; 

4.4 验证 DataGuard 状态

  • 查询数据库角色:

    select name,database_role from v$database;

  • 查询备库日志应用进程:

    在备库(Standby)查询,检查日志应用进程是否开启 MRP0 进程

  • 查看日志应用状态,确保每一个日志都可以被应用:

    SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

查看备库同步情况

set linesize 150; 

4.5 主备库切换测试

  • 将备库的角色切换为主库:

    ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY with session shutdown;

5 、备库应急切换测试

模拟情景由于主库故障无法正常 switchover,需要执行 failover,强制备库切换为主库并接管业务

5.1 停止应用恢复模式

alter database  recover managed standby database finish force;

5.2  转换备库为主库

alter database  commit to switchover to primary;

5.3 重启数据库进行业务测试

alter database  open;

6. 重新生成 DataGuard 备库

由于切换测试已经将 DataGuard 进行了 failover 类型的切换,所以无法进行逆向操作,只能重新 进行 DataGuard 的数据初始化,重复第四章节即可。



最后,以上步骤我以整理成文档,公众号【JiekeXu之路】后台回复【ADG下载】获取百度云链接,习惯用 github 的也提供了下载链接,可自行回复关键字选择下载。

80%

推荐****阅读:

Linux Oracle 11.2.0.4 单机数据库升级至最新补丁安装指北

万字详解Oracle架构、原理、进程,学会世间再无复杂架构

模拟真实环境下超简单超详细的 MySQL 5.7 安装

Oracle 11GR2 RAC 最新补丁 190416 安装指导

Oracle 11gR2 RAC 集群服务启动与关闭总结

CentOS6.7安装PostgreSQL10.9详细教程

史上最全的 OGG 基础知识整理

Oracle RAC11gR2 ADG搭建实施与应用

Oracle RAC11gR2 ADG搭建实施与应用

长按添加微信公众号,更多精彩内容不错过!

码字不易,点赞、转发是一种对作者的鼓励! Oracle RAC11gR2 ADG搭建实施与应用

本文分享自微信公众号 - JiekeXu之路(JiekeXu_IT)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这