Table of Contents

Giới thiệu

Flashback Table là gì?

Flashback Table là kỹ thuật đưa dữ liệu của 1 bảng quay lại 1 thời điểm cụ thể trong quá khứ.
Kỹ thuật này thường được sử dụng khi người dùng hay ứng dụng lỡ thay đổi hay xoá nhầm dữ liệu.
 

Một số chú ý quan trọng khi sử dụng Flashback

  • Không flashback được những đối tượng thuộc schema SYS.
  • Nếu bảng cần flashback có bảng con tham chiếu đến, cần flashback bảng con trước.
  • Nếu những hành động sau diễn ra sau thời điểm bạn cần flashback, thao tác flashback sẽ không thực hiện được:
    • upgrading, moving, truncating table,
    • thêm constraint vào table, thêm table vào cluster
    • thay đổi hay xoá cột trong bảng
    • thay đổi column encryption key
    • add, drop, merg, split, coales, hay truncate partition hay subpartition (trừ việc thêm partition kiểu range).
  • Các đối tượng dependant với table (indexes, trigger) sẽ quay lại nhưng tên sẽ giữ nguyên như  lúc ở recyclebin. Cần thay đổi lại tên sau khi flashback.

Các bước thực hiện Flashback

Kiểm tra xem Flashback log đã được enable hay chưa

				
					select flashback_on from v$database;
				
			

 Nếu chưa, bạn hãy thực hiện bước sau:

Enable Flashback log

				
					alter database flashback on;
				
			

và set thời gian bạn muốn lưu trữ các file flashback log (mặc định là 1440 phút = 24 giờ)

				
					alter system set db_flashback_retention_target= 2880;
				
			

 Tạo bảng và thêm dữ liệu

				
					create table duydx.products (
id number primary key,
product_name varchar2(50)
);
				
			
				
					insert into duydx.products values (1,'Product 1');
insert into duydx.products values (2,'Product 2');
insert into duydx.products values (3,'Product 3');
insert into duydx.products values (4,'Product 4');
insert into duydx.products values (5,'Product 5');
commit;
				
			

Kiểm tra SCN hay thời gian hiện tại

				
					select to_char(current_scn) from v$database;
TO_CHAR(CURRENT_SCN)
----------------------------------------
4668734

select to_char(sysdate, 'dd-MON-YYYY hh24.MI.SS') from dual;

TO_CHAR(SYSDATE,'DD-MON-YYH
---------------------------
12-DEC-2022 11.14.50
				
			

Giả lập xoá nhầm dữ liệu

				
					delete duydx.products;
commit;
				
			

Bạn đã xoá nhầm toàn bộ dữ liệu của bảng products!!!

Đừng lo lắng, hãy ngay lập tức làm theo các bước dưới đây:

Enable row movement

				
					alter table duydx.products enable row movement;
				
			

Flashback to scn

				
					flashback table duydx.products to scn 4668734;

				
			
Số SCN ở đây là số bạn đã ghi lại được ở bước bên trên.
 
hoặc bạn cũng có thể chỉ định ra thời gian trước khi bị xoá nhầm.
 

Flashback to timestamp

				
					flashback table duydx.products to timestamp to_timestamp('12-DEC-2022 11.14.50','dd-MON-YY hh24.MI.SS');

				
			

 Disable row movement

				
					alter table duydx.products disable row movement;
				
			

 Kiểm tra lại dữ liệu

				
					select * from duydx.products;
				
			

flashback table

Chúc các bạn thành công.

Nguồn: https://dangxuanduy.com/

Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.

Đọc thêm  Cấu hình Logical Replication trong PostgreSQL
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x