12 Şubat 2012 Pazar

Shared Pool Alt Birimler

Aslında birimler değil bileşenler denir ama benim öyle diyesim geldi bugün :)
Öncelikle bu kadar ara verdiğim için yine özür :) Ama 30 olmadan önce yapılması gereken 39. madde olan 1+1 ile meşguldüm ve onu da gerçekleşirdiğimize göre artık 40. madde için çalışmalara başlamamız gerekecek...

Neyse gelelim konumuz Oracle'a ; Sanırım en son yapısından bahsediyorduk.

Shared Pool içinde bulunan alt yapılarla bu alanı inceleyelim:

Library Cache : Geçmişte çalıştırılmış olan SQL komutlarının sonucu verme aşamasının saklandığı alandır.

Data Dictioanary Cache : Tablolar, index, kullanıcı ve buna benzer yapıların tanımlanmış hallerinin saklandığı alandır. Bir işlem yapılırken örn: select* from tabloadı
komutunda tabloya ulaşmanız için önce tanıma ihtiyacınız vardır. İşte o sırada bu alana ulaşması ve tanımı alıp işlemi yapması gerekecektir.
Ben bunu nesneye dayalı programlama olayına birazcık benzetiyorum. OOP yane nesneye dayalı programlamada işlem yapacaksanız önce işlem yapmak istediğiniz nesneleri tanımlarsınız yane bir ad verirsiniz (bunu insanlara isim vermek gibi düşünebilirsiniz örn: salona kardeşlerinizden birini çağıracaksınız "kardeşim gelir misin? derseniz olmayacaktır :) illa ki ismini söylemeniz gerekir : işte nesneye dayalı programlama mantığı da bu kadar basittir :D )

Bilgisayarlar aptaldır onlara herşeyi anlatmanız gerekir :P
Neyse dönelim konuya ;

PL/SQL alanı : PL/SQL komutlarınızın saklandığı alandır. Oracle  yazılımı enson çalıştırılan PL/SQL komutlarının sonuçlarını sakladığı bir alan vardır ve bu alan sayesinde
aynı komutları başka bir kullanıcı girerse sonucu oradan çekecektir.

Large Pool : Aslında alanın adı akla hemen küçük fikirleri sunacaktır. Oracle veritabanının ihtiyaç duyduğu RAM alanı bu geniş havuzda kullanılır. Örn: Recovery Manager için bir alan ayırmazsanız, kendisi otomatik bu işlemleri shared pool alanında kullanır.

Evet SGA bileşenleri burada biter ve ben gider. Bundan sonra PGA 'dan bahsedip SQL komutlarına geçeriz...

                      

7 Ocak 2012 Cumartesi

SGA Bileşenlerinden Shared Pool ( Paylaşılan Havuz)

SGA Bileşenleri yavaş yavaş tek tek açıklamalarımız  uzun bir aradan sonra devam ediyor:)Umarım bir daha bu kadar ara vermem...Gerçi bu açıklamalar şimdi bazı okuyanlara anlaşılmaz gelse de ilerki konularda sorgularda bu cache kontrollerini yaptığımızda oluşan bilgilerle ne neyi gösteriyor diye açıkladığımızda tanımlar tam olarak yerine oturacaktır. Ama önce tanımlar :
 Shared Pool adından da anlaşılacağı üzere paylaşım alanı. "Paylaşılabilecek herşey orada" cümlesi bize shared pool alanının kafamızda yer etmesine sebep olacağına eminim :)
Bu alanımızda daha önceden yapılmış olan sorguların çalıştırılması LRU (Least Recently Used)'da tutulur.  


*LRU: Oracle' ın  yeni bilgileri tutmak için yer ayırması gerekmektedir. Ve bu sebepten bir algoritma kullanmaktadır. Bu LRU olarak adlandırılır.


Ve böylece plan oluşturma kısmı atlanarak vakit kaybı engellenir. Mesela bir tabloya girme yetkisi olan iki kullanıcı varsa; birinin bu tabloya gitmek için harcadığı zamandan daha azı ile diğer kullanıcı  aynı işlemleri gerçekleştirebilir.

12 Aralık 2011 Pazartesi

SGA Bileşenlerinden Redo Log Buffer Cache

