Standby Veritabanında Flashback ile Drop, Truncate veya Delete Edilen Tabloyu Kurtarma

Melek Durdu
Machine Learning Turkiye
2 min readNov 3, 2022

Merhabalar, bu yazımda Production veritabanında yanlışlıkla drop, truncate ya da delete edilen tabloyu, standby veritabanında flashback kullanarak kurtarılabileceğinden bahsedeceğim.

Öncelikle standby veritabanının flashback modu enable edilir.

SQL> alter database flashback on;

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

Apply işlemi durdurulur.

SQL > recover managed standby database cancel;

Restore point oluşturulur.

SQL> create restore point before_flashback guarantee flashback database;

Primary veritabanından standby’ a arşiv gönderme durdurulur.

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER;

Flashback ile tablonun drop, truncate ya da delete edilmeden öncesine dönülür.

SQL > shutdown immediate;
SQL > startup mount;
SQL > flashback database to timestamp to_date('01-NOV-2022 12:05:00','DD-MON-YYYY HH24:MI:SS');

Standby veritabanı read only modda açılır.

SQL> alter database open read only;

Veritabanı read only modda açıldıktan sonra iki yöntem ile ilgili tablo Production ortama aktarılabilir.

  1. Export — Import

Tablonun exportu alınır.

$ expdp melek/<password>@orcl_stby directory=DUMP_DIR tables=HR.EMPLOYEES dumpfile=exp_Employees.dmp logfile=exp_Employees.log

Dump file Production ortama kopyaladıktan sonra tablo import edilir.

$ impdp melek/<password>@orcl directory=DUMP_DIR dumpfile=exp_Employees.dmp logfile=imp_Employees.log

2. DBLink

DBLink ile Production veritabanından Standby veritabanına bağlantı sağlanarak, CTAS yöntemi ile ilgili tablo kurtarılır.

SQL> CREATE TABLE HR.EMPLOYEES AS SELECT * FROM HR.EMPLOYEES@PROD_TO_STBY;

Tablo kurtarıldıktan sonra Standby veritabanı kapatılıp, mount modda açılır ve oluşturulan restore point’ e dönülür.

SQL > shutdown immediate
SQL > startup mount
SQL > FLASHBACK DATABASE TO RESTORE POINT before_flashback;

Production veritabanından Standby veritabanına arşiv gönderme işlemi başlatılır.

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

Flashback kapatılıp, Standby veritabanında apply işlemi başlatılır ve oluşturulan restore point drop edilir.

SQL> alter database flashback off;
SQL> recover managed standby database disconnect from session;
SQL> DROP RESTORE POINT before_flashback;

--

--