两节点12c RAC,在两节点上export ORACLE_SID再sqlplus / as sysdba都正常登录,然而Commvault通过service_name方式(sqlplus sys/password@service_name as sysdba)登录则是在节点1正常,而节点2报:

ORA-01017: invalid username/password; logon denied 

测试一:1.怀疑是密码文件错误,通守PWD 重生成文件,问题未解决
测试二:2.创建普通用户测试,发现测试帐号节点一可以通过物理IP,VIP连接,节点二不可以连
测试三:3.把节点重启,此时节点二也不可以连接 

通过查询文档,网上有一篇 现象和此类似的情况,并按照文档操作,问题得以解决:https://blogs.oracle.com/database4cn/12cchm-bugora-01017 

4、对节点2的service连接做了strace:
 strace -fo /tmp/strace_ONE.output sqlplus ONE/password@ONE_TEST
并在设置了ORA-1017的errorstack( errorstack对于这种口令错误问题没什么用,但通过它可以判断连接在哪个实例上遇到的ORA-01017错误):
alter system set events '1017 trace name ERRORSTACK level 3';

然而重现问题之后,两实例上均无errorstack trace生成,alert log中也没有ORA-01017的记录。
故此怀疑报错的实例并非是这两个。
5、通过strace输出发现走了nameserver。但客户并没用到GNS解析,且只使用vip连接。建议客户将/etc/resolv.conf中的nameserver行注释掉看看。注释掉之后问题依旧,但从strace上已可以完全确定ORA-01017报错还是发生在本地库上。
6、回想起一开始检查listener status输出时曾发现如下可疑情况:
$lsnrctl status
... 
Service "ONE" has 2 instance(s).
 Instance "-MGMTDB", status READY, has 1 handler(s) for this service...<===
 Instance "ONE2", status READY, has 1 handler(s) for this service...
当时询问客户怎么这个service下多了个mgmtdb实例,客户说这个应该是12c自带的吧,所以并没在意。
但是它们在同一个service下,如果连接被传递给mgmtdb实例的话,那么肯定会发生ora-01017。查了下mgmtdb的用途,发现其与12c的新特性有关:原本在11g中由Berkeley DB管理的CHM repository改成了Oracle db管理:

MGMTDB is new database instance which is used for storing Cluster Health Monitor (CHM) data. In 11g this was being stored in berkley database but starting Oracle database 12c it is configured as  Oracle Database Instance.

7、于是建议客户将mgmtdb停掉试试。客户反馈停掉之后果然正常连接了。
8、进一步查看相关文档,发现如下bug:
MGMTDB registers Database Service (Doc ID 2063662.1)
GIMR (Management Database) Registers Into Same Service that the Database Instance also registers On RAC (Doc ID 2024572.1)

该问题在数据库与cluster name同名时发生,会导致mgmtdb把自己注册到这个与cluster name同名数据库的default service下。

经客户确认,其数据库名的确与Cluster name相同。 
文档中给出的Workaround有二:
一是办法将GIMR重建到不同的共享存储上;
另一个办法是按Doc ID 2024572.1给mgmtdb配置local_listener。当然如果可以使用不同的dbname重建数据库则是从根本上避免此bug。

应该还有个办法是通过srvctl stop mgmtdbsrvctl disable mgmtdb来禁用它,但Oracle不推荐将其禁用,因为使用opatchauto打psu时会去尝试启动mgmtdb,如果发现它被disable,则会报错:
PRCR-1005 : Resource ora.mgmtdb is already stopped


1)connect to MGMTDB
$ export ORACLE_SID=-MGMTDB
$ sqlplus / as sysdba
2)modify local_listener of MGMTDB
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=<node1 interconnect IP>)(PORT=<mgmtlsnr port number>))','(ADDRESS=(PROTOCOL=TCP)(HOST=<node2 interconnectのIP>)(PORT=<mgmtlsnr port number>))' scope=both;
5
 
1
1)connect to MGMTDB
2
$ export ORACLE_SID=-MGMTDB
3
$ sqlplus / as sysdba
4
2)modify local_listener of MGMTDB
5
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=<node1 interconnect IP>)(PORT=<mgmtlsnr port number>))','(ADDRESS=(PROTOCOL=TCP)(HOST=<node2 interconnectのIP>)(PORT=<mgmtlsnr port number>))' scope=both;



