Uso l'operatore di chiamata, &
, come ha suggerito Keith Hill con la domanda Come eseguire un file EXE in PowerShell con parametri con spazi e virgolette.
& 'path\sqlplus.exe' 'system/[email protected] as sysdba'
Ho inserito username, password tra virgolette per via degli spazi.
Per avviare uno script, aggiungo un altro parametro come segue:
& 'path\sqlplus.exe' 'system/[email protected] as sysdba' '@my_script.sql'
Se ricevi l'errore ORA-12154 e sai che altri utenti hanno stabilito connessioni (il che implica che il listener di database funziona correttamente); Vorrei quindi esaminare se SQL * Plus può trovare il mio file tnsname.
Il mio primo compito sarebbe vedere se riesco a eseguire il tnsping come segue in Windows cmd.exe:
tnsping orcl
Confermerà che una connessione può (o non può essere stabilita).
In caso contrario, verificherei se la variabile di ambiente, ORACLE_HOME, è impostata. SQL*Plus lo usa per trovare il file tnsname.ora.
Se non è impostato, eseguirei questa istruzione in PowerShell (per stabilire questa variabile di ambiente):
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
Successivamente, vorrei riprovare a tnsping (identificato sopra).
Una volta eseguito correttamente, proverei nuovamente a eseguire lo script in esecuzione sopra.