Flashback Nedir, Nasıl Aktif Edilir?
Flashback fiziksel bozulmalardan çok, kullanıcı hatalarını düzeltmek için kullanılan bir oracle çözümüdür. Örneğin bir tablo yanlış update edilmiş olabilir ya da yanlışlıkla drop edilmiş olabilir. Yedeklerden de veri kaybı olmadan tablonuzu bozulma öncesi haline getirebilirsiniz ama veritabanı büyüklüğüne göre uzun zaman alabilir ve kesinti oluşturabilir. Oracle bu noktada daha az downtime için Flashback çözümünü öneriyor. Oracle veriyi geri dönerken UNDO tablespace’inden faydalanır, yapılan değişiklikler UNDO tbs üzerinde tutulur ve istenildiği zaman geri çağrılabilir.(belirlediğimiz log tutma süresi kadar)
Flashback işlemlerini yapabilmemiz için database’de bazı ayarları set etmemiz ve/veya kontrol etmemiz gerekiyor.
Database’i Flashback işlemlerine hazırlamak
1- Database archive log modda olmalı
Database archive log modda değilse Online backup da alamayız, flashback logları da tutamayız.Database’in mevcut durumunu sorgulayalım. NOARCHIVELOG ise aşağıdaki gibi ARCHIVELOG moda alabiliriz.
SQL>SELECT LOG_MODE FROM V$DATABASE;
LOG_MODE
------------
NOARCHIVELOG
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE ARCHIVELOG;
SQL>ALTER DATABASE OPEN;
2-Flashback açık olmalı;
Mevcut durumunu görmek için;
SQL>SELECT FLASHBACK_ON FROM V$DATABASE;
FLASHBACK_ON
------------
NO
SQL>ALTER DATABASE FLASHBACK ON;
3- Undo retention, retention guarantee ayarları
UNDO_RETENTION geçmişe yönelik ne kadar süre flashback logları tutulacağını gösterir(sn cinsinden) 3600 sn degeriyle 1 saatlik geri dönüşümüz mümkün olsun diyoruz.(3600/60=60 dk) Bu parametre kurulumda default 900 olarak gelir(900/60=15dk)
RETENTION GUARANTEE 1 saatlik geriye yönelik verileri garanti etsin diyoruz.
UNDOTBS1 üzerinde RETENTION GUARANTEE diyerek 1 saatlik veriyi mutlaka tutmasını istiyoruz, bu durumda UNDOTBS1 büyüme yoluna gidecektir.
SQL>ALTER SYSTEM SET UNDO_RETENTION=3600 SCOPE=SPFILE;
SQL>ALTER TABLESPACE UNDOTBS1 RETENTION GUARANTEE;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;
RETENTION GUARANTEE set edilip edilmediğini aşağıdaki sorgu ile görebiliriz.
SQL>SELECT TABLESPACE_NAME,RETENTION FROM DBA_TABLESPACES WHERE TABLESPACE_NAME='UNDOTBS1';
TABLESPACE_NAME RETENTION
--------------- ---------
UNDOTBS1 GUARANTEE
4-Supplemental log data enable edilmeli
Transaction query kullanabilmemiz için enable edilmeli.primary key ve foreign key ilişkili kayıtlar için.
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(PRIMARY KEY) COLUMNS;
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(FOREIGN KEY) COLUMNS;
5- ReycleBin ON olmalı
Çöp kutusu default olarak kurulumla ON gelir, eğer OFF yapılmışsa ON konumuna çekmek gerekir.Drop edilen nesneleri geri döndürmek için on yapılmalıdır.
SQL>ALTER SYSTEM SET RECYCLEBIN=ON;
RECYCLEBIN Durumunu görmek için;
SQL>SELECT M.NAME,M.VALUE FROM V$PARAMETER M WHERE M.NAME LIKE '%recyclebin%';
Name value
--------- ------
recyclebin on
Artık database’imiz flashback operasyonlar için hazırdır, sonraki makalelerde flashback ile neler yapabiliriz inceleyeceğiz.