bestsource

Java에서 SYS로 Oracle에 연결하는 방법

bestsource 2023. 2. 13. 20:36
반응형

Java에서 SYS로 Oracle에 연결하는 방법

다음의 에러가 표시됩니다.

java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

어떻게 고치죠?SYS). 감사합니다.

다음을 수행합니다.

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)

정답은 이미 있습니다.

접속을 시도하고 있습니다.sys그러나 서버는

어느 하나

sys as sysdba

또는

sys as sysoper

위에서 사용자 매개 변수 중 하나를 변경하기만 하면 됩니다.

user='sys as sysdba'

또는

user='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);

다음과 같이 데이터베이스에 접속을 시도했을 경우:connect SYS/<password>더 이상 유효하지 않은 구문을 사용했습니다(Oracle 9i 이후).

대신 다음과 같이 연결을 시도합니다.

connect SYS/<password> as SYSDBA or connect SYS/<password> as SYSOPER

Oracle Data Source 개체를 사용할 수 있습니까?

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");

데이터베이스를 "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);
    }
        /*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();
        
    }

다음과 같이 사용자 String 매개 변수를 사용하여 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();
           }

언급URL : https://stackoverflow.com/questions/10101517/how-to-connect-in-java-as-sys-to-oracle

반응형