Hurriyet

22 Ocak 2014 Çarşamba

Oracle Veritabanı:Oracle Net Listener - Oracle Servisler - Services

Servis Nedir?

Oracle veritabanı client'lara bir servis olarak tanıtılmaktadır. Bu servisler sayesınde veritabanına bağlanılır. Servisler listener'lara kaydedilir. Oradan da listenerlar tarafından uygun veritabanına bağlantısı sağlanır. Bir veritabanının birden fazla kayıtlı servisi olabilir. Veritabanındanki servis ismi spfile'da kayıtlıdır.

show parameter service_names 

Servisler sayesinde veritabanındaki yük bölümlenir. Her servisin ortak özellikleri bulunmaktadır. Örnek olarak Oracle E-Business Suite'de her sorumluluk için ayrı bir servis yaratılmaktadır. Bu servisler veritabanında kayıtlı olarak durmaktadırlar.

Servisler sayesinde iş yükleri tanımlayabiliriz, bunları yönetebiliriz, açıp kapatabiliriz. Buna göre ölçümler de yapabiliriz.

Veritabanındaki Servislerle İlgili Tablolar:


 DBA_SERVICES  
 ALL_SERVICES or V$SERVICES  
 V$ACTIVE_SERVICES  
 V$SERVICE_STATS  
 V$SERVICE_EVENT  
 V$SERVICE_WAIT_CLASSES  
 V$SERV_MOD_ACT_STATS  
 V$SERVICE_METRICS  
 V$SERVICE_METRICS_HISTORY  

Servis Yaratmak İçin: 

Servisleri DBCA ile,NetCA ile veya Oracle Enterprise Manager ile tanımlayabiliriz. Bundan başka service_names parametresini değiştirip DBMS_SERVICE.CREATE_SERVICE paketini çalıştıraraktan service'imizi yaratabiliriz.

Örnek :

 exec DBMS_SERVICE.CREATE_SERVICE('SERV1','SERV.oracle.com');

Yaratılan Servisin Başlatılması:

exec DBMS_SERVICE.START_SERVICE('SERV1');  

Servisin Durdurulması:

exec DBMS_SERVICE.STOP_SERVICE('SERV1');  

Servisin Silinmesi:

exec DBMS_SERVICE.DELETE_SERVICE('SERV1');  

Veritabanı Servisine Nasıl Bağlanılır?

Veritabanına bağlanmak için client'lar belirli bir bağlantı syntax'ı kullanmak zorundadırlar. Bu syntax'da veritabanının lokasyonu, bulunduğu makina, kullanılması gereken port  ve gerekli servis ismi yazılıdır. Bu bağlantı detayları tnsnames.ora dosyasında yazılıdır.

Aşağıdaki örnekte makina adı, servis adı, bağlantı portu, ve instance adı yer almaktadır.

sales=
 (DESCRIPTION= 
  (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) 
  (CONNECT_DATA= 
     (SID=sales)
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_NAME=sales)))

SID veritabanını, service adı  bağlanacağımız servisi, instance adı da veritabanı instance'ını belirtir. Rac veritabanı değilse tek instance vardır.

Tnsnames.ora dosyası client tarafına konaraktan uzaktaki makinanın veritabanı sunucusuna bağlanması sağlanır. Client tarafındaki makina bilgileri bu dosyadan alır.

Veritabanına bağlantı aşağıdaki gibi sağlanır:

Uygulama <=> Client(SQL*NET) <=>Network Bağlantısı TCP\IP <=>Listener <=>Veritabanı

Veritabanı kendisine gelen istekleri açık olan listenerdaki dinlenilen servislere göre veritabanına yönlendirir.

Network Konfigürasyon Dosyaları:


tnsnames.ora
Tnsnames.ora dosyası client ve server'larda bulunur. Burada bağlantı ifadeleri yer alır. Bu bağlantı ifadelerinde bağlanılacak servisler ve bağlantı adresleri bulunur.
sqlnet.ora
Bu dosya da client  ve server'da bulunur. Bu dosyada veritabanına erişimle ilgili çeşitli parametreler yer alır. Bu parametreler güvenlikle ilgili, loglamayla ilgili ya da bağlantıyla ilgili olabilir.
listener.ora
Bu dosya server'da bulunur. Bu dosyada dinlenilen veritabanı servisleri yer alır. Listener tarafından kullanılan çeşitli parametreler yer alır. 

TNS Net Service Name Hatası:

TNS Net Service Name hatasını eğer environment dosyamızda Oracle SID'miz bulunmuyorsa alabilir. Service Name'imiz resimde görüldüğü üzere lsnrctl'den de kontrol etmemize rağmen SQLPlus'a bağlanamıyorduk.

Bunun için kullanıcımızın home directory'sine gideriz. Orada da .bash_profile dosyasının içerisine ORACLE_SID,ORACLE_HOME parametrelerini ekleyip PATH'de sqlplus'un bulunduğu klasörü ekleriz. ".bash_profile" gizli bir dosya olduğu için "ls -al .bash_profile" şeklinde dosyayı bulabiliriz. Sonra da "vi .bash_profile"ile dosyanın içeriğini değiştirebiliriz.



Özetle:
.bash profile dosyasını aşağıdaki gibi güncelleriz.

ORACLE_HOME="/u01/install/PROD/11.2.0"
export ORACLE_HOME

ORACLE_SID="DENEME"
export ORACLE_SID


export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH


Yukarıdaki adımları attıktan sonra TNS Net Service Name is incorrectly specified hatasını düzeltmiş oluruz.

Hiç yorum yok:

Yorum Gönder