42
BÖLÜM 5 REDO VE ROLLBACK

Expert one-on-one Oracle / Redo ve Rollback

Embed Size (px)

Citation preview

Page 1: Expert one-on-one Oracle / Redo ve Rollback

BÖLÜM 5

REDO VE ROLLBACK

Page 2: Expert one-on-one Oracle / Redo ve Rollback

Cansu Arslan Yalova Üniversitesi [email protected] I2i Systems-18/07/2016

Page 3: Expert one-on-one Oracle / Redo ve Rollback

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ı

Page 4: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 5: Expert one-on-one Oracle / Redo ve Rollback

LOGLAMA YÖNTEMLERİ

ACID standartlarını sağlamak için;

Write Ahead Logging (Transactional Log) ve  Shadow Paging isimli yöntemler kullanılmaktadır. 

Page 6: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 7: Expert one-on-one Oracle / Redo ve Rollback

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ı?)

Page 8: Expert one-on-one Oracle / Redo ve Rollback

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

Page 9: Expert one-on-one Oracle / Redo ve Rollback

REDO - ONLİNE REDO LOG DOSYALARİ

Page 10: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 11: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 12: Expert one-on-one Oracle / Redo ve Rollback

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?

Page 13: Expert one-on-one Oracle / Redo ve Rollback

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

Page 14: Expert one-on-one Oracle / Redo ve Rollback

COMMIT-ÖRNEK (BİLİNCLİ KAPATMA)

Page 15: Expert one-on-one Oracle / Redo ve Rollback

COMMIT –ÖRNEK –(DDL KOMUTU)

Page 16: Expert one-on-one Oracle / Redo ve Rollback

BİR COMMIT İŞLEM SÜRESİNİN İNCELENMESİ

Page 17: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 18: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 19: Expert one-on-one Oracle / Redo ve Rollback

ROLLBACK –ÖRNEK –(ROLLBACK; KOMUTU)

Page 20: Expert one-on-one Oracle / Redo ve Rollback

ROLLBACK –ÖRNEK –(KILL KOMUTU)

Page 21: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 22: Expert one-on-one Oracle / Redo ve Rollback

COMMIT VE ROLLBACK İŞLEMLERİ İÇİN ZAMAN KIYASLAMASI

Page 23: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 24: Expert one-on-one Oracle / Redo ve Rollback

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

Page 25: Expert one-on-one Oracle / Redo ve Rollback

GENEL BAKIŞ

Page 26: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 27: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 28: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 29: Expert one-on-one Oracle / Redo ve Rollback

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.

Page 30: Expert one-on-one Oracle / Redo ve Rollback

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

Page 31: Expert one-on-one Oracle / Redo ve Rollback

LOG DURUMUNA GÖRE REDO LOG ÜRETİMİ

Page 32: Expert one-on-one Oracle / Redo ve Rollback

REDO LOG OLARAK ARŞİVLEME

2.5 MB

Page 33: Expert one-on-one Oracle / Redo ve Rollback

NOLOGGING OLARAK ARŞİVLEME

50 KB

Page 34: Expert one-on-one Oracle / Redo ve Rollback

YENİ BİR LOG AYRİLAMAZ Mİ?

Alert.log dosyasına aşağıdaki hatayı temsilen karşılacağımız hata yazılacaktır:

Page 35: Expert one-on-one Oracle / Redo ve Rollback

YENİ BİR LOG AYRİLAMAZ Mİ?

Page 36: Expert one-on-one Oracle / Redo ve Rollback

ÇÖ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.

Page 37: Expert one-on-one Oracle / Redo ve Rollback

DAHA HİZLİ DBWR YAPİN.

Page 38: Expert one-on-one Oracle / Redo ve Rollback

ÇÖ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.

Page 39: Expert one-on-one Oracle / Redo ve Rollback

CHECKPOINT ERTELEMEK. Checkpoint’i CKPT prosesi temsil etmektedir.

Page 40: Expert one-on-one Oracle / Redo ve Rollback

ÇÖ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.

Page 41: Expert one-on-one Oracle / Redo ve Rollback

ÇÖ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.

Page 42: Expert one-on-one Oracle / Redo ve Rollback

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