当前位置: 首页 > 知识库问答 >
问题:

Oracle打开游标ora-1000错误,“超过最大打开游标数。”[重复]

左丘成业
2023-03-14

我已经连接了Oracle数据库。现在我要面对

ORA-01000: maximum open cursors exceeded

我使用代码插入数据

public static void OracleJDBC(String Serial_Number, String Charged_MDN) {

     String dataInsertQuery = "insert into CDR_Huawei (Serial_Number, Charged_MDN) values ('" + Serial_Number + "', '" + Charged_MDN + "')";
     String dataSelectQuery = "select * from CDR_Huawei";
     Statement statement = null;

    try {
    statement = connection.createStatement();
    statement.execute(dataInsertQuery);
    //System.out.println("Data Inserted Successfully");

    } catch (SQLException e) {
            e.printStackTrace();
    }
   }

它只适用于前500条记录,然后我有错误Ora-1000。我总共有大约6000条记录。我发现一些主题说应该改变配置,但我不能改变配置。

有没有其他方法可以解决这个错误?

共有3个答案

万高轩
2023-03-14

一个额外的答案来引起人们对ppeterka评论的注意:

您真的应该在这里使用准备语句。原因是您目前正在向数据库发送6000个唯一的SQL插入语句。这些语句是唯一的,因为插入语句的值粘在您的语句文本中。数据库必须解析每个唯一的语句,并将其放入共享池中进行重用。但是它不会重用,因为它们是唯一的。

在绑定值的地方使用准备语句,您将只创建一个唯一的SQL插入语句,它只需要解析一次,不会使共享池混乱。您的数据库管理员会为此感谢您的。

戈嘉慕
2023-03-14

每次编写语句=connection.create语句()时都会生成新的语句对象

使用后关闭语句是很好的做法...

 statement.close(); after `statement.execute(dataInsertQuery);`

会解决你的问题。

鱼旺
2023-03-14

最后块中关闭语句。

try {
    statement = connection.createStatement();
    statement.execute(dataInsertQuery);
} catch (SQLException e) {
        e.printStackTrace();
} finally {
    if (statement != null) statement.close();
}
 类似资料:
  • 在Eclipse中,我遇到了这个错误:*错误ORA-01000:超过了最大打开游标数,我已经在块中关闭了连接,但我不知道为什么会出现这个错误,这是我的JAVA代码。请帮帮我!

  • 我得到一个ORA-01000 SQL异常。所以我有一些与之相关的疑问。 编辑1:6。使用弱/软引用语句对象是否有助于防止泄漏? 编辑2:1。有没有办法,我可以找到我的项目中所有缺失的“statement.close()”?我知道这不是内存泄漏。但是我需要找到一个符合垃圾收集条件的语句引用(在那里没有执行close())?有工具吗?还是我必须手动分析? 请帮我理解一下。

  • 问题内容: 我收到了ORA-01000 SQL异常。因此,我对此有一些疑问。 最大打开游标是否与JDBC连接的数量完全相关,还是与我们为单个连接创建的语句和结果集对象相关?(我们正在使用连接池) 有没有一种方法可以配置数据库中的语句/结果集对象的数量(如连接)? 是否建议在单线程环境中使用实例变量statement / resultset对象而不是方法local statement / resul

  • 我得到了ORA-0300:超出了最大打开游标数

  • 我们的应用程序连接到Oracle数据库,我们使用Spring提供的JDBCTemboard与数据库交互。根据Spring JDBCTemboard的留档,它确保它将关闭所有连接和游标。但显然我们得到了以下打开游标的异常。 ORA-01000:组织上超过了最大打开游标数。springframework。jdbc。支持AbstractFallbackSQLExceptionTranslator。在or

  • 本文向大家介绍如何在Oracle中显示打开的游标?,包括了如何在Oracle中显示打开的游标?的使用技巧和注意事项,需要的朋友参考一下 问题: 您要在Oracle中显示打开的游标。 解 我们可以查询数据字典以确定每个会话打开的游标数。与“ V $OPEN_CURSOR”相比,“ V $SESSION”提供的当前打开的游标数更准确。 示例 OPEN_CURSORS初始化参数确定会话可以打开的最大游标