ORACLE DATAGURARD 折腾记二

前文再续,书接上一回,这次折腾Data Guard的一个重要目的是利用switchover实现机器的升级,怎么switchover呢?按照我的理解,Data Guard的角色切换是这样一个过程:

(1)让primary节点变为standby节点。

(2)让其中一个standby节点变为primary节点

这里比较有意思是“其中一个”,也就是说节点A原来是primary转成standby后,突然我后悔了,还是可以马上让他变回primary节点的,具体看操作:

此时 test02 是primary 节点,test03是standby节点,由于test03缺少一个参数,一点test03变为primary,归档不会自动发到test02,于是第一步要补全这个参数:


1

2

##### test03 target priamry, standby now #####

alter system set log_archive_dest_2=‘service=mydb_test02‘;

让test02由primary变为standby:


1

2

##### test02, target standby, primary now #####

alter database commit to switchover to physical standby ;

以上语句有可能会遇到如下错误:


1

2

3

4

alter database commit to switchover to physical standby

*

ERROR at line 1:

ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected

这是由于一些连接还没有释放所致的,将前端应用关闭后如果还出现这种情况,可以用以下语句确认一下有哪些连接:


1

2

3

4

##### test02, target standby, primary now #####

SELECT SID, PROCESS, PROGRAM FROM V$SESSION  

WHERE TYPE = ‘USER‘

AND SID <> (SELECT DISTINCT SID FROM V$MYSTAT);

如果是Oracle内部进程的连接就不用管他了,执行如下语句就可以了:


1

2

3

4

##### test02, target standby, priamry now #####

alter database commit to

  switchover to physical standby

  with session shutdown

将test03也就是原来是standby的节点转为primary:


1

2

3

##### test03, target primary, standby now #####

alter database commit to switchover to primary;

##### test03, target primary, primary now #####

打开primary节点的数据库,使其可对外服务:


1

2

3

##### test03, target primary, primary now #####

shutdown immediate;

startup;

启动standby的归档恢复进程:


1

2

##### test02, target standby, standby now #####

alter database recover managed standby database disconnect from session;

此时已经完成了Data Guard 主备切换了,可以监控住standby的alert文件,在primay中做一次日志切换,看看是否有归档日志传送过来并且恢复。

如果监控时间比较长的(超过5分钟)会看到如下错误:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

##### primary alert #####

Fri Dec 17 14:04:46 2010

Redo Shipping Client Connected as PUBLIC

-- Connected User is Valid

RFS[10]: Assigned to RFS process 12079

RFS[10]: Database mount ID mismatch [0x9e217391:0x9e217bca]

RFS[10]: Client instance is standby database instead of primary

RFS[10]: Not using real application clusters

Fri Dec 17 14:04:46 2010

Errors in file /u01/app/admin/mydb/udump/mydb_rfs_12079.trc:

ORA-16009: remote archive log destination must be a STANDBY database

  

##### standby alert #####

Fri Dec 17 14:04:54 2010

Errors in file /u01/app/admin/mydb/bdump/mydb_arc1_6821.trc:

ORA-16009: remote archive log destination must be a STANDBY database

Fri Dec 17 14:04:54 2010

PING[ARC1]: Heartbeat failed to connect to standby ‘mydb_test02‘. Error is 16009.

虽然不影响 Data Guard 的功能和使用,但如何解决呢?其实这是归档进程ARCHn进程在作怪,想办法屏蔽就可以,一个比较土的方法就是将备节点的log_archive_dest_2设为空,也就是回到上一篇中提到那种配置上,另外一种聪明点的做法就是引入valid_for参数:


1

2

3

4

5

##### test02 #####

alter system set log_archive_dest_2=‘service=mydb_test03 valid_for=(online_logfiles,primary_role)‘;

##### test03 #####

alter system set log_archive_dest_2=‘service=mydb_test02 valid_for=(online_logfiles,primary_role)‘;

alert文件中再也看不到这两个错误了。

时间: 2024-10-07 15:39:35

ORACLE DATAGURARD 折腾记二的相关文章

Spring Boot 实践折腾记(五):自定义配置,扩展Spring MVC配置并使用fastjson

