Kategoriler
ORACLE

Oracle 11g: DBA-1||Network Environment

6.Configuring the Oracle Network Environment

Oracle Net Services

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 D:\app\sekaist\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

Listener Control Utility Listener Control Utility

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 listener Net Services Administration Page (Sağ Alt tarafta) Net Services Administration Page   Network’le alakalı bütün ayarlar buradan yapılır.    Creating a Listener Creating a Listener Adding Listener Addresses Adding Listener Addresses Yaratılan db_home’un altından çağrılması gerekmekte. Database Service Registration 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 manager Oracle Net Configuration Assistant D:\app\sekaist\product\11.2.0\dbhome_1\BIN altındadır. D:\app\sekaist\product\11.2.0\dbhome_1\BIN

  • 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. alias 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

Configuring Service Aliases

Advanced Connection Options

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

User Sessions: Dedicated Server Process

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.

User Sessions: Shared Server Processes

Dedicated senaryosuna aşçı da dahil olur. Burada ki Dispatcher’lar gelen

Idle Client
Active Client
New Client

Shared Server: Connection Pooling

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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir