如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]
症状
下面的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();
…
Leave a Reply