每日金句 专注和简单一直是我的秘诀之一.简单可能比复杂更难做到:你必须努力理清思路,从而使其变得简单.但最终这是值得的,因为一旦你做到了,便可以创造奇迹.--源自乔布斯 题记 前两天有点忙,没有连续更新,今天接着聊.金句里老乔的话说得多好,但能真正做到的人又有多少?至少就我个人而言,我还远远没有做到这样,只是一个在朝着这个方向努力的人,力求简明易懂,用大白话让人快速的明白理解,简单的例子上手,让使用的人更多的去实战使用扩展,折腾记即是对自己学习使用很好的一次总结,对看的人也是一个参考的方法,希望

Manjaro折腾记

本菜货复活了(雾前段时间因为中考,导致LYOI二队的大多数成员博客都半死不活了当然也包括我的 扯回正题最近在折腾Manjaro然后自闭了这篇文章主要记录下自己踩的坑省的以后再重装又得费事(雾 重装了大概三四次第一次是手贱改了HOME目录下的目录名还没改配置文件,登陆界面卡住进不去了第二次是语言选成英文结果换中文还提示更新系统,懒得折腾第三次说来话长因为要用VSCode,所以装了个electron,然后发现有个libicu***.so.64文件找不到然后直接上archive.archlinux.o

探索Oracle之数据库升级二 11.2.0.3升级到11.2.0.4完整步骤

探索Oracle之数据库升级二  11.2.0.3升级到11.2.0.4完整步骤 说明:         这篇文章主要是记录下单实例环境下Oracle 11.2.0.1升级到11.2.0.3的过程,当然RAC的升级是会有所不同.但是他们每个版本之间升级步骤都是差不多的,先升级Database Software,再升级Oracle Instance. Oracle 11.2.0.4的Patchset No:19852360下载需要有Oracle Support才可以.  Patchset包含有7个

oracle学习笔记(二)

设置归档模式(mount状态) ALTER database ARCHIVELOG; //关闭数据库 shutdown immediate //启动数据库到mount状态 startup mount alter database archivelog; //查看归档状态 archive log list; SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 1 下一个存档日志序列

硅谷行记二:走进百度美国研发中心

硅谷行记二:走进百度美国研发中心 牛智超02月01日 12:44 分享到:                                                                                                                                                      4 百度                                       百家                  

【我的Oracle学习笔记(二)】----- select语句补充

一.多表查询 多表查询是指从多个有关联的表中查询数据,其语法与单表查询类似.一般来说,多表查询的表要用连接联系起来,如果没连接,则查询结果是这多个查询表的笛卡尔积(注释1). 模拟查询雇员姓名和所在部门名称: select [雇员姓名],[部门名称] from [雇员表] a,scott,[部门表] b where a.[部门编号]=b.[部门编号]; 上例中,为每一个查询表指定了别名,便于SQL语句的书写. 模拟查询在”sales“部门工作的雇员其雇员姓名 select [雇员姓名] from

Oracle内存管理理论篇二

目标 了解oracle内存管理方式 掌握ASMM管理方式 掌握AMM管理方式 监控内存使用 学习一个知识点时,最好先了解其历史.ORACLE近期的版本都对内存管理做了简化,从9i通过PGA_AGGREGATE_TARGET参数实现PGA的自动管理,10g通过Automatic Shared Memory Management(ASMM)实现SGA的自动管理,到11g通过Automatic Memory Management(AMM)实现内存(SGA+PGA)的自动管理.目前的11G版本,DBA只

Oracle笔记(十二) 集合、序列

Oracle笔记(十二) 集合.序列 一.集合 在数学的操作之中存在交.差.并.补的概念,而在数据的查询中也存在此概念,有如下几个连接符号: UNION:连接两个查询,相同的部分不显示: UNION ALL:连接两个查询,相同的部分显示: INTERSECT:返回两个查询中的相同部分: MINUS:返回两个查询中的不同部分: 为了验证以上的操作,下面创建一张只包含20部门雇员信息的表: CREATE TABLE emp20 AS SELECT * FROM emp WHERE deptno=20

CentOS上oracle 11g R2数据库安装折腾记

1.虚拟机上centos镜像的获取.这里推荐网易镜像站中的CentOS7版本(其他开源镜像站亦可).这里给出链接: http://mirrors.163.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso ps:这是64位的,现在也很少人使用32位系统了吧.安装CentOS系统(网上教程很多,这里不再赘述) ps:最好留着10G左右的空留空间(安装包就有2G,再加上最后安装的体积,多留点,笔者安装时就不够用了,到时候虚拟机中扩