Tags

, , , ,

Merhaba Arkadaşlar, Önceki yazımızda veritabanı açılış modlarından bahsetmiştik şimdi yazımızda veritabanı kapanış methodlarından bahsedeceğiz. Oracle veritabanını Shutdown Abort,Shutdown Normal,Shutdown Immediate ve Shutdown Transactional diyerek kapatabiliriz. Bu yazımızda bunlar arasındaki farklar nedir ? Hangisini nerelerde kullanmalıyız ? ve etkileri neler olur ? gibi soruların cevaplarını bulacağız. Veritabanı kapatma yöntemlerini tek tek anlatmadan önce şunu söylemeliyimki veritabanını tutarsız bir şekilde kapatan tek yöntem shutdown abortdur. 

Shutdown Abort

Veritabanımızın en hızlı şekilde kapanmasını sağlar.An itibariyle yapılmakta olan transactionlar sonlandırılır ve rolback atmaz.Yani veritabanımız tutarsız bir şekilde kapanır. Veritabanımızı tekrar açmak istediğimizde Smon devreye girer ve online redo log dosyaları okunarak instance kurtarma işlemi yapılır.Bu yöntemi kullanmak pek mantıklı değildir yalnız veritabanımızı ani bir şekilde kapatmak istediğimiz durumlarda (saldırı vs.) bu kapatma yöntemini kullanmak mantıklı olabilir.

SQL>shutdown abort;

Shutdown Normal

Bu yazımızda bahsedeceğimiz yöntemlerden sadece Shutdown Normal komutu hiç bir şey yapmadan bekleyen bir kullanıcıyı bekler ve veritabanını kapatmaz, ne zaman o kullanıcılar oturumunu kapatırsa o zaman kapanma işlemi gerçekleşir. Bu yöntemde veritabanımız tutarlı bir şekilde kapanır.

SQL> shutdown normal;

Shutdown Transactional

Bu yöntem shutdown normal yöntemine biraz benzer ama shutdown normal yöntemindeki gibi bir kullanıcının oturumunu kapatmasını beklemez eğer o kullanıcı transaction işlemi yapıyorsa o işlemin bitmesini bekler. Kullanıcılarımızın yapmış olduğu transactionlar commit edilir. Yine veritabanımız tutarlı bir şekilde kapanır.

 SQL>Shutdown transactional;

Shutdown Immediate

Veritabanı kapatma yöntemlerinden en popüleridir. Yapılan transactionlara rolback atıp kapatır. Shutdown Normaldeki gibi kullanıcıların otorumunu kapatmasını beklemeyecektir veya shutdown transactionda olduğu gibi yapılan transactionın bitmesini beklemeyecektir.

SQL> shutdown immediate;

Yukarıdaki anlattıklarımı daha iyi anlamanız açısından aşağıdaki tabloyu paylaşıyorum ve ardından bir senaryo üzerinde konuşacağım.

db kapanma yöntemleri

Arkadaşlar şöyle bir senaryo düşünün: Bir tablo oluşturdum ve o tabloya insert yaptım fakat commit etmedim.Bu sırada dba Shutdown Abort komutu ile veritabanımızı kapattı. Böyle bir durumda veritabanına tekrar bağlandığınızda oluşturduğunuz tabloyu göreceksiniz(create işlemi oto commitdir) commit etmediğiniz DML işlemlerini göremeyeceksiniz.Aynı senaryo shutdown normal ve shutdown transactional için düşünürsek bu iki kapatma yönteminde ‘de verilerimiz commit edilecektir ve veritabanına tekrardan bağlandığımızda yaptığımız değişiklikleri göreceğiz.Shutdown immediate ise commit edilmeyen değişiklikleri umursamaz.Eğer yaptığınız değişiklikleri commit etmediyseniz veritabanına tekrar bağlandığınızda bu değişiklikleri göremeyeceksiniz.

Advertisements