CONNECTION etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
CONNECTION etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Mart 2012 Perşembe

LSNRCTL Utility kullanmak

Listener, database server'a erişmeye çalışan kullanıcıların taleplerine göre onları dinleyip, istenilen server modeline göre bir server process oluşturup ona göre işlem yapan, kullanıcı taraftaki  tnsname.ora dosyasına göre erişimi sağlayan,  gerektiğinde kullanıcıların bağlantılarını ret eden kullanıcıların veritabanına erişmelerini sağlayan bir kapıdır diyebiliriz.
Ve tek bir  listener bir ve birden fazla database instance  hizmet verebilir.  Listener da sonuçta bir servis olduğundan kapatılıp açılabilir.  Listener açık değilse veritabanı açık olsa bile erişim sağlanamaz. dolayısıyla database instance 'den önce listener konfigrasyonunun yapılması gerekmektedir.

Listener  control utility  kullanarak hızlı ve pratik bir şekilde listener(dinleyicimiz) hakkında bilgi alır,  açıp kapatabiliriz. Durumunu öğrenebiliriz.


Listener’ i durdurmak için;

lsnrctl STOP [listener_name]

yada

lsnrctl>stop

Listener’ i başlatmak içinse;
 
lsnrctl START [listener_name]

yada

lsnrctl>start

komutları verilir.
Listener_name dikkat ederseniz belirtmedik. Kullanımı Opsiyoneldir. Listener.ora içerisindeki tanımlanmış default listener adıdır.

Listener status

Listener ‘in durumunu verir. Takma adının ne olduğu, versiyonu ne zamandır aktif olduğu, log dosyası , özet bilgileri gibi bilgileri özetler.
Instance ‘ da bu listener’in servis verdiği instance ‘ların durumunu da belirtir.

Status READY demek ; bu Instance’ dan gelen tüm connection’lar kabul edilebilir anlamını taşır.
Status SECONDARY demek ; Real application Cluster(RAC) sistemlerde ikinci Instance’ dan gelen connection’lar kabul edilebilir anlamını taşır.
Status BLOCKED demek; Instance ‘den gelen connection ‘lar kabul edilmeyecek anlamını taşır.

LSNRCTL> status
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                04-MAR-2012 00:16:57
Uptime                    8 days 21 hr. 6 min. 47 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /u01/app/oracle/diag/tnslsnr/mhm/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mhm.oracle.com)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "XDB.oracle.com" has 1 instance(s).
  Instance "XDB", status READY, has 1 handler(s) for this service...
Service "XDBXDB.oracle.com" has 1 instance(s).
  Instance "XDB", status READY, has 1 handler(s) for this service...
Service "catdb.oracle.com" has 1 instance(s).
  Instance "catdb", status READY, has 1 handler(s) for this service...
Service "catdbXDB.oracle.com" has 1 instance(s).
  Instance "catdb", status READY, has 1 handler(s) for this service...
The command completed successfully



SERVICES:

Listener’a register edilmiş instance’ ların detaylı bilgilerini öğrenebiliriz.

LSNRCTL> services

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
Service "XDB.oracle.com" has 1 instance(s).
  Instance "XDB", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
Service "XDBXDB.oracle.com" has 1 instance(s).
  Instance "XDB", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:972 state:ready
         DISPATCHER <machine: mhm.oracle.com, pid: 6184>
         (ADDRESS=(PROTOCOL=tcp)(HOST=mhm.oracle.com)(PORT=14763))
Service "catdb.oracle.com" has 1 instance(s).
  Instance "catdb", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
Service "catdbXDB.oracle.com" has 1 instance(s).
  Instance "catdb", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:972 state:ready
         DISPATCHER <machine: mhm.oracle.com, pid: 5742>
         (ADDRESS=(PROTOCOL=tcp)(HOST=mhm.oracle.com)(PORT=61753))
The command completed successfully

  1.      +ASM
  2.   Xdb.oracle.com
  3.   Catdb.oracle.com


Toplam 3 tane instance var.
D000 dispatcher no yu gösterir. Her instance dedicated server modelinde bağlanmış ve bir adet dispatcher mevcuttur. Ve bu 3 tane instance Dedicated server modeline göre çalışmaktadır. Dispatcher ve dedicated /shared server ile  makalemiz http://muhammetucar.blogspot.com/2012/03/oracle-server-erisim-yontemleri.html ‘ den yararlı olacaktır.

Handle(işleyici) durumları:
Established: o anda bu instance bağlı olan kullanıcı sayısı
Refused: Reddedilen kullanıcı sayısı
Max: Bağlanacak maksimum kullanıcı sayısı
Current: Şu anda işlem gören kullanıcı sayısı
State: işleyicinin durumuna göre ready /blocked  olur.

Farklı bir makale ile görüşmek üzere...

4 Mart 2012 Pazar

Oracle Server' a Erişim Yöntemleri

Oracle database Instance ulaşmak için iki yöntem tercih edilir. Dedicated Server konfigrasyonu ve shared server konfigrasyonu kullanılarak erişim sağlanılır. Tercih edilmeler kullanım amacaına göre değişir.
Veritabanı İnstance’ a bağlı olan user procesleri taleplerini işlemek  için server tarafında  server process oluşturulur. Ve User işlerini bu server prosesler yapar. Server process’ ler   bir veritabanında  dedicated server ve shared server  olarak iki şekilde oluşturulur.

