Upload
cansu-arslan
View
43
Download
0
Embed Size (px)
Citation preview
BÖLÜM 5
REDO VE ROLLBACK
Cansu Arslan Yalova Üniversitesi [email protected] I2i Systems-18/07/2016
FİZİKSEL VERİTABANİ YAPİSİFiziksel yapıyı oluşturan 5 temel bileşen: 1. Data Dosyaları 2. Control Dosyaları 3. Redo Log Dosyaları 4. Archive Log Dosyaları 5. Parameter Dosyaları
VERİTABANI STANDARTLARI ACİD (Atomicity Consistency İsolation Durability)
Atomicity : Ya hep ya hiç kuralıdır. Consistency : Veritabanında tutarlılık esastır. İsolation : Bir operasyon tarafından yapılan değişikliklerin, diğer işlemler tarafından nasıl görüntülenmesi gerektiğini belirler. Durability : Commit edilen işlemlerin veritabanına yazıldığının ve kaybolmayacağının garantisidir.
LOGLAMA YÖNTEMLERİ
ACID standartlarını sağlamak için;
Write Ahead Logging (Transactional Log) ve Shadow Paging isimli yöntemler kullanılmaktadır.
LOGLAMA YÖNTEMLERİWrite Ahead Logging (WAL), yapılacak islemlerin öncelikli olarak bir log dosyasına yazılmasının ardından, veritabanına ait dosyalara aktarılmasıdır. WAL kavramı, Oracle’da online redo log olarak geçmektedir.
Shadow Paging, veritabanına gerçek girişin yapılmasından önce, kopyaya girişin yapılıp, ardından gerçek değişikliğe gidilmesi olarak düşünülebilir.
REDO - REDO LOG DOSYALARİ Türkçe, ‘Yinele’ anlamına gelir. Veritabanında yapılan COMMIT ile gerçekleşmiş
değişikliklerin kaydedildiği dosyalardır. Bu dosyalar kurtarma yapılırken
kullanılır.Kurtarma gereken durumlar neler? Oracle’ı iki tip redo log dosyası korur: Online ve
Arşivlenen. Bir veritabanı, en az iki veya daha fazla online
redo log dosyasından oluşur. Neden iki? Oracle ‘ın dezavantajlarından birisi Redo log
dosyalarının boyutunun iyi ayarlanamamasıdır.( 10 KB mı, 10 GB mı?)
REDO – ONLİNE REDO LOG DOSYALARİ LGWR, iyice açarsak LOGWR yani logwriter. LGWR, log buffer ’ daki redo girdilerini, redo log
dosyalarına aktarmaktan sorumludur.
SGA
REDO - ONLİNE REDO LOG DOSYALARİ
REDO - ONLİNE REDO LOG DOSYALARİ
Genellikle en az 3 dosya olması tavsiye edilir.
Her bir Redo log’un switch etme süresinin 20 dk’dan az olmasına önem verilir, aksi halde performans sıkıntısı yaşanacaktır.Bunlar ayarlanabilir sürelerdir.
HANGİ DURUMLARDA LGWR TETİKLENMEKTEDİR?
Her 3 sn’de bir, Log buffer 1 MB olduğu zaman, Redo log buffer’ın 3’te 1’i dolduğu zaman, Herhangi bir işlem
tamamlandığında(commit), Veritabanı checkpoint oluşturduğu zaman.
LGWR’nin çalışma prensibi ile ilgili değişiklik yapılamamaktadır.
COMMIT NE ZAMAN ÇALİŞTİRİLİR? Bilinçli bir şekilde sistemden çıkış
yaptığınızda commit edilir.
Oracle sunucularından disconnect olduğunuz zaman yapılır.
Bir DDL cümlesi çalıştırıldığı zaman yapılır.Hangi komutlar DDL cümlesidir?
KOMUT ÇEŞİTLERİDDL DML DQL DCL Data
Administration Commands
Transactional Control Commands
Create Table
Alter Table
Drop Table
Create index...
Insert
Update
Delete
Select
Alter password
Grant
Revoke
Create synonym
Start Audit
Stop Audit
Commit
Rollback
Savepoint
Set Transection
COMMIT-ÖRNEK (BİLİNCLİ KAPATMA)
COMMIT –ÖRNEK –(DDL KOMUTU)
BİR COMMIT İŞLEM SÜRESİNİN İNCELENMESİ
BİR COMMIT İŞLEMİ İLE; İşlemimiz için bir SCN( System Change Number)
oluşturulur. Ayrıca online redo log dosyaları içine SCN kaydeder. Bu adımda COMMIT edilir.Eğer bu adım oluşursa,
verileri garanti etmiş oluruz. Transaction girişi kaldırılır.V$TRANSACTION kayboldu olarak görünecektir.
Oturumumuz tarafından tutulan bütün kilitler serbest bırakılır ve kuyruktaki bekleyen kilitlerin herbiri serbest bırakılır.
Eğer buffer cache’de hala varsa, hızlı bir modda ‘cleaned out’ ve işlemimiz sırasında değiştirdiğimiz blokların çoğuna ziyaret edilecek.
ROLLBACK NE ZAMAN ÇALİŞTİRİLİR? Bilinçsiz bir şekilde yapılan ( Disk çökmesi,
elektrik kesintisi vs.) işlemler de rollback yapılır.
ROLLBACK; komutu çalıştığı zaman yapılır.
Bağlı olduğunuz oturum KILL edildiği zaman yapılır.
ROLLBACK –ÖRNEK –(ROLLBACK; KOMUTU)
ROLLBACK –ÖRNEK –(KILL KOMUTU)
BİR ROLLBACK İŞLEMİ İLE;
Yapılan değişikliklerin hepsini geri alırız.Yani bir satır veri eklediysek, eklenen bir satırlık veriyi sileceğiz.Tam tersi olabilir.
Oturumumuz tarafından tutulan bütün kilitler serbest bırakılır ve kuyruktaki bekleyen kilitlerin herbiri serbest bırakılır.
COMMIT VE ROLLBACK İŞLEMLERİ İÇİN ZAMAN KIYASLAMASI
NE KADAR REDO OLUŞTURABİLİRİM? Değiştiriyor olduğunuz verilerin ne kadar
olduğunu biliyorsanız, ne kadar redo oluşturacağınızı tahmin etmek kolay olacaktır.Tahmin etme yöntemleri var mı?
Transaction boyutunu tahmin edin,yani ne kadar veriyi değiştirdiğini.
Değiştirmiş olduğunuz verilerin satır sayısına bağlı olarak yüzde 10 ila 20 arasında ekleme yapın.
UPDATE’ler için bu değeri ikiye katlayın.
REDO LOG OLUŞTURMAYİ KAPATABİLİR MİYİM?
Bu soru sık sık sorulur.Kısa ve basit bir cevabımız vardır: HAYIR
GENEL BAKIŞ
ARCHIVE REDO LOG DOSYALARI Oracle database iki moddan birinde
çalıştırılabilir: Archivelog Mod, Noarchivedlog Mod.
Select log_mode from v$database; İle arşiv modumuzu öğreniriz.
VERİTABANİMİZİN ARŞİV TİPİNİ ÖĞRENME Elapsed: 00:00:00.01 ifadesi daha önce set
timing on komutunun açılmasıyla oluşmaktadır.
ARCHIVE REDO LOG DOSYALARI Eğer NOARCHIVEDLOG modunda çalışıyorsak
bu kesinlikle veri kaybı yaşayacağımız anlamına gelir.Online Redo Log dosyalarımızın kaybolmamasına özen gösterilmesi gerekir.
ARCHIVEDLOG modundaysanız, veri kaybı yapmamak ve veri kaybı olsa dahi arşivlenen verilerle kurtarabilirsiniz.ARCHIVEDLOG hem backup dosyalarını hem de Online Redo dosyalarını arşivler.Bunlar farklı fiziksel disklerde tutulur ve disk arızası durumunda veriler kurtulur.
NOLOGGING VE LOGGING Oracle’da neredeyse her obje LOGGING
yaratılmaktadır.Bunun anlamı o objenin içinde bulunduğu her işlemin bir redo log üretileceğidir.
NOLOGGING ise obje üstünde yapılacak işlemlerin redo log’u üretilmeyeceğini söyler.Direct path load olmayan normal işlemler redo üretecektir.
Direct Path Load nedir? Buffer cache'i geç, diskten diske işlem yap demektir.
NOLOGGING VE LOGGING KOMUTLARİ ARCHIVE LOG LIST; -- Özellikleri Listeler. ALTER SYSTEM ARCHIVE LOG START; --
Loglama başlatılır. ALTER SYSTEM ARCHIVE LOG STOP; --
Loglama durdurulur. ALTER SYSTEM ARCHIVE LOG ALL; --Zorla
log dosyalarını arşivle ALTER SYSTEM ARCHIVE LOG CURRENT;
--Zorla current log dosyalarını arşivle
LOG DURUMUNA GÖRE REDO LOG ÜRETİMİ
REDO LOG OLARAK ARŞİVLEME
2.5 MB
NOLOGGING OLARAK ARŞİVLEME
50 KB
YENİ BİR LOG AYRİLAMAZ Mİ?
Alert.log dosyasına aşağıdaki hatayı temsilen karşılacağımız hata yazılacaktır:
YENİ BİR LOG AYRİLAMAZ Mİ?
ÇÖZÜM NE OLABİLİR? Daha hızlı DBWR yapın. Birden fazla DBWR kullanarak
veya DBWR I/O slaves kullanarak ASYNC I/O etkinleştirerek ayarlayan DBA var.
Sistemdeki I/O lara baktığımızda, bir disk veya diskler seti görüyorsanız, bu DBWR nin verileri diske yazması dışarıya doğru uzar ve bu yüzden çözüme ihtiyaç duymamız muhtemeldir.Bu ihtiyaçlar ARCH içinde benzerdir.Bunun profesyonelliği burada ‘hiçbirşey için birşey’ mantığına dayanır. Bu sayede, Mantık,yapılar ve kodda herhangi bir değişiklik olmaksızın performans arttırılabilir.Gerçekten bu yaklaşım olumlu sonuçlar verecektir ve hızlanacaktır.
DAHA HİZLİ DBWR YAPİN.
ÇÖZÜM NE OLABİLİR? Bu bazı durumlarda veya uzun bir süre
olmayınca gerçekleşecektir.Checkpoint’in tamamlanmasını ertelemek çözüm olabilir.Aynı mesaj Archival içinde geçerlidir.Bu çözümün faydası sistemdeki duraklamaların çıkarılmasıdır.Bu çözüm DBWR için yeterli seviyede bir rahatlık vermektedir.
CHECKPOINT ERTELEMEK. Checkpoint’i CKPT prosesi temsil etmektedir.
ÇÖZÜM NE OLABİLİR? – REDO LOG DOSYALARİNİN SÜRESİNİN UZATİLMASİ
Redo log dosyalarının boyutunu yeniden oluşturmak da bir çözümdür.Online redo log dosyalarının yinelenme süresinin uzatılması işe yarayaracaktır.
ÇÖZÜM NE OLABİLİR? – KÜÇÜK BİR BLOK BUFFER CACHE KULLANİMİ Çok sık ve sürekli olan Checkpoint’e çözüm
olarak; Küçük bir blok buffer cache kullanın veya init.ora ayarlarıyla değişiklikler yapın.
Bu çok sık dirty blokları boşaltmak için DBWR prosesini zorlayacaktır.Bu yaklaşım için profesyonel yaklaşım, başarısızlık ile karşılaşıldığında kurtarma süresi azaltılmıştır.
KAYNAKLAR http://
docs.oracle.com/cd/B28359_01/server.111/b28310/onlineredo001.htm
Expert-one-on-one oracle Thomas Kyte https://emrahmete.wordpress.com/2012/01/29/oracle-hafizabellek
-terminolojisi/
http://www.ysndmr.net/veritabanlari/oracle/ http://
nevzatkoldemir.blogspot.com.tr/2011/01/nologging-operasyonlar.html
https://anargodjaev.wordpress.com/2013/11/13/redologlar-ve-yonetimi/
http://www.cagataycebi.com/oracle/06_oracle_redologs.pdf http://
aliatesh.blogspot.com.tr/2009/06/redo-log-ile-ilgili-birkac-sey.html http://berkeoz1.blogspot.com.tr/2013/05/redo-log-yonetimi-2.html http://
ozcan-yildirim.blogspot.com.tr/2011/09/oracle-yedekleme-ve-kurtarma-temelleri.html