Sử dụng kỹ thuật flashback table

   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)
);

Thêm dữ liệu cho bảng

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;

 

Đọc thêm  PgPool là gì

   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é.

KHOÁ DÀNH CHO NGƯỜI MỚI

 KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)  

CÁC KHOÁ NÂNG CAO:

 KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c 

 KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD  

CÁC KHOÁ COMBO:

 COMBO 1: ADMIN 1 + MULTITENANT 12c 

 COMBO 2: ADMIN 1 + DATA GUARD 

Đọc thêm  [Ebook] Oracle RMAN for Absolute Beginners - Download PDF

 COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD 

LỊCH HỌC:

Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE 

ĐĂNG KÝ:

Form đăng ký

 

   Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.

 

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận