Site icon IT Tutorial

Oracle Flashback -3

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

Exit mobile version