Ich verwende den Aufrufoperator &
, wie Keith Hill mit der Frage vorgeschlagen hat, wie man eine EXE-Datei in PowerShell mit Parametern mit Leerzeichen und Anführungszeichen ausführt.
& 'path\sqlplus.exe' 'system/[email protected] as sysdba'
Ich habe den Benutzernamen und das Passwort wegen der Leerzeichen in Anführungszeichen gesetzt.
Um ein Skript zu starten, füge ich wie folgt einen weiteren Parameter hinzu:
& 'path\sqlplus.exe' 'system/[email protected] as sysdba' '@my_script.sql'
Wenn Sie den ORA-12154-Fehler erhalten und wissen, dass andere Benutzer Verbindungen hergestellt haben (was impliziert, dass der Datenbank-Listener ordnungsgemäß ausgeführt wird); Ich würde dann prüfen, ob SQL*Plus meine tnsname-Datei finden kann.
Meine erste Aufgabe wäre zu sehen, ob ich in Windows cmd.exe wie folgt tnspen kann:
tnsping orcl
Es wird bestätigt, dass eine Verbindung hergestellt werden kann (oder nicht).
Wenn dies nicht möglich ist, würde ich prüfen, ob die Umgebungsvariable ORACLE_HOME gesetzt ist. SQL*Plus verwendet dies, um die Datei tnsname.ora zu finden.
Wenn es nicht gesetzt ist, würde ich diese Anweisung in PowerShell ausführen (um diese Umgebungsvariable einzurichten):
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
Als nächstes würde ich erneut versuchen, tnsping (oben identifiziert) auszuführen.
Sobald dies erfolgreich war, würde ich erneut versuchen, den obigen Befehl zum Ausführen des Skripts auszuführen.