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

JDBC java与oracle数据库连接问题
import   java.sql.*;

public   class   TestJDBC   {

/**
  *   @param   args
  */
public   static   void   main(String[]   args)   {
//   TODO   Auto-generated   method   stub
try   {
Class.forName( "oracle.jdbc.driver.OracleDriver ");
Connection   conn   =   DriverManager.getConnection( "jdbc:oracle:thin:@127.0.0.1:1521:sys ", "sys ", "root ");
}   catch(SQLException   e)   {
e.printStackTrace();
}   catch   (ClassNotFoundException   e)   {
//   TODO   Auto-generated   catch   block
e.printStackTrace();
}
}

}


出错信息:
java.sql.SQLException:   ORA-28009:   connection   to   sys   should   be   as   sysdba   or   sysoper

at   oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at   oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:304)
at   oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:271)
at   oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:644)
at   oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:298)
at   oracle.jdbc.driver.PhysicalConnection. <init> (PhysicalConnection.java:343)
at   oracle.jdbc.driver.T4CConnection. <init> (T4CConnection.java:147)
at   oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31)
at   oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:545)
at   java.sql.DriverManager.getConnection(Unknown   Source)
at   java.sql.DriverManager.getConnection(Unknown   Source)
at   TestJDBC.main(TestJDBC.java:12)


------解决方案--------------------
告诉你不是数据库的DBA或者操作员,请检查你的用户名和密码!
------解决方案--------------------
如果在这里不能得到满意回答,请尝试到IT付费问答社区www.nlld.net提问
------解决方案--------------------
connection to sys should be as sysdba or sysoper
连接到SYS用户必须是 sysdba or sysoper
------解决方案--------------------
把 Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@127.0.0.1:1521:sys ", "sys ", "root ");
改成:
Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@127.0.0.1:1521:sys ", "sys ", "manager ");


------解决方案--------------------
以sys用户这个方法是不能连接到的,因为sys连接的时候必须是sysdba or sysoper,而这个方式是normal的
所以你可以用system用户,或者别的用户scott(必须先激活)等连接就可以了。

------解决方案--------------------
DriverManager.getConnection( "jdbc:oracle:thin:@127.0.0.1:1521:sys ", "sys/root as dba ", " ");

试试看

------解决方案--------------------
新建一个role.

CREATE ROLE TEST IDENTIFIED BY TEST ;

GRANT ALL PRIVILEGES ON TEST

DriverManager.getConnection( "jdbc:oracle:thin:@127.0.0.1:1521: "TEST ", "TEST ");
肯定就可以,normal方式连接;


------解决方案--------------------
用sys登录不好用,最好作其它的用户身份,这也是比较安全的常用的,这个问题我在Hibernate中遇到过后来换了一个用户就可以了。