症状:系统运行了一段时间报错:java.sql.SQLException: ORA-01000: 超出打开游标的最大数
step 1:
查看数据库当前的游标数配置slqplus:show parameter open_cursors;
step 2:
查看游标使用情况:
select o.sid, osuser, machine, count(*) num_curs
from v$open_cursor o, v$session s
where user_name = 'user' and o.sid=s.sid
group by o.sid, osuser, machine
order by num_curs desc;
此处的user_name='user'中,user代表占用数据库资源的数据库用户名.
step 3:
查看游标执行的sql情况:
select o.sid q.sql_text
from v$open_cursor o, v$sql q
where q.hash_value=o.hash_value and o.sid = 123;
step 4:
根据游标占用情况分析访问数据库的程序在资源释放上是否正常,如果程序释放资源没有问题,则加大游标数。
alter system set open_cursors=2000 scope=both;
补充:在java代码中,执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是,如果你的createStatement和prepareStatement是在一个循环里面的话,就会非常容易出现这个问题。因为游标一直在不停的打开,而且没有关闭。
一般来说,我们在写Java代码的时候,createStatement和prepareStatement都应该要放在循环外面,而且使用了这些Statment后,及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statment关闭,调用close()方法。
相关推荐
超出打开游标的最大数的原因和解决方案 在 Oracle 数据库中,游标(cursor)是一种临时工作区,用于存储查询结果。每个会话可以打开多个游标,但存在一个限制,即 OPEN_CURSORS 参数指定的最大游标数。如果应用程序...
解决疑难问题,针对偏僻的问题:oracle超出打开游标的最大数的原因和解决方案,希望能对大家操作数据库有用处
- 记录异常详细信息以便后续分析和修复。 以上是关于Oracle数据库中常见的异常代码及其含义和解决方法的详细介绍。在开发过程中,了解这些异常对于提高程序的健壮性和可维护性非常重要。希望本文能帮助开发者更好地...
当程序在处理大量数据或者进行复杂操作时,可能会遇到“超出打开游标最大数”的错误,即ORA-01000异常。这个错误通常表明数据库当前打开的游标数量超过了`open_cursors`参数所设定的最大值。 首先,我们需要理解为...
1. ORA-01000: 达到最大打开游标数 - 表示应用程序打开了过多的游标,超过了系统允许的最大值。解决方法是优化代码,关闭不再使用的游标,或者增加`OPEN_CURSORS`初始化参数的值。 2. ORA-01422: 指定的行数超出...
12. **ORA-12012** 和 **ORA-12013**: 都与游标有关,可能是尝试访问未打开或未定义的游标。 13. **ORA-12014**: 指定的列无法识别或不存在,可能是在查询语句中引用了错误的列名。 14. **ORA-12015**: 指示连接...
- 举例:索引值不在合法范围内,如负数或超出最大限制。 16. **SYS_INVALID_ROWID (ORA-01410)** - 描述:字符到ROWID的转换失败,因为字符不代表有效的ROWID。 - 举例:尝试将无效的ROWID字符串转换为ROWID。 ...
- 分析并解决长时间运行的查询或事务问题。 #### ORA-0061:TRANSACTION_BACKED_OUT - **异常说明**:事务回滚。 - **常见原因**: - 事务执行过程中发生错误。 - 执行事务时资源不足。 - **解决方案**: - ...
当一个会话达到其资源限制时,如最大打开游标数、最大连接时间等,会抛出此错误。这通常意味着会话配置需要调整,或者系统资源不足。 #### ORA-00021: Instance recovery in progress 在实例恢复过程中执行操作时...
### Oracle 错误合集详解 ...针对每个错误码,了解其含义可以帮助开发者和数据库管理员快速定位问题所在,并采取适当的措施来解决这些问题。在实际应用中,还应该结合具体的错误信息和上下文来进一步诊断问题。
6. `Invalid_cursor` (ora-01001):在非法游标上执行操作,如未打开游标即尝试提取数据。 7. `Invalid_number` (ora-01722):尝试将非法字符串转换为数字。 8. `No_data_found` (ora-01403):SELECT INTO 未返回任何...
6. **CURSOR_ALREADY_OPEN** (ORA-06511): 如果试图重新打开已经打开的游标,就会出现这个错误。确保在关闭游标后才能再次打开。 7. **DUP_VAL_ON_INDEX** (ORA-00001): 当在具有唯一约束的索引列上插入重复值时,...
有效的异常处理机制不仅可以帮助开发者更好地控制程序流程,还能够在出现问题时提供更详尽的错误信息,从而快速定位并解决问题。 #### 二、异常处理分类 根据ORACLE提供的异常处理机制,我们可以将异常分为三类: ...
`INVALID_CURSOR`(ORA-01001)异常会在试图使用无效的游标时发生,比如游标已经被关闭或者从未被正确打开过。 **解决方法:** 1. **确保游标正确打开**:在执行任何读取或写入操作前,确认游标是有效的且处于打开...
- **异常描述**:通常表示PL/SQL内部问题,需重装数据字典视图和PL/SQL包解决。 - **错误代码**:ORA-06501 - **场景示例**:当PL/SQL引擎检测到内部错误,可能是由于系统配置不当或软件缺陷引起,此时需检查并修复...
说明: 与 NLS_TIME_TZ_FORMAT 相似, 其中的一对值指定 TIMESTAMP 数据类型的默认值, 该类型除存储 YEAR, MONTH 和 DAY 日期值, HOUR, MINUTE 和 SECOND 时间值, 还存储 TIMEZONE_HOUR 和 TIMEZONE_MINUTE。...