REAL APPLICATION CLUSTERS’ın PAYLAŞILAN DİSK BİLEŞENLERİ
Selamlar.
Bu makalemizde Rac mimarisi içersinde RAC disk paylaşımını ne şekilde ve nasıl yapıyor onu inceleyeceğiz.Umarım faydalı bir yazı olur.
Real Application Clusters veritabanları, tek Oracle instance’ına sahip Oracle veritabanları ile aynı bileşenlere sahiptir. Bu durum, bir yada daha fazla kontrol dosyalarını, bir dizi online redo log dosyalarını, isteğe bağlı arşiv log dosyalarını, veri dosyalarını ve bunun gibilerini kapsamaktadır. Böylece, her redo log grubunun herbir online redo log üyesi için, herbir kontrol ve veridosyası için, paylaşılan diske giriş imkanı sağlamanız gerekir. Paylaşılan diski,undo tablespace(geri alımtablo alanı) veri dosyasının tavsiye edilen otomatik geri alım yönetimi özelliğini kullanması için konfigüre etmeniz de gereklidir.
Windows NT ve Windows 2000 işletim sistemlerinde(sadece bu sistemlerde), Oracle’ın küme konfigürasyonu bilgilerini depoladığı bir voting yada quorum disk’ e ortak erişim imkanı sağlamanız gereklidir. Bu diski bir Cluster File System (CFS) üzerine veya bir işlenmemiş makine üzerine yerleştirebilirsiniz. Düğüm monitor(gözleyicisi) küme konfigürasyonlarını yönetebilmesi için quorum disk konfigürasyonunu kullanır.
Oracle konfigürasyon ve yönetim araçları paylaşılan diskte depolanan küme konfigürasyon verisine gereksinim duyar. Database Configüration Assistant’ı (DBCA),Oracle Enterprise Management’ı(EM) ve ServerControl(SRVCTL) komut satırı yönetsel yardımcıyı kullanmak için paylaşılan disk kaynağını konfigüre etmelisiniz. Windows NT veWindows 2000 üzerinde, voting disk ve konfigürasyon verisi aynı disk kaynağını paylaşır.
Eğer sunucu parametre dosyasını kullanırsanız, parametre dosyası yönetimi Real Aplication Clusters’da basitleştirilmiştir. Bu dosyayı,genel anlamda yönetmek ve Oracle instance’ına özgü parametre ayarlarını bir dosya içinde bulundurmak için paylaşılan bir diske depolamamız gerekmektedir.
REAL APPLICATION CLUSTER-SPECIFIC DAEMON VE
INSTANCE PROSES
Bu kısımda, Real Application Cluster-Specific daemon ve instance
proses aşağıdaki ana başlıklar altında tanımlayacağız.
- The Global Services Daemon
- Instance Proses Specific to Real Application Clusters
THE GLOBAL SERVICES DAEMON
The Global Services Daemon(GSD), her düğüm üzerinde her düğüme bir GSD proses olacak şekilde çalışır. GSD, istemcilerden(örneğin DBCA, EM ve SRVCTL hizmeti) gelen istekleri almak ve yönetsel iş görevlerini(örneğin Oracle instancenı başlatma ve kapatma gibi) yürütmek için cluster manager ile eşgüdümlüdür.GSD, bir Oracle instance arkaplan proses’i değildir. Dolaysıyla, Oracle instance ile birlikte başlatılmaktadır.
INSTANCE PROSES SPECIFIC TO REAL APPLICATION
CLUSTERS
Bir Real Application Cluster veritabanı, tek Oracle instance’ına sahip bir Oracle veritabanı ile aynı proses’lere(Örneğin, proses monitor(PMON),database writer(DBWRn), log writer(LGWR), ve bunlara benzer proses’ler) sahiptir. Bunlara ek olarak Real Application Cluster-specific prosesler(süreçler)Şekilde de gösterilmiştir. Bu proses’lerin ve bu proses’lerin oluşturduğu trace(izleme) dosyalarının esas isimleri platforma bağımlıdır.
- Global Cache Service Processes(LMSn), 'ın mesajlaşma trafiğine bağlı olarak 0 ile 9 aralığında, uzaktaki RAC'le anlarına gönderilen mesajların akışını kontrol eder ve global veri bloğu erişimini yönetir. LMSn proses’leri, farklı Oracle anlarının ön arabellekleri arasında blok görüntüsünü de iletir. Bu işlem Cache Fusion’ın özelliklerinden bir bölümüdür.
- The Global Enqueue Service Monitor(LMON), küme üzerinde kaynakları ve global kuyruğa eklemeleri gözlemler (monitors) ve global enqueue(kuyruğa ekleme) kurtarma işlemlerini yapar. Enqueues, satır güncelleşimini sıralandıran paylaşılan bellek yapılarıdır.
- The Global Enqueu Service Daemon(LMD), global enqueue ve global kaynak erişimini yönetir. Her bir Oracle instancenın içinde bulunan LMD proses, uzaktan gelen kaynak isteklerini yönetir.
- Lock Proses(LCK), non-Cache Fusion kaynağı isteklerini örneğin library(kitaplık) ve satır önbellek isteklerini yönetir.
- The Diagnosability Daemon(DIAG), Oracle anlarındaki proses başarısızlıkları ile ilgili diagonistic(teşhis edilmiş) veriyi yakalar.İşletim sisteminde geri planda çalışan bu programın işlemleri (the operations of this daemon)otomatik hale getirilmiş ve yaptığı etkinlikleri kaydetmek için bir uyarı log dosyasını güncellemektedir.
SYS_REFCURSOR İçeriğine Erişmek
Bu yazıda Oracle da prosedür içerisinden SYS_REFCURSOR doldurup bu CURSOR içerisindeki her satıra tek tek erişerek ekrana basma işlemi yapacağız.
Bir tablodaki kayıt ile ilişkili başka bir tabloda birden fazla kayıt bulunabilir (1 - n ilişki) ve siz alt tabloda üst tablonun id si olan kayıtları göstermek isteyebilirsiniz
Tablolar arasındaki ilişki gözüküyor.
Prosedurümüz üst kısmında gerekli tanımlamaları yapıyoruz.
RC_CURSOR SYS_REFCURSOR; --cursor tanımlaması
TALEP_ID NUMBER; --silinecek üst id
TALEP_BIRIM_ID NUMBER; -- cursordan gelen her bir değerin atılacağı değişken (temp gibi)
TALEP_ID:=1;
CURSOR açıyoruz ve içeriğini dolduruyoruz .
Cursor doldurma işlemi klasik bir select cümleciğiyle yapılabilir.
Dışarıdan gelen parametreleri de bu cümlecik içerisinde kullanabilirsiniz.
OPEN RC_CURSOR
FOR SELECT NTALEP_BIRIM_ID
FROM ITS_HRK_TALEP_BIRIM
WHERE NTALEP_ID = TALEP_ID ;
Listeleyeceğimiz dataları cursor içerisine aldıktan sonra bir döngü yardımıyla cursor içerisindeki değerlere tek tek erişeceğiz.
Buradaki döngü programlama dillerinde var olan dongülerle aynı mantık içerisinde çalışmaktadır.
Düngü LOOP ile başlar ve END LOOP ile biter.
FETCH ifadesiyle cursor içerisindeki ilk değeri temp değişkenimiz olan TALEP_BIRIM_ID içerisine atıyoruz.
Burada bizim döngüden çıkmamızı sağlayacak ifade ise RC_CURSOR%NOTFOUND ifadesidir.
Bu ifade TRUE döndüğü anda CURSOR içerisinde eleman kalmamış demektir ve döngüden çıkılır.
DBMS_OUTPUT.PUT_LINE(TALEP_
DBMS_OUTPUT.PUT_LINE sadece bir örnek bu kısımda CURSOR içerisinde sakladığınız verilerle her türlü işlem yapabilirsiniz.
Silme, güncelleme, ekleme gibi. Son kısımda ise CURSOR kapatılıyor. Bu işlemi bizim için şart değil eğer siz kapatmazsanız oracle bu işlemi gerçekleştirecektir.
LOOP
FETCH
RC_CURSOR INTO TALEP_BIRIM_ID;
EXIT WHEN RC_CURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(TALEP_
END LOOP;
CLOSE RC_CURSOR;
END;
Kodumuzun çalışan şekli.
------------------------------
DECLARE
RC_CURSOR SYS_REFCURSOR;
TALEP_ID NUMBER;
TALEP_BIRIM_ID NUMBER;
BEGIN
TALEP_ID:=52;
OPEN RC_CURSOR FOR
SELECT NTALEP_BIRIM_ID FROM ITS_HRK_TALEP_BIRIM WHERE NTALEP_ID = TALEP_ID ;
LOOP
FETCH
RC_CURSOR INTO TALEP_BIRIM_ID;
EXIT WHEN RC_CURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(TALEP_
END LOOP;
CLOSE RC_CURSOR;
END;
------------------------------
Bu tablolar sizde olmadığı için CURSOR 'ı DUAL dan select yaparak doldurabilirsiniz.
Son olarak RC_CURSOR ifadesinde kullanabileceğiniz diğer parametreler
cursor%ROWCOUNT - int - CURSOR içerisindeki kayıt sayısı
cursor%ROWTYPE - CURSOR içerisindeki alanların tipi
cursor%FOUND - bool - TRUE CUROSR içerisinden veri dönerse
cursor%ISOPEN - bool - TRUE CURSOR açıksa
Oracle Data Mining Mining Techniques and Algorithms
Bu yazımda sizlere Data mining algoritmaların dan bahsedeceğim.Linkten gerekli bilgilere ulaşabilirsiniz.Devamı gelecek..
http://www.oracle.com/technetwork/database/enterprise-edition/odm-techniques-algorithms-097163.html
Oracle Data Mining Mining Techniques and Algorithms Oracle Data Mining (ODM) provides a broad suite of data mining techniques and algorithms to solve many types of business problems: |
|
Hüsnü Şensoy / DBA of the Year 2009
Selam Arkadaşlar,
Sizlere 2009 yılında dünya çapında yılın dba i seçilen Hüsnü Şensoy' un röportajından bir kesit sunmak istiyorum. Dünyada bu ünvana sahip en genç kişi şu anda kendisi ve bu alanda Türkiye'nin de gururu diyebiliriz. Kendisinin Oracle ve meslek hayatı üzerindeki görüşlerini ve tavsiyelerini anlatan bu yazı umarım sizlere faydalı olur.
..."Son olarak Oracle Magazine tarafından bu yılın Oracle DBA’i (DBA of the year) seçilince, kariyerimde bir basamak daha arkamda kaldı. Bu yazıda benim dünya klasmanında bir Oracle veritabanı uzmanı olmamda işime yarayan ipuçlarını bulacaksınız. Bu yazıyı her ne kadar Oracle Veritabanı ekseninde yazsam da ipuçları bütün teknik uzmanlıklara sanırım uygulanabilir. Bu ipuçlarının genç uzman adaylarına yardımcı olması dileklerimle…
Âşık Olun
Benim için, Oracle kariyer yolu hiçbir zaman “karın doyurmak için bir araç” olmadı. Bugün yaptığım şey 12 yaşlarında QBASIC ile başladığım serüvenin sadece son halkasıdır. O zamanlardan beri bu işle yattım bu işle kalktım diyebilirim.Doğruyu söylemek gerekirse hiçbir zaman “Bu işin bana dönüşü ne olur, ne olmaz ?” diye düşünmedim. Sevdikçe uğraştım, uğraştıkça daha da sevdim.
Genelde “Oracle ile iyi para kazanabilmek için mi uğraşmalıyım ?” sorusuyla karşılaşıyorum. Dürüst olmak gerekirse “çok para” kazanmanın son tercih edilecek yollarından biri Oracle (onca bug, crash, vs. düşünülünce) galiba. Ben bunun yerine kendi sebebimi açıklamak adına “Oracle ile uğraşıyorum, çünkü büyük veritabanlarıyla uğraşmayı seviyorum” cümlesini tercih ediyorum.Bir ihtiyaç önüme geldiğinde; en ucuz(cost-effective), en sağlam (robust), en performanslı (scalable) yolu bulmaya çalışmak benim için hep bir mücadele:Çözümü araştırmak, bulmak, geliştirmek ve ondan sonra da keyifle çalıştığını izlemek…
Çırak Olun, Kalfa Olun, Usta Olun
Fikrimi sorarsanız kurumsal arenada iyi bir teknik oyuncu olmanın yolu usta-çırak modelinden geçiyor. Geriye dönüp baktığımda üniversite yıllarından beri benim en büyük şansım hep iyi ustaların karşıma çıkmış olması (Hasan Tonguc Yılmaz ve Yomi Kastro’ya teşekkürler). Bu ustalar teknik bilgiyi öğretmekten ziyade, bulunduğunuz coğrafyaya tıkılmak yerine dünya klasmanında oynamanız için gerekecek ve yaptığınız işte hep en iyi olmanızı sağlayacak ipuçlarını vereceklerdir.
Bir diğer önemli adım ise usta olmak. Bunun bir açıdan önemi vefa borcunuzu ödemek olarak değerlendirilebilir. Ama daha önemlisi sizin kendinizi ilerletmeniz ile alakalı olan kısımdır. Takdir edersiniz ki bir şeyi bilmek ile onu başkalarına anlatabilmek arasında çok fark var. Eğer birisine koçluk etmeye başlarsanız sunum yetenekleriniz gelişir, teknik detayları teknik olmayan insanlara (yöneticilerinize, müşterilerinize, vs) çok daha kolay indirgersiniz, kendi bilginizi sorular karşısında sınar, bilginizi sürekli taze tutmak ile alakalı önemli bir motivasyon kazanırsınız.
Bilgiyi Paylaşın
Ticaretle uğraşan bir ailenin ferdi olarak bize hep öğretilen meslek sırlarını hiçbir zaman paylaşmamaktı. Bilgi teknolojilerini kendime kariyer yolu olarak seçtikten sonra bu alanda başarılı ve tanınan biri olmanın en büyük yolunun bilgiyi saklamak değil, bilginin yayılmasını sağlamak olduğunu anladım. Bilginin bugün saklanması neredeyse imkânsız. Ya siz o bilgiyi yayar ve insanların ilgisini çekersiniz veya başkası o bilgiyi yayar ve siz sakladığınızla kalırsınız.
Sunum yapmak, blog yazmak, forumlara cevap vermek sizin bilinirliğiniz açısından çok ama çok önemlidir. Bu nokta da sakın ben daha stajyerim, yarı zamanlı çalışanım, çalışmaya yeni başladım endişelerine kapılmayın. Herkesin üzerine çalıştığı konuyla alakalı söyleyecek mutlaka bir çift lafı vardır.
Birlikte Çalıştığınız ve Fikir Danıştığınız Kişilerin Önemi
Özellikle kurumsal uygulamalar söz konusu olduğunda projelerde her zaman bir takım ekiplerle çalışıyoruz. Büyük projeler yaptığınızda veya bir şeyleri değiştirdiğiniz de ilerlemeniz de kaplumbağa gibi değil tavşan gibi sıçramalar şeklinde olacaktır. Ama hiçbir şey maliyetsiz gelmiyor. Bu tarz projelerde sorun yaşarsanız düşüşler de yüksekten olacaktır.Dolayısıyla yola çıktığınız veya akıl hocalığına başvurduğunuz kişiler sizi bitiş çizgisinde ayakta tutacak olan şeyin ta kendisidir. Benim için hep böyle oldu. Örneğin, veri ambarı konusunda Uğur Demirelçe ve Mustafa Altuğ Kamaci, Linux ve Oracle konularında Orhan Bıyıklıoğlu ve Ersin Ünkar yaptığımız büyük işlerde her zaman akıl hocalarım ve gözüm kapalı güvendiğim kimseler olmuştur.
Yeniyi Siz Getirin
Eskiye rağbet olsa bitpazarına nur yağardı. Yeniden sakın korkmayın. Oracle Magazine’de yayınlanan röportajımda sarf ettiğim cümlelerin en önemlilerinden biri kanımca suydu:
İyi teknik adam hep yeniyi kullanmaya karşı bir heyecan duymalı, ama kullandığı ürününün sınırlarını da çok iyi test edip bilmeli.
Geriye dönüp baktığımda yeni kavramı benim kariyerimde çok önemli bir yer tutuyor. Bazılarını sıralamak gerekirse:
Turkcell içerisinde
Turkcell’e Oracle Database Beta testing kavramını 11g Release 2 ile getirmek
Turkcell’in ilk büyük çaplı RAC projesini tasarlamak
Turkcell’i ASM ile tanıştırmak
Turkcell’in Oracle CAB’de temsil edilmesini sağlamak
Türkiye
Türkiye’nin ilk ve tek Oracle ACE Director’ü ve Yılın DBA olmak
Dünya
Dünyanın en genç Oracle Director’ü ve Yılın DBA olmak
Gördüğünüz üzere yeniliği ve ilki her seviyede gerçekleştirebilirsiniz. İlk bilmek, ilk denemek vs hep tutkunuz olsun.
Sorunla Karşılaştığınızda Ağınız Hazır Bulunsun
Şunu unutmayınız ki projelerin hiç biri sorunsuz gelmeyecektir. İllaki bir bug veya tasarım aşamasında bazı sorularınız, sorunlarınız olacak. Burada mühim olan sorun yaşadığınızda kaç kişi ile bu sorunun üzerine gidebildiğiniz. Benim tercihim her zaman mümkün olduğunca farklı ve fazla profile ile Oracle problemlerine saldırmaktır:
Kendi ekibinizdeki uzmanlar
Metalink Support kanalı
Oracle Development takımı
Oracle Proje Yönetim takımı
Uzmanlığına güvendiğiniz yerel veya yurtdışı uzmanlar
Uzmanlığına güvendiğiniz yurtdışı Oracle Support üyeleri
Liste bu kadar uzun olunca ilk akla gelebilecek soru, bu kadar kişiyi nasıl ayağa kaldırabiliriz olacaktır. Genelde problemlerle karşılaşan insanlar da gördüğüm sorun, problem yaşadıklarında herkesi hareket için davet etmek. Ama bunun pek de çalışan bir metot olduğunu söylemek zor.Burada izlenmesi gereken yol daha sorun ortada yokken ve hatta belki proje bile ortada yokken ağınızı kurmak ve onu harekete hazır hale getirmek. Bunu çeşitli toplantılarda, konferanslarda, ilgili kişilere mailler atıp yaptığınız işi ve kendinizi tanıtarak yapabilirsiniz. Sizi unutmalarına izin vermezseniz her daim harekete hazır bir destek ordunuz olur.
DBA mi Developer mi?
Hep kulağımıza gelen bir diğer soru “kariyer yolumu yazılım geliştirici mi yoksa DBA olarak mı şekillendirmeliyim” oluyor. Ben Turkcell’de staja ilk başladığımda Oracle yazılımcısı idim, daha sonra bir startupda yazılım ekibi yönettim, son olarak da Turkcell’e veri tabanı yöneticisi olarak geri döndüm.
Bunların hiç birisi tek başına sizi uzmanlık mertebesine taşıyacak şeyler değil sadece kartvizitinize yazılacak olan birer “Ünvan”dır. Oracle o kadar garip bir sistem ki maalesef ben developerim veya ben DBA’im diyenleri pek sevmiyor. “İyi” olmak istiyorsanız bir DBA kadar DBA, bir developer kadar developer ve hatta OS ve hardware konusunda da yeteri kadar bilgili olmalısınız. Çünkü bunların her hangi birinde çıkabilecek sorunun sonucu “failure” olarak geri dönecektir. Uzmanın görevi ise bunu önlemektir.
Temellere Önem Verin (Return to Basics)
Öğrencilik döneminde ve sonrasında hep sorulan sorulardan biri “Üniversitede öğrendiklerim ne işime yarayacak ?” oluyor. Kısaca çok işinize yarayacak diyebilirim. Biraz açmak gerekirse kuyruk teorisinden(Queuing Theory) örnek vereyim. Kuyruk teorisinin temellerini anlamamış bir kimsenin Oracle’da veya işletim sistemi seviyesinde göreceği herhangi bir bekleme olayını tam manası ile anlaması mümkün değildir. Defalarca şahit olduğun bir kargaşa servis zamanı ile bekleme zamanı metriklerinin bir birine karıştırılmasıdır.
Dolayısıyla bugünün bilgisayar yazılımları sadece dört işlemi yapabilen uzmanlar için fazla karmaşık. O yüzden olasılık teorisi, kuyruk teorisi, simulasyon sistemleri, vs gibi temel(core) mühendislik dersleri (veya derslerin hocaları) ne kadar sıkıcı olursa olsun kesinlikle bir uzman adayı tarafından iyi anlaşılmalı ve gerçek hayatta kullanabilecek kadar sindirilmeli. "
Add Months() Fonksiyonu
ADD_MONTHS Fonksiyonu ve Gün Ekleme
Merhaba arkadaşlar, Bu makalemde add_months() fonksiyonundaki bir takım incelikleri sizlerle paylaşacağım. Tarih bilgisi içeren önemli ve kritik raporlarınızda kesinlikle dikkatinizden kaçmaması gereken bir konu olduğunu düşünüyorum.
SQL tarih fonksiyonlarından biri de add_months fonksiyonudur. Bu fonksiyonun çeşitli kullanım şekilleri vardır. Fakat fonksiyonun temel mantığı; girilen bir tarihten itibaren, verilen ay sayısı kadar geriye veya ileriye gitmektir. Fonksiyonu analiz edersek ;
add_months(‘date’,number) şeklinde;
-date à girdiğimiz bir tarih,
-number à herhangi bir sayı (3,8,-4 gibi)
Şimdi fonksiyonu birkaç örnekle inceleyelim :
|
İfade |
Sonuç |
1 |
ADD_MONTHS('10-APR-2010', 2) |
10/06/2010 |
2 |
ADD_MONTHS(SYSDATE,2) |
07/02/2011 14:00:15 --(çalıştırdığım tarih üzere) |
3 |
ADD_MONTHS('15-JUL-1988',-2) |
15/05/1988 |
4 |
ADD_MONTHS('31-JAN-2010', 1) |
28/02/2010 |
5 |
ADD_MONTHS('30-JAN-2010', 1) |
28/02/2010 |
6 |
ADD_MONTHS('29-JAN-2010', 1) |
28/02/2010 |
7 |
ADD_MONTHS('28-JAN-2010', 1) |
28/02/2010 |
8 |
ADD_MONTHS('27-JAN-2010', 1) |
27/02/2010 |
9 |
ADD_MONTHS('30-JUN-1988',1) |
31/07/1988 |
10 |
TO_DATE('31-JAN-2010') + 30 |
02/03/2010 |
Yukarıdaki tablonun her satırındaki örnekleri dikkatle incelemekte fayda var.
Tablodaki örneklerden ilkinde ; 10 nisan 2010 tarihine , 2 ay ekliyoruz ve sonuç olarak 10 haziran tarihine gidiyoruz. Aynı şekilde 3. Örnekte 15 temmuzdan 2 ay geriye giderek 15 mayıs tarihine geliyoruz fakat dikkat etmemiz gereken önemli bir nokta var : O da 4 ve sonraki satırlardaki örnekler.
4. Örnekte, 31 ocak tarihine bir ay eklediğimizde 28 Şubata gidiyor. Yani bu fonksiyon mantık olarak seçilen tarih üzerine 30 gün eklemiyor. Takvim üzerinde direk belirtilen günden “x ay sonrasına” gidiyor. 4,5,6 ve 7. Satırlardaki ifadelerin aynı sonucu döndürmesinin sebebi budur. 30 ocaktan 1 ay sonra da 28 şubattır; 28 ocaktan 1 ay sonra da 28 şubattır. Burada dikkat edilmesi gereken, ay ekleme işlemini gün bazında değil takvim bazında yapmasıdır.
10. örneğe baktığımızda ise ekleme işlemi tamamen gün bazında yapılmaktadır. Yani verilen tarihin üstüne takvim üzerinden x sayıda gün eklenir ve o sonuç döndürülür.