oracle 12.1.0.2的mgmt 导致的ORA-01017 bug的更多相关文章

  1. 12.1.0.2自适应特性导致SQL性能下降

    背景介绍 在升级到12.1.0.2.0数据库版本后,在使用12c中引入的自适应特性默认配置的情况下,可能引起SQL性能的下降. 问题现象升级到12.1.0.2.0后,SQL语句性能可能出现下降. 影响 ...

  2. Oracle 12.2.0.1 RAC for rhel 7.X 数据库安装(节点1执行root.sh失败)

    说明: 最开始是用的rehat7.2安装12.2.0.1,后面安装GI节点一执行root.sh脚本失败,排查原因,最开始以为是操作系统的问题,换成rehat7.6,同样的出现问题,经过一番折腾,后面通 ...

  3. Linux平台Oracle 12.1.0.2 单实例安装部署

    主题:Linux平台Oracle 12.1.0.2 单实例安装部署 环境:RHEL 6.5 + Oracle 12.1.0.2 需求:安装部署OEM 13.2需要Oracle 12.1.0.2版本作为 ...

  4. 【翻译自mos文章】在RHEL7/OL7上安装Oracle 12.1.0.2的server端或者client时,报须要&quot;compat-libstdc++&quot;包

    在RHEL7/OL7上安装Oracle 12.1.0.2的server端或者client时,报须要"compat-libstdc++"包 来源于: Installation of ...

  5. Oracle 12.1.0.2 对JSON的支持

    Oracle 12.1.0.2版本有一个新功能就是可以存储.查询.索引JSON数据格式,而且也实现了使用SQL语句来解析JSON,非常方便.JSON数据在数据库中以VARCHAR2, CLOB或者BL ...

  6. oracle 12.1.0.2中对象锁对系统的较大影响

    环境:oracle 12.1.0.2  rac ,4节点 一.概述 通常来说,如果是oltp应用,那么部署在rac上,是不错的注意. 但实现情况中,往往是混合类型,既有OLTP也有OLAP. 如果没有 ...

  7. Oracle 12.2.0.1 Installation Fails With "PRVG-0449"

    Mac 电脑虚拟机 Parallels 中进行Oracle 12.2.0.1 数据库软件安装时,预环境检查过程中,提示堆栈大小限制[失败],即使修复问题依然如故. Oracle 12.2.0.1 In ...

  8. Oracle 12.1.0.2 New Feature翻译学习【In-Memory column store内存列存储】【原创】

    翻译没有追求信达雅,不是为了学英语翻译,是为了快速了解新特性,如有语义理解错误可以指正.欢迎加微信12735770或QQ12735770探讨oracle技术问题:) In-Memory Column ...

  9. RedHat 7.3 Oracle 12.2.0.1 RAC 安装手册(转)

    1  准备工作 1.1   关于GRID的一些变化 1.1.1  简化的基于映像的Oracle Grid Infrastructure安装 从Oracle Grid Infrastructure 12 ...

随机推荐

  1. php学习笔记-foreach循环

    顾名思义,foreach是for each的连写,不是for reach.意思就是对数组中的每个元素都要处理一次. foreach只能用来处理数组. 有两种用法,先看第一种. foreach(arra ...

  2. apt-get默认下载路径

    备忘: Ubuntu中apt-get下载的安装包都在哪里呢? 在/var/cache/apt/archives里,里边的安装包可以取出来以备后用.

  3. Java-马士兵设计模式学习笔记-策略模式-模拟Comparable接口

    一.情况 1.目标:要在专门用于排序数据的DataSorter.java中实现对所有A类,B类,C类,D类等等的排序 2.初步想法:DataSorter.java的代码如下 public class ...

  4. 100741A Queries

    传送门 题目 Mathematicians are interesting (sometimes, I would say, even crazy) people. For example, my f ...

  5. MSSQL数据库设计心得

    统一库名命名规则. 格式:公司简称_库名 如:Supesoft_Member  会员库 建库时,最好将初始大小设置为你认为可允许的最大容量.避免因为库太小,而出现系统自增加.在系统运行中,自动增加空间 ...

  6. CodeForces 404C Restore Graph (构造)

    题意:让人构造一个图,满足每个结点边的数目不超过 k,然后给出每个结点到某个结点的最短距离. 析:很容易看出来如果可能的话,树是一定满足条件的,只要从头开始构造这棵树就好,中途超了int...找了好久 ...

  7. 20169219 《Linux内核原理与分析》 第十周作业

    进程地址空间 1.进程地址空间由进程可寻址的虚拟内存组成.Linux系统中的所有进程之间以虚拟方式共享内存. 2.进程只能访问有效内存区域内的内存地址. 内存区域可以包含各种内存对象: (1) 代码段 ...

  8. webapi 返回json

    web api 默认的已 xml 格式返回数据 现在开发一般都是以 json 格式为主 下面配置让 webapi 默认返回 json ,在需要返回 xml 时只需要加一个查询参数 datatype=x ...

  9. Python列表删除的三种方法

    1.使用del语句删除元素 >>> i1 = ["a",'b','c','d'] >>> del i1[0] >>> prin ...

  10. Java泛型<>内各种参数的异同

    先说下本篇随笔主要涉及到的东西(参考Java编程思想一书): 1.说明 List<Fruit> 与 List<Apple> 之间为什么是非继承关系. 2.由 1 引出的问题说明 ...