JDBC连接Oracle数据库定位进程总结

前段时间公司的产品总一天内总是出现Oracle达到最大连接数的问题,公司的产品是由3-4个独立的应用组成,所以具体是哪个应用引发的问题花费了一段时间诊断,具体如下。

 

一、先介绍一下运行环境

  •  HP-NUIX操作系统
  • 几个应用分别独立运行,采用将java.exe重命名的方式以区分不同进程。
  • 几个应用可能都使用连接池连接Oracle数据库,其中一个是使用的Apache-DBCP,一个由于使用了Hibernate使用了C3P0连接池(由我负责的那个应用),另外1-2两个应用不能确定是通过什么方式连接的Oracle数据库。

环境大致如上所述。

 

二、诊断定位过程

 

刚开始最直接的就是使用 netstat 命令查看端口连接,想查看到底是哪个进程的连接数过大没有控制住,但是发现查看结果不能定位到PID。于是Google HP-UNIX定位PID的命令,Google的最终结果见我总结的 HP-UNIX 查看端口号和进程的对应关系 一文。但是等找到LSOF命令后连接数又正常了~~~。

 

后来就想能不能从Oracle上查到一些历史记录反定位进程,先后查到了v$session、v$process视图等其中v$process视图中有PID字段,试的查了一下好像并不是我想要的。但是发现在v$session视图中有一个program字段查看了其中的值有“plsqldev.exe”等,发现通过JDBC连接的program的值全是“JDBC Thin Client”,由此我就想在JDBC连接的时候是不是能指定我的JDBC的连接在Oracle的v$session视图中的值。

 

在Google中敲入"Oracle JDBC v$session program"第一条就定位到了一片文章(参见 ),根据文章所述C3P0的配置如下:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  
     <property name="jdbcUrl" value="${jdbcUrl}"/>
     <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
     <property name="properties">
     	<map>
     		<entry key="user" value="${user}"/>
     		<entry key="password" value="${password}"/>
     		<entry key="v$session.program" value="${program}"/>
     	</map>
     </property> 
</bean>

 

到目前为止已经可以通过两种途径定位连接数问题了,借助以上内容最终定位了公司的问题~。

 

 

 

文章参考链接如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值