Veritabanında herhangi bir değişiklik yaptığınızda bunun tutulduğu alan log buffer cache (logların tamponları)dır.
Bu alana yazılan veriler bir tabloda değiştirilen tek bir satır değildir.
Örn: Bir tabloda bir veriye UPDATE (güncelleme komutu  : bunları daha sonra görecez) uygulandığında sadece yeni veri, log tamponunda tutulur. Eski veri UNDO tablolarına yazılır.
LGWR (Log Writer) işlemcisi log buffer cache'teki verileri disk üzerindeki redo günlüklerine yazar ve bu işlem bitene kadar veritabanı işlemleri yapılmasına izin vermez.Bazen birden çok kullanıcı olacağından bu işlem uzun sürer. Bu yüzden Log Buffer Cache'lere fazla Ram alanı ayrılmamalıdır.

7 Aralık 2011 Çarşamba

Database Buffer Cache - Veritabanı Tamponu

SGA (System Global Area) bileşenlerinden veritabanı tamponu nedir? 
 
Bizler SQL komutlarını çalıştırarak işlemler yaptığımızda değişiklikler direk veritabanına yazılmaz. İlk olarak veritabanı tamponu ( database buffer cache)'lere yazılırlar.Aynı şey sorgu işlemleri için de geçerlidir. Select komutunu çalıştırdığınızda önce verileri vertabanı tamponuna kopyalanır. Böylece veriler RAM'de olduğundan verilere daha hızlı erişiriz.


Bu konuda dikkat edilmesi gereken husus; Ram alanıdır. Yani veritabanı tamponu için gerekli RAM alanını iyi ayarlamalıyız. Gereğinden fazla Ram ayırmamız işlemlerimizi yavaşlatabilir.


Bugünden sonra bu şekilde kısa kısa açıklamalarla Oracle veritabanı yapısına göz atalım .

4 Aralık 2011 Pazar

Hİçbirşey Yapmak İstenilmeyen Gün

Birkaç gündür hiçbirşey yapasım yok. Aslında hergün bildiklerimi sıra sıra buraya zamanımdan bir parça ayırarak yazacaktım ama bir durağanlık oluştu. Bugün beğendiğim ve çok önce okuduğum bir kitap aklıma geldi.
Çok uzun zaman önce 7. sınıf  o zamanlar ortaokul dönemleri diyoruz:) Tutunamayanları okumuştum.  Ben şahsen kendim almadım kitabı, her zamanki gibi bizim evin vitrinindeydi:) ve ben de çektim okumaya başladım. Bugün her nedense o kitap geldi aklıma. Kitapta Selim Işığın intiharını araştıran en yakın arkadaşının Selim'in gözü ile onun tanıdıkları ile tanışması ve bunun akabindeki olaylar. Selim hayatı sorgulamış ve tutunamamıştı. İntiharı seçmişti ki bu bana göre yanlış bir sonuç neden mi? Çünki sorgularında yanlış yerlere bakmış ve cevaplar bulamayınca burda kalmayı manasız bulmuştu.
Ama "Tutunamayanlar" kitabını herkese tavsiye ederim. Çünki hayatı boş yaşayan o kadar insan var ki; en azından biraz olsun sorgulamaya başlayabilirler. Sakın sorgularken Selim gibi çıkmaz sokağa girip te kendi etrafınızda dönmeyin? tamam mı :)
Not: Bu arada o kitabı bir daha okumayı düşünüyorum çünki aradan baya zaman geçmiş ve kendimi ara ara bulduğum kitaplardan biriydi diyebilirim.

28 Kasım 2011 Pazartesi

Oracle SQL*PLUS

2 Hafta ne çabuk ta geçmiş :)
Evet şimdi birçok veritabanı yönetimi için ilk tercih edilen program SQL*PLUS kullanımına giriş yapalım:

  • Başlat (Start)-Programlar (All programs) yönergelerini tıklayalım.
  • Oracle yüklediğimiz için programlar menüsü açıldığında karşınıza Oracle-OraDB10g_home1 (buradaki 1 rakamı değişken olabilir çünki siz veritabanını kurarkenki verilen isimdir) çıkacaktır.Buradan Application Development seçeneğinden SQL*PLUS öğesini hemen bulabilirsiniz.
  • Eğer SQL*PLUS öğesine komut sisteminden giriş yapmak isterseniz. Çalıştır(Run) yerine cmd yazın çıkan konsola sqlplus /nolog yazıp çalıştırdığınızda SQL*PLUS açılacaktır.
  • Uzaktaki bir veritabanına bağlanmak istediğinizde komut satırını şöyle yazmalısınız;
