Yo uso el operador de llamada, &
, como sugirió Keith Hill con la pregunta, Cómo ejecutar un archivo EXE en PowerShell con parámetros con espacios y comillas.
& 'path\sqlplus.exe' 'system/[email protected] as sysdba'
Coloqué el nombre de usuario, la contraseña entre comillas debido a los espacios.
Para iniciar un script, agrego otro parámetro de la siguiente manera:
& 'path\sqlplus.exe' 'system/[email protected] as sysdba' '@my_script.sql'
Si recibe el error ORA-12154 y sabe que otros usuarios han establecido conexiones (lo que implica que el escucha de la base de datos se está ejecutando correctamente); Luego examinaría si SQL*Plus puede encontrar mi archivo tnsname.
Mi primera tarea sería ver si puedo hacer tnsping de la siguiente manera en Windows cmd.exe:
tnsping orcl
Confirmará que se puede (o no se puede establecer) una conexión.
Si no puede, verificaría si la variable de entorno, ORACLE_HOME, está configurada. SQL*Plus usa esto para encontrar el archivo tnsname.ora.
Si no está configurado, ejecutaría esta declaración en PowerShell (para establecer esta variable de entorno):
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
A continuación, volvería a intentar tnsping (identificado anteriormente).
Una vez que tenga éxito, volvería a intentar ejecutar el comando de ejecución del script anterior.