Sytem Change Number (SCN) sıralı bir biçimde artan, unique(benzersiz),
oracle database içerisinde tam olarak bir zamanı ifade eden, adı üstünde bir rakamdır.
Her transaction ın commit edilmesi ile beraber Oracle tarafından yeni bir SCN üretilir.
Oracle içerisinde, SCN isimli sıralı numaralar control file, datafile header ve redo kayıtlarında kullanır.
Her redo log dosyası bir log sequence numarası and low ve high SCN değerini içerir.
Low SCN kaydı ; log file içerisindeki en küçük SCN rakamını içerir.
High SCN kaydı ; log file içerisindeki en büyük SCN rakamını içerir.
Database NORMAL, TRANSACTIONAL, veya IMMEDIATE olarak kapatıldığında bütün
datafile header larına aynı SCN kaydedilir.
Bu numara(SCN) özellikle incomplete recovery sırasında çok kullanışlı olabilir.
Şu anki geçerli SCN değeri;
SELECT CURRENT_SCN FROM V$DATABASE;
veya
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAl;
sorgularıyla öğrenilebilir.
SCN , Flashback query ler içerisinde aşağıdaki şekilde kullanılabilir.
(Flashback query özelliği oracle 9i den itibaren kullanılmaya başlanmıştır.)
select *
from benim_tablo_adi
AS OF SCN 5713444761
where benim_id = 5
select *
from benim_tablo_adi
AS OF TIMESTAMP SYSDATE – 1/24;
where benim_id = 5
Aslında yukarıdaki iki query epey benzer query lerdir.
Çünkü her ikiside geçmiş bir zamandaki data kümesini
elde etmek amacındadır.
Yakından bakacak olursak aralarında önemli bir fark vardır.
İkinci sorgu her çalıştırmada farklı sonuç döndürebilir.
Fakat birinci sorgu eğer döndürebilirse hep aynı sonuç kümesini döndürür.
Döndürebilirse diyorum çünkü flashback konfigurasyonuna bağlı olarak
sadece 3 saat öncesini, 1 gün öncesini vs. flashback query ile görebilirsiniz.
Tabii bu storage, iş gereklilikleri, şirket politikaları vs. faktörlere bağlı
olarak oracle parametrelerinin düzenlenmesi ile olacaktır.
Hiç yorum yok:
Yorum Gönder