Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como se conectar ao Oracle como SYS do SQL*Plus em Java


Você está passando todas as informações de conexão como um único valor; equivalente a isso a partir de uma linha de comando:
sqlplus "sys as sysdba/[email protected]<connect_string>"

que obteria a mesma resposta de imprimir a ajuda de logon do SQL*Plus. Você também tem sua senha no lugar errado, mas não está chegando tão longe. A partir de uma linha de comando, isso funcionaria:
sqlplus "sys/tiger" "as" "[email protected]<connect_string>"

então você precisa passar 5 argumentos para 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);

Isso ainda funcionará apenas se seu ambiente estiver configurado para permitir conexão remota como sysdba . Fazendo qualquer coisa como sys deve ser muito raro e ter um script que você deseja executar como sys parece incomum o suficiente para um wrapper Java parecer um exagero - e faz parecer que você pode se conectar como sys rotineiramente, o que não é uma boa ideia - mas talvez seja apenas um exercício de aprendizagem.