SQLPLUS kullanıcı_adı / parola@veritabanı_bağlantı_adı
veya SQLPLUS kullannıcı_adı/parola
Buradaki kullanıcı adı veritabanı kullanıcı adıdır.


Eğer Oracle programının kurulu olduğu yerde yer alan TNSNAMES.ORA dosyasında veritabanı_bağlantı_adı olarak yazdığımız isim ve ona ait bağlantı bilgileri yoksa bağlanmak istediğinizde hata alırsınız. Böyle durumlarda ismin yerine uzaktaki bilgisayarın IP numarasnı yazmalısınız.
Bundan sonraki kısımda bağlantı yapılırken kullanılacak kullanıcı bilgileri ve kullanıcı oluşturma olacaktır.

11 Kasım 2011 Cuma

2 Hafta Oracle Yok Galiba :)

Araya bayramın girmesi ve benim yoğunluğum derken bu ara blog'ta birşeyler yazmıyor olmak beni tembel olarak hissettirdi. Not defterime bu iki hafta içinde neden burda yoktum diye yazmazsam eğer  sonradan kontrol ettiğimde kendimi kötü hissedebilirim değil mi ?:)
Üç gündür bilgisayarımı temizlemekle uğraşıyorum. İyice paranoyaklık yapıyorum galiba ama :) antivirüs olmadan nasıl temizlerim diye baktım tabi işe yaradı. Ama paranoya devam edince çek bir format dedim :)
Şimdi bilgisayarımda herşeye yeni baştan diyoruz...
Ve bilmeniz gerekenler diye sıralıyorum ;
  1. Bu ara trojen'ler haricinde keylogger'lar çok yaygın. Antivirüslere yakalanmazlar. Programlamaları çok kolaydır. Pc'nize bulaştı mı sizin klavyede yazdıklarınızı karşı tarafa gönderir. Ama bunu anlamak kolay hali ile: Tabi bilinmeyen yeni keylogger'lar çıktıysa onu bilemem (mesela özel yazımlar)  ctrl+alt+del yaptığınızda çalışan işlemcilere baktığınızda System'in karşısında system yoksa keylogger'ınız vardır. Silmek için de nette araştırma yaparsanız bir ton çözüm var. 
  2. Trojen'ler var olduklarını anlamak ve silmekle ilgili yazmak biraz sürer. O yüzden onu sonraya bırakıyoruz. Bİlgisayarınızda trojen varsa , bulaştıran kişinin sizin bilgisayara uzaktan izlemesini sağlar. Varlıklarının en anlaşılır yanı sistemi geri alamazsınız. Bunun haricinde daha birçok belirtisi vardır. Ama şimdi biz bunlara değinmeyeceğiz.
Neyse; Sanırım iki hafta (10 gün de olabilir) uğraşmam gereken hayati sınavlar:) ve işlerim olacak. Umarım iki hafta sonra son hız oracle derslerini yazabilirim

16 Ekim 2011 Pazar

Oracle Ortam Değişkeni Ayarları

Bugün napıyoruz?
SQL*Plus programını herhangi bir Windows komut sisteminde doğrudan çalıştırmak için; Windows ortam değişkenlerine %ORACLE_HOME% için bir ekleme yapmalıyız.
Napıyoruz ? Önce adım adım anlatıyoruz sonra Video yayımlıyoruz :)
Anlatımda Türkçe seçenekler olarak anlatıyorum. Ancak bilgisayarım ingilizce olduğundan video'da seçenekler ingilizce çıkacaktır.
  1. Windows'un "Başlat" menüsünden "Çalıştır" seçeneğine gidiyoruz. Ve metin kutusuna  "regedit" yazıyoruz. Karşımıza Kayıt defteri düzenleyicisi çıkacaktır.  Sol taraftaki menüleri şu şekilde açıyoruz :
HKEY LOCAL MASCHINE- SOFTWARE- ORACLE- KEY_OraDb10g_Home
   
    2.  Dizideki en son tıklamış olduğumuz KEY_OraDb10g_Home'un sağ tarafında bazı bilgilerin yer aldığını göreceksiniz. Oradan ORACLE_HOME seçeneğini çift tıklayın. Çıkan metin kutusunda yer alan "Değer Verisi" kutusunun içindeki metni kopyalayın.

    3. Ve bilgisayarınızda sistem özelliklerine gelin ;
