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

UTL_FILE.FOPEN () प्रक्रिया निर्देशिका के लिए पथ स्वीकार नहीं कर रही है?

Oracle 9i के बाद से UTL_FILE के साथ उपयोग के लिए निर्देशिका घोषित करने या घोषित करने के दो तरीके हैं।

पुराना तरीका INIT.ORA पैरामीटर UTL_FILE_DIR सेट करना है। परिवर्तन को प्रभावित करने के लिए हमें डेटाबेस को पुनरारंभ करना होगा। मान किसी अन्य PATH चर को पसंद कर सकता है; यह वाइल्डकार्ड स्वीकार करता है। इस दृष्टिकोण का उपयोग करने का अर्थ है निर्देशिका पथ को पास करना...

UTL_FILE.FOPEN('c:\temp', 'vineet.txt', 'W');

वैकल्पिक तरीका एक निर्देशिका वस्तु घोषित करना है।

create or replace directory temp_dir as 'C:\temp'
/

grant read, write on directory temp_dir to vineet
/

डायरेक्ट्री ऑब्जेक्ट्स को सटीक फ़ाइल पथ की आवश्यकता होती है, और वाइल्डकार्ड स्वीकार नहीं करते हैं। इस दृष्टिकोण में हम निर्देशिका वस्तु का नाम पास करते हैं...

UTL_FILE.FOPEN('TEMP_DIR', 'vineet.txt', 'W');

UTL_FILE_DIR को बहिष्कृत कर दिया गया है क्योंकि यह स्वाभाविक रूप से असुरक्षित है - सभी उपयोगकर्ताओं के पास पथ में निर्दिष्ट सभी OS निर्देशिकाओं तक पहुंच है, जबकि पढ़ने और लिखने के विशेषाधिकार अलग-अलग उपयोगकर्ताओं को दिए जा सकते हैं। साथ ही, निर्देशिका वस्तुओं के साथ हम डेटाबेस को बाउंस किए बिना निर्देशिकाओं को जोड़ सकते हैं, हटा सकते हैं या बदल सकते हैं।

किसी भी मामले में, oracle OS उपयोगकर्ता के पास OS निर्देशिका पर पढ़ने और/या लिखने के विशेषाधिकार होने चाहिए . यदि यह स्पष्ट नहीं है, तो इसका अर्थ है निर्देशिका डेटाबेस सर्वर से दिखाई देनी चाहिए . इसलिए हम अपने स्थानीय पीसी पर एक निर्देशिका को दूरस्थ डेटाबेस सर्वर पर चलने वाली प्रक्रिया में उजागर करने के लिए किसी भी दृष्टिकोण का उपयोग नहीं कर सकते हैं। फ़ाइलें डेटाबेस सर्वर, या एक साझा नेटवर्क ड्राइव पर अपलोड की जानी चाहिए।

अगर oracle OS उपयोगकर्ता के पास OS निर्देशिका पर उपयुक्त विशेषाधिकार नहीं हैं, या यदि डेटाबेस में निर्दिष्ट पथ वास्तविक पथ से मेल नहीं खाता है, तो प्रोग्राम इस अपवाद को समाप्त कर देगा:

ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 7

इस त्रुटि के लिए ओईआरआर पाठ बहुत स्पष्ट है:

29283 -  "invalid file operation"
*Cause:    An attempt was made to read from a file or directory that does
           not exist, or file or directory access was denied by the
           operating system.
*Action:   Verify file and directory access privileges on the file system,
           and if reading, verify that the file exists.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. उपयोगकर्ता-परिभाषित प्रकार के बारे में जानकारी कैसे प्राप्त करें?

  2. गतिशील Oracle Pivot_In_Clause

  3. PLS-00201 पहचानकर्ता 'PACKAGENAME.PROCEDURENAME' घोषित किया जाना चाहिए

  4. ORA-02014 को कैसे हल करें:DISTINCT, GROUP BY के साथ दृश्य से अद्यतन के लिए चयन नहीं कर सकता

  5. कैसे Oracle में नियमित अभिव्यक्ति से समूह निकालने के लिए?