17 Haziran 2010 Perşembe

ORACLE - SCN Nedir ? Ne işe yarar?

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.

11 Haziran 2010 Cuma

Oracle Database Kurulumu Tavsiyeleri

Aşağıdaki öneriler tüm oracle database kurulumları için geçerli tavsiyeler
olmakla beraber, IFS özelinde bazı açıklamalar da eklemekte fayda görüyorum.

* Database server a Oracle dışında hiçbir uygulama kurmayın.

IFS Developer ı kendi bilgisayarınıza da kurabilirsiniz.
Gerekli yedekler ile ilgili bir politika oluşturduktan sonra başka
bir sorun oluşacağını düşünmüyorum.

Eğer developer dışı IFS software i kurulumuna ihtiyacınız var ise
başka bir server kullanın.


* Database server üzerinde dosya paylaşımı kullanmayın.

Kullanıcı dosyalarını oracle server oluşturduğunuz paylaşımlar
üzerinden sağlamanız duruma göre önemli miktarda; network bant genişliği kaybına ve
server io gereksinimi dolayısıyla performans sorunlarına yol açabilir.

ifs executable larına erişim dahil olmak üzere tüm share ihtiyacınızı oracle db server
dışı bir noktaya yönlendirin.


* Database server İşletim sistemi seviyesinde firewall ve antivirus kullanmayın.

Oracle database sunucunuzu fiziksel bir firewall arkasına alarak sadece belirli ip ve port yetkisi vermeniz yerinde olacaktır.
Örneğin tüm kullanıcılar 1521 portundan gelebilir ama ssh veya remote desktop sadece şu ip den gelebilir gibi.

* Mevcut sistem RAM inin %80 ini oracle a verin.

Gördüğüm IFS install larındaki oracle konfigurasyonları memory noktasında çok yanlış olabiliyor.
Mesela benim bire bir karşılaştığım bir durumda, server de 8 GB ram olmasına rağmen
oracle a 1 GB civarı ram verilmişti. Tabii bu "next" "next" diyerek oracle kurmaktan kaynaklanmakta :)
Tabii hal böyle olunce database ten performans beklememek lazım.

Ayrıca automatic memory managemet özelliğinin aktif olması da önemlidir.
Aksi taktirde tüm oracle memory sinin manual yönetimi gerekir.
Bu özellik 10g ve sonrasında mevcuttur.

Oracle db üzerindeki şu andaki mevcut ram durumunu aşağıdaki query ile veya oracle enterprise manager üzerinde "memory advisor" da

görebilirsiniz.

SGA total (değerler megabyte cinsinden)
-----------------------------------------
select round(sum(bytes)/1024/1024,2) total_sga,
round(sum(decode(name,'free memory',bytes,0))/1024/1024,2) free,
round((sum(decode(name,'free memory',bytes,0))/1024/1024)/(sum(bytes)/1024/1024)*100,2) free_per
from v$sgastat

PGA total (değerler megabyte cinsinden)
-----------------------------------------
select value/1024/1024 from v$pgastat where name = 'aggregate PGA target parameter'


* Oracle için işletim sistemi olarak mümkünse linux tercih edin.

Oracle ın linux üzerinde daha hızlı çalıştığı bilinen bir gerçektir. Ayrıca oracle linux üzerinde
geliştirildiğinden tum yeni versiyonlar ve güncellemeler öncelikle linux versiyonu olarak dağıtılır.
Evet "en iyi işletim sistemi bildiğin işletim sistemidir" cümlesine katılıyorum.
Fakat yeni fırsatlara da açık olmak gereklidir diye düşünüyorum.
Ayrıca kariyerini DBA olarak devam ettirmek isteyen herkes er yada geç linux ile tanışmak durumunda kalacaktır
desem yanlış olmaz heralde. Maliyetler nokatasında windows server lisans ücretleri de olayın başka bir tarafı.

Ayrıntılı karşılaştırma ve ekstra bilgi için aşağıdaki linkler faydalı olabilir.

http://www.dba-oracle.com/oracle_tips_linux_oracle.htm

http://www.oracle.com/us/technologies/linux/025994.htm


* 64 bit işletim sistemi kullanın.

32 bit sistemlerin bilinen kısıtlamalarına takılmamamak için 64 bit işletim sistemi tercih edin.

İyi çalışmalar.

4 Haziran 2010 Cuma

IFS ortamının (Database,executable,develeoper vs) VMWARE üzerinde çalışır hale getirilmesi mümkün müdür?

Evet mümkündür. Bu şekilde çok ta işlevsel bir test sistemi oluşturulmuş olur.
Bazı firmaların production da bu tip sistemleri kullandığı da görülmedik bir şey değil LinkedIn gruplarından anladığım kadarı ile.
Tüm sistemin yedeğini almak için sanal makinayı kapatıp birkaç dosyanın kopyalanması çok cazip geliyor.
Örneğin 0-50 kullanıcı sayılı nispeten küçük database li bir production sistemi
bence vmware e de taşınabilir.

Taşıma işlemi aşağıdaki adımlardan oluşur.

1. Vmware üzerine, production da çalışan işletim sisteminin aynısı ve aynı versiyon oracle db kurulur.
Burada dikkat edilmesi gereken iki nokta vardır.
a. db create edilirken production daki oracle_sid neyse aynısını vermek gerekir.
b. Kurulan işletim sistemi ve oracle versiyonları production da kullanılanların aynısı olmalıdır.

2) Production ve vmware database kapatılır ve oracle dosyaları (datafile,redolog,controlfile vs) vmware üzerine aynı klasör yapısı ile kopyalanır.

3) Vmware üzerindeki database açılır ve IFS kurulum klasoru wmware içerisine kopyalanır ve install edilir.

4) Kullanılan exe, apx,api ne varsa onlar da aynı klasor yapısı ile vmware üzerine kopyalanır.