Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Memanggil skrip shell dari PL/SQL, tetapi shell dieksekusi sebagai pengguna grid, bukan oracle

Masalahnya, seperti yang ditunjukkan dalam komentar, adalah bahwa Runtime.getRuntime().exec berjalan melalui EXTPROC, dan dengan demikian melalui Grid Listener. Karena kami memiliki isolasi pengguna OS antara DB dan GRID pada konfigurasi baru kami, ini menimbulkan masalah izin pada FS.

Solusi untuk ini adalah salah satu di bawah ini:

  • Perbaiki izin FS untuk mengizinkan pengguna grid menulis file dan mengubah umask menjadi sesuatu seperti 774 atau 664, sehingga pengguna grid dan oracle akan dapat memodifikasi file nanti;

  • ubah file sudoers dan izinkan kisi untuk menjalankan perintah yang diperlukan sebagai oracle tanpa kata sandi dan ubah skrip shell untuk memasukkan sudo;

  • buat pendengar baru di DB Home di port lain dan ubah entri TNSNAMES.ORA untuk menunjuk ke port baru. Kemudian extproc akan dieksekusi sebagai oracle pengguna OS. Anda harus mengedit LISTENER.ORA secara manual pada $OH dan memulainya dengan lsnrctl, karena listener yang terdaftar dengan srvctl akan selalu dimulai dengan grid;

  • ubah pendengar utama ke db home. Saya tidak menyarankan itu (lihat item di atas).

[EDIT]Seperti yang ditunjukkan oleh @AlexPoole dan @jonearles, ada dua opsi lain yang tidak cocok untuk kasus saya, tetapi mungkin untuk orang lain:

  • jika Anda menjalankan skrip secara lokal di sqlplus, mengatur ORACLE_SID, akses FS akan dilakukan oleh pengguna OS yang menjalankan sqlplus. Jadi Anda dapat menjalankan sebagai Oracle, atau pengguna lain dan memperbaiki izin FS;
  • jika Anda menjadwalkan pekerjaan di dbms_job scheduler sebagai SYS, tugas tersebut akan dijalankan oleh Oracle (perilaku ini mungkin bergantung pada versi, jadi diperlukan pengujian lebih lanjut).

Salam,

Daniel Stolf



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jumlah baris yang terpengaruh oleh UPDATE di PL/SQL

  2. Cara memasukkan data langsung dari Excel ke Oracle Database

  3. Hitung persentase akar yang dimiliki oleh orang tuanya

  4. Pilih kolom indeks tabel

  5. Bagaimana cara memaksa kasus pascal dengan dukungan Oracle Entity Framework?