"Enter"a basıp içeriğe geçin

Oracle Veritabanı Ağ Konfigürasyonu

En temel haliyle Oracle’da veritabanı ağ yapılandırması için üç dosya kullanılmaktadır. Bunlar:

  • listener.ora,
  • tnsnames.ora,
  • sqlnet.ora

Bu yazıda, temel Oracle ağ yapılandırması için bir başlangıç ​​noktası olması amacıyla her dosya için somut dosya örnekleri de verilmiştir.

Oracle veritabanımızın bulunduğu sunucunun host konfigürasyonu şöyle olacak:

  • Host Adı : oracledb.haruncetin.com.tr
  • ORACLE_HOME : /u01/app/oracle/product/19.3.0.0/db
  • ORACLE_SID : orcl
  • Servis Adı: orcl
  • Domain : haruncetin.com.tr

Konfigürasyon bu şekilde. Şimdi de sırasıyla yapılandırma dosyalarını inceleyelim.

listener.ora

Bu dosya, sunucu tarafında ağ yapılandırma parametrelerini içerir. Sunucuda “$ORACLE_HOME/network/admin” dizininde bulunur. Temel bir “listener.ora” dosyası örneği aşağıdaki kod örneğinde görüldüğü gibidir. Bu yapılandırmada dinleyicinin varsayılan adı “LISTENER”, portu 1521 ve TCP bağlantılarını dinlediğini görebiliriz. “oracledb.haruncetin.com.tr” host adına dikkat edin. Eğer buradaki host adı yanlış yazılırsa listener düzgün çalışamaz.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb.haruncetin.com.tr)(PORT = 1521))
    )
  )

“listener.ora” dosyasında yapılan her değişiklikten sonra, listenerın yeni konfigürasyonla çalışabilmesi için ya reload ya da restart edilmesi gerekir.

# Restart işlemi
$ lsnrctl stop
$ lsnrctl start

# Veya Reload işlemi
$ lsnrctl reload

Yukarıda tanımladığımız listener, tanımlanmış herhangi bir servise sahip değil. Bir veritabanı örneği oluştururken bu veritabanı otomatik olarak listenera register edilir. Ancak bazı durumlarda, hizmetleri manuel olarak yapılandırmak gerekebilir. Böylece bu hizmet, veritabanı örneği kapalıyken bile görünmeye devam eder. Böyle bir yapılandırma aşağıdaki gibi bir “listener.ora” dosyası ile gerçekleştirilebilir.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb.haruncetin.com.tr)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl.haruncetin.com.tr)
      (ORACLE_HOME = /u01/app/oracle/product/19.3.0.0/db)
      (SID_NAME = orcl)
    )
  )

Sunucuda birden çok veritabanı örneği varsa, SID_LIST bölümüne birden çok SID_DESC girişi ekleyerek bu veritabanı örneklerinin hepsi listenera register edilebilir.

tnsnames.ora

“tnsnames.ora” dosyası, istemci tarafındaki ağ yapılandırma parametrelerini yapmak için kullandığımız yapılandırma dosyası. İstemci tarafında “$ORACLE_HOME/network/admin” dizininde bulunur. Eğer sunucu kendisi de veritabanına istemci olarak bağlanacaksa, bu dosyanın sunucuda da bulunması gerekir. Böyle bir örnek “tnsnames.ora” dosyası aşağıdaki gibi olacaktır.

LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb.haruncetin.com.tr)(PORT = 1521))

orcl.haruncetin.com.tr =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb.haruncetin.com.tr)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

Girişin başında kullanılan takma isim, tamamen keyfidir ve farklı şekilde verilebilir. Örneğin veya hizmetin adıyla aynı olması gerekmez. Daha anlaşılır olması açısından okunabilirlik adına böyle verilmiştir. Ancak, PROTOKOL, HOST ve PORT girişlerinin listener konfigürasyonuyla eşleşmesi gerekir. SERVICE_NAME, listener tarafından sunulan servisin adıdır. Veritabanı sunucusunda lsnrctl status veya lsnrctl service komutlarını vererek mevcut servisleri kontrol edebilirsiniz. Örneğin genellikle ORACLE_SID’siyle eşleşen en az bir hizmet vardır, ancak daha fazlası da eklenebilir.

sqlnet.ora

“sqlnet.ora” dosyası da yine istemci tarafı ağ yapılandırma parametrelerini barındırır. İstemcide “$ORACLE_HOME/network/admin” dizininde bulunur. Bu dosya, sunucunun kendisinde istemci tarzı bağlantılar kullanılıyorsa veya bazı ek sunucu bağlantı yapılandırması gerekliyse, sunucuda da bulunması gerekir. Örnek bir “sqlnet.ora” dosyası aşağıdaki gibi olabilir.

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
NAMES.DEFAULT_DOMAIN = haruncetin.com.tr

# İşletim sistemi kimlik doğrulaması kullanılacaksa, Windows'ta aşağıdaki girişin eklenmesi gerekir.
SQLNET.AUTHENTICATION_SERVICES= (NTS)

İzleme, şifreleme, cüzdan konumları vs. kontrol etmek için eklenebilecek birçok parametre var ancak bunlar bu yazıda bunlara değinmeyeceğiz.

Yapılandırmayı Test Edelim

Yapılandırmayı oluşturduktan sonra test edilmesi gerekir. Bu amaçla tnsping [<host_adı> | <ip_adresi>] komutunu kullanarak listenerın doğru yapılandırılıp yapılandırılmadığını test edebiliriz.

$ tnsping oracledb.haruncetin.com.tr

TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 15-SEP-2021 18:02:03

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

Used parameter files:

Used HOSTNAME adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=tcp)(HOST=oracledb.haruncetin.com.tr)(PORT=1521)))
OK (0 msec)

İlk Yorumu Siz Yapın

Bir cevap yazın

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