oracle19C设置兼容低版本客户端

由于oracle11G 官方不在维护,现在很多客户都把数据库升级到oracle19C,新项目也是使用oracle19C数据库居多,默认情况下Oracle 8,Oracle 8i,Oracle 9i,Oracle 10g,Oracle 11g等 oracle数据库客户端是无法访问19C的,低版本客户端登录会提示协议不匹配之类。可以通过修改oracle19C数据库服务器的配置使这些低版本客户端不用升级情况下可以连接oralce19C。

我还是推荐客户端升级,比如安装oracle19C client之类,java也有oracle19C的jar,但是项目上历史遗留问题,不配置的话目前项目上常用的plsql9+oracle10g客户端组合无法连接19C,需要安装plsq11+oracle19C客户端组合,特别是PB程序基本配置的oracle9i,10G客户端,不好升级,所以记录下设置方法,方便项目上翻出来使用。

配置方法

首先需要找到sqlnet.ora文件的路径

查找方法1 tnsping 127.0.0.1:1521

[oracle@chendu oracle]$ tnsping 127.0.0.1:1521

TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 09-10月-2022 14:35:03

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

已使用的参数文件:
/opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora

已使用 HOSTNAME 适配器来解析别名
尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
OK (130 毫秒)

查找方法2,执行echo $ORACLE_HOME指令得到oracle安装目录

[oracle@chendu oracle]$ echo $ORACLE_HOME
/opt/oracle/product/19c/dbhome_1

在一级一级找下去,默认都是在network/admin/下

查找方法3 ,lsnrctl status指令查找到listener.ora的路径,和sqlnet.ora都在一个目录下

[oracle@chendu oracle]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 09-10月-2022 14:36:08

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=chendu)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for Linux: Version 19.0.0.0.0 - Production
启动日期                  30-9月 -2022 10:28:54
正常运行时间              9 天 4 小时 7 分 14 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
监听程序日志文件          /opt/oracle/diag/tnslsnr/chendu/listener/alert/log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=chendu)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=chendu)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/product/19c/dbhome_1/admin/ORCLCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW))
服务摘要..
服务 "ORCLCDB" 包含 1 个实例。
  实例 "ORCLCDB", 状态 READY, 包含此服务的 1 个处理程序...
服务 "ORCLCDBXDB" 包含 1 个实例。
  实例 "ORCLCDB", 状态 READY, 包含此服务的 1 个处理程序...
服务 "d9ca2de3d52b7f7ce055407811bbee18" 包含 1 个实例。
  实例 "ORCLCDB", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orclpdb1" 包含 1 个实例。
  实例 "ORCLCDB", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功

修改sqlnet.ora内容如下

如果已有sqlnet.ora文件直接把原文件备份,然后只配置下面内容即可,之前的内容不用保留, 如果没有sqlnet.ora文件,新建一个sqlnet.ora文件把下面内容复制上去即可


SQLNET.ALLOWED_LOGON_VERSION_SERVER 参数设置在连接到 Oracle 数据库实例时允许的最低身份验证协议

SQLNET.ALLOWED_LOGON_VERSION_CLIENT 参数设置对于客户端允许的以及在服务器充当客户端时和连接到 Oracle 数据库实例时允许的最低身份验证协议。

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

添加参数后新无需重启数据库或者监听,但是已有用户需要修改用户密码,否则登录会报错用户名或密码错误

可以在服务器用sqlplus / as sysdba 登录 修改其他用户密码

修改 system密码

用sqlplus / as sysdba登录

ALTER USER system IDENTIFIED BY xxxxx;