Dedicated Server Konfigrasyonu:

Dedicated server’ da, talep eden user processlerden gelen her bir session için ayrı ayrı oluşturulan server processleridir. Session işi bittikten sonra bu dedicated server process sonlandırılır. Her bir session için oluşturulduğu için sistem kaynaklarını çok kullanmaktadır. Dolayısı ile database bağlanan user sayısı da arttıkça kullanacağı memory miktarı da artacağından sistem kaynakları olumsuz etkilenir. Oracle database Instance kurulumu yapılırken bağlantı yöntemini belirliyoruz. Burada dedicated konfigrasyonunda default process sayısı 150 ‘dir. Bu uygun bir sayıdır.  
Bu yapıda Client/server ilişkisi içerisinde client’den gelen istekler server tarafında listener’ a gelir. Dedicated server işleme tipi listenerden aldığı bilgiye göre session için bir server process’i oluşturur.
Dedicated server ‘ larda  User Global Area  PGA içerisindedir. UGA içinde Session bilgisi,PLSQL değişkenleri , bind  değişkenleri  vardır. Ve Her session için bir PGA oluşturulur.
Not: Batch işlemleri ve RMAN işlemleri(özellikle Backup – restore – recovery ) dedicated server modunda yapılması gerekir.




Shared Server Konfügrasyonu:
Her bir shared server prosesi(Snnn) bir çok kullanıcı taleplerine hizmet eder. Shares server mimarisi sistem kaynaklarını verimli kullanmanın bir yoludur.  



Shared server konfügrasyonu ,  Listener prosesi ,request queue, response queue ,shared server prosesi ve dispatcher  prosesinden oluşur.

Shared server konfigrasyonunda Listener prosesi gelen talep doğrultusunda user prosesi dinler.
Gelen talep dedicated istenmişse bu listener prosesi bir dedicated process başlatır. Bu konfigrasyonda örneğin veritabanı yöneticisi dedicated da bağlanabilir. Taki önemli sistem kaynaklarını etkili bir şekilde kullanacağı yığın işleri yada backup- restore-recover işlemi yapması gerekebilir.
 Gelen talep shared server istenmişse bu talep dispatcher prosesine iletilir. Shared server mimarisinde en az bir tane dispatcher prosesinin konfigrasyonu şarttır.
Dispatcher prosesi(Dnnn) talep kuyruğu(request queue) ‘ndaki talepleri yerleştirir. Talep listesi SGA içerisinde oluşturulur ve tüm dispatcher prosesleri tarafından paylaştırılır.
Çalışma anında o an boş olan shared server prosess talep listesindeki sırası gelen işlemi alır ve onu işletir. İşlem bittikten sonra  sonuç listesini (Response Queue) günceller. Dispacther prosesi(Dnnn) user prosese yanıt listesine göre yanıtları ilgili user prosese dönüt olarak verir.
Shared server proses yapısına sahip sistemlerde PGA’ deki UGA(user global Area) SGA içinde yer alır. Eğer large pool configure edilmişse UGA burada, edilmemişse Shared pool içerisinde yer alır. Ve paylaşımlı yapıya sahiptir. Bu yapıdaki sessionlar için PGA sadece stack space  ve proses değişkenlerinden oluşur.
Shared Server mimarisi RMAN’ ı desteklemez. Yani RMAN kullanmak istiyorsanız Dedicated bağlanmanız gerekiyor.
Oracle server, request queue(yapılacaklar listesi)  uzunluğuna bakarak shared server proses sayısını dinamik olarak ayarlar. Shared server proses sayısı SHARED_SERVER ve MAX_SHARED_SERVER başlangıç parametresi değerleri arasında belirlenir.
SHARED_SERVERS parametresi ile kaç tane shared server parametresi başlayacağını belirliyoruz. Bununla birlikte ayrı dispacther prosesler de kendiliğinde başlayacaktır. Bunun için ayrı bir Dispatcher başlatmaya gerek yok.
V$SHARED_SERVER dinamik performans view lerini de sorgulayarak bilgi alabiliriz.
V$DISPATCHER view’ lrin sorgulayarak çalışsan Dispatcher ile ilgili detaylı bilgileri öğrenebiliriz.
ALTER SYSTEM SET SHARED_SERVERS=3;
MAX_SHARED_SERVER parametresi  ile shared server proses sayısının üst limitini belirlemek için kullanılır.
Bir instance’ da dedicated ve shared server konfigrasyonu eş zamanlı olarak çalışabilir. Default olarak listener prosesi shared server konfügrasyonu kullanır. Dedicated bağlanmak istiyorsak sqlnet.ora dosyasına USE_DEDICATED_SERVER=ON  yada local naming metodu tercih ediyorsak  connect data içindeki SERVER parametresine “dedicated”  set etmemiz gerekiyor. Connect data içindeki SERVER parametresine “shared” girersek  shared yapıda bağlanılacaktır.
örnek bir tnsname.ora dosyası
XDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mhm.oracle.com)(PORT = 2241))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XDB.oracle.com)
    )
  )

Başka bir makale ile görüşmek üzere...