Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách giải quyết ORA-29283:hoạt động tệp không hợp lệ

ORA-29283:hoạt động tệp không hợp lệ là một lỗi khá phổ biến.

Nó xảy ra chủ yếu vì hai lý do

(1) Thư mục và tệp phải có quyền thích hợp ở cấp hệ điều hành cho cùng một người dùng đã khởi động cơ sở dữ liệu Oracle

Ví dụ

 Thư mục không tồn tại trên OSls / u555 / app / oracleKhông có tệp hoặc thư mục như vậySQL> statementF_LOG utl_file.file_type; beginF_LOG:=utl_file.fopen ('/ u555 / app / oracle', 'k', 'w'); end; / 2 3 4 5 6declare * ERROR tại dòng 1:ORA-29283:hoạt động tệp không hợp lệORA-06512:tại "SYS.UTL_FILE", dòng 536ORA-29283:hoạt động tệp không hợp lệORA-06512:tại dòng 4 

Điều này cũng xảy ra nếu thư mục không có quyền thích hợp cho người dùng Oracle mà từ đó cơ sở dữ liệu được khởi động.

Nếu bạn đang thực hiện bất kỳ thay đổi cấp độ nhóm nào trên Unix và người dùng oracle có liên quan, bạn nên trả lại cả cơ sở dữ liệu và trình nghe

Điều này cũng có thể xảy ra nếu bạn đã tạo một thư mục oracle như thế này

 SQL> tạo thư mục TESTDIR dưới dạng '/ u555 / oracle / tmp'; SQL> cấp quyền đọc, ghi trên thư mục TESTDIR thành công khai; 

Nhưng nó không tồn tại trong OS

 SQL> statementF_LOG utl_file.file_type; beginF_LOG:=utl_file.fopen ('TESTDIR', 'k', 'w'); end; / 2 3 4 5 6declare * LỖI ở dòng 1:ORA-29283:tệp không hợp lệ operationORA-06512:tại "SYS.UTL_FILE", dòng 536ORA-29283:hoạt động tệp không hợp lệORA-06512:tại dòng 4 

Điều này cũng có thể xảy ra khi bạn đang đọc tệp và người dùng tiên phong hệ điều hành không có quyền làm điều đó

 SQL> statementF_LOG utl_file.file_type; beginF_LOG:=utl_file.fopen ('/ u555 / app / oracle', 'k', 'r'); end; / 2 3 4 5 6declare * LỖI ở dòng 1:ORA -29283:thao tác tệp không hợp lệORA-06512:tại "SYS.UTL_FILE", dòng 536ORA-29283:thao tác tệp không hợp lệORA-06512:tại dòng 4 

(2) Lý do thứ hai cho lỗi này là cài đặt ORA_NLS10 trong cơ sở dữ liệu Oracle và môi trường trình nghe.

Nếu bạn bật truss trong quá trình này, tệp Truss hiển thị một khối của tệp được đọc và các khối tiếp theo không thể đọc hoặc bị hỏng do cài đặt NLS (ORA_NLS10).

Lỗi sau có thể được hiển thị trong giàn

 lỗi đọc tệp 
lỗi ghi tệp
lỗi nội bộ
kích thước dòng tối đa không hợp lệ
tên tệp không hợp lệ
quyền truy cập thư mục bị từ chối
bù đắp không hợp lệ được chỉ định cho tìm kiếm Thao tác xóa tệp
không thành công
thao tác đổi tên tệp không thành công
Đã xảy ra lỗi luồng trong khi nén hoặc giải nén.
Đã xảy ra lỗi dữ liệu trong quá trình nén hoặc giải nén.
thẻ tiêu đề mime không hợp lệ
chuỗi được mã hóa không hợp lệ
Biểu diễn nén quá lớn

Bạn nên có cài đặt nhất quán trên cơ sở dữ liệu và trình nghe.

Cả cơ sở dữ liệu và Trình xử lý đều có cùng một bộ ORA_NLS10 hoặc cả hai đều chưa đặt giá trị.

Đặt ORA_NLS10

 ORACLE_SID =TESTORA_NLS10 =<> sqlplus / as sysdbashutdown ngay lập tức dừng TESTlsnrctl bắt đầu KIỂM TRA 

Đang hủy đặt ORA_NLS10

 ORACLE_SID =TEST  bỏ đặt ORA_NLS10  sqlplus / as sysdbashutdown ngay lập tức 

Nếu cơ sở dữ liệu và bộ nghe đang được khởi động bằng Oracle cluster, chúng ta có thể thực hiện cài đặt này trong srvctl.

Chúng tôi có thể kiểm tra cài đặt của ORA_NLS bằng lệnh dưới đây trong OS

Tìm quy trình PMON

 ps -ef | grep pmon | grep TESTĐối với Linux:$ string / proc /  / environ | grep NLSĐối với Solaris:$ pargs -e  | grep NLS 

Tìm quy trình lắng nghe

 ps -ef | grep list | grep TESTĐối với Linux:$ string / proc /  / environ | grep NLSĐối với Solaris:$ pargs -e  | grep NLS 

Ví dụ
Chúng tôi có thể thực hiện theo các bước sau để tái tạo vấn đề

 ORA_NLS10 =<> sqlplus / as sysdbashutdown ngay lập tức khởi độnglsnrctl dừng TESTlsnrctl start TESTBây giờ chưa đặt ORA_NLS10Bây giờ thiết lập Bequeath các kết nốiqlplus / as sysdbaSQL> statementF_LOG utl_file.file_type; beginF_LOG.fopen ',' tệp_type; startF_LOG:', ut' end; / 2 3 4 5 6declare * ERROR tại dòng 1:ORA-29283:hoạt động tệp không hợp lệORA-06512:tại "SYS.UTL_FILE", dòng 536ORA-29283:hoạt động tệp không hợp lệORA-06512:tại dòng 4 

Tôi hy vọng bạn thích bài đăng này về Cách giải quyết ORA-29283:hoạt động tệp không hợp lệ và điều này giúp khắc phục sự cố của bạn

Ngoài ra, hãy đọc

Cách thay đổi mật khẩu ứng dụng trong R12.2
Lệnh FNDLOAD:Lệnh / trình tải FNDLOAD là một tiện ích có mục đích chung di chuyển dữ liệu có cấu trúc giữa tệp văn bản và cơ sở dữ liệu trong môi trường EBS.
ORA-29280:đường dẫn thư mục không hợp lệ
ORA-29285:lỗi ghi tệp


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm 2 tháng vào dấu thời gian hiện tại

  2. Truy vấn Oracle đơn giản:chữ không khớp với chuỗi định dạng

  3. cách sử dụng ràng buộc kiểm tra trong oracle

  4. mẫu tên không hợp lệ khi cố gắng chuyển ánh xạ đối tượng loại oracle tùy chỉnh

  5. Hàm LOWER () trong Oracle