sql >> データベース >  >> RDS >> Oracle

閉じるのに時間がかかりすぎる場合、接続プールから接続を強制的に閉じるにはどうすればよいですか?

    主な機能:

      String g_sid = "";
    

    スレッド1:

      String sql = ...;
      Connection conn = ...your connection func...;
    
      Statement stmt = conn.createStatement();
      ResultSet rset = stmt.executeQuery( "SELECT sid from v$mystat");
      if (rset.next()) g_sid = rset.getString("sid");
      rset.close();
      // now to the actual long-running SQL
      ResultSet rset = stmt.executeQuery( sql );
      // 
      stmt.close();
    

    スレッド2:

      String serialN = "";
      Connection conn = ...your admin connection func...
    
      Statement stmt = conn.createStatement();
      ResultSet rset = stmt.executeQuery( "SELECT serial# serialN from v$session where sid=" + g_sid );
      if (rset.next()) {
        serialN = rset.getString("serialN"); 
        stmt.execute("alter system kill session '" + g_sid + "," + serialN + "'");
      }
      stmt.close();
      // probably keep the admin connection open for further maintenance
      //
    


    1. PostgreSQL8.3以降のTPC-Hのパフォーマンス

    2. PostgresSQL10でパーティションテーブルをバックアップする方法

    3. (サブクエリ)にない場合、大きなテーブルの場合は非常に低速です

    4. myisamテーブルの代替の外部キー?