Oracle Network Yönetimi
1 – Listener Yönetimi
Listener servisi Oracle veritabanına gelen bağlantı taleplerini dinleyen bağımsız bir servistir. Veritabanının açık ya da kapalı olması listener servisini etkilemez. Bu servisi yaratma işlemi de Oracle kurulumundan bağımsızdır. Oracle veritabanı yaratılması sonrasında, bu veritabanına gelen bağlantı isteklerinin karşılanması için bir listener servisi yaratılmalıdır.
Oracle Network konfigürasyonunun yönetilmesi amacıyla kullanılan çeşitli araçlar bulunmaktadır. Bunlar:
• Enterprise Manager “Net Services Administration” Sayfası: Bu sayfadan listener konfigürasyonu, durdurma ve başlatma, listener yaratma ve silme gibi yönetimsel işlemler yapılabildiği gibi, diğer Oracle network ayarları da gerçekleştirilebilir.
• Oracle Net Manager: Oracle Network konfigürasyonu ve yönetimi için bir arayüz sağlayan bu programa, Windows sistemlerde başlat menüsünde, Programlar Oracle Configuraiton and Migration Tools altında, Unix sistemlerde ise $ORACLE_HOME/bin altında “netmgr” executable dosyası çalıştırılarak erişilebilir.
• Oracle Net Configuration: Oracle Network konfigürasyonu ve yönetiminde kullanılan ve Step by Step çalışma mantığında olan bu programa, Windows sistemlerde başlat menüsünde, Programlar Oracle Configuraiton and Migration Tools altında, Unix sistemlerde ise $ORACLE_HOME/bin altında “netca” executable dosyası çalıştırılarak erişilebilir.
• Komut satırı: lsnrctl komutu listener konfigürasyonu ve yönetiminde sıklıkla kullanılan yöntemdir.
Tüm bu yöntemlerle yapılan konfigürasyonlar $ORACLE_HOME/network/admin dizini altında bulunan text tabanlı network konfigürasyon dosyaları içerisinde çeşitli değişiklikler yapacaktır. Bundan dolayı bu dosyalar içerisindeki manuel değişiklikler de aslında Oracle Network konfigürasyonunun bir yöntemidir.
Yukarıdaki araçların herhangi biri kullanılarak yaratılan bir listener servisi sonrasında $ORACLE_HOME/network/admin dizini altında bulunan listener.ora dosyası içeriği aşağıdaki şablonda bir içeriğe sahip olacaktır. Kırmızı ile gösterilen bölümler, listener servisinin hangi veritabanını, hangi IP ve port üzerinden dinleyeceğini göstermektedir.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = EXTPROC0)
(ORACLE_HOME = /oracle/app/oracle/product/10.2.0)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /oracle/app/oracle/product/10.2.0)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.1)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
2 – “tnsnames.ora” Dosyası
Tnsnames.ora dosyası veritabanlarına bağlantı kurarken kullanılan tanımlamaları içeren bir dosyadır. Bu dosya içerisinde aşağıdaki formatta tanımlamalar yapılır. Tanımlama başlığı (aşağıdaki örnekte ORNEKDB) “connection identifier” olarak isimlendirilir ve bağlantı kurmada kullaılan bir string’dir. “connection identifier” altında, veritabanının ismi, hangi IP ve port üzerinden erişilebileceği değerleri bulunur. Örneğin aşağıda ORCL SID’sine sahip veritabanının “connection identifier” değeri ORNEKDB olarak belirtilmiştir.
ORNEKDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
3 – “tnsping” Komutu
Bir önceki konuda “tnsnames.ora” dosyası içerisinde yapılan bir tanımlamanın başarılı olup olmayacağını “tnsping komutuyla test edebiliriz. Tnsping komutunun path’i $ORACLE_HOME/bin dizinidir.
$ tnsping ORNEKDB
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
OK (10 msec)
4 – Bağlantı Yöntemleri
Easy Connect – Bu bağlantı yönteminde bağlanılacak veritabanının bilgileri bağlantı cümlesinin içinde yer alır. Aşağıda SQLPLUS ile yapılan bir bağlantı örneği bulunmaktadır. Örnekte kullanıcı ismi, parola, IP, port, ve veritabanı SID’si bilgileri verilerek bağlantı talep edilmiştir.
$sqlplus hr/hr@10.6.1.1:1521/ORCL
Local Naming – Bu bağlantı yönteminde tnsnames.ora dosyasındaki tanımlamalar kullanılır. Aşağıdaki örnekte “ORNEKDB” tanımlaması tnsnames.ora dosyası içinde yapılmıştır. Bu bağlantı yöntemi ayrıca “Connect-time failover” – “Load balancing” gibi fonksiyonlar da sağlayabilir.
$sqlplus hr/hr@ORNEKDB
Özel Durum – Aşağıdaki komutlar oracle veritabanı çalışan bir sunucuda, oracle dba grubunda bir kullanıcı tarafından çalıştırıldıklarında veritabanına bağlantı sağlayacaklardır.
$sqlplus / as sysdba $sqlplus hr/hr
Bu bağlantı çeşitleri listener servisini kullanmadan veritabanına bağlantı sağlar. Listener’ın çalışmıyor olduğu durumlarda da bu şekilde veritabanına bağlanılabilir. Bu bağlantı biçimiyle dba grubundaki tüm kullanıcıların bağlanamamalarını istiyorsak $ORACLE_HOME/bin altındaki “oracle” binary dosyasının yetkisini 700 yapabiliriz. Böylece sadece Oracle yazılım sahibi kullanıcı bu bağlantı şeklini kullanabilir.
Dikkat edilirse üstteki bağlantı cümlesinde parola da belirtilmemiştir ve bu cümle ile veritabanına sys kullanıcısı olarak bağlanılır. Bunu bir güvenlik açığı olarak değerlendirerek bu tür bir bağlantının hiçbir zaman yapılmaması da sağlanabilir. (sqlnet.ora dosyasının içine “SQLNET.AUTHENTICATION_SERVICES =(NONE)” ifadesinin yazılması ile)
* Oracle Net ayrıca LDAP ile “Directory naming” ve “External Naming” metodlarını da desteklemektedir.
DEDICATED ve SHARED SERVER Modları
Bağlantı biçimleri ayrıca dedicated ve shared olarak sınıflandırılabilir. Bu seçenek bağlanılacak veritabanı tarafında kurulum esnasında konfigüre edilir. Dedicated server modda her user session için bir server process yaratılırken, shared server modda birden fazla user session’ı tek bir server process tarafından dispatcher aracılığıyla yönetilir. Shared server modu özellikle veritabanı yönetim aktivitelerinde, backup ve recovery işlemlerinde, büyük miktarda veri aktarımlarında, ve data warehouse operasyonlarında kullanılmamalıdır. Dedicated server mod genellikle tercih edilen bağlantı biçimidir.


