Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana mengatasi ORA-29283 :operasi file tidak valid

ORA-29283:operasi file yang tidak valid adalah kesalahan yang cukup umum.

Itu terjadi sebagian besar karena dua alasan

(1) Direktori dan file harus memiliki izin yang sesuai pada tingkat OS untuk pengguna yang sama yang memulai database Oracle

Misalnya

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

Ini juga terjadi jika direktori tidak memiliki izin yang sesuai untuk pengguna Oracle dari mana database dimulai.

Jika Anda melakukan perubahan tingkat grup di Unix dan pengguna Oracle terlibat, disarankan untuk memantulkan database dan pendengar juga

Ini juga dapat terjadi jika Anda telah membuat direktori oracle seperti ini

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

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

Tapi itu tidak ada di 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

Ini juga dapat terjadi ketika Anda membaca file dan pengguna oracle OS tidak memiliki izin untuk melakukannya

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) Alasan kedua terbanyak untuk kegagalan ini adalah setelan ORA_NLS10  di database Oracle dan lingkungan listener.

Jika Anda mengaktifkan truss pada proses, file Truss menunjukkan blok file telah dibaca dan blok berikutnya tidak dapat dibaca atau rusak karena pengaturan NLS (ORA_NLS10).

Kesalahan berikut mungkin ditampilkan di rangka

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

Direkomendasikan untuk memiliki pengaturan yang konsisten di seluruh database dan pendengar.

Baik database dan Listener memiliki set ORA_NLS10 yang sama atau keduanya memiliki nilai yang tidak disetel.

Menyetel ORA_NLS10

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

Membatalkan setelan ORA_NLS10

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

Jika database dan listener sedang mulai menggunakan cluster Oracle, kita dapat melakukan pengaturan ini di srvctl.

Kita dapat memeriksa pengaturan ORA_NLS menggunakan perintah di bawah ini di OS

Temukan proses 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

Temukan proses pendengar

ps -ef|grep list|grep TEST

For Linux:

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

For Solaris:

$ pargs -e <process ID> | grep NLS

Contoh
Kita dapat melakukan hal berikut untuk mereproduksi masalah

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

Saya harap Anda menyukai posting ini tentang Cara mengatasi ORA-29283:operasi file tidak valid dan ini membantu dalam pemecahan masalah Anda

Juga,Baca

Cara mengubah kata sandi aplikasi di R12.2
FNDLOAD Perintah:Perintah/pemuat FNDLOAD adalah utilitas tujuan umum yang memindahkan data terstruktur antara file teks dan database di lingkungan EBS.
ORA-29280:jalur direktori tidak valid
ORA-29285:kesalahan penulisan file


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan antara kursor eksplisit dan implisit di Oracle?

  2. ORA-12519 TNS:tidak ditemukan penangan layanan yang sesuai

  3. Perubahan Tabel Pemantauan di Oracle

  4. Bagaimana Mengonversi Angka ke String di Oracle?

  5. Keamanan Database Oracle – Enkripsi dan Dekripsi