暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

因Oracle sqlnet.ora 配置问题导致无法通过dblink连接Oracle 19C RAC备库的问题及分析处理过程

原创 尚雷 2023-03-21
2272

一、引言

昨日我写了一篇关于项目组同事反馈一单机多实例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 denied
ORA-02063: preceding line from XXX.XXXX
复制

image.png

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

SQL> conn xxxx/xxxxx
ERROR:
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
复制

image.png

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

三、问题分析

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

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

SQL> conn xxx/xxxx
Connected.
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
复制

image.png

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

此时查看了下该单机备库的$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]$ ll
total 16
-rw-r--r-- 1 oracle oinstall  283 Jul 15 14:50 listener.ora
drwxr-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 2022
Version 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 2022
Version 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 - Production
Version 19.15.0.0.0
复制

image.png

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

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

image.png

四、问题处理

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

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

image.png

五、后记

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论