java里最长的异常_java程序异常,竟然是oracle最大链接数的问题!

最近测试的linux+oracle的报表很不顺利,这两天执行java数据分析程序,常常莫名其妙地报IO异常,错误信息如下

org.springframework.jdbc.CannotGetJdbcConnectionException: Could

not get JDBC Connection; nested exception is

org.apache.commons.dbcp.SQLNestedException: Cannot create

PoolableConnectionFactory (Io 异常: Connection

refused(DESCRIPTION=(TMP=)(VSNNUM=169870080)(ERR=12519)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4)))))

org.apache.commons.dbcp.SQLNestedException: Cannot create

PoolableConnectionFactory (Io 异常: Connection

refused(DESCRIPTION=(TMP=)(VSNNUM=169870080)(ERR=12519)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4)))))

at

org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855)

at

org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)

at

org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)

at

org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)

at

org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:268)

at

org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:413)

at

clo.game.analysedata.CloBusinessAnalyse.abandonAwardInfo(CloBusinessAnalyse.java:323)

at

clo.game.analysedata.CloBusinessAnalyse.invokeAllFunction(CloBusinessAnalyse.java:565)

at

clo.window.MainApplication.programeExecute(MainApplication.java:325)

at clo.window.Consumer.run(MainApplication.java:501)

at java.lang.Thread.run(Thread.java:595)

开始怀疑程序有问题,但这个12519的错误貌似就是oracle报出来的,结果程序员检查了程序,发现程序的确没有错误!但这个问题,之前从来没有遇到过,很是郁闷了两天。

今天上网搜了一下解决方法,从众多解决方法中,终于成功找到了这种解决方法:

报表数据库创建reportdb实例时,基本选用默认的选项,而数据库实例默认的session数是150个,由于分析程序使用多线程分析,因此导致oracle数据库的默认链接数不够,以下是解决的方法:

步骤一:

sqlplus / as

sysdba;

select * from sys.v_$session sysdba用户登录报表数据库后,执行这个sql查看了一下当前的用户连接数。在执行分析程序的时候,数据库的session数基本保持在102左右,还没有超出oracle数据库的默认150的链接数,为了排除问题,我们决定修改一下oracle的init.ora文件的配置,将链接数调大。

步骤二: 在oracle的安装目录下:/oracle/oracle/admin/pfile下有一个init.ora.721200811319的文件,我们来分析一下这个文件的内容

##############################################################################

# Copyright (c) 1991, 2001, 2002 by Oracle Corporation

##############################################################################

###########################################

# Cache and I/O

###########################################

db_block_size=8192

db_file_multiblock_read_count=16

###########################################

# Cursors and Library Cache

###########################################

open_cursors=300

###########################################

# Database Identification

###########################################

db_domain=""

db_name=reportdb

###########################################

# Diagnostics and Statistics

###########################################

background_dump_dest=/oracle/oracle/admin/reportdb/bdump

core_dump_dest=/oracle/oracle/admin/reportdb/cdump

user_dump_dest=/oracle/oracle/admin/reportdb/udump

###########################################

# File Configuration

###########################################

control_files=("/oracle/oracle/oradata/reportdb/control01.ctl",

"/oracle/oracle/oradata/reportdb/control02.ctl",

"/oracle/oracle/oradata/reportdb/control03.ctl")

###########################################

# Job Queues

###########################################

job_queue_processes=10

###########################################

# Miscellaneous

###########################################

compatible=10.2.0.1.0###########################################

# Processes and Sessions

###########################################

processes=150

###########################################

# SGA Memory

###########################################

sga_target=1209008128

###########################################

# Security and Auditing

###########################################

audit_file_dest=/oracle/oracle/admin/reportdb/adump

remote_login_passwordfile=EXCLUSIVE

###########################################

# Shared Server

###########################################

dispatchers="(PROTOCOL=TCP) (SERVICE=reportdbXDB)"

###########################################

# Sort, Hash Joins, Bitmap Indexes

###########################################

pga_aggregate_target=402653184

###########################################

# System Managed Undo and Rollback Segments

###########################################

undo_management=AUTO

undo_tablespace=UNDOTBS1

参考网上的信息,是直接把这个文件中的processes=150,修改成 想要的数字,但文章还提示“注意:用户最大连接数跟你的硬件配置有关,所以要谨慎”,看到这个提示,俺们没敢这么下手,(所以俺们也不建议大家这么干,风险忒大。)而是通过文章中的介绍另一种方法,也就是通过SQLPLUS运行语句执行的,执行方法如下:

##用sysdba用户登录报表数据库

sqlplus / as

sysdba;

##将链接数修改为300

alter system set

processes=300 scope=spfile;

##执行后,需要重启数据库方能使设置生效

shutdown

immediate;

startup; 经过这一番折腾,俺再运行分析程序,果然没有再报错哈哈! (其实写了这么多,有用的就是蓝色字的部分

a4c26d1e5885305701be709a3d33442f.png)

当然网上还介绍了一种修改的方式:

就是在 Oracle

企业管理器例程-->会话,可以查看当前连接到数据库的详细信息

俺还是觉得SQLPLUS的方法最实用

a4c26d1e5885305701be709a3d33442f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值