Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wymusić zamknięcie połączenia z puli połączeń, gdy zamknięcie zajmuje zbyt dużo czasu?

Główna funkcja:

  String g_sid = "";

Wątek 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();

Wątek 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdź, czy tabele są identyczne, używając SQL w Oracle

  2. Jaka jest różnica między słowem kluczowym join a słowem kluczowym join w Oracle sql?

  3. Brak klucza STOPKEY na partycję w planie Oracle dla stronicowania według lokalnego indeksu

  4. Dynamiczny parametr daty PL/SQL z zachowaną wartością czasu

  5. Tabela nie istnieje podczas korzystania z EF 6 i Oracle.ManagedDataAccess