ORA-29285:kesalahan penulisan file adalah salah satu kesalahan yang mungkin terjadi saat melakukan operasi penanganan file di database oracle
Operasi penanganan file adalah membuat file baru di Sistem Operasi, memperbarui atau memodifikasinya. Fungsi ini cukup sering digunakan di PLSQL untuk manipulasi file
Alasan dan Resolusi untuk ORA-29285
(1) Sistem File Unix /Linux tempat Anda menulis file sudah penuh yaitu 100% digunakan.
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
Resolusi
Kosongkan ruang di /u500 dan kita dapat memeriksa kembali blok PLSQL
Jadi pada dasarnya Anda perlu menghapus file yang tidak perlu dalam sistem file yang digunakan. Harap pastikan Anda tidak menghapus file apa pun yang sedang digunakan. Jika Anda menghapus file yang aktif, maka ruang tidak akan dibebaskan
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) Ketika file dibuka oleh FOPEN kecuali jika nilai ditentukan untuk parameter MAX_LINESIZE, maka defaultnya adalah 1024. Jadi kesalahan ini juga terjadi jika Anda memasukkan lebih dari 1024 karakter dalam satu baris
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
Resolusi
Kami dapat mencegah kesalahan ini dengan menentukan ukuran garis maksimum
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.
Parameter MAX_LINESIZE dapat mencapai 32767. Jika Anda memiliki garis yang lebih panjang dari 32K, maka data harus ditulis sebagai biner.
(3) Kesalahan ini dapat terjadi saat Memanggil UTL_FILE.PUT_LINE berulang kali dalam satu lingkaran saat menulis secara kumulatif lebih dari 1024 karakter. Alasannya salah Pengaturan ORA_NLS10 atau variabel ORA_NLS10 tidak disetel
Contoh
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
Resolusi
Harap pastikan ORA_NLS10 diatur di database oracle dan lingkungan pendengar
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.
Saya harap Anda menyukai posting terperinci ini di ORA-29285. Silakan suka dan berikan umpan balik
Artikel Terkait
ORA-29280:jalur direktori tidak valid
ORA-29283 :operasi file tidak valid
ORA-00942 tabel atau tampilan tidak ada
ORA-29913
FND_FILE di aplikasi oracle
https://docs.Oracle.com/cd/E11882_01/server.112/e17766/e29250.htm