ITPub博客

首页 > 数据库 > 数据库开发技术 > 好激动好紧张,美女测试人员说她会今夜无眠

好激动好紧张,美女测试人员说她会今夜无眠

原创 数据库开发技术 作者:oracle_jacky 时间:2024-04-18 08:06:00 0 删除 编辑

一、引言

是被标题吸引过来的吧。。。。^_^

我写了一篇关于项目组同事反馈一单机多实例Oracle 19C库因sqlnet.ora设置导致sqlplus无法登陆数据库的问题,前文最后提到一生产RAC库也遇到类似问题,本文作为上文的接续,请听我娓娓道来。

二、问题描述

事情是这样的,一套Oracle RAC 19C 三节点主库,由于应用程序访问量较大,导致主库数据库负载每日都比较高,为减轻该主库负载压力,另搭建了一套三节点19C RAC备库,备库的硬件配置虽不及主库,但整体配置也相对比较高。备库实时同步主库数据,当前未有应用接入进来。

为减轻主库压力,在和项目组沟通后,梳理了相关业务,对于BI等对实时性要求不是特别高的应用计划调整连接到备库。其中有部分应用不是直连19C数据库,而是通过一个中间库使用dblink连接19C主库的,现在需调节该DBLINK的目标端IP,将其IP修改为Oracle 19C RAC备库所对应的VIP。但在修改了dblink中的IP后,应用测试发现无法正常连接备库,报了如下错误。

SQL> drop database link XXX.XXXX; Database link dropped. SQL>  CREATE DATABASE LINK "XXX.XXXX" CONNECT TO "XXX" IDENTIFIED BY "XXX" USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.xxx.xxx)(PORT = xxxx))) (CONNECT_DATA = (SERVICE_NAME = xxx.xxxx) (INSTANCE_NAME = xxxx)))'; Database link created. SQL> select * from dual@XXX.XXXX;select * from dual@XXX.XXXX                   *ERROR at line 1:ORA-01017: invalid username/password; logon deniedORA-02063: preceding line from XXX.XXXX

直接登陆该19C RAC备库,验证用户名和密码,也无法正常登陆,报错如下:

SQL> conn xxxx/xxxxxERROR:ORA-01017: invalid username/password; logon denied

查询当前RAC备库模式及状态也都是正常的,如下所示:

SQL> select status from v$instance; STATUS------------OPEN SQL> select open_mode,database_role,protection_mode from v$database; OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE-------------------- ---------------- --------------------READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE

使用该测试用户是可以正常登陆19C RAC主库的,那问题出现在哪呢?

三、问题分析

通过测试用户可以正常通过conn 来登陆19C RAC 主库,但在备库上却无法正常登陆,究竟是哪地方出现问题呢,是我当时部署RAC DG的时候有什么误操作和遗漏的操作吗,回想下,和之前的部署没什么区别啊,用的都是我之前写的部署方案。

在这套RAC 备库上无法通过conn 登陆主库,那是否也同样无法在主库的其它单机备库上登陆呢,于是,使用该测试账号登陆RAC 主库的其中一套单机19C备库,发现使用conn xxx/xxx可以正常连接该单机备库。

SQL> conn xxx/xxxxConnected.SQL> select status from v$instance; STATUS------------OPEN SQL> select open_mode,database_role,protection_mode from v$database; OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE-------------------- ---------------- --------------------READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE


由此看来不是该测试用户的用户名和密码问题导致的。

此时查看了下该单机备库的$ORACLE_HOME/network/admin目录,再和那套RAC备库的同目录做了对比,发现单机备库多了sqlnet.ora,而那套RAC备库的 $ORACLE_HOME/network/admin目录是没有设置sqlnet.ora,会不会是sqlnet.ora问题导致的呢,于是我做了如下测试,将该单机备库的sqlnet.ora文件修改了后缀名,并再测试conn连接是否正常,测试及结果如下:

[oracle@xxxx ~]$ cd $ORACLE_HOME/network/admin[oracle@xxxx admin]$ lltotal 16-rw-r--r-- 1 oracle oinstall  283 Jul 15 14:50 listener.oradrwxr-xr-x 2 oracle oinstall   64 Apr 17  2019 samples-rw-r--r-- 1 oracle oinstall 1536 Feb 14  2018 shrept.lst-rw-r--r-- 1 oracle oinstall  135 Jul 25 11:37 sqlnet.ora-rw-r--r-- 1 oracle oinstall  697 Jul 19 13:44 tnsnames.ora[oracle@xxxx admin]$ mv sqlnet.ora sqlnet.ora_bak[oracle@xxxx admin]$ sqlplus xxx/xxx SQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 28 11:55:42 2022Version 19.15.0.0.0 Copyright (c) 1982, 2022, Oracle.  All rights reserved. ERROR:ORA-01017: invalid username/password; logon denied  Enter user-name:ERROR:ORA-01017: invalid username/password; logon denied  Enter user-name: ^C[oracle@xxxx admin]$ mv sqlnet.ora_bak sqlnet.ora[oracle@xxxx admin]$ sqlplus xxx/xxx     SQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 28 11:56:01 2022Version 19.15.0.0.0 Copyright (c) 1982, 2022, Oracle.  All rights reserved. Last Successful login time: Sat Oct 15 2022 10:20:03 +08:00 Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.15.0.0.0

通过以上实验可以看到,当$ORACLE_HOME/network/admin下sqlnet.ora不存在,是无法正常通过conn 来连接备库。
查看了下该sqlnet.ora文件里配置的内容,详细信息如下:

[oracle@xxxx admin]$ cat sqlnet.oraSQLNET.ALLOWED_LOGON_VERSION_SERVER=10SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10sqlnet.expire_time=10SQLNET.INBOUND_CONNECT_TIMEOUT=180

四、问题处理

于是参照该单机备库,在RAC DG 备库$ORACLE_HOME/network/admin目录下,创建了sqlnet.ora文件并设置了同样内容,此时使用测试账号和密码使用conn也能正常连接该RAC备库。

在BI连接RAC 备库的中间件重新测试dblink也可以正常连接19C RAC备库了。

五、后记

对于Oracle 的监听配置,看似简单,其实却隐藏着很多知识,这部分知识还是需要好好摸索学习的。

===========================================================

欢迎关注我视频公众号和微信公众号,后面将为大家带来更多精彩内容


原文作者:尚雷的驿站;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
现供职于某上市互联网公司担任DBA,荣获 PG ACE称号,拥有 Oracle OCM、AWS等及国产数据库等产品认证。喜欢技术分享,热爱交友,也热爱健身。

注册时间:2024-01-01

  • 博文量
    68
  • 访问量
    45434