Java Tomcat 8 JDBC和Oracle PDB连接问题
我有一个在Tomcat8上运行的Java8Web应用程序。我在server.xml文件中配置了一个JDBC连接,以连接到Oracle 12c容器数据库Java Tomcat 8 JDBC和Oracle PDB连接问题,java,oracle,tomcat,jdbc,Java,Oracle,Tomcat,Jdbc,我有一个在Tomcat8上运行的Java8Web应用程序。我在server.xml文件中配置了一个JDBC连接,以连接到Oracle 12c容器数据库 <Resource accessToUnderlyingConnectionAllowed="true" auth="Container" driverClassName="oracle.jdbc.OracleDriver" maxIdle="10" maxTo
<Resource accessToUnderlyingConnectionAllowed="true" auth="Container" driverClassName="oracle.jdbc.OracleDriver" maxIdle="10" maxTotal="25" maxWaitMillis="10000" name="jdbc/LOCALDB" type="javax.sql.DataSource" url="jdbc:oracle:thin:admin/admin123@localhost:1521/DBSVC"/>
尽管存在错误,SQLPlus和SQLDeveloper可以连接到服务和SID,因此连接肯定可以工作。本文()建议您在使用JDBC和在侦听器配置文件中使用以下属性时可能会看到此错误
USE_SID_AS_SERVICE_listener=on
不幸的是,这不适用于我,它只会将上述错误更改为以下错误:
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
lsnrctl状态的输出显示:
[oracle@bcc0fa014b84 ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 22-OCT-2020 11:50:45
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 22-OCT-2020 11:49:29
Uptime 0 days 0 hr. 1 min. 16 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/bcc0fa014b84/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=bcc0fa014b84)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/admin/DBX/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "DBX" has 1 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Service "DBXXDB" has 1 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Service "aeb6317d78400953e053020011ac120e" has 2 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Instance "DBX", status READY, has 2 handler(s) for this service...
Service "dbsvc" has 2 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Instance "DBX", status READY, has 2 handler(s) for this service...
The command completed successfully
数据库上的服务如下:
[oracle@bcc0fa014b84 ~]$ lsnrctl services
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 22-OCT-2020 11:54:31
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
Services Summary...
Service "DBX" has 1 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:1 refused:0 state:ready
LOCAL SERVER
Service "DBXXDB" has 1 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: bcc0fa014b84, pid: 89>
(ADDRESS=(PROTOCOL=tcp)(HOST=bcc0fa014b84)(PORT=36517))
Service "aeb6317d78400953e053020011ac120e" has 2 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:1 refused:0 state:ready
LOCAL SERVER
Instance "DBX", status READY, has 2 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: bcc0fa014b84, pid: 89>
(ADDRESS=(PROTOCOL=tcp)(HOST=bcc0fa014b84)(PORT=36517))
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
Service "dbsvc" has 2 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:1 refused:0 state:ready
LOCAL SERVER
Instance "DBX", status READY, has 2 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: bcc0fa014b84, pid: 89>
(ADDRESS=(PROTOCOL=tcp)(HOST=bcc0fa014b84)(PORT=36517))
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
The command completed successfully
[oracle@bcc0fa014b84~]$lsnrctl服务
Linux版LSNRCTL:12.2.0.1.0版-2020年10月22日11:54:31生产
版权所有(c)1991年,2016年,Oracle。版权所有。
连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
服务摘要。。。
服务“DBX”有1个实例。
实例“DBX”,状态为就绪,有1个用于此服务的处理程序。。。
处理人:
“专用”已建立:1已拒绝:0状态:就绪
本地服务器
服务“DBXXDB”有1个实例。
实例“DBX”,状态为就绪,有1个用于此服务的处理程序。。。
处理人:
“D000”已建立:0已拒绝:0当前:0最大值:1022状态:就绪
调度员
(地址=(协议=tcp)(主机=bcc0fa014b84)(端口=36517))
服务“aeb6317d78400953e053020011ac120e”有2个实例。
实例“DBX”,状态为就绪,有1个用于此服务的处理程序。。。
处理人:
“专用”已建立:1已拒绝:0状态:就绪
本地服务器
实例“DBX”,状态就绪,有2个用于此服务的处理程序。。。
处理人:
“D000”已建立:0已拒绝:0当前:0最大值:1022状态:就绪
调度员
(地址=(协议=tcp)(主机=bcc0fa014b84)(端口=36517))
“专用”已建立:0已拒绝:0状态:就绪
本地服务器
服务“dbsvc”有2个实例。
实例“DBX”,状态为就绪,有1个用于此服务的处理程序。。。
处理人:
“专用”已建立:1已拒绝:0状态:就绪
本地服务器
实例“DBX”,状态就绪,有2个用于此服务的处理程序。。。
处理人:
“D000”已建立:0已拒绝:0当前:0最大值:1022状态:就绪
调度员
(地址=(协议=tcp)(主机=bcc0fa014b84)(端口=36517))
“专用”已建立:0已拒绝:0状态:就绪
本地服务器
命令已成功完成
目前,我不明白为什么Tomcat不能连接到我的Oracle数据库。有人知道为什么会这样吗?我遗漏了什么吗?lsnrctl状态的输出是什么?更改为使用\u SID\u作为\u服务\u侦听器后创建了什么服务名称?您好!谢谢你回复我。更新了带有请求输出的帖子,但根据我对输出的理解,它显示监听器可以连接服务。我不确定添加USE_SID_as_service_listener后创建了什么服务。我不知道它创建了一个新的服务。您是否尝试过在JDBC URL中使用“127.0.0.1”而不是“localhost”?
[oracle@bcc0fa014b84 ~]$ lsnrctl services
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 22-OCT-2020 11:54:31
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
Services Summary...
Service "DBX" has 1 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:1 refused:0 state:ready
LOCAL SERVER
Service "DBXXDB" has 1 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: bcc0fa014b84, pid: 89>
(ADDRESS=(PROTOCOL=tcp)(HOST=bcc0fa014b84)(PORT=36517))
Service "aeb6317d78400953e053020011ac120e" has 2 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:1 refused:0 state:ready
LOCAL SERVER
Instance "DBX", status READY, has 2 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: bcc0fa014b84, pid: 89>
(ADDRESS=(PROTOCOL=tcp)(HOST=bcc0fa014b84)(PORT=36517))
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
Service "dbsvc" has 2 instance(s).
Instance "DBX", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:1 refused:0 state:ready
LOCAL SERVER
Instance "DBX", status READY, has 2 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: bcc0fa014b84, pid: 89>
(ADDRESS=(PROTOCOL=tcp)(HOST=bcc0fa014b84)(PORT=36517))
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
The command completed successfully