Stop SCN (last_change#)

Stop SCN, bir datafile için mevcut olan en son redo SCN numarasını ifade etmektedir. Bu değeri control file dump dosyasındaki DATAFILE RECORD bölümünden veya v$datafile view’ındaki last_change# kolonunu sorgulayarak öğrenebiliriz.

aa.png
bb.jpg
Görüldüğü üzere data file’lar için checkpoint değerleri v$datafile ve v$datafile_header view’larında sabit. Bu iki view’ın içerdiği kolonlara bakacak olursak ikisinde de checkpoint_change# adlı kolonun olduğunu görürüz. Ancak şu an bu değerler birbirine eşit olsada bazı durumlarda farklı olabilir. Çünkü bu iki kolon isim olarak aynı olsalar da referans gösterdikleri değerler farklı. V$DATAFILE view’ı control file dosyasındaki data file SCN bilgilerini baz alırken, v$DATAFILE_HEADER ise data file header’ındaki SCN bilgisini göstermekte.
Last_change# değeri yani stop scn ise şu an için null durumda. Çünkü bu değer database çalışırken veya veri dosyaları online durumdayken herhangi bir değer göstermemektedir.
Şimdi herhangi bir datafile’ı offline moduna alalım ve bu değerlere tekrar bakalım.
cc.png
Checkpoint_Change# SCN numarası 3804351 iken Last_Change# değeri bu sefer null değil 3805431 değerini aldı. Control file dump dosyamıza da bakarsak stop scn değeri “003a10f7” olarak gözükmekte. Hexadecimal numarasını ondalık değere çevirdiğimizde 3805431 numarasını verdiğini görürüz.
dd.png
Datafile’ı offline moddan online moda getirmek isteyelim;
ee.png
Online çalışan bir sistemde “ALTER DATABASE DATAFILE name OFFLINE” komutu ile veri dosyamızı offline hale getirirken herhangi bir checkpoint işlemi gerçekleşmedi. Doğal olarak bizden veri dosyamızı recover etmemizi istiyor. Peki recover işlemini Oracle hangi SCN numarasına kadar yapacak diye soracak olursanız cevabı STOP SCN. İlk baştada da belirttiğim gibi STOP SCN değeri; datafile’ın tutarlı bir hale getirilebilmesi için üzerine işlenmesi gereken maksimum redo SCN numarası.

Normalde “Recover Datafile 6” diyerek dosyamızı tutarlı duruma getirebiliriz ancak üstteki açıklamayı doğrulamak amacıyla dosyamızı STOP SCN kolonunda belirtilen SCN değerine kadar recover edelim ve daha sonra online hale getirmeye çalışalım.
ff.png
Görüldüğü gibi veri dosyamız recover edildi ve online hale getirilebildi. Tekrar v$datafile view’ını sorguladığımızda last_change# değerinin null hale geldiğini görebiliriz çünkü veri dosyamızı tutarlı hale getirdik.

Stop ve Start SCN değerleri veritabanının açılıp kapanması aşamasında kontrol edilirler. Veritabanımızı tutarlı bir şekilde kapatmaya çalıştığımızda Oracle ilk olarak checkpoint işlemini gerçekleştirir ve STOP SCN değerini control file’a yazar. Tutarlı kapanmalarda checkpoint_change# ve last_change# değerleri birbirine eşittir. Database’in açılması aşamasında ise ilk olarak veri dosyalarının başlığındaki SCN değeri, control file’daki SCN değeri ile karşılaştırılır. Eğer birbirlerine eşitse bu değer daha sonra STOP SCN değeri ile karşılaştırılır. Tekrar bir eşitlik söz konusu ise veritabanı tutarlı bir şekilde açılır, eğer eşit değilse Oracle, recovery işlemini gerçekleştirerek veritabanını tutarlı hale getirir.
gg.png
Veritabanını tutarlı bir şekilde kapadıktan sonra “startup mount” komutunu çalıştırdım. Checkpoint_change# ve last_change# numaralarına baktığımızda birbirlerine eşit durumdalar. Veritabanı recover işlemini gerçekleştirmeden açılabilir.

Yorum bırakın