Używam operatora połączenia, &
, jak zasugerował Keith Hill w pytaniu, Jak uruchomić plik EXE w PowerShell z parametrami ze spacjami i cudzysłowami.
& 'path\sqlplus.exe' 'system/[email protected] as sysdba'
Umieściłem nazwę użytkownika, hasło w cudzysłowie ze względu na spacje.
Aby uruchomić skrypt, dodaję kolejny parametr w następujący sposób:
& 'path\sqlplus.exe' 'system/[email protected] as sysdba' '@my_script.sql'
Jeśli otrzymujesz błąd ORA-12154 i wiesz, że inni użytkownicy nawiązali połączenia (co oznacza, że program nasłuchujący bazy danych działa prawidłowo); Następnie sprawdziłbym, czy SQL*Plus może znaleźć mój plik tnsname.
Moim pierwszym zadaniem byłoby sprawdzenie, czy mogę sprawdzić w Windows cmd.exe w następujący sposób:
tnsping orcl
Potwierdzi to, że połączenie może (lub nie może zostać nawiązane).
Jeśli nie, sprawdziłbym, czy zmienna środowiskowa ORACLE_HOME jest ustawiona. SQL*Plus używa tego do znalezienia pliku tnsname.ora.
Jeśli nie jest ustawiony, wykonałbym tę instrukcję w PowerShell (aby ustalić tę zmienną środowiskową):
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
Następnie spróbowałbym ponownie tnsping (określony powyżej).
Gdy się powiedzie, spróbuję ponownie wykonać powyższe polecenie uruchomionego skryptu.