在我的项目中,我使用jdbc连接到多线程环境中的oracle 12c实例,之前我们有一个oracle 9i实例,我们使用ojdbc6,它工作得很好,但我们最近得到了这个oracle 12c实例,它在JDBC连接点给出了以下错误。
java.sql.SQLException:侦听器拒绝连接,错误如下: ORA-12519,TNS:找不到适当的服务处理程序
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:774)
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)所以我认为这可能是因为我们有较旧的驱动程序版本,所以我加入了ojdbc8,我在互联网上发现它与12兼容,但上面的错误仍然存在。我的JDK版本是1.8。
我非常感谢任何关于解决这个问题的意见。提前谢谢。
发布于 2017-07-10 15:38:32
希德。我认为bug是由于Oracle初始化参数设置问题造成的。请使用如下命令行:
SQL > SHOW the PARAMETER of the SESSION
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
session_cached_cursors integer 50
session_max_open_files integer 10
sessions integer 600
shared_server_sessions integer另一个命令行:
SQL> SHOW PARAMETER PROCESS
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 2
gcs_server_processes integer 2
global_txn_processes integer 1
job_queue_processes integer 1000
log_archive_max_processes integer 4
processes integer 150根据Oracle文档,会话和初始化参数的事务应从进程派生,根据进程的默认设置会话= 1.1 +5。
目前会话数设置为600,而进程的设置没有改变,仍然为150,导致连接到Oracle的用户会话太多,Oracle没有足够的后台进程来支持这些会话。
直接的解决方案是设置适当的过程。
https://stackoverflow.com/questions/45005976
复制相似问题