如何在java中以SYS连接到Oracle?

如何在java中以SYS连接到Oracle?,java,database,oracle,sys,Java,Database,Oracle,Sys,我收到这个错误: java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER 如何修复?(我需要是SYS)。 谢谢。如果您试图像这样连接到数据库:connect SYS/您使用的语法不再有效(在Oracle 9i之后) 请尝试按以下方式连接: connect SYS/<password> as SYSDBA or connect SYS/<password> as

我收到这个错误:

java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
如何修复?(我需要是
SYS
)。
谢谢。

如果您试图像这样连接到数据库:
connect SYS/
您使用的语法不再有效(在Oracle 9i之后)

请尝试按以下方式连接:

connect SYS/<password> as SYSDBA or connect SYS/<password> as SYSOPER
connect SYS/as SYSDBA或connect SYS/as SYSOPER
此代码有效

String driverName = "oracle.jdbc.driver.OracleDriver";
Class.forName(driverName).newInstance();
String nameForConnect = "sys as sysdba";
String pass = "password";
String url = "jdbc:oracle:thin:@192.168.0.1:1521:ORCL";
Connection conn = DriverManager.getConnection(url, nameForConnect, pass);
试试这个:

import java.sql as jsql
import java.lang as lang
driver, url, user, passwd = (
"oracle.jdbc.driver.OracleDriver",
"jdbc:oracle:thin:@localhost:1234:xxx1",
"sys as sysdba",
"xxx1")
 lang.Class.forName(driver)
 c = jsql.DriverManager.getConnection(url,user,passwd)

您能够使用OracleDataSource对象吗

public class Database {    
    static OracleDataSource ods;    
    public static Connection openConnection(String URL, String user, String password,     String option) throws SQLException
    {
            Connection conn = null;
            Properties properties = new Properties();
            properties.put("user", user);
            properties.put("password", password);

            ods = new OracleDataSource();
            ods.setURL(URL);

            if(option != null)
            {
                properties.put("internal_logon", option);
            }

            ods.setConnectionProperties(properties);
            conn = ods.getConnection();

            return conn;
    }
}
这样称呼它:

Connection con = null;    
con = Database.openConnection("YourJDBCConnectionURL", "YourSYSUser", "YourSYSPassword", "sysdba");
已经有答案了

您正试图以
sys
的身份连接,但服务器允许

或者

sys as sysdba

只需将用户参数更改为上面的任一参数

user='sys as sysdba'


如果希望将数据库与“sys”以外的用户连接为“sysdba”,则必须将驱动程序从“thin”更改为“oci”才能成功连接

try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        String DB_URL="jdbc:oracle:oci:@localhost:1521:orcl";
        OracleDataSource ds1=new OracleDataSource();
        Properties prop1 = new Properties();
        prop1.setProperty("user","ravi");
        prop1.setProperty("password","******");
        prop1.setProperty("internal_logon","sysdba");
        ds1.setConnectionProperties(prop1);
        ds1.setURL(DB_URL);
        OracleConnection conn1 = (OracleConnection)ds1.getConnection();
        Statement stmt = conn1.createStatement();
        ResultSet rs = stmt.executeQuery("select * from dba_users");
        while (rs.next())
            System.out.println(rs.getString(1));
        conn1.close();
    } catch (Exception e) {
        System.out.println(e);
    }

您需要将sysdba与用户字符串参数放在一起,如

String user="sys as sysdba"

我的两分钱,因为我遇到了同样的例外。下面是我的诀窍:

           try (Connection conn = DriverManager.getConnection(
                "jdbc:oracle:thin:@myserverip:1521:XE", "sys as sysdba", "Hello123")) {   
           // this worked too - "jdbc:oracle:thin:@myserverip:1521:XE", "system"
              if (conn != null) {
                  System.out.println("Connected to the database!");
              } else {
                System.out.println("Failed to make connection!");
              }
 
            } catch (SQLException e) {
              System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage());
            } catch (Exception e) {
            e.printStackTrace();
           }

请显示您用于连接的代码。当您说“在java中”时,您是指“通过JDBC”吗?谢谢您的建议。这个问题是关于通过java连接的,我想是指JDBC。如果我没有弄错的话,您给出的命令是用于SQL*Plus的。这是什么,Groovy?java中会问这个问题。tomcat server.xml文件中的方式是什么?sys as sysdba的正确jdbc url:“jdbc:oracle:thin:sys as sysdba/mysecretpassword@127.0.0.1:1521/xe”,使用xe 11.2.0.2.0进行测试。请解释您的代码的功能以及如何实现。
String user="sys as sysdba"
        /*It works for me*/
        /*also oci and thin is important if you want to connect with database which is installed in your clien (Computer) add oci if you want to install to server add thin*/

        String dbURL2 = "jdbc:oracle:oci:@172.16.24.123:1521:XE";
        String username = "sys as sysdba";
        String password = "XX Change it to your system password";
        
        try {
        Connection connection = DriverManager.getConnection(dbURL2, username, password);
            System.out.println("Connected to Oracle data");
        
    } catch (SQLException e) {
            System.out.println("Opps ! error");
            e.printStackTrace();
        
    }
           try (Connection conn = DriverManager.getConnection(
                "jdbc:oracle:thin:@myserverip:1521:XE", "sys as sysdba", "Hello123")) {   
           // this worked too - "jdbc:oracle:thin:@myserverip:1521:XE", "system"
              if (conn != null) {
                  System.out.println("Connected to the database!");
              } else {
                System.out.println("Failed to make connection!");
              }
 
            } catch (SQLException e) {
              System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage());
            } catch (Exception e) {
            e.printStackTrace();
           }