2012-04-11 28 views
25

recibo este error:¿Cómo conectarse en java como SYS a Oracle?

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

Cómo corregir? (Necesito ser SYS). Gracias.

+3

Por favor, mostrar el código que se utiliza para conectar. –

+0

Cuando dices "en java", ¿te refieres a "a través de JDBC"? –

Respuesta

33

probar esto:

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

¿Qué es eso, Groovy? –

+0

La pregunta se hace en java. – CapturedTree

+0

¿Cuál es el camino en el archivo tomcat server.xml? – sns

3

Si ha intentado conectarse a la base de datos de esta manera: connect SYS/<password> ha utilizado una sintaxis que ya no es válida (Después de Oracle 9i).

En lugar de tratar de conectar de la siguiente manera:

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

La pregunta era sobre la conexión a través de Java, que supongo significa JDBC. Los comandos que dio son para usar con SQL * Plus, si no me equivoco. –

7

Este código funciona

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

¿Es capaz de utilizar un objeto 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; 
    } 
} 

y lo llaman así:

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

respuestas que ya están allí,

que está tratando de conectar como sys pero el servidor permite

ya sea sys as sysdba

o

sys as sysoper 

acaba de cambiar los parámetros del usuario, ya sea como uno de lo alto

user='sys as sysdba' 

o

user='sys as sysoper' 
+0

Gracias esta sugerencia son útiles – learningloop

0

Si desea conectar su base de datos con otros usuarios de "sistema" como "sysdba", entonces tienes que cambiar el controlador de "fino" a "oci" para hacer una conexión exitosa.

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

Es necesario poner sysdba con el parámetro de cadena de usuario como

String user="sys as sysdba" 
Cuestiones relacionadas