Başlat - Çalıştır kısmına "sysdm.cpl" yazarak gelebilirsiniz.

    4. Açılan pencereden "Gelişmiş" menüsünü seçin. Oradan "Ortam Değişkenleri"ne gelin.

    5. Ortam değişkenleri penceresinde alt kısımda " Sistem Değişkenleri" listesinde Windows ortam değişkenlerini göreceksiniz. Pencerein alt kısmındaki "Yeni" sekmesine tıklayın. Açılan pencerede;
Değişken Adı'na "%ORACLE_HOME%" tırnaklar olmayacak şekilde yazın.
Değişken Değeri'ne daha önce kopyalayın dediğim metni yapıştırın. Tamam tuşuna basarak pencereden çıkın.

İşlem tamamlanmıştır. Kolay gelsin.
 

8 Ekim 2011 Cumartesi

HTC Wireless Bağlantı Sorunu

HTC'den Airties modem bulunan bir ortamda wireless  bağlantı sorunu yaşadım. E hali ile yine çözümü buldum :) (Her ne kadar sinir etse de beni ) Hali ile çözümünü bulduğum problemlerle daha sonra karşılaştığımda "ya ben nasıl çözmüştüm" dediğim çok olur. E burası da benim not defterim olduğuna göre :) ; Haydi buyrun çözüme :
Bu arada ubuntu işletim sistemi yüklü bir bilgisayarla da bu sorunu yaşayabilirsiniz aynı çözüm kendisi için de geçerlidir.
  1. Modem ayarlarına admin olarak giriyorsunuz
  2. Mac filitreleme etkinse kaldırıyorsunuz.
  3. IP yönlendirme etkinse kaldırıyorsunuz.
  4. Kablosuz ağ güvenlik ayarlarını WPA2 yapıyorsunuz
  5. Telefonunuzu ve modemi yeni baştan başlatın sorun çözülecektir.
Geçmiş olsun

3 Ekim 2011 Pazartesi

Oracle Veritabanı Sunucusunun Çalışmasını Sağlayan Etmenler

Öncelikle video eklemek resim eklemekten daha iyi diyerekten. Artık video'larla anlattıklarımı belirtmeye karar verdim. O sebepten bilgisayarımdan Oracle'ı kaldırdım ve birazdan tekrar yükleyeceğim video'ya kaydetmeyi güzelcene başarabilirsem bugün eklerim.
Ondan önce Oracle ile ilgili bazı teorik kavramlara bakalım :
Oracle sunucusu çalışırken RAM ve CPU'yu kullanır. Oracle Server'ın çalışmasını sağlayan ve harddisklerde var olan veri dosyalarına= datafile erişilmesini sağlayan bileşene instance denir. Instance RAM'i belirli alanları kullanmak için ayırır. Instance veritabanı kapatıldığı zaman sistemden silinen bileşenlerden oluşur. Kaydedilen verilerse yane datafile 'larımız disk üzerinde ve kalıcıdır. Oracle kapatılsa da onlar tekrar başlatıldığında kullanıma hazırdır.

Oracle Instance Bileşenleri
1. Ram üzerindeki System Global Area (SGA) bellek yapısı
2. Ram üzerindeki Program Global Area (PGA) bellek yapısı
3. Bazı process'ler
System Global Area:
Veritabanının sistem belleği (RAM) üzerindeki paylaşılan bellek:Shared Memory alanında kendisine ayırdığı alanın genel adıdır.
SGA bileşenleri şunlardır;
  • Veritabanı tamponu (buffer cache)
  • Log Tamponu (Log Buffer)
  • Paylaşılan Havuz (Shared Pool)
  • Geniş Havuz (Large Pool)
  • Java için Havuz (Java Pool)
Program Global Area:
Veritabanına bağlanan herbir kullanıcının çalıştığı SQL komutlarının sonuçları, sistem RAM'i üzerinde paylaşılmayan bir bölge olan private area yane özel alanda saklanır. Bu konumdaki kullandığı alana PGA denir.
Veritabanına bağlanan kullanıcı hangi SQL aracını kullanırsa kullansın, herbir oturumun veritabanından aldığı ve verdiği bilgiler o oturumda görünür. Bir kullanıcının diğer bir kullanıcının oturumundaki verileri görmesi mümkün değildir. Bu yüzden veriler paylaşılmayan alanda saklanır.