今天碰到一个我自己实验室发生的故障,起初看起来很简单,但实际上还很有趣,而且不细心的话还容易被忽视掉。相信在生产环境也会有客户会实际遇到。

环境:Oracle 11.2.0.4 RAC (2 nodes Primary + 2 nodes Standby)

背景:起初这个实验环境搭建好是没有任何问题的。后期做过各类测试,其中包括主库增加了新的存储目录,所以现在需要修改备库的db_file_name_convert参数,添加对应各自的关系。

本来修改个参数没太在意,当时重启数据库也是成功的,结果后来standby数据库又一次重启后,standby的两个节点,其中一个节点启动正常,另外一个节点居然起不来,报错如下:

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started. Total System Global Area 534462464 bytes
Fixed Size 2254952 bytes
Variable Size 444598168 bytes
Database Buffers 83886080 bytes
Redo Buffers 3723264 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-01677: standby file name convert parameters differ from other instance

报错信息非常明显,就是说convert参数配置和其他实例不一致,检查的确如此:

起不来的实例convert参数如下:

SQL> show parameter convert

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +data1/jyzhao, +data/mynas
log_file_name_convert string +data1/jyzhao, +data/mynas, +f
ra1/jyzhao, +fra/mynas

正常启动的实例convert参数如下:

SQL> show parameter convert

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +fra1/jyzhao, +fra/mynas, +dat
a1/jyzhao, +data/mynas
log_file_name_convert string +data1/jyzhao, +data/mynas, +f
ra1/jyzhao, +fra/mynas

很明显,db_file_name_convert参数两个实例的值不一致。

看到这里,第一反应就是,看下两边参数文件是不是一致?

答案是参数文件内容完全一致,而且参数文件对应的db_file_name_convert参数值是。

*.db_file_name_convert='+data1/jyzhao','+data/mynas'

这里补充下背景:之前Standby RAC的参数值是 *.db_file_name_convert='+data1/jyzhao','+data/mynas'

后来修改过备库的参数值:

SQL> alter system set db_file_name_convert = '+fra1/jyzhao', '+fra/mynas', '+data1/jyzhao', '+data/mynas' scope=spfile;

但是如今看来并没有生效。难道是上次修改过程中有什么疏忽的地方?

再次修改为正确的值测试:

SQL> alter system set db_file_name_convert = '+fra1/jyzhao', '+fra/mynas', '+data1/jyzhao', '+data/mynas' scope=spfile;

System altered.
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started. Total System Global Area 534462464 bytes
Fixed Size 2254952 bytes
Variable Size 444598168 bytes
Database Buffers 83886080 bytes
Redo Buffers 3723264 bytes
Database mounted.
Database opened.
SQL>
SQL> show parameter convert NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +fra1/jyzhao, +fra/mynas, +dat
a1/jyzhao, +data/mynas
log_file_name_convert string +data1/jyzhao, +data/mynas, +f
ra1/jyzhao, +fra/mynas

可以看到,再次修改后,这个实例可以正常启动了,参数值也显示正确了。

那上次是什么情况?再次关闭实例后重启,发现问题重现:

SQL>
SQL>
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started. Total System Global Area 534462464 bytes
Fixed Size 2254952 bytes
Variable Size 444598168 bytes
Database Buffers 83886080 bytes
Redo Buffers 3723264 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-01677: standby file name convert parameters differ from other instance SQL> show parameter convert NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +data1/jyzhao, +data/mynas
log_file_name_convert string +data1/jyzhao, +data/mynas, +f
ra1/jyzhao, +fra/mynas
SQL> select status from v$instance; STATUS
------------
STARTED

最后在数据库的alert中找到了蛛丝马迹,就是手工修改参数后,启动数据库成功后,又显示自动被修改为原值。

Wed Jan 03 05:47:06 2018
Starting Data Guard Broker (DMON)
Wed Jan 03 05:47:06 2018
INSV started with pid=41, OS id=26314
Physical standby database opened for read only access.
Completed: ALTER DATABASE OPEN
Wed Jan 03 05:47:10 2018
NSV0 started with pid=42, OS id=26321
Wed Jan 03 05:47:14 2018
RSM0 started with pid=43, OS id=26331
Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST
ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='jyzhao1';
ALTER SYSTEM SET log_archive_format='%t_%s_%r.dbf' SCOPE=SPFILE SID='jyzhao1';
ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=BOTH SID='*';
ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID='*';
ALTER SYSTEM SET log_archive_max_processes=4 SCOPE=BOTH SID='*';
ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*';
ALTER SYSTEM SET db_file_name_convert='+data1/jyzhao','+data/mynas' SCOPE=SPFILE;
ALTER SYSTEM SET log_file_name_convert='+data1/jyzhao','+data/mynas','+fra1/jyzhao','+fra/mynas' SCOPE=SPFILE;
ALTER SYSTEM SET fal_server='jyzhao' SCOPE=BOTH;
Wed Jan 03 05:47:53 2018
Decreasing number of real time LMS from 1 to 0

看到这里,已经知道问题的答案了。

大家也可以思考下,这段alert说明了什么?

真相就是:

该DG环境曾经在模拟某客户真实场景做DG测试时,配置了DG Broker。而后续环境在各种变更后DG Broker的配置信息却没有正常更新。

解决方案两种:

一是删除DG Broker的配置,不再使用,最简单的就是设置dgbroker不启动。

二是继续使用DG Broker,但需要重新配置正确。

下面重新配置DG Broker,然后在主库修改参数:

重新配置DG Broker可以直接参考上面的文章。

原值:

db_file_name_convert                 string      +data/mynas, +data1/jyzhao

主库修改参数:

