open cursor too much error
今天遇到一个错误ORA-01000: maximum open cursors exceeded。 客户想增加 DB 的open_cursor这个参数。 但是我看了下,她的程序要打开几千个cursor, 这样要把open_cursor设置成几千显然是不现实的。应该查一下为什么程序会打开几千个cursor。
首先,我用如下语句看了下是哪一个session open cursor最多。
select o.sid, osuser, machine, count(*) num_curs from v$open_cursor o, v$session s where user_name = 'test' and o.sid=s.sid group by o.sid, osuser, machine order by num_curs desc;
在获取了session 之后用下面的SQL看了下该session中open_cursor都是些什么语句。
select O.SADDR , o.sid, osuser, machine, o.SQL_ID, o.SQL_TEXT from v$open_cursor o, v$session s where user_name = 'MPCIAPP' and o.sid=s.sid and o.sid=308;
SID OSUSER MACHINE SQL_ID SQL_TEXT
---------- ------------ -------------------- --------------------------------------- ------------------------------------------------
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
293 payprod ct21upg drk0vwks4j3za SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
可以看到有很多
SELECT * FROM PS_CITIMESHEET WHERE STAFFN=:B1
这个语句。这是个绑定变量的语句,按理说不应该有这么多cursor,因为绑定变量应该是可以共享cursor的。所以我觉得既然没共享应该有很多child cursor才对,我决定去看看child_cursor。
select sql_id,sql_text,version_count from v$sqlarea where sql_text=
可是这个语句居然没有没有产生很多 child_cursor。 这就奇怪了,没有产生很多child, 在v$open_cursor中确又有那么多cursor,这是怎么回事呢? 只有一种可能,就是 java 代码在调用这个sql语句之后没有释放资源。 而客户坚持称java 代码释放资源了。 并且这个程序在新加坡的环境执行是好使的。
后来通过替换 ojdbc 解决了这个问题。 原来是本地的ojdbc版本不对。
总结
1. 注意ojdbc版本
2. 注意思路
open cursor too much error的更多相关文章
- [mongoDB]PyMongo Cursor Not Found Error
Python跑一个aggregate脚本,报错:pymongo.errors.CursorNotFound: Cursor not found, cursor id: 35411720832 搜了下原 ...
- http://www.mysqltutorial.org/python-mysql-query/
This tutorial shows you how to query data from a MySQL database in Python by using MySQL Connector/P ...
- MongoDB学习(2)—Node.js与MongoDB的基本连接示例
前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务,在test数据库中插入一条实例数据: db. ...
- 转载 C#中敏捷开发规范
转载原地址 http://www.cnblogs.com/weixing/archive/2012/03/05/2380492.html 1.命名规则和风格 Naming Conventions an ...
- 五子棋——C++
最近在学C++,这个是照葫芦画瓢的五子棋C++版- - 依赖SDL_PingGe_1.3,很多实用的函数,类我都封装成DLL了调用起来真是舒服啊.. 不过一方面要对DLL做测试,一方面要开发,一个人还 ...
- Python安装MySQLdb并连接MySQL数据库
当然了,前提是你已经安装了Python和MySQL.我的Python是2.6版本的. Python2.6的“Set”有点兼容性问题,自己照着改一下: http://sourceforge.net/fo ...
- Python学习笔记10-Python MysqlHelper ,MySql 辅助类
自己写了一个MySql辅助类,有需要的拿走: #--encoding:utf-8-- # import MySQLdb class MySQLHelper: myVersion=0.1 def __i ...
- Python封装的访问MySQL数据库的类及DEMO
# Filename:mysql_class.py # Author:Rain.Zen; Date: 2014-04-15 import MySQLdb class MyDb: '''初始化[类似于构 ...
- Node.js与MongoDB的基本连接示例
Node.js与MongoDB的基本连接示例 前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务 ...
随机推荐
- 牛客小白月赛15 C 表单 ( map 使用)
链接:https://ac.nowcoder.com/acm/contest/917/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- call( )、apply( )
call( )和apply( )都是用于改变函数执行时的上下文,唯一最大区别在于传入参数的形式不同. 这两个函数都是函数的方法,只有函数能够打点调用call().apply(),表示用指定的上下文执行 ...
- 【洛谷4933】大师(DP)
题目: 洛谷4933 分析: (自己瞎yy的DP方程竟然1A了,写篇博客庆祝一下) (以及特斯拉电塔是向Red Alert致敬吗233) 这里只讨论公差不小于\(0\)的情况,小于\(0\)的情况进行 ...
- 在下载jar包时,要有三个包,分别为使用的把class、查看文档的api、查看源代码的资源包
字节码包: spring-webmvc-4.1.6.RELEASE.jar 文档包: spring-webmvc-4.1.6.RELEASE-javadoc.jar 资源包: webmvc ...
- [转]Android杂谈--ListView之BaseAdapter的使用
本文转自:http://blog.csdn.net/tianshuguang/article/details/7344315 话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapte ...
- 6.10---springboot的配置
- Combox两级联动会经常出现的错误
例如: 当我们遇到这种情况:(下拉框的隐藏值和显示值皆为实体类进行绑定值时)下拉框的隐藏值并不能成功获取到. 我们就可以使用下面 的方案来解决 ok ,成功获取到隐藏值. 还有一个,附加解决方案:
- Laravel5.1学习笔记15 数据库1 数据库使用入门
简介 运行原生SQL查询 监听查询事件 数据库事务 使用多数据库连接 简介 Laravel makes connecting with databases and running queries e ...
- java heap 异常
近期,项目每运行一周之后就会堆异常, java.lang.OutOfMemoryError: Java heap space,导致应用中断. 解决办法:将堆内存修改大一点. 从性能优化工具中可以看到修 ...
- [ SHOI 2001 ] 化工厂装箱员
\(\\\) \(Description\) 传送带上按顺序传过来\(N\)个物品,一个有\(A,B,C\)三类. 每次装箱员手里只能至多拿十个,然后将手中三类物品中的一类装箱,才能接着拿或接着装箱, ...