Etiket arşivi: flashback table before drop

Flashback Drop

FLASHBACK DROP

Drop Edilen Tabloyu Flashback’le Kurtarmak:

Bu Flashback özelliğiyle yanlışlıkla drop edilmiş tabloyu geri getirebiliriz, kullanım amacı budur.
Flashback operasyonlarından flashback  table before drop kullanabilmemiz için “recyclebin on” olmalıdır. Flashback ayarları için aşağıdaki makaleye bakabilirsiniz.
http://omeracar.com.tr/flashback-nedir-nasil-aktif-edilir

Örnek için bir tablo yaratıp onun üzerinde çalışalım.

SQL> CREATE TABLE OMER_TEST_TAB AS (SELECT * FROM USER_TABLES);

SQL> SELECT COUNT(*) FROM OMER_TEST_TAB;
6012

SQL> DROP TABLE OMER_TEST_TAB;
Table dropped.


Drop edilen tabloyu orijinal ismiyle kurtarmak:

SQL>FLASHBACK TABLE OMER_TEST_TAB TO BEFORE DROP;
Flashback complete.


Drop edilen tabloyu yeni isimle kurtarmak:

SQL>FLASHBACK TABLE OMER_TEST_TAB TO BEFORE DROP RENAME TO OMER_TEST2_TAB;
Flashback complete.

Tablomuzu sorgulayarak tablomuzun geri gelip gelmediğine bakalım..

SQL>SELECT COUNT(*) FROM OMER_TEST_TAB T;
6012

SQL>SELECT COUNT(*) FROM OMER_TEST2_TAB;
6012

Yanlışlıkla drop edilen tablomuzu(OMER_TEST_TAB) geri getirmiş olduk.Drop edilen tablolar ve ilişkili nesneler (trigger,constraint,index vb) Recyclebin içerisinde tutulur.Nesne isimleri BIN…. İle başlıyor,
ve çöp kutusundaki tablolara select çekebiliyoruz.

SQL>SELECT * FROM “BIN$dmk5IZTTR8qVlpBs6KOSEw==$0“;

Nesneler drop edildikçe çöp kutusunda birikir bu yüzden ara ara
Recyclebin içini boşaltmak gerekiyor, bunun içinde “Purge Recyclebin” diyerek çöp kutusunu boşaltabiliyoruz..

Çöp kutusunu Purge etmek:

SQL>PURGE Recyclebin;

Bir tabloyu çöp kutusuna atmadan drop etmek:

SQL>DROP TABLE OMER_TEST_TAB PURGE;

Çöp kutusundaki bir tabloyu purge etmek:

SQL>PURGE TABLE OMER_TEST_TAB;


Umarım faydalı olur..

Flashback Nedir,Nasıl Aktif Edilir?

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.