+1

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ả

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


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí