`

关于ORACLE游标的问题(ORA-01000 maximum open cursors exceeded)

 
阅读更多

 这几天准备项目上线前发现问题,ORA-01000 maximum open cursors exceeded 而且好几个功能出现类似问题

在网上也查了资料,都说是游标越界了 建议增大游标,后来架构师检查了下代码,原来是preparedStatement没有关闭,汗!

 

Session hibernateSession = (Session) Component.getInstance("hibernateSession");
        String hql = "select current_timestamp from dual";
        Connection conn = hibernateSession.connection();
        try {
            PreparedStatement pstmt = conn.prepareStatement(hql);
            ResultSet rs = pstmt.executeQuery();
            if (rs.next()) {
                Timestamp time = rs.getTimestamp("current_timestamp");
                return time;
            }
        } catch (SQLException e) {   
        }
        return new Timestamp(System.currentTimeMillis());

此方法没有关闭 pstmt 、rs、conn

 

使用了框架之后,此类问题很难发现,同时也是非常低级的问题   以后一定要注意,手动取得连接、创建PreparedStatement 获得 ResultSet  记得一定关闭资源!

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    超出打开游标的最大数的原因和解决方案

    如果应用程序打开的游标数超过这个限制,会引发 ORA-01000: maximum open cursors exceeded 异常。下面将探讨超出打开游标的最大数的原因和解决方案。 原因 应用程序打开的游标数超过 OPEN_CURSORS 参数指定的最大...

    oracle+ora-各种常见java.sq

    - `java.sql.SQLException: ORA-01000: maximum open cursors exceeded`: 当打开的游标超过数据库允许的最大值时会出现此错误。检查代码中游标的关闭情况,避免资源泄漏。 8. **锁冲突** - `java.sql....

    ORACLE技术文档\oracle cursor 游标.doc

    当一个应用程序尝试打开过多的游标时,可能会遇到`ORA-01000: maximum open cursors exceeded`错误,这表明单个用户尝试打开的游标数量超过了系统允许的最大值。 `ORA-01000`错误的主要原因通常是程序设计不当,...

    oracle超出打开游标的最大数的原因和解决方案

    解决疑难问题,针对偏僻的问题:oracle超出打开游标的最大数的原因和解决方案,希望能对大家操作数据库有用处

    Oracle游标使用案例大全

    Oracle游标是数据库编程中非常重要的一个概念,主要用于处理SQL查询的结果集。游标允许我们按行处理数据,逐条读取结果集,而不仅仅是一次性获取所有数据。在Oracle数据库中,游标对于复杂的事务处理、动态SQL以及...

    ORACLE 游标使用示例

    在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...

    Oracle游标使用大全

    ### Oracle游标使用详解 #### 一、Oracle游标简介 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集。它允许用户通过PL/SQL编程语言逐行访问和处理查询返回的数据记录。游标可以是显式定义的(即在...

    Oracle 数据库常见问题诊断方法

    ##### 1.2 ORA-01000 - **特征**: - 达到了会话允许的最大游标数。 - **原因**: - 当一个会话开启的游标数超过了系统设定的限制值。 - **措施**: - 调整初始化参数文件 `INIT<SID>.ORA` 中的 `OPEN_CURSORS` ...

    Oracle 游标使用大全

    这篇文档《Oracle 游标使用大全》应该涵盖了关于Oracle游标的各种使用方法和最佳实践。 1. **游标的定义与类型** - 游标(Cursor)是数据库系统中一个概念,用于跟踪查询结果集中的当前位置。 - Oracle游标有两种...

    Oracle入门--Oracle游标使用

    Oracle游标是PL/SQL编程中的重要组成部分,主要用于处理单行或多行查询结果。游标允许程序员逐行处理查询结果,而不是一次性加载所有数据。在Oracle中,游标分为显式游标和隐式游标。 1. **隐式游标**:在PL/SQL中...

    Oracle出现超出打开游标最大数的解决方法

    当程序在处理大量数据或者进行复杂操作时,可能会遇到“超出打开游标最大数”的错误,即ORA-01000异常。这个错误通常表明数据库当前打开的游标数量超过了`open_cursors`参数所设定的最大值。 首先,我们需要理解为...

    oracle 游标使用大全

    Oracle 游标使用大全 Oracle 游标是 PL/SQL 中的一种重要的数据访问机制,通过游标,可以高效地访问和处理数据库中的数据。在本文中,我们将对 Oracle 游标的使用进行详细的介绍,包括游标的基本概念、游标的类型、...

    oracle游标优化

    - `OPEN_CURSORS`:设置Oracle实例可以打开的最大游标数量。可以通过以下命令查看当前值: ``` SQL> SHOW PARAMETER OPEN_CURSORS; ``` - 如果需要增加这个值,可以使用以下命令: ``` SQL> ALTER SYSTEM SET...

    oracle游标使用大全

    Oracle 游标是PL/SQL编程中不可或缺的一部分,它们允许程序员逐行处理查询结果,而不仅仅是获取单一数据点。在Oracle数据库中,游标主要用于在循环或其他控制结构中操作多行数据,使得处理复杂的数据操作变得更为...

    Oracle数据库常见问题诊断-常见错误篇

    - **ORA-01000:** 当达到 `INIT.ORA` 文件中定义的最大打开游标数 (`OPEN_CURSORS`) 时,会出现此错误。 **解决办法:** - 增加 `INIT.ORA` 文件中的 `OPEN_CURSORS` 值,例如将其设为 200 或更高。 - 如果应用...

    非常详细的Oracle游标整理

    Oracle游标是数据库编程中非常重要的一个概念,主要用于处理SQL查询的结果集。游标允许我们按需逐行处理数据,而不是一次性加载所有结果。这里详细介绍了Oracle中的三种游标类型:隐式游标、显式游标和REF游标。 1....

    oracle游标学习资料

    Oracle游标是数据库编程中非常重要的一个概念,它允许开发者逐行处理查询结果集,而不仅仅是一次性处理所有数据。在Oracle中,游标分为隐式游标和显式游标。 **一、游标简介** 游标的核心功能是提供一种方式来遍历...

    Oracle游标使用方法及语法大全

    Oracle 游标使用方法及语法大全 Oracle 游标是 PL/SQL 程序中的一种重要组件,用于处理查询结果集。游标可以分为隐式游标和显式游标两种,隐式游标由 PL/SQL 管理,隐式游标打开时查询开始,查询结束时隐式游标自动...

    oracle游标使用大全1.txt

    ### Oracle游标使用详解 #### 一、Oracle游标简介 在Oracle数据库中,游标是一种用于处理查询结果集的强大工具。它允许用户通过逐行访问数据来执行复杂的操作,如更新、删除或插入记录等。游标可以分为显式游标和...

Global site tag (gtag.js) - Google Analytics