|
在之前的一次讨论中,有同行指出V$OPEN_CURSOR中列出的不是OPEN CURSOR而是SESSION CACHED CURSOR,原因是在一次ORA-01000(maximum open cursors exceeded)事故中他没有从V$OPEN_CURSOR中找到大量的打开游标。对于这个问题,我们可以利用JAVA程序做一个演示来说明,以下为JAVA代码:
package javaapplication2;
import java.util.logging.Level;
import java.util.logging.Logger;
import oracle.jdbc.*;
import java.sql.*;
public class Main {
public static void main(String[] args) throws SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(Exception e ){}
Connection cnn1=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:G11R2", "maclean", "maclean");
// Connection m[]=new Connection[2000];
Connection myconn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:G11R2", "maclean", "maclean");
Statement stat1=myconn.createStatement();
ResultSet rst1=stat1.executeQuery("select * from v$version");
while(rst1.next())
{
System.out.println(rst1.getString(1));
}
rst1=stat1.executeQuery("select distinct sid from v$mystat");
while (rst1.next()){
System.out.println("MY SID IS "+rst1.getString(1));
}
PreparedStatement s[]=new PreparedStatement[2000];
PreparedStatement p;
//ResultSet r[]=new ResultSet[2000];
int i=0;
while(i |
|