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;
}
沒有留言:
張貼留言