Flashback Database

Flashback Database

Flashback database ile tüm database’i geçmiş bir zamana ya da bizim belirlediğimiz bir noktaya döndürebiliriz.Aynı işlem rman’den restore-recover ile yapılabilsede flashback çok daha hızlı ve dolayısıyla daha az bir kesintiyle bunu yapmamıza olanak sağlıyor.Flashback verileri flashback loglarına yazılarak FRA(flash recovery area) dizininde tutulur, veri geri sarma anında buradan okunur.Fiziksel bozulmalarda bu özelliği kullanamayız.(disk bozulması, control file kaybı,datafile kaybı vb)

Flashback database aktif etmek için flashback on yapılmalıdır.Defaultta off gelmektedir.

SQL>ALTER DATABASE FLASHBACK ON;

Flashback database’i 3 şekilde kullanabiliyoruz;

1-Flashback database to scn
2-Flashback database to timestamp
3-Flashback database to restore_point

Flashback database’le ilgili önemli noktalar:

*Database’i resetlogsla açtıktan sonra rmanle full backup almamız gerekir.Eski backuplar işe yaramayacaktır.
*Database flashbackle geri sarılınca open resetlogsla açmamız gerekir.
*Flashback default OFF olarak gelir, ON yapılması gerekir.11GR2 ve sonrası versiyonlar ile DB açıkken de bu değişikliği yapabiliyoruz.11GR2 öncesi versiyonlarda database mount moddayken ON yapılabiliyor..

1-FLASHBACK TO SCN

Örneğimizde database’imizi bir saat önceye geri alalım.İlgili flashback ayarlarının set edildiğini
varsayıyorum..İlgili ayarlar için bu makaleye bakabilirsiniz.Bu örnekte scn’e göre flashback yapacağız,
ama diğer yöntemlerde de aynı mantık var. Deneme için bir tablo yaratıp sonra da truncate edelim.

SQL>CREATE TABLE FLASHBACK_TABLE_TEST AS SELECT * FROM ALL_TABLES;

Tablomuzda kaç kayıt var bakalım..

SQL>SELECT COUNT(*) FROM FLASHBACK_TABLE_TEST;
COUNT(*)
2875

Mevcut SCN numarasını öğrenelim(bu scn’e geri döneceğiz)

SQL>SELECT current_scn FROM v$database;
--şu andaki scn numarası 1385587

Şimdi tablomuzu truncate edelim.

SQL>TRUNCATE TABLE FLASHBACK_TABLE_TEST;

Şimdi database’i flashback yapalım.Flashback database yapabilmemiz için database’i mount
moda almalıyız,önce kapatıp sonra mount edelim.

SQL>SHUTDOWN IMMEDIATE;
 
SQL>STARTUP MOUNT;

Db’yi istediğimiz ana geri alalım..

SQL>FLASHBACK DATABASE TO SCN 1385587;

Database istediğimiz yere dönmüş mü read only açarak kontrol edelim..

SQL>ALTER DATABASE OPEN READ ONLY;
SQL>SELECT COUNT(*) FROM FLASHBACK_TABLE_TEST;
COUNT(*)
2875

Görüldüğü gibi tablomuz geri gelmiş durumda şimdi database’i kapatıp open resetlogsla açmamız gerekiyor.

SQL>SHUTDOWN IMMEDIATE;
 
SQL>STARTUP MOUNT;
 
SQL>ALTER DATABASE OPEN RESETLOGS;

Flashback database işlemi tamamlanmış oldu.

2- FLASHBACK TO TIMESTAMP:

Belirli bir zamana geri dönmek için kullanabiliriz.Flashback SCN’den pek bir farkı yok aslında.SCN yerine zaman vererek o zamana dönmesini istiyoruz..

SQL>FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2014-05-04 22:35:00','YYYY-MM-DD HH24:MI:SS');
 
SQL>FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP SYSDATE-(2/24); 
-- iki saat öncesine dön demiş olduk..

3- FLASHBACK TO RESTORE POINT:

Yazılım güncelleme vb işlemlerin hemen öncesi bir geri dönüş noktası oluşturularak bu noktaya dönüş
yapılabilir.

Restore Point Oluşturma:

SQL>CREATE RESTORE POINT BEFORE_UPGRADE;
Restore point created.

Garantili Restore Point Oluşturma:

SQL>CREATE RESTORE POINT BEFORE_UPGRADE GUARANTEE FLASHBACK DATABASE;
Restore point created.

Restore Point’e Geri Dönmek:

SQL>FLASHBACK DATABASE TO RESTORE POINT 'before_upgrade';
--Database Mount moddayken yapıyoruz..

Restore Pointleri Görmek:

SQL>SELECT NAME, SCN, TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
FROM V$RESTORE_POINT;

Restore Point Drop Etmek İçin:

SQL>DROP RESTORE POINT BEFORE_UPGRADE;
Restore point dropped.

Umarım faydalı olur..

Tagged: , , , , , , , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir