Windows platformu üzerinde Oracle veritabanı

Oracle firması dünyanın Microsoft'tan sonra 2. büyük yazılım devi. Microsoft'un ana ürünü işletim sistemi iken, Oracle firmasının ana ürünü veritabanıdır.

Oracle RDBMS, iki ana bileşenden oluşur:

  1. Database(Veritabanı): Diskte durur. Verileri özel bir yapıda dosyalarda barındırır.
  2. Instance: Bellekte bulunan çalışma alanı (SGA) ve pek çok işlemden oluşur. Kullanıcı isteklerine göre veritabanına erişimde bulunur.

 

Oracle DB'i, genellikle Unix/Linux üzerinde kullandım. En son ücretsiz (ve bazı kısıtlamaları olan) XE sürümünü Windows üzerinde de kullanmaya başladık. Bu yüzden Windows platfotmu üzerinde Oracle ile ilgili bazı değişiklikleri not etmek istedim..:

Thread/iş parçacığı Modeli: Unix ortamında oracle'a ait pek çok şey(PMON, LGWR ve kullanıcı işlemleri gibi), ayrı birer process/işlem olarak çalışır. Fakat windows ortamında tüm oracle işlemleri tek bir işlem altında (oracle.exe) thread olarak toplanmış! Bu yüzden görev yöneticisinden çok sayıda oracle işlemi görmek yerine, sadece 1 adet oracle.exe işlemini görüyoruz.

Servisler: Oracle Instance'i başlatabilmek için, Windows ortamında OracleService{SID} (mesela OracleServiceXE) servisi çalışmak zorunda. Çünkü bir işlem servis olmazsa bir kullanıcıya ait olması gerekiyor. Kullanıcı logoff olursa, ona ait tüm işlemler de kapatılacağı için bu pek elverişli bir çalışma şekli olmayacaktır! Bu servisin başlamış olması oracle Instance'ın da başlamış olmasını gerektirmez. Eğer istenirse, Bu ayar Registry üzerinden (ORACLE_{SID}_AUTOSTART anahtarı TRUE olmalı) yapılabiliyor. NŞA, yine sqlplus ile bağlanıp startup dememiz gerekiyor.

Listener için de ayrı bir Oracle{SID}TNSListener (mesela OracleXETNSListener) servis çalışmalıdır. Sanırım bu servisin çalışması, listener da çalışıyor anlamına geliyor!
Komut satırından lsnrctl hizmet programı burada da kullanılabilir durumda.

instance/database servisleri için oradim (Oracle database Instance manager) hizmet aracı kullanılabilir.

Biraz da NLS_LANG parametresinden bahsedelim. Oracle veritabanını kurduğumuzda veritabanı için bir karakter seti belirtiyoruz. Veriler bu karakter setine göre saklanacağı için, mutlaka bir Türkçe karakter seti seçmeliyiz. Bunlar ISO8859P9 veya WIN1254 olmalı. Veya Her dili destekleyen Unicode (UTF8 gibi) seçilmeli!

Veritabanına uzaktan bağlanan uçbirimin hangi karakter setini kullandığı önemlidir. Çünkü eğer karakter setleri farklı ise, Oracle karşılıklı dönüşümleri yapar. Uç birimin hangi karakter setini kullandığı, (yine uç birimin kendi makinesinde ayarlı) NLS_LANG içinde belirtilir. Aslında NLS_LANG içinde bundan daha fazlası tanımlanabilir.

NLS_LANG = language_territory.charset

language : bu kısımda Oracle hata mesajları ve gün/ay dönüşümleri için hangi dilin kullanılacağı belirtlir. Eğer TURKISH ise Türkçe mesajlar ve gün/ay isimleri, AMERICAN ise ingilizce hata mesajları ve gün/ay isimleri görüntülenir.
territory: Bölge ayarı. Mesela para birimlerinde hangi karakterin bin ve ondalık kısmı göstreceği bilgisi gibi şeyler.
charset: İşte bu da uç birimin kullandığı karakter seti.

NLS_LANG Windows platformunda registry içinde tanımlanmıştır. Eğer DOS tabanlı sql*Plus aracı kullanacaksak DOS içerisinde çevre değişkeni olarak atanmalı

C:\> set NLS_LANG=turkish_turkey.TR8PC857

 

Şimdilik bu kadar..

 

Yorumlar

  1. Tsk ederim. Bir türlü çözemediğim problemi yazınızdan dolayı açıklığa kavuşturdum.

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

create Virtual Machines in VMware with ansible

Yüksek Hizmet Sürekliliği (High Availability)