如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

 

症状

下面的SQL查询在SQL * Plus上执行,但当执行通过Java应用程序使用JDBC thin driver连接到数据库时失败。 select decode(status, 'STARTED', 0, 'MOUNTED', 1, 'OPEN', 2, 3) as dbstatus from V$INSTANCE; 应用程序收到的错误为: ORA-00604: 错误发生在递归SQL level 1 ORA-01219: 数据库没有打开:只允许在固定表/视图上查询 该问题只有当数据库处于安装状态时才会发生。

原因

当数据库处于安装状态时,只有SYSDBA 连接被允许。在这种情况下,Java应用程序用户具有管理员权限,但不具有SYSDBA权限,因此出现上述失败消息。

解决方案

当数据库安装时,如果你的应用程序需要执行上述类型的SQL查询,请确保您有访问数据库的SYSDBA权限。 SYSDBA可通过使用一个Bequeath JDBC/OCI 连接来实现。   使用SYSDBA 、JDBC /thin driver无法连接。 /** Example of bequeath connection **/ import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.*; // create an OracleDataSource instance OracleDataSource ods = new OracleDataSource(); // set neccessary properties java.util.Properties prop = new java.util.Properties(); prop.put("user", "sys"); prop.put("password", "sys"); prop.put("internal_logon", "sysdba"); ods.setConnectionProperties(prop); // the url for bequeath connection String url = "jdbc:oracle:oci:@"; ods.setURL(url); // retrieve the connection Connection conn = ods.getConnection(); ...