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.
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)
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);
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'
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
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);
}
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");
Vous devez mettre sysdba avec le paramètre utilisateur String tel que
String user="sys as sysdba"