Một phân tích trực quan về lỗi "kinh điển" khi đặt datafile sai chỗ và cách xử lý chuyên nghiệp.
Trạng thái: Hệ thống hoạt động bình thường.
Chỉ instance trên nút vừa tạo “nhìn thấy” file; các instance khác báo lỗi ORA‑01157 (cannot identify/lock data file) và ORA‑01110 (data file xxx) trong alert log. ([oraclenext.com][1])
Những phiên giao dịch truy cập tablespace chứa datafile bị kẹt; có thể kèm ORA‑00376: file xxx cannot be read at this time.
Nếu datafile tiếp tục nhận ghi, quá trình recovery hay standby apply trên các nút/standby DB sẽ thất bại vì không tìm thấy file được chia sẻ.
Một số hãng vận hành đã ghi nhận “typo” này gây gián đoạn SX vài giờ do phải shutdown để sửa. ([Oracle Forums][2])
Di chuột vào để xem chi tiết. Biểu đồ chỉ mang tính minh họa.
Chạy câu lệnh để lọc file không nằm trên ASM. Kết quả sẽ hiển thị path local như /u01/datafile.
SELECT inst_id, file#, name, status
FROM gv$datafile
WHERE name NOT LIKE '+%'; -- lọc file không nằm trên ASM
Kết quả:
INST_ID | FILE# | NAME | STATUS |
---|---|---|---|
1 | 18 | +DATA/DB/data.dbf | ONLINE |
1 | 25 | /u01/datafile/new.dbf | RECOVER |
2 | 18 | +DATA/DB/data.dbf | ONLINE |
Tìm chuỗi `ORA-01157`, `ORA-01110`. ([oraclenext.com][1]) Log sẽ hiển thị lỗi không tìm thấy file trên node khác.
-- Waiting for events --
Trên các nút khác, chạy `ls /u01/datafile/xxx.dbf` – file sẽ “không tồn tại”. Điều này xác nhận vấn đề local FS.
Di chuột vào để xem chi tiết. Biểu đồ chỉ mang tính minh họa. ([DBACLASS][3])
Kể từ 12c bạn có thể “online move”; bản cũ hơn cần offline datafile hoặc dùng RMAN/ASMCMD. ([DBACLASS][3])
Oracle tự copy, update controlfile và vẫn cho phép DML hầu như không gián đoạn. ([Ron Ekins' Tech Blog][5])
ALTER DATABASE MOVE DATAFILE
'/u01/datafile/foo01.dbf'
TO '+DATA';
`db_create_file_dest='+DATA'` giúp mọi lệnh `ADD DATAFILE` không cần chỉ rõ đường dẫn, tránh sai lầm.
Ép biến `$ORACLE_SID`, prompt cảnh báo khi đường dẫn không bắt đầu bằng `+`. Sử dụng script template để standardize.
Bám tiêu chuẩn DevOps: PR/Code‑review cho script DDL, đảm bảo không typo trong production.
Đặt rule bắt ORA‑01157, gửi page trong 1‑2 phút để phát hiện sớm.
Chọn câu trả lời đúng để nhận "phần thưởng" bất ngờ!