Trong Oracle Database, restore point là một điểm tham chiếu cho phép bạn quay lại trạng thái cơ sở dữ liệu tại thời điểm đó. Điều này rất hữu ích cho việc khôi phục dữ liệu sau các thay đổi quan trọng hoặc các thao tác có khả năng gây rủi ro. Có hai loại restore points trong Oracle:
- Normal Restore Point: Điểm khôi phục thông thường, chỉ lưu vị trí SCN (System Change Number) tại thời điểm tạo ra.
- Guaranteed Restore Point: Điểm khôi phục được đảm bảo, giữ lại tất cả thông tin cần thiết để quay lại trạng thái đó mà không phụ thuộc vào các bản sao lưu.
Tạo Restore Point
Normal Restore Point
create restore point normal_restore_point;
Guaranteed Restore Point
create restore point guaranteed_restore_point guarantee flashback database;
Kiểm tra Restore Point
Để xem các restore points đã tạo, bạn có thể sử dụng câu lệnh sau:
select name, scn, time, guarantee_flashback_database from v$restore_point;
Sử dụng Restore Point
Flashback Database
Để khôi phục cơ sở dữ liệu về một restore point cụ thể, bạn cần đưa cơ sở dữ liệu về trạng thái mount và sử dụng lệnh Flashback Database:
— Đưa cơ sở dữ liệu về trạng thái MOUNT
shutdown immediate; startup mount;
— Khôi phục về restore point
flashback database to restore point normal_restore_point;
— Mở cơ sở dữ liệu
alter database open resetlogs;
Xóa Restore Point
Khi không còn cần đến các restore point, bạn có thể xóa chúng để giải phóng không gian:
drop restore point normal_restore_point;
Quản lý Flash Recovery Area
Đảm bảo rằng Flash Recovery Area (FRA) có đủ không gian để lưu trữ thông tin liên quan đến các restore points, đặc biệt là với guaranteed restore points.
Kiểm tra dung lượng FRA
select * from v$recovery_file_dest; alter system set db_recovery_file_dest_size = 20g;
Kiểm tra database đã bật flashback hay chưa:
select flashback_on from v$database;
Kiểm tra log flashback
select * from v$flashback_database_log;
Đặt kích thước log flashback
alter database flashback logfile size <new_size>;
Kiểm tra thông tin Flashback tối đa có thể về trước?
–theo time
select to_char(oldest_flashback_time,’dd-mon-yyyy hh24:mi:ss’) from v$flashback_database_log;
–theo scn
select oldest_flashback_scn from v$flashback_database_log;
Lưu ý:
Restore point chỉ được duy trì trong thời gian được quy định bởi tham số DB_FLASHBACK_RETENTION_TARGET. Khi thời gian này hết, Oracle có thể tự động xóa các restore point cũ.
Trước khi tạo restore point thì CSDL phải được active tính năng Flashback_ON
alter database flashback on;
Guaranteed Restore Points yêu cầu không gian lưu trữ lớn hơn và có thể làm đầy Flash Recovery Area nếu không được quản lý đúng cách.
Flashback Database có thể không phục hồi được các thay đổi ở mức cấu trúc (như DROP TABLE) nếu không sử dụng guaranteed restore points.
Chỉ định chính xác restore point cần thiết để tránh mất dữ liệu quan trọng.