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