Listener
Listener ve TnsName servisi
Listener servisi server tarafında çalışan ve clientlardan gelen istekleri dinleyen servistir. Defaultta TCP 1521 portunda çalışır istenirse değiştirilebilir. listener servisi çalışmasa bile veri tabanı açılır ama clientler erişemez lokalden işlem yapılabilir. yedek listener servisi oluşturulması faydalıdır. client ve sunucular arasında iletişimin sağlıklı yapılabilmesi için.
Ortamda DNS server varsa oracle sunucunun host kaydı girilmelidir. Linux ve MS sistemlerin bir arada olduğu yapılarda wins servisi işini kolaylaştıracktır.
Aynı zamanda sununcunun host dosyasına da kendi kaydının girilmesinde fayda vardır.
lsnrctl.ora ve tnsnames.ora sunucuda ORACLE_HOME/network/admin klasörünün içinde yer alır. tnames.ora clientta da yer alması gerekir ve içeriği de bağlanılacak instance ınki ile aynı olmalıdır. (Clientta oracle client ın yüklenmiş olması gerekir. Toad vb yönetim araçları oracle client ın dosyalarını kullanır.)
Sunucudaki tnsnames.ora daki orcl instance nın kaydı.
|
1 2 3 4 5 |
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db.xx.local)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) |
En sağlıklısı clienta sunucunun tnsnames.ora nın içeriğinin kopyalanmasıdır. Linux/unix ortamlarda büyük küçük harflerden sorunlar yaşanabilir.
|
1 2 |
[root@db ~]# sqlplus /nolog SQL> conn sys/şifre@orcl as sysdba |
Client ın tnsnames.ora dosyasında orcl yerine sizin vereceğiniz herhangi bir isimde olabilir. bağlanırken "orcl" yerine kendi verdiğiniz ismi yazmanız yeterlidir. Şirketlerde aynı isimleri verebiliyor farklı şirketlere bağlanıyorsanız . isimlendirmeyi xxx_katgo_merkez vb isimlendirme yaparak bağlantılarınızı ayırt ederken işinizi kolaylaştırır.
|
1 2 3 |
[root@db ~]# cat /etc/hosts 192.168.141.130 db.xx.local 127.0.0.1 db.xx.local db localhost.localdomain localhost |
DNS ve Wins gibi isim çözen servisler yoksa client host dosyasına (MS sistemlerde "c:windowssystem32driversetc", linux sistemlerde "etc" ) Sunucunun kayıtlarının girilmesi gerekir.
|
1 |
192.168.141.130 db.xx.local db |
Sunucunun güvenlik duvarında TCP 1521 den gelecek isteklere cevap verebilecek şekilde ayarlanması gerekir. Sunucu linux ise ve iptable kullanılıyorsa 1. kural, x.y.z.w ip sinden gelen istekleri izin veriliyor.
|
1 2 3 |
1-$IPTABLES -t filter -A INPUT -s x.y.z.w -p tcp --dport 1521 -j ACCEPT 2-$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 3389 -j DNAT --to 192.168.141.130:1521 3-$IPTABLES -A FORWARD -i $WAN -s x.y.z.w -p tcp --dport 1521 -m state --state NEW -j ACCEPT |
2. kural, Eğer güvenlik duvarınızda iptable kullanılıyorsa ve oracle sunucunuz 192.168.141.130 ise güvenlik duvarına s x.y.z.w ipsindan gelen 1521 istekleri oracle sunucunuza yönlendirilecektir. her iki kuralda da güvenlişk nedeni ile sadece s x.y.z.w IP sine izin veriyoruz, hiç kimse 1521 portunu tüm internete açmak istemez heralde. Aşağıdaki resimde listener servisinin çalışmadığı bir sunucunun netstat çıktısı bulunmakta.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$lsnrctl start LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 03-JAN-2010 20:15:26 Copyright (c) 1991, 2005, Oracle. All rights reserved. Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 10.2.0.1.0 - Production System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db.xx.local)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production Start Date 03-JAN-2010 20:15:26 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db.xx.local)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully |
$netstat -ntlp komutu ile 1521 porttan dinlemeye geçtiği görülür.


