Saya menggunakan operator panggilan, &
, seperti yang disarankan Keith Hill dengan pertanyaan, Bagaimana menjalankan file EXE di PowerShell dengan parameter dengan spasi dan tanda kutip.
& 'path\sqlplus.exe' 'system/[email protected] as sysdba'
Saya menempatkan nama pengguna, kata sandi dalam tanda kutip karena spasi.
Untuk memulai skrip, saya menambahkan parameter lain sebagai berikut:
& 'path\sqlplus.exe' 'system/[email protected] as sysdba' '@my_script.sql'
Jika Anda menerima kesalahan ORA-12154, dan Anda tahu bahwa pengguna lain telah membuat koneksi (yang menyiratkan bahwa pendengar database berjalan dengan benar); Saya kemudian akan memeriksa apakah SQL*Plus dapat menemukan file tnsname saya.
Tugas pertama saya adalah melihat apakah saya dapat melakukan tnsping sebagai berikut di Windows cmd.exe:
tnsping orcl
Ini akan mengkonfirmasi bahwa koneksi dapat (atau tidak dapat dibuat).
Jika tidak bisa, saya akan memeriksa untuk melihat apakah variabel lingkungan, ORACLE_HOME, sudah disetel. SQL*Plus menggunakan ini untuk menemukan file tnsname.ora.
Jika tidak disetel, saya akan menjalankan pernyataan ini di PowerShell (untuk menetapkan variabel lingkungan ini):
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
Selanjutnya, saya akan mencoba lagi tnsping (diidentifikasi di atas).
Setelah berhasil, saya akan mencoba kembali menjalankan skrip yang menjalankan perintah di atas.