Jag använder samtalsoperatören, &
, som Keith Hill har föreslagit med frågan, Hur man kör en EXE-fil i PowerShell med parametrar med mellanslag och citattecken.
& 'path\sqlplus.exe' 'system/[email protected] as sysdba'
Jag placerade användarnamnet, lösenordet inom citattecken på grund av mellanslagen.
För att starta ett skript lägger jag till ytterligare en parameter enligt följande:
& 'path\sqlplus.exe' 'system/[email protected] as sysdba' '@my_script.sql'
Om du får ORA-12154-felet och du vet att andra användare har upprättat anslutningar (vilket innebär att databasavlyssnaren fungerar som den ska); Jag skulle då undersöka om SQL*Plus kan hitta min tnsname-fil.
Min första uppgift skulle vara att se om jag kan tnsping enligt följande i Windows cmd.exe:
tnsping orcl
Det kommer att bekräfta att en anslutning kan (eller inte kan upprättas).
Om det inte kan, skulle jag kontrollera om miljövariabeln, ORACLE_HOME, är inställd. SQL*Plus använder detta för att hitta filen tnsname.ora.
Om den inte är inställd, skulle jag köra den här satsen i PowerShell (för att upprätta den här miljövariabeln):
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
Därefter skulle jag försöka igen till tnsping (identifierad ovan).
När jag lyckats, skulle jag försöka köra kommandot för scriptkörning ovan igen.