sql >> Base de Datos >  >> RDS >> Oracle

Cómo conectarse a Oracle como SYS desde SQL*Plus en Java

Está pasando toda la información de conexión como un solo valor; equivalente a esto desde una línea de comando:

sqlplus "sys as sysdba/[email protected]<connect_string>"

que obtendría la misma respuesta de imprimir la ayuda de inicio de sesión de SQL*Plus. También tiene su contraseña en el lugar equivocado, pero no llega tan lejos. Desde una línea de comando esto funcionaría:

sqlplus "sys/tiger" "as" "[email protected]<connect_string>"

por lo que debe pasar 5 argumentos a ProcessBuilder , algo como:

    String sqlCmd = "sqlplus";  
    String arg1   = "sys/tiger";
    String arg2   = "as";
    String arg3   = "[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname)(Port=PORT ID))(CONNECT_DATA=(SID=SID)))";
    String arg4   = fileName;
    ...
        ProcessBuilder pb = new ProcessBuilder(sqlCmd, arg1, arg2, arg3, arg4);

Esto solo funcionará si su entorno está configurado para permitir la conexión remota como sysdba . Hacer cualquier cosa como sys debería ser muy raro, y tener un script que desea ejecutar como sys parece lo suficientemente inusual como para que un contenedor de Java parezca excesivo, y hace que parezca que podría conectarse como sys rutinariamente, lo cual no es una buena idea, pero tal vez esto sea solo un ejercicio de aprendizaje.