Phục hồi Control File với User-managed Backup trong Oracle

Phục hồi Control File với User-managed Backup trong Oracle

Control File có vai trò đặc biệt quan trọng trong hoạt động của Database. Nếu Control File bị lỗi hoặc mất, hẳn nhiên Database sẽ không thể hoạt động. Nếu bạn sử dụng User-managed Backup thay cho RMAN, bạn cần phục hồi Control File ở 2 tình huống lỗi sau:

  • Một Control File bị lỗi (nhưng vẫn còn các Control File khác do được cấu hình multiplexed)
  • Tất cả Control File đều bị lỗi

Nội dung bên dưới hướng dẫn bạn cách phục hồi Control File cho 2 tình huống lỗi này.

Phục hồi khi một Control File bị lỗi (có cấu hình multiplexed)

Với cấu hình multiplexed, khi một Control File bị lỗi thì bạn vẫn còn các Control File khác có thể sử dụng được (thường nằm ở các ổ đĩa khác. Thao tác phục hồi Control File ở tình huống này là hoàn toàn đơn giản. Bạn chỉ cần SHUTDOWN Database và thay thế Control File bị lỗi bằng Control File không lỗi.

Trước tiên, bạn dùng lệnh sau để biết chính xác vị trí các Control File:

SQL> SHOW PARAMETER CONTROL_FILES;

Lệnh trên có kết quả như bên dưới:

NAME TYPE VALUE
————————————— ———————– ————————————————————————-
control_files string D:\Oracle\TestDB\Control01.ctl, E:\Oracle\TestDB\Control02.ctl, F:\Oracle\TestDB\Control03.ctl

Giả sử Control File bị lỗi là Control03.ctl. Nếu Database đang hoạt động, Oracle sẽ ngay lập tức báo lỗi sau khi bạn thực thi một lệnh nào đó:

SQL> ORA-00210: cannot open the specified control file…

Nếu STARTUP Database sẽ xuất hiện lỗi sau:

SQL> ORA-00205: error in identifying control file, check alert log for more info

Để phục hồi, bạn SHUTDOWN Database:

SQL> SHUTDOWN ABORT;

Thay thế Control File bị lỗi bằng Control File không lỗi.

C:\XCOPY E:\Oracle\TestDB\Control02.ctl F:\Oracle\TestDB\Control03.ctl

Tiến hành STARTUP Database.

SQL> STARTUP;

Phục hồi khi tất cả Control File đều bị lỗi

Nếu tất cả Control File đều bị lỗi, bạn chỉ còn cách phục hồi lại từ bản sao lưu hoặc tạo lại Control File. Ở đây, giả sử bạn cần phục hồi lại Control File từ bản sao lưu. Cùng thao tác phục hồi Control File, bạn cần khôi phục lại Database từ các Data File và Archive Redo Log có trong bản sao lưu. Các bước tiến hành như sau:

  1. Shutdown Database
  2. Phục hồi Control File từ bản sao lưu
  3. Start Database ở Mount Mode. Tiến hành khôi phục Database bằng lệnh RECOVER DATABASE USING BACKUP CONTROLFILE
  4. Open Database với tùy chọn RESETLOGS

1. Shut down Database

Bạn shut down Database bằng lệnh sau:

SQL> SHUTDOWN ABORT;

2. Phục hồi Control File từ bản sao lưu

Bạn sử dụng chức năng COPY của HĐH để phục hồi các Control File trở lại đúng đường dẫn được cấu hình trước đây.

Để biết được chính xác đường dẫn chứa các Control File, bạn dùng lệnh:

SQL> SHOW PARAMETER CONTROL_FILES;

3. Start Database ở Mount Mode và tiến hành khôi phục Database

Bạn start Database ở Mount Mode bằng lệnh sau:

SQL> STARTUP MOUNT;

Khởi động quá trình khôi phục bằng lệnh:

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE;

Lúc này, Oracle xuất hiện thông báo cần tiến hành apply các Archive Redo Log. Bạn chọn AUTO để Oracle tự tiến hành apply các Archive Redo Log cần thiết.

4. Open Database với RESETLOGS

Bạn open Database với tùy chọn RESETLOGS như sau:

SQL> ALTER DATABASE OPEN RESETLOGS;