ORACLE 8: RECOVERY
FAILURE CESITLERI
- STATEMENT FAILURE:
- Applicationlardaki Logical hatalar.
- Bir tabloya kotu kayit girmeye calismak.
- Yetersiz yetkilerle islem yapmaya kalkmak.
- Bir tablo yaratmaya calismak ancak kullanicinin kendine ayrilan quota limitini asmis olmasi.
- Yetersiz free space icinde extent alarak update ya da insert islemi yapmaya calismak.
- USER PROCESS FAILURE:
- Kullanici anormal sekilde disconnect olur.
- Kullanicinin session’i anormal sekilde kesilir.
- Kullanicinin programi address exception olusturarak sessioni keser.
Boyle durumlarda PMON temizleme operasyonu yapar:
- Anormal sekilde kesilen transactionlari Rollback yapar.
- Kesilen transactionlarin koyduklari locklari kaldirir, kullandiklari kaynaklari serbest birakir.
- Ilgili server ve dispatcher processleri yeniden baslatir.
- USER-ERROR FAILURE: Bu durum Recovery gerektirir.
- Bir tabloyu Drop ya da Truncate etmek.
- Bir tablonun tum kayitlarini silmek ve transactioni commit etmek.
- Yanlis kayitlari update etmek ve transactioni commit etmek.
Actions:
- Kullanicilari egitmeli.
- Saglam bir backuptan recovery yapilmali.
- INSTANCE FAILURE:
- Elektrik kesintisi.
- Hardware failure; CPU, Memory, Disk
- Background Process Failure
Instance acilisinda SMON instance recovery yapar.
- SMON recovery’I baslatir. Bu durumda datafilelar senkronize degildir.
- DBWR rollforward yapar commit edilmis ama datafilelara yazilamamis transactionlar icin. Bu noktadan sonra database kullanicilara aciktir.
- SMON ya da server process commit edilmemis adatayi rollback yapar.
- MEDIA FAILURE:
Sebepleri:
- Head Crash ya da Disk Crash
- Diske yazma ya da okuma yapamamak.
- Filelar silinmis olabilir.
Actions:
- Tamamiyle test edilmis bir backup strategisi olusturun.
- Backup stratejinizi dokumante edin.
FAILURE DURUMLARINI TRACE ETME
ALERT FILE:
- Tum sistem kapanis ve acilislarini gosterir.
- Internal errorlari, blokck curruption’lari ve dead lock errorlari gosterir.
- Tablespace, rollback segment, ve database’i yapisal olarak degistiren tum CREATE ALTER DROP islemlerini gosterir.
- Database errorlarini icerir.
- Archiving operasyonlari hakkinda bilgi verir; Log switch.
- Kayip filelari rapor eder.
- Alert file’in yeri init.ora dosyasindaki BACKGROUND_DUMP_DEST ile belirlenir.
TRACE FILE:
- Init.ora parametre dosyasindaki BACKGROUND_DUMP_DEST parametresitrace file’larin nereye yazilacagini belirtir.
- Her bir background process problemle karsilastiginda bu parametrede belirtilen yere ilgili trace file yazilir.
- Dosyalar bir kere olustuktan sonra yeni hatalar dosyalara append edilir.
CHECKSUM PARAMETRELERI:
Bir datafile blogu okundugunda data block corruption tespiti icin datafile checksum yapilabilir. Bu islemin yapilabilmesi icin asagidaki sekilde parametrenin ayarlanmalidir.
- DB_BLOCK_CHECKSUM = TRUE
- Eger input-output islemlerinde bir hata sezilirse bu parametre init.orada ayarlanarak checksum aktive edilir.Bu islem performans kaybina yolacar. Default degeri false’dir.
- Checksum degeri datablogunun header’inda saklanir. Orace blogu okundugunda check sum degeri blok corruption’I tespit ederse trace file’a mesaj atilir.
Log file checksum icin asagidaki parametre ayarlanir.
- LOG_BLOCK_CHECKSUM = TRUE
- Eger logfile’da bir block curruption hatasi varsa bu hata archivelog’a da yansir.Bu durum archivelog’un recovery icin kullanilamamasina yol acar. Bu durumlarda log checksum active edilmelidir.
- Bu parametre aktive edildikten sonra her blok redolog’a yazilmadan checksum kontrolunden gecer.
- Eger bu parametre aktive edildikten sonra blok corruption tespit edlilirse bu redolog arsivlenemez. Bu durumda database asili kalir cunku redologlar generate edilemez bu noktadan sonra.
DBVERIFY:
- Datafile’larin verifikasyonu icin kullanilir.
- Databloklarinin yapisal duzenini kontrol eder.
- Eger restore icin backuplanan datafile’larin gecerli olup olmadigini ya da data curroption problemleriyle sik karsilasiliyorsa bu islem yapilmalidir.
- Database aktiviteleri uzerinde minimal etkisi vardir.
- Yeri : c:\orant\bin\dbverf80.exe.
- Online ve offline datafile’lar icin kullanilabilir.
- Islemin sonucu bir errorlog’a yonlendirilebilir.
- Kullanimi:
Svrmgrl> DBVERF80 FILE = ‘filename’ START = <number> END = <number> LOGFILE = <filename>;
- Start ve End datablok numaralarini belirtir ama tum datafile incelenecekse kullanilmayabilir.
ORACLE RECOVERY METODLARI
NOARCHIVELOG MODE RECOVERY
- Tum datafile, controlfile ve redolog file;lar bir arada backuplanmali ve restore edilmelidir.
- Sadece bir file kayip olsa bile database acilmaz cunku hepsi birlikte senkronizedir ve control file database’I acmak icin tum file’lari ister.
STEPS:
- Database’i kapatin.
- Son full backup’tan tum dosyalari inin.
- Database’i acin.
ARCHIVELOG MODE RECOVERY
Bu modda database acikken system tablespace’i ve rollback segment tablespaceleri haric olmak uzere recovery yapilabilir. Eger bu iki tip tablespace recover edilecekse database kapali halde recover edilir.
- Archivelog’larin lokasyonunu degistirmek icin:
Svrmgrl> ALTER SYSTEM ARCHIVE LOG START TO <yeni lokasyon>;
- Archivelog switch icin
Svrmgrl> ALTER SYSTEM SWITCH LOGFILE;
Eger recovery yapmadan once archivelog;lar baska bir directory’e konulmussa ve recover esnasind abu directory’den okunmasi istebiliyorsa database mount edilmeden once init.ora dosyasinda LOG_ARCHIVE_DEST istenilen directory olarak degistirilir.
V$RECOVER_FILE sorgulandiginda ERROR alaninda "FILE NOT FOUND" yaziyor ise bu dosyalara erisilemiyordur. Eger ilgili file’lar var ise ve ERROR alani bos ise bu file’larin recovery’e ihtiyaci vardir.
Bu view sorgulanarak ne tur bir recovery gerektigi konusunda bilgi edinilebilir.
ARCHIVELOG MODDA RECOVERY TIPLERI
COMPLETE RECOVERY
- SYSTEM YA DA ROLLBACK TABLESPACE RECOVERY :
- Shutdown database
- Kayip ya da hasarli dosyayi restore edin.
- Instance’i mount edin:
Svrmgrl> STARTUP MOUNT
- Kayip ya da hasarli dosyayi recover edin:
Svrmgrl> RECOVER AUTOMATIC DATAFILE [number|name];
Svrmgrl> RECOVER AUTOMATIC DATABASE;
Svrmgrl> ALTER DATABASE OPEN;
- SYSTEM YA DA ROLLBACK TABLESPACE’I HARICINDEKI TABLESPACE RECOVERY (OPEN RECOVERY)
Database acikken recovery sadece bozulan tablespace’in dtafillarina yapilabilir.
- Recovery yapilaka datafile’in ait oldugu tablespace’i offline’a alin:
Svrmgrl> ALTER TABLESPACE <tablespace> OFFLINE;
- Ilgili datafile’i restore edin.
- Datafile’i ya da ilgili tablespace’i recover edin:
Svrmgrl> RECOVER AUTOMATIC DATABASE;
Svrmgrl> RECOVER AUTOMATIC DATAFILE [number|filename];
Svrmgrl> RECOVER AUTOMATIC TABLESPACE [number|tablespacename]
- Ilgili tablespace ya da datafile’i online’a cekin.
- DATABASE’I ACARKEN CORRUPT DATAFILE BULUNDUGUNDA RECOVERY
- Database’i baslatin ve mount edin.
Svrmgrl> Startup mount
- Ilgili datafile(lari) offline’a cekin.
Svrmgrl> ALTER DATABASE DATAFILE ‘filename’ OFFLINE;
- OPEN RECOVERY adimlarini yapiniz.
Eger recovery esnasinda datafile’lari yeni bir lokasyona cekmek gerekirse:
ALTER DATABASE REBNAME FILE ‘damaged filename’ TO ‘new filename’;
- SYSTEM YA DA ROLLBACK SEGMENT HARICINDEKI TABLESPACELERIN BACKUP’I OLMAYAN DATAFILE’LAR ICIN RECOVERY
- Ilgili datafile’in ait oldugu tablespace’i offline yapin:
Svrmgrl> ALTER TABLESPACE ‘tablespacename’ OFFLINE IMMEDIATE;
- Datafile’i yeniden yaratin:
Svrmgrl> ALTER DATABSE CREATE DATAFILE ‘oldfilename’ [AS ‘newfilename’];
- OPEN RECOVERY adimlarini izleyin.
- ONLINE BACKUP ALINIRKEN (HOTBACKUP MOD) CRASH SONRASI RECOVERY
- Hangi file’larin crash esnasinda backuplandigini tesbit edin:
Svrmgrl> SELECT * FROM V$BACKUP;
FILE#
STATUS CHANGE# TIME
---------- ------------------ ---------- --------------------
1 ACTIVE 22568819 02/28/01 14:13:28
2 NOT ACTIVE 22568717 02/28/01 13:40:45
3 NOT ACTIVE 22568716 02/28/01 13:40:38
4 ACTIVE 22568779 02/28/01 14:03:02
5 ACTIVE 22568808 02/28/01 14:10:23
6 NOT ACTIVE 22568787 02/28/01 14:05:48
7 ACTIVE 22568791 02/28/01 14:07:09
8 ACTIVE 22568818 02/28/01 14:13:15
9 ACTIVE 22568807 02/28/01 14:10:22
ACTIVE olan datafile’lar online backup modundadirlar. Bu file’larin hangi tablespace ile iliskili olduklarini ogrenmek icin:
Svrmgrl> SELECT * FROM DBA_DATA_FILES WHERE FILE_ID = <file#>
- Ilgili tablespace’in backup islemini sonlandirmak icin:
Svrmgrl> ALTER TABLESPACE tablespacename END BACKUP;
Svrmgrl> ALTER DATABASE OPEN;
- REDOLOG FILE RECOVERY
Eger bir redolog file multiplex edilmemis ise(ayni redolog grubunda birden cok redolog yok ise ya da mirrorlari yok ise) veya grubun tum redolog memberlari corrupt ise redolog file recovery gereklidir.
Complete recovery yapilabilmesi icin redolog’un arsivelenmis olmasi gereklidir. Yani V$LOG’un ARCH kolonu YES olmalidir.
- Hangi redologlarin recovery’e ihtiyaci oldugunu tespit edin:
Svrmgrl> SELECT * FROM V$LOG;
V$LOG
- V$LOGFILE STATUS DEGERLERI:
ACTIVE
:Active ancak CURRENT olmayan, arsivlenmekte ya da arsivlenecek olan redolog.
UNUSED
STALE :Yeni yaratilip henuz kullanilmamis redolog file.
CURRENT
NULL :Halen uzerine yazilmakta olan redolog.
INACTIVE
DELETED :Instance recovery icin ihtiyac duyulmayacak olan arsivlenmis redolog.
INVALID : Inaccessible Redolog
Instance recovery esnasinda current ve aktif redologlar kullanilacaktir.
ALTERNATIF I.
Yeni bir temporary redolog grup yaratin:
Svrmgrl> ALTER DATABASE ADD LOGFILE GROUP <temporary group number> ‘filename’ size n[K|M];
Corrupt olan redolog’u drop edin:
Svrmgrl> ALTER DATABASE DROP LOGFILE GROUP N;
Ayni grubu yeniden yaratin:
Svrmgrl> ALTER DATABASE ADD LOGFILE GROUP N;
Tempororay grubu drop edin:
Svrmgrl> ALTER DATABASE DROP LOGFILE GROUP GROUP <temporary group number>;
ALTERNATIF II.
Clear Logfile:
Svrmgrl> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP N;
Bu yontem asagidaki durumlarda kullanilabilir:
- Eger iki redolog grubu varsa,
- Current redolog file current gruba ait ise.
- INCOMPLETE RECOVERY
SEBEPLER:
- Kullanici hatasi; bir tabloyu drop etmek, tum kayilarini yanlislikla silip ya da yanlis sekilde update edip commit etmek.
- Kayip archivelog file.
- Mirrosuz ve kayip control file.
- Mirrorsuz ve arsivlenmemis redologlarin kaybi.
INCOMPLETE RECOVERY TIPLERI
TIME BASED RECOVERY
Belli bir zamana dek recovery yapilabilir:
- Instance’i baslarin ve mount edin:
Svrmgrl> STARTUP MOUNT
- Tum datafile’lari original lokasyonlarina restore edin.
- Database’i istenilen zamana recover edin:
Svrmgrl> RECOVER AUTOMATIC DATABASE UNTIL TIME ‘YYYY-MM-DD:HH24:MI:SS’;
AUTOMATIC opsiyonun kullanmak yerine soyle de yapilabilir:
Svrmgrl> SET AUTO RECOVERY ON;
Svrmgrl> RECOVER AUTOMATIC DATABASE UNTIL TIME ‘YYYY-MM-DD:HH24:MI:SS’;
- Database’i RESETLODS opsiyonuyla acin:
Svrmgrl> ALTER DATABASE OPEN RESETLOGS;
- CANCEL BASED RECOVERY
Eger arsivlenmemis online redolog kayip ise bu tip recovery gereklidir.
Svrmgrl> SHUTDOWN IMMEDIATE;
- Database’i baslatin ve mount edin:
SVRMGRL> STARTUP MOUNT
- Tum dosyalari original lokasyonlarina yerlestirin.
- Recover database:
Svrmgrl> RECOVER DATABASE UNTIL CANCEL;
- Kayipdosyaya gelinince CANCEL yazin.
- Database’i acin:
Svrmgrl> ALTER DATABASE OPEN RESETLOGS;
- BACKUP CONTROLFILE
Time Based Recovery yapilmasi gereken bir durum olabilir ancak database’in yapisi son backup’tan beri degisti ise bu tur bir backup yapilmasi gerekir. Once asagidak isekilde control file backup’i alinamsi gerekir:
ALTER DATABASE BACKUP CONTROLFILE TO 'filename' REUSE;
REUSE opsiyonu daha onceden ayni lokasyonda baska file varsa overwrite eder.
Svrmgrl> SHUTDOWN
- Controlfile’i backup’layin
- Tum datafile’lari restore edin.
- Istenilen zamana kadar asagidaki sekilde recovery yapin:
Svrmgrl> RECOVER DATABASE UNTIL TIME ‘YYYY-MM-DD:HH24:MI:SS’ USING BACUP CONTROL FILE;
- RESETLOGS opsiyonu ile Database’i acin:
Svrmgrl> ALTER DATABASE OPEN RESETLOGS;
- CHANGE BASED RECOVERY
- Recovery: Current Redo Log Currupt - Database Hung Satate
Database acikken current redolog currupt olursa ve multiplex edilmemis ise bu yontem kullanilir.
Svrmgrl> SHUTDOWN IMMEDIATE;
- Database’i baslatin ve mount edin:
SVRMGRL> STARTUP MOUNT
Svrmgrl> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP N;
Bu komut current corrupt redo log’un uzerine yazilabilir hale getirir ya da eger redo log kayipsa yeniden yaratir.
Svrmgrl> ALTER DATABASE OPEN RESETLOGS;
- Recovery: Current Redolog Currupt – Database Closed
Eger redolog database’i acar iken kayip ise CLEAR LOGFILE opsiyonu kullanilamaz. Cunku arsivlenmemis bu grup crash recovery icin gereklidir.
Svrmgrl> SHUTDOWN IMMEDIATE;
- Database’i baslatin ve mount edin:
Svrmgrl> STARTUP MOUNT
- Ilgili redo log’un sequence numarasini alin:
Svrmgrl >SELECT * FROM V$LOG;
Svrmgrl> RECOVER DATABASE UNTIL CANCEL ;
Sequence numarasini girin
Svrmgrl> ALTER DATABASE OPEN RESETLOGS;