6.Configuring the Oracle Network Environment
Bizim kullandığımız mimari Client-Server mimarisidir. Elimizde veritabanına bağlanan client’larımız ve veritabanın olduğu makinenin kendisi(server) var. Bizim server makinesi üzerinde bir database’imiz var. Adı ORACLE ( sid adıdır. kurulumda oluşturulur) Gerekli işlemleri yapmak için bizler client olarak uzakta olan veritabanına ya da yanımızda olan veritabanına bağlantı sağlamak istiyoruz. Veritabanına bağlantı sağlarken
sqlplus hr/hr
diyerek bağlantıyı sağladığımızda bizim bu bağlantımızı username-password seviyesinde data dictionary kontrol ediyor. Fakat biz bu bağlantıyı yapabiliyorsak eğer bunun nedeni local server makine üzerinde olmamızdır. Biz bu şekilde başkasının makinesine bağlanmaya çalışırsak bize hata verecektir. Çünkü o makineyi tanımıyor, nereye gideceğimizi bilemez. Server makinesi üzerinde olmadığımız için bu şekilde bağlantı direkt bağlantı kuramayacağız. Bu süreçte veritabanının olduğu sunucuya bağlanmamız gerekecek. Bu bağlantıyı sağlarken bizim yardım alacağımız servis LISTENER(dinleyici servisi). Bu servis bizim doğru bilgilere sahip olup olmadığımızı kontrol ediyor. Veritabanına bağlantıyı sağlamadan hemen önce bu kontrolleri yapar. Bu servis genellike server makinesi üzerinde olur. Biz listener servisinin kontrolden geçip veritabanına bağlanacağız. Bu servisin bizi kontrol ediyor olması için client tarafında bir dosya olan tnsnames.ora olmalıdır. Uzaktan gelen client için bu dosyaya sahip olması gerekmektedir. tnsnames.ora dosyası içinde (Client Tarafı)
- Makine adı ( host bilgisi)
- Port bilgisi (default port: 1521)
- Protokol Bilgisi (TCP/IP)
- Service name
Bu bilgiler eksiksiz olarak tnsnames.ora dosyası içinde olmak zorunda. Bu bilgiler uzaktaki makineye ulaşabilmek için gerekli bilgilerden biridir. Bu dosya D:\app\kullanıcı_adi\product\11.2.0\dbhome_1\network\admin\tnsnames.ora şeklinde bilgileri barındıran bir dosyadır. Listener ( Server Tarafı) D:\app\sekaist\product\11.2.0\dbhome_1\NETWORK\ADMIN dosyası altındadır. Server makinemiz ORACLE. Başka bir server makinemiz var diyelim bunun adı ORACLE2 olsun. ORACLE server’ı ORACLE2 serveri’na client olabilir. Başka bir server’ın bilgileri bizim tnsnames.ora dosyasında yazabilir. Bir listener servisi birden çok oracle veritabanına hizmet edebilir. Listener server down olursa enterprise manager açılamaz. Açılır ama hatalı giriş uyarısı yapar. Girişi sağlamaz. Hatanın listener’dan kaynaklandığını anlayamıyoruz. (servis down olduğu için) Listener servisini kapıdaki badiguard’a benzetebiliriz. Bara girmeden önce oraya girip girmeyeceğimizi kontrol eder. Bilgileri kontrol eder, üzerimizi arar eğer uygunsa bizi içeri alır. İçeri girdikten sonra artık servisle alakamız biter başka bir kontrol sağlanmaz. Eğer listener servisi sonradan durdurulursa içeridekiler bu durumdan etkilenmez ancak sonradan gelecek olanlar içeri giremez ve No Listener uyarısı alırlar. Listener kontrolünden sonra User Proses – Server prosesi ile karşılaşır ve session açılır. Tools for Configuring and Managing the Oracle Network Bu noktadan sonra Konfigürasyon için 4 adet tool vardır.
- Enterprise Manager Net Services Administration page
- Oracle Net Manager
- Oracle Net Configuration Assistant
- Command line
lsnrctl start listener -- listener'i başlat lsnrctl stop listener -- listener'i durdur lsnrctl status listener -- listener'in durumunu göster
ya da
LSNRCTL> <command name> LSNRCTL> start LSNRCTL> status
Using SRVCTL to Start and Stop the Listener Unix tarafta
$ srvctl -h $ srvctl start listener $ srvctl stop listener $ srvctl start listener –l mylistener $ srvctl status listener
Listener Home Page Net Services Administration Page (Sağ Alt tarafta)
Network’le alakalı bütün ayarlar buradan yapılır. Creating a Listener
Adding Listener Addresses
Yaratılan db_home’un altından çağrılması gerekmekte. Database Service Registration
Hangi servisten gelen işleri dinleyecek bilgisi boştur. Onu buradan tanımlarız. Hangi database’e hizmet vereceği bilgilerini veririz. Oracle Net Manager Command Prompt’da bunun kullanılması tavsiye edilir. Bütün sürümler ile uyumu vardır. D:\app\sekaist\product\11.2.0\dbhome_1\BIN altındadır.
Oracle Net Configuration Assistant D:\app\sekaist\product\11.2.0\dbhome_1\BIN altındadır.
- Database’in home dosyasının altında tnsnames.ora
- ASM home dosyasının altında listener.ora dosyamız vardır. ( kurulumu bizim yaptığımız gibi olanlar için geçerlidir)
Bağlantı Yöntemleri
- Easy connect naming: Uses a TCP/IP connect string
- Local naming: Uses a local configuration file
- Directory naming: Uses a centralized LDAP-compliant directory server
- External naming: Uses a supported non-Oracle naming service
-
- 1-Easy Connect
- 2-Local Naming
- 3-Directory Naming
sqlplus hr/hr@ora2.oracle.com:1521/orcl -- Easy Connect ( bütün bilgiler girilir) -- Pek kullanılmaz. Portun durma ihtimali vardır.
Local Naming
sqlplus hr/hr@ORACLE
İstenilen durum load balancing yapmasıdır. Bilgi verilir ve tnsnames.ora dosyasındaki listener’ları kontrol edecek. Biri kapalı ise diğerini kontrol edecek. (random dene hangisi başarılı ise birinden gel) tnsnames.ora dosyasının düzenleniyor olmasından faydalanır. Tek listener üzerinden gidilmemeli. Listener’da problem olunca bütün bölümler bundan etkilenmesin diye böyle bölümlendirmeye gidilmelidir.
Listener servisi yaratılabilir. 2. yaratılan servisin static olacak şekilde hangi db’ye register
olacağı bizim tarafımızdan belirlenir. Client yaratılan servisten haberdar olması için tnsnames.ora ayarı yapılır.
Tnsnames.ora dosya içerisini düzenleyip daha sonrasında herhangi bir problem ortaya çıktığında Sistemi diğerine register edip bağlantı kurduk.
Directory Naming
Client-Server ama arada isim çözümleyici bağlantıyı dinleyici LDAP sunucularının olduğu mimari. Tanımlanmış olan ip’ler LDAP sunucuna yönlendiriyor ve bizim bilgilerimiz ip aralığındaki sunuculardan biri ise isim çözümlendirici mantığıyla ara katman sunucuları (Oracle internet directory,microsoft active directory services) kontrolü sağlayıp bağlantıyı veritabanına bağlantı sağlıyor.
Client – Server mimarisi vardır ancak arada bir uygulama server’ı kullanırsak işimizi daha güvenli hale getiririz. App server’da süzme işlemi yapılır ve sonra veritabanına bağlanır. Bu sunucular ip’leri çözümler.
Configuring Service Aliases
Advanced Connection Options
Testing Oracle Net Connectivity
tnsping host01.example.com:1521/ORACLE
tnsping ORACLE
İki tip bağlantı yöntemi var. 1- Dedicated 2-Shared
Dedicate olan senaryo da: PGA ( Private Global Area)
1 user proses = 1 server proses (müşteri = garson)
sqlplus hr/hr@ORACLE
Yapılan bir select sorgusunu kullanıcının biri 20 dk inceledi diyelim bu süreç boyunca server proses başında bekler. Ama bunun başında durması yerine başkasına hizmet vermesi gerekir. Server proses bir memory kullanır. Bu tarz bir senaryo da (dedicated) kullanıcı sayısının kestirilebilir olduğu senaryolarda geçerlidir. Gelen proses sayısının karşılanması önemlidir.
Dedicated senaryosuna aşçı da dahil olur. Burada ki Dispatcher’lar gelen
Idle Client
Active Client
New Client
bu operasyonu connection pooling ‘de yönetirler. Ve bu havuz içerisinde aynı anda maksimum 255 tane connection yönetilebiliyor. ( 1 Dispatcher tarafından)
1 aşçı 255 müşterinin istediği karşılayabilir diyebiliriz.
n user prosese karşılık 1 server proses gelir. ( n değeri 10-15 olabilir)
İşlem hızı aynı olmaz. Responce ve requests queue’ler oluşur. Memory tarafında large pool tarafından yönetilir. Kim önce bağlanma isteğinde bulunursa o bizden önce yanıt alır. Ama bu işe tabi tutulamayacak kişiler olabilir. (DBA gibi kişileri ayrıcalıklı yaparız. Dedicated gelecek. Başında her zaman server proses olacak. Ya da ağır sorgu yapanlar.)
Büyük sistemlerde Client – Application Server – Database Server
Client’tan Aplication’a shared geliyor. (Connection Pooling var) App’dan DB’ye dedicated gidiyor. Doğru mimari bu şekildedir.
Connecting to Another Database
Client ——– DB Server ( ORACLE)
tnsname.ora dosyasında buranın bağlantı bilgileri yazar. Biz ORACLE1 isimli veritabanına da bğalanmak istersek ;
sekaist kullanıcısı olarak ORACLE veritabanına HR kullanıcısı olarak da ORACLE1 veritabanına bağlanmak istiyoruz. tnsnames.ora dosyamızda ORACLE yazıyor.
sqlplus sekaist/sifre@ORACLE dediğimizde bağlanıyoruz.
sqplus hr/hr@ORACLE
sqlplus hr/hr@ORACLE1
şeklinde bağlanabiliriz. Bunun yerine
connect hr/hr@ORACLE
daha sonra CREATE DATABASE LINK yetkisi bize verilmesi lazım. Bu yetki bize verilmiş olması lazım.
tnsnames.ora dosyasında
REMOTE_ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = host02.example.com)
daha sonra sqlplus’tan
CREATE DATABASE LINK remote CONNECT TO HR IDENTIFIED BY HR USING 'REMOTE_ORCL';
SELECT * FROM employees@remote
linki verdiğimizde nereye gideceğini remote_orcl linkinden bilir. Bunun bize sağladığı avantaj bir session’da birden çok db’de dolaşma şansımız vardır. @remote…. @remote5 diyerek istediğimiz şekilde gezinebiliriz.