Khi restore từ bản hot backup của Oracle thông qua RMAN, bạn sẽ gặp rất nhiều trường hợp hiển thị lỗi sau khi thực hiện restore và recover database bằng RMAN. Nhất là khi bạn restore ở một máy khác.
Nguyên nhân việc sinh lỗi này là do bạn tạo RMAN backup trong khi Database ở trong trạng thái OPEN (tức là DB vẫn đang hoạt động và cho phép ghi vào datafile). Và SCN của datafile header so với nội dung trong controlfile có thể lệch nhau. Lúc này ngoài các bản Backup RMAN của datafile. Bạn sẽ cần thêm bản backup của Archive log được tạo ra sau khi bạn backup data file database.
Các thay đổi sẽ được ghi lại vào Archive log trong quá trình backup Datafile. Vì thế sau khi restore datafile xong, bạn cần apply thêm archived log để đồng bộ lại các thay đổi datafile so với controlfile.
Backup của Archived Log có 2 dạng. Dạng 1 là các file có đuôi .ARC nằm trong khu vực FAST RECOVERY AREA (FRA) và Dạng 2 là dạng Backup set chứa 1 tập hợp các file .ARC này.
Đối với các file Backup ở Dạng 1 thì bạn có thể apply trực tiếp bằng cách trỏ đường dẫn tới file này khi Oracle hỏi.
Đối với backup set thìbạn phải làm thêm 1 bước để giải nén các file .ARC từ backup set này để có thể sử dụng. Mặc định sau khi restore Archived log bằng RMAN thì các file ARC tạo ra sẽ tự động chuyển vào khu vực FRA và có thể dùng tùy chọn AUTO để recover khi Oracle hỏi.
Sau màn Giải thích hơi dài dòng thì bước tiếp theo là bạn phải xác định được ta cần apply thêm archive log. Để xác định cần apply archived log nào bạn dùng lệnh sau:
SQL> recover database using backup controlfile until cancel;
Lức này trên màn hình sẽ hiện ra bạn cần apply redo log nào (Ví dụ: O1_MF_1_415179_%U_.ARC).
Nếu bạn có backup các file có đuôi .ARC thì chỉ cần lần lượt chỉ đường dẫn tới các file này là OK.
Nếu bạn dùng RMAN để tạo backup set cho các archived này thì trong RMAN cần làm 1 bước để bung các file .ARC này ra.
Ví dụ
Đầu tiên ta cần xác định các SCN có trong từng backup set của archive log bằng lệnh:
RMAN> LIST BACKUP OF ARCHIVELOG ALL;
Tiếp theo là ta sẽ chỉ rõ ta cần restore từ SCN nào tới SCN nào.
RMAN> restore archivelog from logseq 415153 until logseq 415178;
Các lệnh trên thực hiện khi DB ở trạng thái MOUNT.
Một khuyến nghị khi tạo hot backup bằng RMAN là nên backup cả Archive log sau khi backup các data file của Oracle. Sau khi backup xong data file nên khởi tạo lệnh 'alter system archive log current'
để ghi hết các archive log ở thời điểm backup xong data file. Sau đó mới backup archive log vào backup set.
Chúc các bạn thành công