前段时间公司的产品总一天内总是出现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>
到目前为止已经可以通过两种途径定位连接数问题了,借助以上内容最终定位了公司的问题~。
文章参考链接如下:
分享到:
相关推荐
"JDBC连接Oracle数据库常见问题及解决方法" 本文将对 JDBC 连接 Oracle 数据库常见问题进行总结和解决方法的介绍。以下是针对不同问题的解决方案: 1. Jbuilder 正确连接 Oracle 数据库需要注意的几个问题 在使用...
标题提到的"可用于Oracle19c的JDBC驱动"指的是Oracle公司为19c版本数据库提供的Java Database Connectivity (JDBC)驱动程序,它允许Java应用程序通过网络连接到Oracle数据库,执行SQL语句、处理结果集等操作。...
Oracle JDBC驱动包是用于Java应用程序与Oracle数据库之间通信的重要组件。它遵循Java Database Connectivity (JDBC) API标准,使得开发者可以使用Java语言高效地访问Oracle数据库。本文将深入探讨Oracle JDBC驱动的...
Oracle数据库启动时,会将数据库实例注册到监听器(Listener),监听器负责接收连接请求并转发给相应的数据库服务进程。TNSPING工具用于检查监听器是否能解析数据库服务名,而LSNRCTL STATUS则显示注册到监听器的...
总结来说,Oracle数据库的体系架构是一个高度协调的系统,通过实例和内存结构优化了数据的访问和管理,同时通过各种后台进程和组件保证了数据的完整性和可用性。理解这些核心概念对于有效管理和优化Oracle数据库至关...
总结起来,JDBC驱动 for Oracle9i 9.2.0.1是Java开发者与Oracle数据库交互的重要桥梁,提供了多种类型的驱动以适应不同的应用场景。了解和掌握如何正确使用这些驱动,以及它们的优缺点,对优化Java数据库应用的性能...
"基于跨平台的Oracle数据库连接研究" 本文对基于跨平台的Oracle数据库连接进行了综合和详细的分析和研究。首先讨论了连接的各种方式及Java实现,分析了其优缺点。针对连接池的缺点提出了采用多连接池、多进程、多...
通过JDBC,你可以连接到Oracle数据库,执行SQL语句,处理结果集等。首先,你需要加载Oracle的JDBC驱动,然后建立数据库连接,接着可以使用`Statement`或`PreparedStatement`对象来执行SQL,最后关闭连接。这是一个...
"T1_oracle体系结构.ppt"将带你了解Oracle数据库的整体架构,包括内存结构(如SGA和PGA)、进程模型、数据存储结构(如数据块、段、表空间)以及数据库实例和服务器进程的工作原理。理解这些基础知识对于诊断性能...
6.2 Oracle高可用性连接组件 6.2.1 SCAN别名 6.2.2 SCAN监听器 6.2.3 SCAN解析 6.2.4 SCAN兼容性配置 6.2.5动态注册与负载均衡 6.2.6 SCAN配置信息 6.2.7 SCAN VIP与节点VIP 6.2.8 CLUSTER_INTERCONNECTS...
- `sbzytst188.Url`: 连接Oracle数据库的URL,格式为`jdbc:oracle:thin:@<IP>:<Port>:<ServiceName>`,其中`<IP>`是Oracle数据库服务器的IP地址,`<Port>`是Oracle监听器的端口,`<ServiceName>`是服务名。...
对于开发人员来说,OracleClient-18C提供了ODBC和JDBC驱动程序,使Java、C++、Python等语言的应用程序能够连接到Oracle数据库。同时,它还支持ODPI-C,这是一个开源的C接口,用于构建高性能的Oracle数据库连接器。 ...
`oracle.jar`包含了Oracle数据库的JDBC驱动,它支持JDBC Type 2、3和4,允许Java应用与Oracle数据库进行连接,执行复杂的数据库操作,如数据查询、更新和事务管理。 3. **SQL Server**:SQL Server是由微软开发的...
使用PB9开发的程序可以利用ODBC(Open Database Connectivity)或JDBC(Java Database Connectivity)连接到Oracle数据库,并通过SQL查询获取上述视图的信息。 "杀进程"操作在Oracle中通常涉及`ALTER SYSTEM KILL ...
Oracle数据库由入门到进阶 Oracle数据库由入门到进阶课程涵盖了Oracle数据库的安装、启动与关闭、用户数据的基本维护、利用网络访问数据库、数据的加载、导出、导入、性能优化概述等方面的知识点。下面是该课程的...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它在企业级数据存储、管理和分析中扮演着核心角色。"Oracle 数据库系统——管理与应用"涵盖了从基础理论到实践操作的广泛知识,旨在帮助用户深入...
Oracle数据库是一种广泛应用于全球500强企业的大型数据库管理系统,尤其在电力、保险、证券、政府、税务等行业以及知名公司如HP、IBM、东软、宝信等中占据主导地位。Oracle在通信行业中的影响力也十分显著,全球20家...
下面就来具体讨论如何在 Oracle 8x 环境下实现用户进程的自动监控及其对超过一定空闲时间连接的处理办法。 一、识别系统中超过一定空闲时间的连接 要实现后台任务自动对超过一定时间空闲连接的处理,首先第一步...
jdbcUrl=jdbc:oracle:thin:@193.0.10.110:1521:CSHQ username=DBUSRBMS password=**** count=1 数据库连接 not sql runing 当前未执行SQL jdbcUrl=jdbc:oracle:thin:@193.0.10.110:1521:MG01 username=DBUSROMS1 ...