Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

%ENV काम नहीं करता है और मैं साझा पुस्तकालय का उपयोग नहीं कर सकता

LD_LIBRARY_PATH पर्यावरण चर को पहले . सेट करना होगा आपका प्रोग्राम शुरू होता है — perl . से पहले खुद लोड है। इसे BEGIN{} में बदलना नए कार्यक्रमों को प्रभावित करेगा जिसे आप प्रारंभ करते हैं, लेकिन यह साझा पुस्तकालयों . के लोड होने को प्रभावित नहीं करेगा — इस मामले में (हालांकि मैंने कभी भी DBD::Oracle का उपयोग नहीं किया है) आप एक Oracle .so लोड कर रहे हैं पहले से चल रहे प्रोग्राम में, इसलिए LD_LIBRARY_PATH को बदलने में "बहुत देर हो चुकी है" . डायनेमिक लिंकर /lib/ld.so (या तो) perl . से पहले शुरू किया गया है , इसलिए जब तक आपकी स्क्रिप्ट संकलित हो जाती है और BEGIN{} चलता है, यह पहले से ही सेट है।

आप कर सकते थे अपनी स्क्रिप्ट को अपने उत्तराधिकारी या कुछ * के रूप में फिर से निष्पादित करने का प्रयास करें, लेकिन एक छोटी शेल स्क्रिप्ट लगभग निश्चित रूप से सबसे सरल समाधान होने जा रही है:

  #!/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]"

*- यह थोड़े पागल होगा, लेकिन 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. JDBC:एकल डेटाबेस आमंत्रण के माध्यम से एकाधिक परिणाम सेट लौटाना - Oracle के लिए काम नहीं करना

  2. निष्पादन तत्काल का उपयोग कर स्थानीय प्रक्रिया को कैसे निष्पादित करें?

  3. अन्य कॉलम कैसे प्राप्त करें एक ऑरैकल चयन एसक्यूएल में ग्रुप बाय क्लॉज में नहीं हैं?

  4. ओरेकल डेटाबेस में बाहरी फाइलों को लोड करना

  5. Oracle में ROUND () और TRUNC () दिनांक कार्यों के लिए समर्थित प्रारूप मॉडल