2012-04-11 7 views
25

erhalte ich diesen Fehler:Wie verbindet man sich in Java als SYS mit Oracle?

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

Wie beheben zu? (Ich muss SYS sein). Danke.

+3

zeigen Sie den Code, die Sie zu verbinden. –

+0

Wenn Sie "in Java" sagen, meinen Sie "über JDBC"? –

Antwort

33

try this:

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) 
+0

Was ist das, Groovy? –

+0

Die Frage wird in Java gestellt. – CapturedTree

+0

was ist der weg in tomcat server.xml file? – sns

3

Wenn Sie versucht haben, eine Verbindung zur Datenbank herzustellen: connect SYS/<password> haben Sie eine Syntax verwendet, die nicht mehr gültig ist (After Oracle 9i).

Stattdessen versuchen wie folgt zu verbinden:

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

Die Frage war, über Java zu verbinden, was vermutlich JDBC bedeutet. Die Befehle, die Sie angegeben haben, sind für SQL * Plus gedacht, wenn ich mich nicht irre. –

7

Dieser Code funktioniert

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

sind ein OracleDataSource Objekt verwenden Sie in der Lage?

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; 
    } 
} 

Und es so nennen:

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

Antworten schon da,

Sie versuchen, als sys zu verbinden, aber der Server ermöglicht

entweder sys as sysdba

oder

sys as sysoper 

nur Benutzerparameter als entweder von einer ändern oben

user='sys as sysdba' 

oder

user='sys as sysoper' 
+0

Danke diesen Vorschlag, praktisch – learningloop

0

Wenn Sie Ihre Datenbank mit anderen Benutzern als „sys“ als „sysdba“ zu verbinden, dann Sie müssen den Treiber von "dünn" auf "oci" ändern, um die Verbindung erfolgreich herzustellen.

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); 
    } 
0

Sie benötigen sysdba mit Benutzer String-Parameter setzen wie

String user="sys as sysdba" 
Verwandte Themen