日期:2014-05-20  浏览次数:21205 次

connection as SYS should be as SYSDBA or SYSOPER
用户名 :sys 
密码: 我自己设定的
database:ORCL
connect as :SYSDBA
出现无法解析指定的连接标识符,怎么解决?
我是初次使用oracle。
------解决方案--------------------
需要特殊处理:

Properties conProps = new Properties();
conProps.put("user", userID);
conProps.put("password", userPassword);
conProps.put("internal_logon", "sysdba"); // 主要就是这行代码

Class.forName(driverClass).newInstance();
cn = DriverManager.getConnection(connectionURL, conProps);
------解决方案--------------------
你没有用过命令行下的sqlplus来连接Oracle数据库么?

sqlplus sys/internal as sysdba

因为sys用户全力非常高,所以在连接数据库时不能以普通用户身份连接,必须指定身份为 sysdba 

而在JDBC下,DriverManager.getConnection()一般只能传递 用户名和密码 这两个参数,无法写入“as sysdba” 这样的语法。

所以要用Properties来进行特殊处理。
------解决方案--------------------
忘了说明下,你标题中“connection as SYS should be as SYSDBA or SYSOPER”

得原因就是:“因为sys用户权利非常高,所以在连接数据库时不能以普通用户身份连接,必须指定身份为 sysdba”
------解决方案--------------------
又看了遍你的问题,发现似乎你的标题跟问题内容不符,麻烦你详细说下你的操作场景和完整错误信息。