Flashback Data Archive istenilen kritik olduğu düşünülen tablolar üzerinde DML işlemlerimizi tablespace üzerinde tutulmasını sağlayan bir teknolojidir. Bu şekilde DML işlemlerini tespit etme , düzeltme ve raporlama şansımız vardır.
Yukarıda da bahsettiğim gibi bu işlemler için öncelikle bir tane tablespace oluşturuyoruz.
SQL> create tablespace fda_tablespace datafile
'/u01/app/oracle/oradata/orcl/fda_datafile.dbf' size 1024M autoextend on next
100M maxsize 10000M;
|
Oluşturmuş olduğumuz bu tablespace'i kullanarak artık arşiv dosyalarını oluşturalım ve QUOTA ve RETENTION parametrelerini ekleyerek ne kadar boyutta ve ne kadar süre saklamamız gerektiğini bildirelim.
Bu işlemi de yaptığımıza göre FLASBACK DATA ARCHIVE ile ilgili bilgilerimizi kontrol edelim.
Şimdi ise bu yaptıklarımızı bir tablo oluşturarak test edelim.
Flashback data archive hangi tabloyu eklemek istiyorsak aşağıdaki sql'i kullanabiliriz.
Aşagıdaki sql'ile de hangi tablolar flashback data archive eklenmiş görebiliriz.
Yukarıda yaptıgımız işlemlere baktığımız da tablomuzda bazı değişiklikler olduğu ğözlemiştir. Yaşı 29 olanlar 30 olarak değiştirilmiş ve id si 6 olan ise silinmiştir.
Aşağıdaki sql sayesinde ise bu tablo üzerinde yapılan tüm işlemleri görebiliriz.
Tablomuzu istenilen zaman aralığındaki haline bakabiliriz.
Tablomuzdaki yapılan tüm işlemlerin önceki ve sonraki halini birlikte gösterir.
Belirtilen zaman aralığı ve yapılan tüm işlemler arasındaki değişen verileri gösterir.
flashback data archie içersinde verilere ihtiyaç kalmadığında silebiliriz.
istediğimiz scn numarasından önceki verileri silebiliriz.
Flashback data archive süresini uzatabilmek için;
Archive üretimini durdurmak için;
Flashback archive drop edebilmek için;
Yararlı olması dileğiyle,
İyi Çalışmalar.
Referans : https://oracle-base.com/articles/12c/flashback-data-archive-fda-enhancements-12cr1
Referans: http://www.mustafabektastepe.com/
SQL> create FLASHBACK ARCHIVE fda_data_archive tablespace
fda_tablespace QUOTA 10g retention 1 year;
|
SET LINESIZE 150
COLUMN owner_name FORMAT A20
COLUMN flashback_archive_name FORMAT A22
COLUMN create_time FORMAT A20
COLUMN last_purge_time FORMAT A20
SELECT owner_name,
flashback_archive_name,
flashback_archive#,
retention_in_days,
TO_CHAR(create_time,
'DD-MON-YYYY HH24:MI:SS') AS create_time,
TO_CHAR(last_purge_time, 'DD-MON-YYYY
HH24:MI:SS') as last_purge_time,
status
FROM dba_flashback_archive
ORDER BY owner_name,flashback_archive_name;
OWNER_NAME FLASHBACK_ARCHIVE_NAME
FLASHBACK_ARCHIVE# RETENTION_IN_DAYS CREATE_TIME LAST_PURGE_TIME
STATUS
-------------------- ---------------------- ------------------
----------------- -------------------- -------------------- -------
SYS FDA_DATA_ARCHIVE
1 365 27-FEB-2019 13:28:45 27-FEB-2019 13:28:45
|
SET LINESIZE 150
COLUMN flashback_archive_name FORMAT A22
COLUMN tablespace_name FORMAT A20
COLUMN quota_in_mb FORMAT A11
SELECT flashback_archive_name,
flashback_archive#,
tablespace_name,
quota_in_mb
FROM dba_flashback_archive_ts
ORDER BY flashback_archive_name;
FLASHBACK_ARCHIVE_NAME FLASHBACK_ARCHIVE# TABLESPACE_NAME QUOTA_IN_MB
---------------------- ------------------ -------------------- -----------
FDA_DATA_ARCHIVE 1
FDA_TABLESPACE 10240
|
SQL> CREATE TABLE fda_table_test(
id number,
name VARCHAR2(20),
surname VARCHAR2(20),
age number);
|
SQL > ALTER TABLE fda_table_test FLASHBACK ARCHIVE
fda_data_archive;
|
SET LINESIZE 150
COLUMN owner_name A20
COLUMN table_name FORMAT A20
COLUMN flashback_archive_name FORMAT A22
COLUMN archive_table_name FORMAT A20
SELECT owner_name,
table_name,
flashback_archive_name,
archive_table_name,
status
FROM dba_flashback_archive_tables
ORDER BY owner_name,table_name;
OWNER_NAME TABLE_NAME FLASHBACK_ARCHIVE_NAME
ARCHIVE_TABLE_NAME STATUS
-------------------- -------------------- ----------------------
-------------------- -------------
SYS FDA_TABLE_TEST FDA_DATA_ARCHIVE SYS_FBA_HIST_73542 ENABLED
|
Bu işlemi de kontrol ettikden sonra artık test işlemlerimize tam anlamıyla devam edebiliriz. Öncelikli olarak tablomuza birkaç insert yapalım daha sonra update ve delete işlemleri yaparak önceki ve sonraki halini görmeye çalışalım tablomuzun.
SQL> INSERT INTO fda_table_test VALUES(1,'ENSAR','ERDOĞAN',29);
SQL> INSERT INTO fda_table_test VALUES(2,'MUSTAFA','TEPE',29);
SQL> INSERT INTO fda_table_test VALUES(3,'VEYSEL','YUKSEL',30);
SQL> INSERT INTO fda_table_test VALUES(4,'OZGUR','VURGUN',34);
SQL> INSERT INTO fda_table_test VALUES(5,'MURAT','TOKMAN',29);
SQL> INSERT INTO fda_table_test VALUES(6,'ONUR','CEYLAN',32);
SQL> INSERT INTO fda_table_test VALUES(7,'HAYDAR','ACER',31);
SQL> commit;
|
SQL> select * from fda_table_test;
ID NAME SURNAME AGE
---------- -------------------- -------------------- ----------
1 ENSAR ERDO?AN
29
2 MUSTAFA TEPE 29
3 VEYSEL YUKSEL 30
4 OZGUR VURGUN 34
5 MURAT TOKMAN 29
6 ONUR CEYLAN 32
7 HAYDAR ACER 31
7 rows selected.
|
SQL> UPDATE fda_table_test SET AGE=30 WHERE AGE=29;
SQL> commit;
SQL> DELETE fda_table_test where ID=6;
SQL>commit;
|
SQL> SELECT * FROM fda_table_test;
ID NAME SURNAME AGE
---------- -------------------- -------------------- ----------
1 ENSAR ERDO?AN
30
2 MUSTAFA TEPE 30
3 VEYSEL YUKSEL 30
4 OZGUR VURGUN 34
5 MURAT TOKMAN 30
7 HAYDAR ACER 31
6 rows selected.
|
SQL> SELECT * FROM flashback_transaction_query where
table_name=upper('fda_table_test');
|
SQL> SELECT * FROM fda_table_test
AS OF TIMESTAMP to_timestamp('27-02-2019 13:55:00','DD-MM-YYYY
HH24:MI:SS');
|
SQL> SELECT * FROM fda_table_test VERSIONS BETWEEN SCN minvalue
AND maxvalue;
|
SQL> SELECT * FROM fda_table_test VERSIONS BETWEEN SCN minvalue
AND maxvalue
MINUS
SELECT * FROM
fda_table_test AS OF TIMESTAMP
to_timestamp('27-02-2019 13:58:00','DD-MM-YYYY HH24:MI:SS');
|
SQL> ALTER FLASHBACK ARCHIVE fda_data_archive PURGE ALL;
|
SQL> ALTER FLASHBACK ARCHIVE fda_data_archive PURGE BEFORE SCN
XXXXXXX;
|
SQL> ALTER FLASHBACK ARCHIVE fda_data_archive MODIFY RETENTION 2
YEAR;
|
SQL> ALTER table
fda_table_test NO FLASHBACK ARCHIVE;
|
SQL> DROP FLASHBACK ARCHIVE fda_data_archive;
|
Referans : http://www.kamilturkyilmaz.com/
Hiç yorum yok:
Yorum Gönder