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