Thứ Tư, 1 tháng 9, 2021

Flashback Data Archive (FDA) trong Oracle Database 11g, 12c, 19c, 21c

Flashback Data Archive (FDA) , còn được gọi là Flashback Archive (FBA), được giới thiệu từ Oracle 11g để cung cấp khả năng lưu trữ lâu dài dữ liệu undo, cho phép thực hiện các hoạt động flashback dựa trên undo trong một khoảng thời gian dài.

1.Tạo tablespace và flashback archive

Tạo tablespace để FDA lưu 1 năm, tablespace khác lưu 2 năm, user test cần quyền flashback archive

CREATE TABLESPACE DATA_FDA
  DATAFILE '/u01/app/oracle/oradata/DB11G/fda1_01.dbf'
  SIZE 1M AUTOEXTEND ON NEXT 1M;

CREATE FLASHBACK ARCHIVE DEFAULT fda_1year TABLESPACE DATA_FDA
QUOTA 10G RETENTION 1 YEAR; CREATE FLASHBACK ARCHIVE fda_2year TABLESPACE DATA_FDA
RETENTION 2 YEAR;

2. Quản lý flashback archive

Có 3 kiểu cần quản lý:

  • Quản lý Tablespace .

    ALTER FLASHBACK ARCHIVE fda_1year SET DEFAULT;
    
    ALTER FLASHBACK ARCHIVE fda_1year  ADD TABLESPACE DATA_FDA QUOTA 10G;
    ALTER FLASHBACK ARCHIVE fda_1year ADD TABLESPACE DATA_FDA ;
    ALTER FLASHBACK ARCHIVE fda_1year MODIFY TABLESPACE DATA_FDA QUOTA 20G;
    ALTER FLASHBACK ARCHIVE fda_1year MODIFY TABLESPACE DATA_FDA ;
    ALTER FLASHBACK ARCHIVE fda_1year REMOVE TABLESPACE DATA_FDA
    ;
  • Có thể Chỉnh sửa fda_1year thành 2 năm

    ALTER FLASHBACK ARCHIVE fda_1year MODIFY RETENTION 2 YEAR;
  • Xóa data.

    -- Xóa toàn bộ dữ liệu lịch sử 
    ALTER FLASHBACK ARCHIVE fda_1year PURGE ALL;
    
    -- Xóa mọi dữ liệu theo thời gian nhất định
    ALTER FLASHBACK ARCHIVE fda_1year PURGE BEFORE TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' DAY);
    
    -- Xóa mọi dữ liệu trước SCN.
    ALTER FLASHBACK ARCHIVE fda_1year PURGE BEFORE SCN 728969;

Drop tablespace lưu flashback:

DROP FLASHBACK ARCHIVE fda_1year ;

3. Tạo môi trường test:

Tạo user

CONN sys/password AS SYSDBA

CREATE USER fda_test_user IDENTIFIED BY fda_test_user
  QUOTA UNLIMITED ON users
  QUOTA UNLIMITED ON DATA_FDA;
GRANT CONNECT, CREATE TABLE TO fda_test_user; GRANT FLASHBACK ARCHIVE ON fda_1year TO fda_test_user;

Tạo bảng:

CONN fda_test_user/fda_test_user

CREATE TABLE test_tab_1 (
  id          NUMBER,
  desription  VARCHAR2(50),
  CONSTRAINT test_tab_1_pk PRIMARY KEY (id)
)
FLASHBACK ARCHIVE;

Nếu tạo bảng thiếu quyền sẽ hiển thị lỗi:

CONN fda_test_user/fda_test_user

CREATE TABLE test_tab_2 (
  id          NUMBER,
  desription  VARCHAR2(50),
  CONSTRAINT test_tab_2_pk PRIMARY KEY (id)
)
FLASHBACK ARCHIVE fda_2year;
CREATE TABLE test_tab_2 (
*
ERROR at line 1:
ORA-55620: No privilege to use Flashback Archive


SQL>

Thiết lập flashback cho bảng:

-- Kích hoạt sử dụng FBDA mặc định.
ALTER TABLE test_tab_1 FLASHBACK ARCHIVE; -- Cho phép sử dụng FBDA cụ thể.
ALTER TABLE test_tab_1 FLASHBACK ARCHIVE fda_name; -- Tắt FBDA
ALTER TABLE test_tab_1 NO FLASHBACK ARCHIVE;

Nếu alter thiếu quyền FLASHBACK ARCHIVE ADMINISTER thì báo lỗi:

SQL> ALTER TABLE test_tab_1 NO FLASHBACK ARCHIVE;
ALTER TABLE test_tab_1 NO FLASHBACK ARCHIVE
*
ERROR at line 1:
ORA-55620: No privilege to use Flashback Archive


SQL>

Kiểm tra flashback archive từ view %_FLASHBACK_ARCHIVE:

CONN sys/password AS SYSDBA

COLUMN flashback_archive_name FORMAT A20

SELECT flashback_archive_name, retention_in_days, status
FROM   dba_flashback_archive;

FLASHBACK_ARCHIVE_NA RETENTION_IN_DAYS STATUS
-------------------- ----------------- -------
FDA_2YEAR                          730
FDA_1YEAR                          365 DEFAULT

2 rows selected.

SQL>

View %_FLASHBACK_ARCHIVE_TS hiển thị thông tin tablespaces và quotas của flashback archive

COLUMN flashback_archive_name FORMAT A20
COLUMN quota_in_mb FORMAT A10

SELECT flashback_archive_name, tablespace_name, quota_in_mb
FROM   dba_flashback_archive_ts;

FLASHBACK_ARCHIVE_NA   TABLESPACE_NAME                QUOTA_IN_M
--------------------                         ------------------------------                ----------
FDA_2YEAR                            DATA_FDA
FDA_1YEAR                 DATA_FDA                                 10240
2 rows selected. SQL>

View %_FLASHBACK_ARCHIVE_TABLES hiển thị flashback archive, tên bảng table lưu dữ liệu lịch sử:

COLUMN table_name FORMAT A15
COLUMN owner_name FORMAT A15
COLUMN flashback_archive_name FORMAT A20
COLUMN archive_table_name FORMAT A20

SELECT table_name, owner_name, flashback_archive_name, archive_table_name
FROM   dba_flashback_archive_tables;

TABLE_NAME      OWNER_NAME      FLASHBACK_ARCHIVE_NA ARCHIVE_TABLE_NAME
--------------- --------------- -------------------- --------------------
TEST_TAB_1      FDA_TEST_USER   FDA_1YEAR            SYS_FBA_HIST_72023

1 row selected.

SQL>

Để lấy lại dữ liệu cũ ta dùng các câu lệnh giống như Flashback thông thường:

+ Cú pháp:
SELECT … AS OF TIMESTAMP… 
SELECT … VERSIONS BETWEEN TIMESTAMP and TIMESTAMP

+ Ví dụ:
create table xxx_test_tab_1 as SELECT* from TEST_TAB_1 AS OF AS OF TIMESTAMP
TO_TIMESTAMP('2023-12-02 10:00:00', 'YYYY-MM-DD HH:MI:SS');

THAM KHẢO THÊM:


Hy vọng hữu ích cho bạn.
=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, oracle oca, oracle ocp, oracle ocm

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master