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;
Database?i acin:
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;
Databse?i acin:
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.
INACTIVEDELETED	:Instance recovery icin ihtiyac duyulmayacak olan arsivlenmis redolog.
	INVALID	: Inaccessible Redolog
Instance recovery esnasinda current ve aktif redologlar kullanilacaktir.
Recreate Redolog:
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;
Offline backup alin.
CANCEL BASED RECOVERY
Eger arsivlenmemis online redolog  kayip ise bu tip recovery gereklidir.
Database?i kapatin.
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;
Offline backup alin.
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.
Databasi?i kapatin:
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;
Offline Backup alin.
CHANGE BASED RECOVERY
Recovery: Current Redo Log Currupt - Database Hung Satate
Database acikken current redolog currupt olursa ve multiplex edilmemis ise bu yontem kullanilir.
Database?i kapatin.
Svrmgrl> SHUTDOWN IMMEDIATE;
Database?i baslatin ve mount edin:
SVRMGRL> STARTUP MOUNT
Clear log file:
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.
Databasi?i acin:
Svrmgrl> ALTER DATABASE OPEN RESETLOGS;
Offline backup alin.
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.
Database?i kapatin.
Svrmgrl> SHUTDOWN IMMEDIATE;
Database?i baslatin ve mount edin:
Svrmgrl> STARTUP MOUNT
Ilgili redo log?un sequence numarasini alin:
Svrmgrl >SELECT * FROM V$LOG;
Recover Database:
Svrmgrl> RECOVER DATABASE UNTIL CANCEL ;
Sequence numarasini girin
Database?i acin:
Svrmgrl> ALTER DATABASE OPEN RESETLOGS;
Offline Backup alin.
Hosted by www.Geocities.ws

1