Database, Lỗi thường gặp

Xử lý sự cố spfile bị corrupt khi database đang hoạt động

Sự cố hỏng spfile trong khi database đang hoạt động

1. Mô tả sự cố

Một học viên trong lớp Oracle OCP hỏi tôi về sự cố không thể tạo được pfile từ spfile, mã lỗi như sau:

SQL> create pfile=’/tmp/pfile1.ora’ from spfile;
create pfile=’/tmp/pfile1.ora’ from spfile
*
ERROR at line 1:
ORA-01565: error in identifying file
‘/u01/app/oracle/product/19.0.0/dbhome_1/dbs/spfileorcl.ora’
ORA-27046: file size is not a multiple of logical block size

Sự cố này làm tôi nhớ đến thời điểm 2013, lúc đó tôi đang là DBA trong một ngân hàng nằm trên phố Duy Tân. Chúng tôi có một database phiên bản 10g đang hoạt động hết sức bình thường. Một ngày nọ, máy chủ cần restart, sau khi bật lại thì phát hiện database không thể chuyển lên trạng thái NOMOUNT. Nguyên nhân của sự cố năm 2013 và lỗi học viên của tôi đang gặp đều giống nhau: SPFILE đã bị corrupt trong quá trình database đang hoạt động.

2. Spfile bị corrupt thì sẽ ảnh hưởng thế nào ?

Do database chỉ sử dụng spfile tại thời điểm database startup, chuyển từ trạng thái shutdown sang nomount, vì vậy trong quá trình hoạt động spfile bị hỏng thì database vẫn OPEN bình thường.

Khi có những tác động cần sử dụng spfile thì hệ thống mới kiểm tra tới file này.

  • Trường hợp học viên của tôi muốn tạo pfile từ spfile -> hệ thống sẽ đi kiểm tra nội dung trong spfile. Lúc này Oracle phát hiện spfile đã hỏng, do đó có cảnh báo lỗi như bạn thấy ở phần 1
  • Trường hợp khi restart database, Oracle sẽ phải đọc spfile để bật lên trạng thái NOMOUNT -> lúc này phát hiện spfile bị lỗi. Đó là lý do tại sao năm 2013 ngân hàng tôi làm việc không thể bật database sau khi restart.

3. Cách xử lý

Bạn chỉ cần tầm 5 phút là có thể xử lý được sự cố trên.

Các tham số trong spfile đều được lưu lại trong alert log trong quá trình database instance startup. Do đó chúng ta có thể làm các bước sau để khôi phục

Bước 1: Vào alert log của database để lấy nội dung các parameter khi database instance bật.

Bước 2: Tạo pfile từ các tham số lấy được ở bước 1

Bước 3: Bật database instance sử dụng pfile ở bước 2

Bước 4: Tạo lại spfile từ pfile trên

Video thực hiện chi tiết: https://youtu.be/MtqT2aewUio

Các bạn có thể đặt câu hỏi cho tôi trên cộng đồng học viên: https://www.facebook.com/groups/congdongtalent5

Dành cho các bạn muốn trở thành DBA chuyên nghiệp với sự hướng dẫn trực tiếp từ tôi: https://talent5.com.vn/khoa-hoc/tro-thanh-senior-dba-tuong-duong-chung-chi-ocp/

Leave a Reply

avatar
  Subscribe  
Notify of