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

%ENV tidak berfungsi dan saya tidak dapat menggunakan perpustakaan bersama

LD_LIBRARY_PATH variabel lingkungan harus ditetapkan sebelum program Anda dimulai — sebelum perl sendiri dimuat. Mengubahnya di BEGIN{} akan memengaruhi program baru yang Anda mulai, tetapi itu tidak akan memengaruhi pemuatan pustaka bersama — dalam hal ini (walaupun saya tidak pernah menggunakan DBD::Oracle) Anda memuat .so Oracle ke dalam program yang sudah berjalan, jadi sudah “terlambat” untuk mengubah LD_LIBRARY_PATH . Penaut dinamis /lib/ld.so (atau lebih) dimulai sebelum perl , jadi pada saat skrip Anda dikompilasi dan BEGIN{} berjalan, itu sudah disiapkan.

Anda bisa coba jalankan kembali skrip Anda sebagai penerusnya sendiri atau semacamnya*, tetapi skrip shell pendek hampir pasti akan menjadi solusi paling sederhana:

  #!/bin/sh
  export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.3/client64/lib
  export ORACLE_SID=prod
  exec /usr/local/bin/your-db-program "[email protected]"

*- ini agak gila, tapi TIMTOWTDI:

  eval { 
     use DBD::Oracle foo bar baz; …
  };
  if ([email protected] =~ /install_driver\(Oracle\) failed/) {
     $ENV{LD_LIBRARY_PATH} .= ':/usr/lib/oracle/10.2.0.3/client64/lib';
     $ENV{ORACLE_SID} = 'prod';
     warn "Restarting with LD_LIBRARY_PATH reset:\n\[email protected]\n";
     exec { $0 } $0 => @ARGV;
  }


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Beda antara tanggal - SQL plus

  2. Masalah saat membandingkan hasil to_char(myDate, 'DAY') dengan string

  3. Bagaimana menemukan versi komponen EBS R12

  4. Memasukkan Data SQL Server dengan Oracle® SQL*Loader

  5. Cara mengkonfigurasi Server Glassfish di Eclipse secara manual