ORA-29285:फ़ाइल लेखन त्रुटि उन त्रुटियों में से एक है जो oracle डेटाबेस में फ़ाइल प्रबंधन कार्य करते समय हो सकती है
फाइल हैंडलिंग ऑपरेशन ऑपरेटिंग सिस्टम पर एक नई फाइल बना रहे हैं, इसे अपडेट या संशोधित कर रहे हैं। इस फ़ंक्शन का उपयोग अक्सर PLSQL में फ़ाइल हेरफेर के लिए किया जाता है
ORA-29285 के कारण और समाधान
(1) यूनिक्स/लिनक्स फाइल सिस्टम जहां आप फाइल लिख रहे हैं, वह पूर्ण है, अर्थात इसका 100% उपयोग किया जाता है।
df -h /u500
/u500 100 0
declare
fileHandler UTL_FILE.FILE_TYPE;
begin
fileHandler := UTL_FILE.FOPEN('/u500', 'tech', 'W');
UTL_FILE.PUT_LINE(fileHandler, 'This is the file for test');
UTL_FILE.FCLOSE(fileHandler);
end;
/
DECLARE
*
ERROR at line 1:
ORA-29285: file write error
ORA-06512: at "SYS.UTL_FILE", line 4
ORA-06512: at "SYS.UTL_FILE", line 1169
ORA-06512: at line 6
संकल्प
/u500 में जगह खाली करें और हम फिर से PLSQL ब्लॉक की जांच कर सकते हैं
तो मूल रूप से आपको उपयोग की जा रही फ़ाइल सिस्टम में अनावश्यक फ़ाइलों को साफ़ करने की आवश्यकता है। कृपया सुनिश्चित करें कि आप वर्तमान में उपयोग में आने वाली किसी भी फाइल को नहीं हटाते हैं। यदि आप कोई सक्रिय फाइल हटाते हैं, तो स्थान खाली नहीं होगा
df -h /u500
/u500 80 20
declare
fileHandler UTL_FILE.FILE_TYPE;
begin
fileHandler := UTL_FILE.FOPEN('/u500', 'tech', 'W');
UTL_FILE.PUT_LINE(fileHandler, 'This is the file for test');
UTL_FILE.FCLOSE(fileHandler);
end;
/
2 3 4 5 6
PL/SQL procedure successfully completed.
(2) जब कोई फ़ाइल FOPEN द्वारा खोली जाती है, जब तक कि MAX_LINESIZE पैरामीटर के लिए कोई मान निर्दिष्ट नहीं किया जाता है, तो यह डिफ़ॉल्ट रूप से 1024 हो जाएगा। इसलिए यह त्रुटि तब भी होती है जब आप लाइन में 1024 से अधिक वर्ण डाल रहे हों
DECLARE
file_name VARCHAR2(256) := 'test.lst';
file_text VARCHAR2(100) := '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890....<2000 character>';
file_id UTL_FILE.file_type;
BEGIN
file_id := UTL_FILE.fopen('/tmp', file_name, 'W');
UTL_FILE.put_line(file_id, file_text);
UTL_FILE.fclose(file_id);
END;
/
DECLARE
*
ERROR at line 1:
ORA-29285: file write error
ORA-06512: at "SYS.UTL_FILE", line 2
ORA-06512: at "SYS.UTL_FILE", line 1169
ORA-06512: at line 6
संकल्प
हम अधिकतम लाइन आकार निर्दिष्ट करके इस त्रुटि को रोक सकते हैं
DECLARE
file_name VARCHAR2(256) := 'test.lst';
file_text VARCHAR2(100) := '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890....<2000 character>';
file_id UTL_FILE.file_type;
BEGIN
file_id := UTL_FILE.fopen('/tmp', file_name, 'W',5000);
UTL_FILE.put_line(file_id, file_text);
UTL_FILE.fclose(file_id);
END;
/
2 3 4 5 6 PL/SQL procedure successfully completed.
MAX_LINESIZE पैरामीटर 32767 तक हो सकता है। यदि आपके पास 32K से अधिक लंबी लाइनें हैं तो डेटा को बाइनरी के रूप में लिखा जाना चाहिए।
(3) यह त्रुटि तब हो सकती है जब UTL_FILE.PUT_LINE को बार-बार लूप में कॉल करते समय 1024 वर्णों से अधिक संचयी रूप से लिखते समय। कारण गलत है ORA_NLS10 की सेटिंग या चर ORA_NLS10 सेट नहीं है
उदाहरण
unset ORA_NLS10
sqlplus / as sysdba
shutdown immediate
startup
sqlplus "/ as sysdba"
DECLARE
file_name VARCHAR2(256) := 'test.lst';
file_text VARCHAR2(100) := '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890';
file_id UTL_FILE.file_type;
BEGIN
file_id := UTL_FILE.fopen('/tmp', file_name, 'W');
FOR x IN 1..11 LOOP -- write 11 records
UTL_FILE.put_line(file_id, file_text);
END LOOP;
UTL_FILE.fclose(file_id);
END;
/
ORA-29285: file write error
संकल्प
कृपया सुनिश्चित करें कि ORA_NLS10 ऑरैकल डेटाबेस और श्रोता परिवेश में सेट है
ORACLE_SID=TEST
ORA_NLS10=< >
sqlplus / as sysdba
shutdown
immediate
startup
lsnrctl stop TEST
lsnrctl start TEST
sqlplus / as sysdba
DECLARE
file_name VARCHAR2(256) := 'test.lst';
file_text VARCHAR2(100) := '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890';
file_id UTL_FILE.file_type;
BEGIN
file_id := UTL_FILE.fopen('/tmp', file_name, 'W');
FOR x IN 1..11 LOOP -- write 11 records
UTL_FILE.put_line(file_id, file_text);
END LOOP;
UTL_FILE.fclose(file_id);
END;
/
PL/SQL procedure successfully completed.
मुझे उम्मीद है कि आपको ORA-29285 पर यह विस्तृत पोस्ट पसंद आई होगी। कृपया इसे पसंद करें और प्रतिक्रिया दें
संबंधित लेख
ORA-29280:अमान्य निर्देशिका पथ
ORA-29283 :अमान्य फ़ाइल संचालन
ORA-00942 तालिका या दृश्य मौजूद नहीं है
ORA-29913
Oracle ऐप्स में FND_FILE
https://docs.oracle.com/cd/E11882_01/server.112/e17766/e29250.htm