Merhaba Arkadaşlar,
Bu yazımda Oracle da Flashback i anlatmaya devam edeceğim. Bu yazıyı okumadan önce Flashback ile alakalı önceki makaleleri okumanızı tavsiye ederim.
Flashback Query Version
Bu özellik ile tablonun satırlarında yapılan tüm değişiklikleri görebiliriz.
Bu senaryoda yapacağımız çalışma, öncelikle tablo oluşturup bu tablo üzerinde bir takım değişiklikler yapalım ve bunları bu özellik sayesinde görelim.
Create table deneme(id NUMBER,name VARCHAR2(20));
Veri ekleyip commit yapıyoruz.
insert into deneme values(1,'Deveci'); COMMIT;
Scn mizi öğreniyoruz.
Select current_scn from v$database; 4012292
Yine tablo üzerinde değişiklikler yapıp commit yapıyoruz.
insert into flashback_version_query_deneme values(2,'Osman'); COMMIT; Update flashback_version_query_deneme SET name='Mehmet' where id=1; COMMIT; Delete flashback_version_query_deneme where id=2; COMMIT; insert into flashback_version_query_deneme values(1,'Deveci'); COMMIT;
Tekrardan scn mizi öğreniyoruz.
Select current_scn from v$database; 4012330
Şimdi flashback version query ile tablo üzerinde yapılan değişikliklere bakalım.
SELECT versions_startscn, versions_starttime, versions_endscn, versions_endtime, versions_xid, versions_operation FROM flashback_version_query_deneme VERSIONS BETWEEN SCN 4012292 AND 4012330;
Girdiğimiz 2 scn arasında yapılan bütün işlemleri sorgu ile öğrenebiliriz. U yazan yerler update, I yazan yerler insert, D yazanlar ise delete yaptığımızı gösterir.
Scn yerlerine minvalue ve maxvalue yazarsak o tablodaki bütün işlemleri görebiliriz.
Flashback Transaction Query
Bu özellik ile veritabanında işlem seviyesinde yapılan değişiklikleri göstermeyi sağlar. Aşağıdaki komut ile undo segmentlerde bulunan aktif ve commit edilmiş tüm transactionlar için bilgi döndürür.
SELECT operation, undo_sql,table_name FROM flashback_transaction_query;
Flashback Data Archive
DBA lerin çok sevdiği Bu özellik Oracle 11g ile birlikte gelmiştir. Bunun amacı önemli tabloların üzerinde yapılan dml işlemlerini farklı bir tablespace de saklayıp istediğimiz zaman değişiklikleri görmemizi sağlar. Bu özellik gelmeden önce log miner özelliği kullanılıyordu. Bu özelliği kullanılırken arka planda flashback data archiver(FBDA) prosesi çalışmaktadır. Fakat bu özellik sayesinde daha hızlı görebiliyoruz. Bu işlemler için senaryomuz aşağıdaki gibidir.
Öncelikle bir tablespace yaratıyoruz.
CREATE TABLESPACE Archive DATAFILE ‘/u01/oracle/recovery/arc_01.DBF’ SIZE 1024M AUTOEXTEND ON NEXT 100M MAXSIZE 10000M
Oluşturulan tablespace flashback data archive alanı olarak tanımlayıp 10 Gb ile sınırlayalım.
create flashback archive flashback_archive tablespace Archive quota 10G retention
Tablolarımızı belirleyip bu alana kaydedilmesi için flashback e tanıtıyoruz.
alter table deveci.test flashback archive flashback_archive;
Tablo üzerinde bir update işlemi yapalım ve sonrasında bir önceki halinin nasıl saklandığına ve nasıl ulaşacağımıza bakalım.
select owner, segment_name from test; OWNER, SEGMENT_NAME TEST LOGMNR_I1COL$ TEST LOGMNR_I2COL$ TEST LOGMNR_I3COL$ TEST LOGMNR_I1ATTRCOL$ TEST LOGMNR_I1TS$
update test set owner = ‘USER’; commit;
Yapılan bu işlemi hatalı olarak kabul edip saklanan archive datasına bakalım. Bu table üzerinde yapılan tüm DML işlemlerinin history’ si artık bu tablespace’ de saklanıyor olacak ve test edelim.
select owner, segment_name from deveci.test as of timestamp sysdate-2/1440; OWNER SEGMENT_NAME TEST LOGMNR_I1COL$ TEST LOGMNR_I2COL$ TEST LOGMNR_I3COL$ TEST LOGMNR_I1ATTRCOL$ TEST LOGMNR_I1TS$
tablomuzu flashback modundan tabloyu çıkartmak ve tüm history datasını silmek istersek.
alter table deveci.test no flashback archive;
Burada flashback data archive özelliğinin açık olması demek yapılan bir işlemden sonra commit basılmasına etki etmektedir. Açık olduğu zaman baya uzun sürmektedir. Bunun nedeni ayrıyetten başka bir tablespace’e de yazılmasıdır.
Bu özelliğin getirdiği bazı sınırlamalar vardır. Bunlar ddl kısıtlamaları olarak geçer. Örneğin 11gR1 için aşağıdaki komutları çalıştırdığımızda ora-55610 hatası alırız.
Alter table drop,rename veya modify Alter table ile başlayan partition lamalar. Alter table add veya rename yapılmaya çalışılan constraintler Alter table upgrade table Truncate table Rename table Drop table
Bu özelliklerden bazıları 11gR2 ile hata vermemektedir. Hata vermeyen komutlar şu şekildedir.
Alter table drop,rename veya modify Alter table ile başlayan partition lamalar. Alter table add veya rename yapılmaya çalışılan constraintler Truncate table Rename table
Bunların dışında kalan ve hala ora-55610 hatası veren komutlar ise şu şekildedir.
Alter table upgrade table Drop table
Flashback data archive ların bir kısmını veya tamamını silmek istediğimizde aşağıdaki gibi silebiliriz.
Tamamını silmek için
Alter flashback archive purge all
Belli bir scn veya zaman dan öncesini silmek için aşağıdaki komut çalıştırılır.
Alter flashback archive purge before scn | timestamp
Böylece bu yazınında sonuna gelmiş bulunmaktayım bir sonraki yazıda buluşmak dileğiyle Esen kalın…
Oracle Exadata SQL Server Goldengate Weblogic EBS ve Linux konusunda aşağıdaki konularda 7×24 Uzman Danışmanlara yada Eğitimlere mi İhtiyacınız var mehmet.deveci@gridgroup.com.tr adresine mail atarak Bizimle iletişime geçebilirsiniz.
– Oracle Veritabanı Danışmanlığı
– Oracle Veritabanı Bakım ve Destek
– Exadata Danışmanlığı
– Exadata Bakım ve Destek
– SQL Server Veritabanı Danışmanlığı
– SQL Server Veritabanı Bakım ve Destek
– Goldengate Danışmanlığı
– Goldengate Bakım ve Destek
– Linux Danışmanlığı
– Linux Bakım ve Destek
– Oracle EBS Danışmanlığı
– Oracle EBS Bakım ve Destek
– Weblogic Danışmanlığı
– Weblogic Bakım ve Destek
– Oracle Veritabanı Eğitimleri
– Oracle VM Server Danışmanlığı
– Oracle VM Server Bakım ve Destek
– Oracle EPPM Danışmanlığı
– Oracle EPPM Bakım ve Destek
– Oracle Primavera Danışmanlığı
– Oracle Primavera Bakım ve Destek
– Oracle Eğitimleri
– SQL Server Eğitimleri
– Goldengate Eğitimleri
– Exadata Eğitimleri
– Linux Eğitimleri
– Oracle EBS Eğitimleri
– Oracle VM Server Eğitimleri
– Weblogic Eğitimleri
– Oracle EPPM Eğitimleri
– Oracle Primavera Eğitimleri