相关疑难解决方法(0)

java.sql.SQLException: - ORA-01000:超出最大打开游标数

我收到了ORA-01000 SQL异常.所以我有一些与之相关的问题.

  1. 最大打开游标是否与JDBC连接数完全相关,或者它们是否与我们为单个连接创建的语句和结果集对象相关?(我们正在使用连接池)
  2. 有没有办法配置数据库中的语句/结果集对象的数量(如连接)?
  3. 是否建议在单线程环境中使用实例变量statement/resultset对象而不是方法local statement/resultset对象?
  4. 在循环中执行预准备语句会导致此问题吗?(当然,我本可以使用sqlBatch)注意:一旦循环结束,pStmt就会关闭.

    { //method try starts  
      String sql = "INSERT into TblName (col1, col2) VALUES(?, ?)";
      pStmt = obj.getConnection().prepareStatement(sql);
      pStmt.setLong(1, subscriberID);
      for (String language : additionalLangs) {
        pStmt.setInt(2, Integer.parseInt(language));
        pStmt.execute();
      }
    } //method/try ends
    
    { //finally starts
       pStmt.close()
    } //finally ends 
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果在单个连接对象上多次调用conn.createStatement()和conn.prepareStatement(sql)会发生什么?

Edit1: 6.使用Weak/Soft引用语句对象是否有助于防止泄漏?

Edit2: 1.有什么办法,我可以在项目中找到所有缺少的"statement.close()"吗?我知道这不是内存泄漏.但我需要找一个符合垃圾收集条件的语句引用(不执行close())?有什么工具可用?或者我必须手动分析它?

请帮我理解.

在Oracle DB中查找已打开的用户名-VELU的游标

转到ORALCE机器并以sysdba启动sqlplus.

[oracle@db01 ~]$ sqlplus / as sysdba 
Run Code Online (Sandbox Code Playgroud)

然后跑

SELECT   A.VALUE,
    S.USERNAME,
    S.SID,
    S.SERIAL#
  FROM V$SESSTAT A,
    V$STATNAME B,
    V$SESSION S
  WHERE A.STATISTIC# = B.STATISTIC#
    AND …
Run Code Online (Sandbox Code Playgroud)

java jdbc

110
推荐指数
3
解决办法
31万
查看次数

标签 统计

java ×1

jdbc ×1