SQL> alter system set db_file_name_convert = '+data/mynas', '+data1/jyzhao', '+fra/mynas', '+fra1/jyzhao' scope=spfile;

备库修改参数:

SQL> alter system set db_file_name_convert = '+fra1/jyzhao', '+fra/mynas', '+data1/jyzhao', '+data/mynas' scope=spfile;

还是不行:

Broker命令:

show database verbose jyzhao;
show database verbose mynas;

更新broker中的配置(根本原因):

edit database 'jyzhao' set property 'DbFileNameConvert'='+data/mynas, +data1/jyzhao, +fra/mynas, +fra1/jyzhao';
edit database 'mynas' set property 'DbFileNameConvert'='+fra1/jyzhao, +fra/mynas, +data1/jyzhao, +data/mynas';

看来DG Broker的配置一定要和数据库保持一致。

总结:做为一名合格的DBA心细很重要,各类常用工具也要熟悉,比如这里的DG Broker。

由于DG Broker的配置导致RAC某实例无法mount的更多相关文章

  1. Oracle RAC 11g DG Broker配置和测试

    Oracle RAC 11g DG Broker配置和测试 之前在<RHEL6.4 + Oracle 11g DG测试环境快速搭建参考>已经简单说过. 本篇在实验环境中实际配置 环境: R ...

  2. Oracle11g 配置DG broker

    在配置DG broker之前需要确保Dataguard配置正常且主库和备库均使用spfile. 1. 主库配置 配置DG_BROKER_START参数 检查主库dg_broker_start设置 SQ ...

  3. 【DATAGUARD】物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置

    [DATAGUARD]物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读 各位技 ...

  4. was配置oracle RAC集群的数据源

    在WebSphere中配置配置Oracle RAC集群的数据源,假设Oracle RAC双击分别为 HOST1 与 HOST2 , 端口为1521 ,服务名为 orcldbservice,则配置的UR ...

  5. 最常见的5个导致 RAC 实例崩溃的问题

    适用于: OracleDatabase - Enterprise Edition - 版本11.2.0.1 和更高版本本文档所含信息适用于所有平台 用途 本文档的目的是总结可能导致 RAC 实例崩溃的 ...

  6. centos部署oracle rac单实例11.2.0.3数据库(使用asm磁盘)

    部署oracle rac单实例数据库,需要安装grid和datavase两部分,所以首先创建两个用户oracle和grid,因为不能使用root用户进行安装,在安装之前首先需要修改一些系统参数和安装一 ...

  7. ORACLE配置tnsnames.ora文件实例

    ORACLE配置tnsnames.ora文件实例客户机为了和服务器连接,必须先和服务器上的监听进程联络.ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息.一般tnsnames. ...

  8. log4j.properties配置详解与实例

    log4j.properties配置详解与实例 第一步:加入log4j-1.x.x.jar到lib下. 第二步:在工程的src下下建立log4j.properties.内容如下: #OFF,syste ...

  9. centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例

    centos 安装oracle 11g r2(二)-----监听配置与创建数据库实例 一.监听配置(命令:netca) 1.以 oracle 用户输入命令,启动图形化工具配置监听 [oracle@lo ...

随机推荐

  1. C#检测获取移动硬盘盘符

    最近做一个小工具,  C# 对 移动硬盘的检测, var arr = DriveInfo.GetDrives(); 得出的所有磁盘,发现对于移动硬盘,DriveType 不是 Removable 类型 ...

  2. Solr7 安装部署 管理界面介绍

    Solr7 安装部署 管理界面介绍 本章重点介绍CentOS 安装部署Solr7 ,Solr的管理界面介绍,添加核心Core配置,Dataimport导入数据,Documents 在线维护索引,Que ...

  3. 显示mysql线程和kill线程的命令

    show processlist;//显示哪些线程正在运行. kill id //kill线程   通常在表被锁的时候用.   show processlist;显示哪些线程正在运行.您也可以使用my ...

  4. 自己动手编写IOC框架(三)

    刚写博客浏览量第一天就有1000多人次,给了我很大的鼓舞决定熬夜再写一篇.对于前两篇来说无非就是使用dtd验证xml,然后解析xml,和IOC的核心还是差的很远,相信很多小伙伴们都感觉看得不过瘾了,这 ...

  5. ACM HDU 1559 最大子矩阵

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1559 这道题 挺好的,当时想出解法的时候已经比较迟了.还是平时看得少. 把行与列都进行压缩.ans[i ...

  6. QT的radioButton组的使用

    在使用Qt的radioButton控件时,会产生一个疑问,如何让你选择的那个radio得到一个数据,进行判断,网上的一些资料有些不全,容易出错. 所以你得做件事,给每个radioButton进行赋初值 ...

  7. 【NOIP2015提高组】跳石头

    https://www.luogu.org/problem/show?pid=2678 最小值最大问题,二分答案.每次检查是否能仅移走m块岩石使得所有跳跃距离均大于等于mid. #include &l ...

  8. Python的列表

    1. Python的列表简介 1. 1 列表的定义 列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 ,即它的 ...

  9. 三十天学不会TCP,UDP/IP网络编程-IP头格式祥述

    我又来了,这篇文章还是来做(da)推(guang)介(gao)我自己的!俗话说事不过三,我觉得我下次得换个说法了,不然估计要被厌恶了,但是我是好心呐,一定要相信我纯洁的眼神.由于这两年接触到了比较多的 ...

  10. loadrunner录制脚本(一) ----录制脚本打不开浏览器

    loadrunner安装参考百度上的,或者有已经准备好的安装文档. 安装好了之后,用 HP Virtual Generator 录制脚本. 在上述操作中,需要选择火狐浏览器的exe文件驱动.也可以选择 ...