Oracle Developer Suite 10g连接Oracle XE 18c遇TNS及认证协议错误
Oracle Developer Suite 10g 连接 Oracle XE 18c 问题排查与解决
问题背景
使用 Oracle Developer Suite 10g 的 Reports Builder 连接 Oracle Database XE 18c 时出现两次报错,环境中另有 Oracle 10g 企业版(服务与监听器未启动)。
现有配置
1. XE数据库的tnsnames.ora(路径:D:\app\product\18.0.0\dbhomeXE\NETWORK\ADMIN\tnsnames.ora)
LISTENER_XE = (ADDRESS = (PROTOCOL = TCP)(HOST = Eslam-PC)(PORT = 1521)) ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) )
2. 开发套件的tnsnames.ora(初始配置,路径:D:\DevSuiteHome_1\network\admin\tnsnames.ora)
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = Eslam-PC)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = PLSExtProc) ) )
报错记录
- 首次连接报错:
Unable to connect to the specified database.
TNS: could not resolve the connect identifier specified.
- 在开发套件
tnsnames.ora中添加XEPDB1配置后,再次连接报错:
"No matching authentication protocol."
添加的XEPDB1配置:
XEPDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Eslam-PC)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XEPDB1) ) )
解决方案
1. 修复认证协议不兼容问题
Oracle 18c 默认禁用了旧版本客户端(如10g)使用的认证协议,需修改XE数据库的sqlnet.ora文件:
- 找到文件路径:
D:\app\product\18.0.0\dbhomeXE\NETWORK\ADMIN\sqlnet.ora - 添加以下配置(若文件不存在则新建):
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
- 重启XE数据库的监听器服务(
OracleOraDB18Home1TNSListener)使配置生效。
2. 优化TNS配置避免解析问题
将开发套件tnsnames.ora中的XEPDB1配置里的HOST替换为localhost或本机IP,避免主机名解析故障:
XEPDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XEPDB1) ) )
3. 确认环境变量指向正确
检查系统环境变量TNS_ADMIN,确保其值为开发套件的tnsnames.ora路径:D:\DevSuiteHome_1\network\admin,避免客户端读取错误的TNS配置文件。
内容的提问来源于stack exchange,提问作者Eslam
相关产品推荐
相关产品推荐

