- vừa được xem lúc

Hướng dẫn sử dụng tính năng Flashback Table trong Oracle Database để khôi phục dữ liệu một cách hiệu quả

0 0 18

Người đăng: Trương Văn Qui

Theo Viblo Asia

I. Giới thiệu

1. Giới thiệu tổng quan về tính năng Flashback Table trong Oracle Database

Flashback Table là một tính năng quan trọng của Oracle Database, cho phép người dùng khôi phục lại các phiên bản trước đó của một bảng trong cơ sở dữ liệu một cách dễ dàng và nhanh chóng. Tính năng này giúp người dùng phục hồi dữ liệu bị xóa hoặc bị thay đổi một cách hiệu quả và đáng tin cậy mà không cần phải phục hồi toàn bộ cơ sở dữ liệu từ một bản sao lưu. Flashback Table cũng cho phép người dùng xem lại lịch sử của bảng trong cơ sở dữ liệu, giúp họ hiểu rõ hơn về quá trình phát triển của dữ liệu và giúp trong việc phân tích và kiểm tra lỗi. Điều này đặc biệt hữu ích trong các ứng dụng yêu cầu tính linh hoạt và độ tin cậy cao.

2. Giải thích tầm quan trọng và lợi ích của tính năng này

Tính năng Flashback Table là một trong những tính năng quan trọng nhất của Oracle Database, vì nó cho phép người dùng phục hồi dữ liệu một cách nhanh chóng và hiệu quả. Các lợi ích của tính năng này bao gồm:

  1. Phục hồi dữ liệu dễ dàng và nhanh chóng: Với Flashback Table, người dùng có thể phục hồi lại các phiên bản trước đó của một bảng một cách dễ dàng và nhanh chóng, giúp tiết kiệm thời gian và công sức so với việc phục hồi toàn bộ cơ sở dữ liệu từ một bản sao lưu.
  2. Khả năng phục hồi dữ liệu đã bị xóa hoặc bị thay đổi: Flashback Table cho phép người dùng phục hồi lại dữ liệu đã bị xóa hoặc bị thay đổi một cách hiệu quả, giúp họ tránh được các tình huống mất dữ liệu và giảm thiểu rủi ro trong quá trình quản lý cơ sở dữ liệu.
  3. Xem lại lịch sử của bảng: Tính năng này giúp người dùng có thể xem lại lịch sử của bảng trong cơ sở dữ liệu, từ đó giúp họ hiểu rõ hơn về quá trình phát triển của dữ liệu và giúp trong việc phân tích và kiểm tra lỗi.
  4. Tính linh hoạt: Flashback Table cho phép người dùng phục hồi lại các phiên bản trước đó của bảng một cách linh hoạt, từ đó giúp họ tùy chỉnh dữ liệu theo nhu cầu của mình mà không cần phải phục hồi toàn bộ cơ sở dữ liệu từ một bản sao lưu.

Tóm lại, tính năng Flashback Table của Oracle Database là một công cụ hữu ích giúp người dùng quản lý dữ liệu một cách hiệu quả và đáng tin cậy.

II. Cách kích hoạt tính năng Flashback Table

Để kích hoạt tính năng Flashback Table cho một bảng trong Oracle Database, bạn có thể thực hiện theo các bước sau:

  1. Đảm bảo rằng cơ sở dữ liệu của bạn đang chạy ở chế độ ARCHIVELOG. Nếu không, bạn cần phải kích hoạt chế độ này trước khi sử dụng tính năng Flashback Table

  2. Kiểm tra xem tính năng Flashback đã được kích hoạt chưa. Bạn có thể kiểm tra bằng cách sử dụng lệnh sau:

    SELECT flashback_on FROM v$database;

    Nếu kết quả trả về là "YES", điều này có nghĩa là tính năng Flashback đã được kích hoạt

    Nếu là “NO” thì bạn hãy chạy lệnh sau để kích hoạt:

    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;

  3. Kích hoạt tính năng Flashback Table cho bảng cần sử dụng bằng cách sử dụng lệnh sau:

    ALTER TABLE table_name ENABLE ROW MOVEMENT;

    Lưu ý rằng tính năng ROW MOVEMENT phải được kích hoạt trước khi bạn có thể sử dụng tính năng Flashback Table.

  4. Kích hoạt Flashback Table cho bảng cần sử dụng bằng cách sử dụng lệnh sau: ALTER TABLE table_name FLASHBACK ON;

  5. Kiểm tra xem tính năng Flashback Table đã được kích hoạt cho bảng hay chưa. Bạn có thể kiểm tra bằng cách sử dụng lệnh sau:

    SELECT flashback_enabled FROM user_tables WHERE table_name = 'table_name';

    Nếu kết quả trả về là "YES", điều này có nghĩa là tính năng Flashback Table đã được kích hoạt cho bảng. Sau khi kích hoạt tính năng Flashback Table cho bảng, bạn có thể sử dụng các lệnh và công cụ của Oracle Database để phục hồi dữ liệu trước đó của bảng khi cần thiết.

