2009/06/02

[JDBC]顯示Open Cursor使用量

Oracle若statement和result沒有適時的關閉,則所佔用的open cursor的量會愈來愈多。oracle對於會分配設定值量的open cursor給每個使用者,一但使用者把open cursor用盡,則會出現ORA-01000: maximum open cursors exceeded的錯誤訊息。要檢視程式片段的statment或result沒有釋放掉,可以使用下列程式碼來確定忘記釋放open cursor資源的地方:

public static void getOpenCursors (Connection conn, String place) throws SQLException {
        System.out.print(place + "===> ");
        System.out.println("Open Cusrors are : ");
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery ("select count(*) from V$OPEN_CURSOR");
        
        while (rs.next()){
            System.out.println(rs.getString(1));
        }
        rs.close();
        rs = null;
        stmt.close();
        stmt = null;
    }

沒有留言: