2012-04-11 9 views
25

ricevo questo errore:Come connettersi in java come SYS a Oracle?

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

Come risolvere? (Devo essere SYS). Grazie.

+3

Si prega di mostrare il codice che si utilizza per connettersi. –

+0

Quando dici "in java", intendi "via JDBC"? –

risposta

33

provare questo:

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

Cos'è, Groovy? –

+0

La domanda viene posta in java. – CapturedTree

+0

come fare nel file tomcat server.xml? – sns

3

Se si è tentato di connettersi al database in questo modo: connect SYS/<password> è stata utilizzata una sintassi non più valida (dopo Oracle 9i).

Invece tenta di connettersi come il seguente:

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

La domanda riguardava la connessione tramite Java, che presumo significhi JDBC. I comandi che hai dato servono per SQL * Plus, se non sbaglio. –

7

questo codice funziona

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

Siete in grado di utilizzare un oggetto 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; 
    } 
} 

E chiamare in questo modo:

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

risposte già lì,

si sta tentando di connettersi come sys ma il Server consente

sia sys as sysdba

o

sys as sysoper 

basta cambiare parametro utente sia come uno dall'alto

user='sys as sysdba' 

o

user='sys as sysoper' 
+0

Grazie a questo suggerimento è utile – learningloop

0

Se si desidera collegare il database con utente diverso "sys" come "sysdba" poi devi cambiare il driver da "thin" a "oci" per effettuare la connessione riuscita.

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

è necessario mettere SYSDBA con il parametro stringa user come

String user="sys as sysdba"