Email: service@parnassusdata.com 7 x 24 online support!

ORA-01219 When Connecting With JDBC Thin Driver

ORA-01219 When Connecting With JDBC Thin Driver

如果自己搞不定可以找诗檀软件专业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();