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). Grâce.

26
demandé sur Aaron Digulla 2012-04-11 11:15:46

7 réponses

Essayez ceci :

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)
33
répondu simplycurious 2012-04-11 18:04:20

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
répondu Alexander 2012-04-11 17:56:34

Réponses déjà là,

Vous essayez de vous connecter en tant que sys mais le serveur autorise

Soit sys as sysdba

Ou

sys as sysoper

Il suffit de changer le paramètre utilisateur comme l'un d'en haut

user='sys as sysdba'

Ou

user='sys as sysoper'
6
répondu RahulArackal 2013-12-05 05:50:38

Si vous avez tenté de vous connecter à la base de données comme ceci: 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
répondu Korhan Ozturk 2012-04-11 07:38:10

Êtes-vous capable d'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-le comme ceci:

Connection con = null;    
con = Database.openConnection("YourJDBCConnectionURL", "YourSYSUser", "YourSYSPassword", "sysdba");
1
répondu lkdg 2013-03-20 23:21:15

Si vous voulez connecter votre base de données avec un utilisateur autre que " sys "comme " sysdba", vous devez changer le pilote de " thin "à" oci " pour faire la connexion réussie.

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
répondu Ravibhushan Kumar 2017-06-10 10:54:56

Vous devez mettre sysdba avec le paramètre user String comme

String user="sys as sysdba"
0
répondu Neha Gangwar 2018-01-11 12:36:28