Ik gebruik de oproepoperator, &
, zoals Keith Hill heeft gesuggereerd met de vraag:Hoe een EXE-bestand in PowerShell uit te voeren met parameters met spaties en aanhalingstekens.
& 'path\sqlplus.exe' 'system/[email protected] as sysdba'
Ik heb de gebruikersnaam en het wachtwoord tussen aanhalingstekens geplaatst vanwege de spaties.
Om een script te starten, voeg ik als volgt nog een parameter toe:
& 'path\sqlplus.exe' 'system/[email protected] as sysdba' '@my_script.sql'
Als u de ORA-12154-fout ontvangt en u weet dat andere gebruikers verbindingen tot stand hebben gebracht (wat inhoudt dat de database-listener correct werkt); Ik zou dan onderzoeken of SQL*Plus mijn tnsname-bestand kan vinden.
Mijn eerste taak zou zijn om te zien of ik als volgt kan tnspen in Windows cmd.exe:
tnsping orcl
Het zal bevestigen dat een verbinding kan (of niet tot stand kan worden gebracht).
Als dit niet het geval is, zou ik controleren of de omgevingsvariabele, ORACLE_HOME, is ingesteld. SQL*Plus gebruikt dit om het tnsname.ora-bestand te vinden.
Als het niet is ingesteld, zou ik deze instructie uitvoeren in PowerShell (om deze omgevingsvariabele vast te stellen):
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
Vervolgens zou ik opnieuw proberen te tnspen (hierboven aangegeven).
Als het gelukt is, zou ik opnieuw proberen om de bovenstaande opdracht voor het uitvoeren van het script uit te voeren.