III. Trường hợp Flashback Table sẽ thất bại

  1. Không thể sử dụng tính năng flashback table cho các đối tượng thuộc schema SYS
  2. Nếu bảng cần flashback có các bảng con tham chiếu đến, bạn cần flashback bảng con trước.
  3. Nếu có các hành động như nâng cấp, di chuyển, cắt bảng, thêm ràng buộc vào bảng hoặc thêm bảng vào cluster được thực hiện sau khi thời điểm cần flashback, thì thao tác flashback sẽ không được thực hiện
  4. Thay đổi hoặc xóa cột trong bảng sẽ không được hỗ trợ trong flashback table.
  5. Thay đổi column encryption key sẽ khiến cho việc flashback table thất bại.
  6. Việc thêm, xóa, merge, split, coalesce hay truncate partition hoặc subpartition chỉ hỗ trợ cho partition kiểu range. Những kiểu partition khác sẽ không được hỗ trợ.
  7. Các đối tượng phụ thuộc vào bảng (indexes, trigger) sẽ được phục hồi lại nhưng tên sẽ được giữ nguyên như lúc nằm trong recyclebin. Bạn cần thay đổi lại tên của chúng sau khi đã thực hiện flashback.

IV. Ví dụ sử dụng Flashback table để phục hồi data trong oracle database

Ví dụ này mô tả việc sử dụng tính năng Flashback Table để khôi phục dữ liệu của bảng Employees trong CSDL Oracle. Trước tiên, chúng ta sẽ tạo bảng Employees và thêm một số dữ liệu vào đó:

CREATE TABLE Employees ( ID NUMBER(10), Name VARCHAR2(50), Department VARCHAR2(50), Salary NUMBER(10), Hire_Date DATE
); INSERT INTO Employees VALUES (1, 'John Smith', 'Marketing', 5000, TO_DATE('01/01/2022', 'MM/DD/YYYY'));
INSERT INTO Employees VALUES (2, 'Jane Doe', 'Sales', 6000, TO_DATE('02/15/2022', 'MM/DD/YYYY'));
INSERT INTO Employees VALUES (3, 'Bob Johnson', 'Engineering', 7000, TO_DATE('03/20/2022', 'MM/DD/YYYY')); 

Tiếp theo, chúng ta sẽ kích hoạt tính năng Flashback Table trên bảng Employees:

ALTER TABLE Employees ENABLE ROW MOVEMENT; -- kích hoạt row movement 

Giả sử sau đó chúng ta xóa dữ liệu của nhân viên có ID là 2 như sau:

DELETE FROM Employees WHERE ID = 2; 

Bây giờ, để khôi phục dữ liệu của nhân viên có ID là 2, chúng ta sử dụng tính năng Flashback Table như sau:

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

Sau khi thực hiện lệnh trên, dữ liệu của nhân viên có ID là 2 sẽ được khôi phục trở lại trong bảng Employees. Chúng ta có thể kiểm tra lại bằng cách chạy lệnh sau:

ID Name Department Salary Hire_Date --- ----------- ------------ ------- ----------
1 John Smith Marketing 5000 01/01/2022
2 Jane Doe Sales 6000 02/15/2022
3 Bob Johnson Engineering 7000 03/20/2022 

V. Tổng kết

Tính năng Flashback Table trong Oracle Database cho phép khôi phục dữ liệu trong bảng đến một thời điểm cụ thể trong quá khứ mà không cần phải khôi phục toàn bộ cơ sở dữ liệu. Việc sử dụng tính năng này đảm bảo sự linh hoạt và tiết kiệm thời gian cho người quản trị cơ sở dữ liệu. Để sử dụng tính năng Flashback Table, trước tiên cần kích hoạt tính năng này cho bảng, sau đó sử dụng lệnh FLASHBACK TABLE để khôi phục dữ liệu của bảng. Tuy nhiên, việc sử dụng tính năng này cũng có một số hạn chế, bao gồm không thể khôi phục những đối tượng thuộc schema SYS, không thể flashback bảng con trước bảng cha, và không thể flashback nếu có những hành động như upgrade, move, truncate, thêm constraint, thay đổi cột, thêm hoặc xoá partition...

Bình luận

Bài viết tương tự

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 41

- vừa được xem lúc

BPM Tutorial: Cách tích hợp Database trên nền tảng IBM BPM

Bài viết này hướng dẫn các bạn các thiết lập connection từ Database sẵn có với IBM BPM. Hiện nay IBM BPM hỗ trợ 3 loại DB là IBM Db2, Oracle, và Microsoft SQL Server DB.

0 0 52

- vừa được xem lúc

HOW TO FIND DUPLICATE VALUES IN SQL

Bài viết này xuất phát từ bài toán mà mình gặp rất nhiều trong quá trình test data. Bạn cần visualize lên các dashboard hay đơn giản cần export raw data để lấy dữ liệu chính xác.

0 0 45

- vừa được xem lúc

DATES FUNCTIONS IN SQL

Trong quá trình làm việc với data bạn sẽ cần dùng rất nhiều đến Date Functions. Bạn muốn tính con số Today, This weeks, This Month, Last month, MTD, YTD,.

0 0 54

- vừa được xem lúc

1 triệu bản ghi VARCHAR2(400) và VARCHAR2(2) có hiệu năng khác biệt ra sao - Thay đổi thứ tự các bảng khi JOIN có ảnh hưởng hiệu năng không?

Tại bài này, tôi sẽ giúp các bạn giải quyết "một lần và mãi mãi" những hiểu lầm kinh điển sau. .

0 0 48

- vừa được xem lúc

Thiết kế sai lầm trong Cơ sở dữ liệu và giải pháp cải thiện hơn 700% hiệu năng

Đây là những bài viết về các dự án & kinh nghiệm tối ưu cơ sở dữ liệu của tôi tại Wecommit. Những giá trị mà bạn sẽ nhận được.

0 0 24