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

Oracle 19C RAC 备库conn 链接报ORA-01017: invalid username/password; logon denied问题分析处理

原创 尚雷 2022-11-28
2938

一、现象描述

为减轻当前一套19C RAC主库负载压力,另搭建了一套 RAC备库,目前和主库实时同步,计划将一些实时性要求比较低的应用迁移到该RAC备库。当前应用并不是直接连接生产库,而是通过一个中间库使用dblink来连接生产库的。于是修改中间库的dblink,将IP修改为19C RAC备库对应IP,但在测试dblink时发现不通,报了如下错误:

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
并将该测试用户在主库进行了测试,也是可以正常连接的,那问题出现在哪呢?

二、问题分析

主库能登陆,备库无法登陆,究竟是哪地方出现问题呢,是我当时部署DG的时候有什么误操作和遗漏的操作吗,回想下,和之前的部署没什么区别啊。
RAC备库这样,那这套RAC生产库的单机备库是否也这样呢,于是,登陆该生产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 备库$ORACLE_HOME/network/admin目录下,创建了sqlnet.ora文件并设置了同样内容,此时在该RAC备库测试 conn 也能正常连接了。
在那中间库重新测试了连接,也可以正常连接RAC备库了。
image.png

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

文章被以下合辑收录

评论