web-dev-qa-db-fra.com

Comment se connecter en Java en tant que SYS à Oracle?

Je reçois cette erreur:

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

Comment réparer? (Je dois être SYS) . Merci.

27
user710818

essaye ça :

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)
35
simplycurious

Ce code fonctionne 

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

Les réponses déjà présentes,

vous essayez de vous connecter en tant que sys mais le serveur permet 

non plus sys as sysdba

ou

sys as sysoper

il suffit de changer le paramètre utilisateur comme ci-dessus

user='sys as sysdba'

ou 

user='sys as sysoper'
7
RahulArackal

Si vous avez tenté de vous connecter à la base de données de la manière suivante: connect SYS/<password>, vous avez utilisé une syntaxe qui n'est plus valide (après Oracle 9i). 

Essayez plutôt de vous connecter comme suit: 

connect SYS/<password> as SYSDBA or connect SYS/<password> as SYSOPER
3
Korhan Ozturk

Si vous souhaitez connecter votre base de données avec un utilisateur autre que "sys" en tant que "sysdba", vous devez changer le pilote de "thin" en "oci" pour établir la connexion avec succès.

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);
    }
1
Ravibhushan Kumar

Pouvez-vous utiliser un objet 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;
    }
}

Et appelez ça comme ça:

Connection con = null;    
con = Database.openConnection("YourJDBCConnectionURL", "YourSYSUser", "YourSYSPassword", "sysdba");
1
lkdg

Vous devez mettre sysdba avec le paramètre utilisateur String tel que

String user="sys as sysdba"
0
Neha Gangwar