Flashback

We were both young when I first saw you.
I close my eyes, and the flashback starts,

(@Love story – Taylor Swift)

Vâng, cái mà mình muốn nói ở đây chính là kỹ thuật Flashback trong Oracle.

Flashback là gì?

Một cách định nghĩa mình thích “Effectively, it’s a “oh shit!” proctection mechanism for DBAs”,  là cách thức nhìn dữ liệu tại một thời điểm trong quá khứ mà không cần dùng đến các thao tác recovery. (đây chính là điểm quan trọng để chống lại kiểu Flashback lập lờ của M$ http://www.eggheadcafe.com/software/aspnet/35792955/sqlserver-equivalent-of-flashback.aspx http://msdn.microsoft.com/en-us/library/ms175158.aspx, ha ha, dùng Snapshot cơ đấy).

Khi nào thì dùng Flashback

  • Thực hiện các câu Query trả về dữ liệu ở quá khứ
  • Thực hiện các câu Query trả về metadata chỉ ra sự thay đổi chi tiết trong lịch sử
  • Recover dữ liệu vào 1 thời điểm trong quá khứ

Để làm các điều trên thì phải dùng tools gì

  • Oracle Flashback Query
  • Oracle Flashback Version Query
  • Oracle Flashback Transaction Query
  • DBMS_FLASHBACK package

Nói lằng nhằng như trên, tóm lại cái Flashback này dùng để làm gì: như cánh cửa thần của Doremon (ngoài lề tý, mình mà là thằng Nobita thì thôi chẳng phải làm gì cho mệt nhỉ?).

  • Oracle Flashback Table: phục hồi dữ liệu về 1 thời điểm trong quá khứ. Nhân dân có thể restore table trong khi database vẫn đang hoạt động, undo các thay đổi cho từng table
  • Oracle Flashback Drop: Nhân dân nhỡ tay drop 1 table, muốn sửa sai. Cái này >< với lệnh DROP table
  • Oracle Flashback Database: Nhanh chóng đưa database trở về một thời điểm trước đó, có thể undo nhưng thao tác sai trước đó. Lưu ý nhân dân k việc gì mà phải đi restore database backups như sản phẩm của anh Hoá Đơn Cổng.

Cách dùng: Rất đơn giản với từ khoá AS OF TIMESTAMP  TO_TIMESTAMP

Ex1: SELECT *

FROM employees AS OF TIMESTAMP

TO_TIMESTAMP(‘2004-04-04 09:30:00’, ‘YYYY-MM-DD HH:MI:SS’)

WHERE last_name = ‘Chung’;

Ex2:

INSERT INTO employees

(SELECT * FROM employees AS OF TIMESTAMP

TO_TIMESTAMP(‘2004-04-04 09:30:00’, ‘YYYY-MM-DD HH:MI:SS’)

WHERE last_name = ‘Chung’);

Trông cũng dễ nhỉ?

– Table A has been deleted? Who did it?

– Britney Spears: Oops ! I did it again (:))

19 Aug 2010

HN

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: