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

ORA-29283 कैसे हल करें:अमान्य फ़ाइल ऑपरेशन

ORA-29283:अमान्य फ़ाइल ऑपरेशन काफी सामान्य त्रुटि है।

यह ज्यादातर दो कारणों से होता है

(1) निर्देशिका और फ़ाइल में उसी उपयोगकर्ता के लिए OS स्तर पर उपयुक्त अनुमति होनी चाहिए जिसने Oracle डेटाबेस शुरू किया था

उदाहरण के लिए

The directory does not exists on OS

ls  /u555/app/oracle

No such file or directory

SQL> declare
F_LOG utl_file.file_type;
begin
F_LOG := utl_file.fopen('/u555/app/oracle','k', 'w');
end;
/ 2 3 4 5 6
declare
*
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 4

यह तब भी होता है जब निर्देशिका के पास Oracle उपयोगकर्ता के लिए उपयुक्त अनुमति नहीं है जिससे डेटाबेस प्रारंभ किया गया है।

यदि आप यूनिक्स पर कोई समूह-स्तरीय परिवर्तन कर रहे हैं और ओरेकल उपयोगकर्ता शामिल हैं, तो डेटाबेस और श्रोता दोनों को भी बाउंस करने की सलाह दी जाती है

यह तब भी हो सकता है जब आपने इस तरह एक ऑरैकल निर्देशिका बनाई हो

SQL> create directory TESTDIR as '/u555/oracle/tmp';

SQL> grant read,write on directory TESTDIR to public;

लेकिन यह OS में मौजूद नहीं है

SQL> declare
F_LOG  utl_file.file_type;
begin
F_LOG := utl_file.fopen('TESTDIR','k', 'w');
end;
/  2    3    4    5    6
declare
*
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 4

यह तब भी हो सकता है जब आप फ़ाइल पढ़ रहे हों और OS oracle उपयोगकर्ता के पास इसे करने की अनुमति न हो

SQL> declare
F_LOG utl_file.file_type;
begin
F_LOG := utl_file.fopen('/u555/app/oracle','k', 'r');
end;
/ 2 3 4 5 6
declare
*
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 4

(2) इस विफलता का दूसरा सबसे बड़ा कारण Oracle डेटाबेस और श्रोता परिवेश में ORA_NLS10 की सेटिंग है।

यदि आप प्रक्रिया पर ट्रस को सक्षम करते हैं, तो ट्रस फ़ाइल दिखाती है कि फ़ाइल का एक ब्लॉक पढ़ा गया है और एनएलएस (ORA_NLS10) सेटिंग्स के कारण बाद के ब्लॉक को पढ़ा या दूषित नहीं किया जा सकता है।

ट्रस में निम्न त्रुटि दिखाई दे सकती है

file read error
file write error
internal error
invalid maximum line size
invalid file name
directory access denied
invalid offset specified for seek
file remove operation failed
file rename operation failed
A stream error occurred during compression or uncompression.
A data error occurred during compression or uncompression.
invalid mime header tag
invalid encoded string
The compressed representation is too big

यह अनुशंसा की जाती है कि डेटाबेस और श्रोता में लगातार सेटिंग्स हों।

या तो डेटाबेस और श्रोता दोनों के पास एक ही ORA_NLS10 सेट है या दोनों का मान सेट नहीं है।

ORA_NLS10 सेट करना

ORACLE_SID=TEST
ORA_NLS10=< >
sqlplus / as sysdba
shutdown immediate
startup
lsnrctl stop TEST
lsnrctl start TEST

ORA_NLS10 को अनसेट करना

ORACLE_SID=TEST
unset ORA_NLS10
sqlplus / as sysdba
shutdown immediate
startup
lsnrctl stop TEST
lsnrctl start TEST

यदि डेटाबेस और श्रोता को Oracle क्लस्टर का उपयोग करना शुरू किया जा रहा है, तो हम यह सेटिंग srvctl में कर सकते हैं।

हम OS में नीचे दिए गए कमांड का उपयोग करके ORA_NLS की सेटिंग की जांच कर सकते हैं

PMON प्रक्रिया का पता लगाएं

ps -ef|grep pmon|grep TEST

For Linux:

$ strings /proc/<pmon process ID>/environ | grep NLS

For Solaris:

$ pargs -e <process ID> | grep NLS

श्रोता प्रक्रिया खोजें

ps -ef|grep list|grep TEST

For Linux:

$ strings /proc/<pmon process ID>/environ | grep NLS

For Solaris:

$ pargs -e <process ID> | grep NLS

उदाहरण
समस्या को पुन:पेश करने के लिए हम निम्नलिखित कर सकते हैं

ORA_NLS10=< >
sqlplus / as sysdba
shutdown immediate
startup
lsnrctl stop TEST
lsnrctl start TEST

Now unset ORA_NLS10
Now Setup Bequeath connection
sqlplus / as sysdba
SQL> declare
F_LOG  utl_file.file_type;
begin
F_LOG := utl_file.fopen('TESTDIR','k', 'w');
end;
/  2    3    4    5    6
declare
*
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 4

मुझे उम्मीद है कि आपको ORA-29283 पर यह पोस्ट पसंद आई होगी:अमान्य फ़ाइल संचालन और यह आपकी समस्या निवारण में मदद करता है

इसके अलावा, पढ़ें

R12.2 में ऐप्स पासवर्ड कैसे बदलें
FNDLOAD कमांड:FNDLOAD कमांड/लोडर एक सामान्य-उद्देश्य वाली उपयोगिता है जो संरचित डेटा को टेक्स्ट फ़ाइल और डेटाबेस के बीच EBS परिवेश में ले जाती है।
ORA-29280:अमान्य निर्देशिका पथ
ORA-29285:फ़ाइल लिखने में त्रुटि


  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. पैरामीटरयुक्त ऑरैकल सम्मिलित क्वेरी कैसे लिखें?

  3. एयरफ्लो को ओरेकल डेटाबेस से कैसे कनेक्ट करें

  4. Oracle वेयरहाउस बिल्डर के साथ डेटा वेयरहाउसिंग ETL डेटा प्रोफाइलिंग

  5. Oracle से PostgreSQL में माइग्रेट करने के शीर्ष दस कारण