Oracle
 sql >> Database >  >> RDS >> Oracle

Come connettersi a Oracle come SYS da SQL*Plus in Java

Stai passando tutte le informazioni di connessione come un unico valore; equivalente a questo da una riga di comando:

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

che otterrebbe la stessa risposta della stampa della guida di accesso di SQL*Plus. Hai anche la tua password nel posto sbagliato ma non va così lontano. Da una riga di comando funzionerebbe:

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

quindi devi passare 5 argomenti a ProcessBuilder , qualcosa come:

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

Funzionerà comunque solo se il tuo ambiente è configurato per consentire la connessione remota come sysdba . Fare qualsiasi cosa come sys dovrebbe essere molto raro e avere uno script che vuoi eseguire come sys sembra abbastanza insolito da far sembrare un wrapper Java eccessivo - e fa sembrare che potresti connetterti come sys di routine, il che non è una buona idea, ma forse questo è solo un esercizio di apprendimento.