Xử lý lỗi ORA-19573: cannot obtain exclusive enqueue for datafile

1. Mô tả lỗi ORA-19573

05 sáng tôi nhận được cuộc điện thoại từ một người quen đang làm SYSADMIN nhờ hỗ trợ. Tổng quan của vấn đề như sau:

  • Hệ thống của anh ấy bị lỗi một số file vật lý (hỏng mức hệ điều hành) dẫn đến các kết nối sử dụng dữ liệu liên quan đến datafile ấy đều bị lỗi
  • Anh bạn tôi rất may là có bản backup full, database cấu hình hoạt động ở chế độ ARCHIVELOG.
  • Lò dò trên mạng tìm câu lệnh để restore datafile bị lỗi thì nhận được cảnh báo restore không thành công với thông báo dạng như sau:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 10/30/2020 14:11:12
ORA-19870: error while restoring backup piece /fra/PAYMENT/backupset/2020_10_30/o1_mf_nnndf_TAG20201030T140314_hsqgomhc_.bkp
ORA-19573: cannot obtain exclusive enqueue for datafile 75
ORA-45909: restore, recover or block media recovery may be in progress

2. Phương án xử lý

Dưới đây là phương án tôi đã hỗ trợ và xử lý tình huống trên

Hiện trạng tôi vào kiểm tra thì các file bị lỗi đều thuộc tablespace nghiệp vụ, như vậy đối với Oracle đây là những datafile non-critical (những critical file là những file thuộc tablespace SYSTEM hoặc UNDO).

Phương án xử lý những file này chỉ cần restore và recover từ bản backup mà không cần phải shutdown database.

Một lưu ý cho anh bạn tôi là anh ta đã thiếu một ghi chú:

  • Trước khi thực hiện restore datafile thì phải thực hiện offline các datafile này. Việc offline giúp hệ thống sẽ không còn sử dụng datafile đó trong quá trình chúng ta restore (tránh được lỗi như bên trên).
  • Sau khi recover thành công thì sẽ thực hiện online lại datafile để hệ thống trở về trạng thái bình thường

3. Demo

Giả sử hệ thống bị mất datafile 75 

Bước 1: Thực hiện offline datafile

SQL> alter database datafile 75 offline;

Database altered.

Bước 2: Thực hiện restore & recover datafile 75

RMAN> recover datafile 11;

RMAN> recover datafile 11;

Bước 3: Thực hiện online datafile 75

SQL> alter database datafile 11 online;

Database altered.

-> Hoàn thành, ứng dụng hoạt động bình thường.

 

Leave a Reply

avatar
  Subscribe  
Notify of