因域名解析致使數據庫鏈接延遲分析

1、現狀記錄html

[oracle@node1 ~]$ /sbin/ifconfig
eth1      Link encap:Ethernet  HWaddr 00:25:90:04:AB:6B 
           inet addr:192.168.9.140  Bcast:192.168.15.255  Mask:255.255.248.0
           inet6 addr: fe80::225:90ff:fe04:ab6b /64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:23530402 errors:0 dropped:0 overruns:0 frame:0
           TX packets:10959123 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:15308483748 (14.2 GiB)  TX bytes:10087987532 (9.3 GiB)
--IP地址爲192.168.9.140
 
[oracle@node1 ~]$ more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               ecp-db localhost.localdomain localhost
192.168.9.140   node1.srtcloud.com
--域名node1.srtcloud.com對應ip192.168.9.140
 
[oracle@node1 ~]$ lsnrctl status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1.srtcloud.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date                04-NOV-2011 09:08:51
Uptime                    21 days 4 hr. 58 min. 45 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/10 .2.0 /db_1/network/admin/listener .ora
Listener Log File         /opt/oracle/product/10 .2.0 /db_1/network/log/listener .log
Listening Endpoints Summary...
   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1.srtcloud.com)(PORT=1521)))
Services Summary...
Service "ecp" has 2 instance(s).
   Instance "ecp" , status UNKNOWN, has 1 handler(s) for this service...
   Instance "ecp" , status READY, has 1 handler(s) for this service...
Service "ecpXDB" has 1 instance(s).
   Instance "ecp" , status READY, has 1 handler(s) for this service...
Service "ecp_XPT" has 1 instance(s).
   Instance "ecp" , status READY, has 1 handler(s) for this service...
Service "ora11g" has 2 instance(s).
   Instance "ora11g" , status UNKNOWN, has 1 handler(s) for this service...
   Instance "ora11g" , status READY, has 1 handler(s) for this service...
Service "ora11gXDB" has 1 instance(s).
   Instance "ora11g" , status READY, has 1 handler(s) for this service...
The command completed successfully
--說明:ora11g是oracle 11g,ecp是oracle 10g
--當前使用域名node1.srtcloud.com監聽
 
[oracle@node1 ~]$ more /opt/oracle/product/10 .2.0 /db_1/network/admin/tnsnames .ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
 
ECP =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = node1.srtcloud.com)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = ecp)
     )
   )
 
ORA11G =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = node1.srtcloud.com)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = ora11g)
     )
   )
--tns也經過域名訪問
 
[oracle@node1 ~]$ more /etc/resolv .conf
nameserver 211.155.235.201
nameserver 211.155.235.188
--當前有效的dns服務器
 
[oracle@node1 ~]$ more /etc/nsswitch .conf | grep hosts:
hosts:     files dns
--域名解析順序

2、數據庫正常工做分析
一、tns工做:客戶端經過tns訪問數據庫,tns配置的是域名訪問,因此須要解析,由於此刻解析的順序是先利用/etc/hosts解析,因此讀取hosts文件,獲取到ip,而後訪問對應數據庫,和監聽接觸。
二、監聽工做:監聽的是域名,其實也是經過hosts解析成ip的
三、這裏可以正常的工做,是由於hosts文件解析了域名

3、模擬數據庫訪問延遲node

[oracle@node1 ~]$ more /etc/nsswitch .conf | grep hosts:
hosts:     dns files
--先使用dns服務器解析,再使用hosts文件
 
[oracle@node1 ~]$ more /etc/resolv .conf
nameserver 11.1.1.1
--無效的dns服務器
 
[oracle@node1 ~]$ sqlplus chf /xifenfei @ora11g
 
SQL*Plus: Release 10.2.0.5.0 - Production on Fri Nov 25 14:44:55 2011
 
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
--會在這裏一個很長的時間等待
 
[oracle@node1 ~]$ lsnrctl status
 
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 25-NOV-2011 14:48:26
 
Copyright (c) 1991, 2010, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1.srtcloud.com)(PORT=1521)))
--也會一個長時間的等待
 
--問題緣由:就是由於解析域名的時候,先去訪問dns服務器,由於該ip非dns服務器ip,因此會一直等待該ip超時,
--而後訪問hosts文件獲取ip地址(這個就是爲何咱們登陸或者查看監聽狀態的時候,會出現如此長的時間的等待)

其實由於dns延遲的現象有不少種,我這裏只是舉了一個最簡單,比較常見的例子,在處理因dns解析的監聽延遲的問題上,能夠參考下面幾點:
一、若是非特殊狀況,儘量使用ip地址在監聽和tns中
二、若是是使用域名,請儘量使用hosts解析,解析順序配置爲files優先(由於dns服務器有不少不肯定,不可控因素)
三、若是必定要使用dns服務器解析,請把穩定的dns服務器配置在第一項,儘量避免出現dns服務器不可達或者不存在該域名的現象sql

轉:http://www.xifenfei.com/2011/11/%e5%9b%a0%e5%9f%9f%e5%90%8d%e8%a7%a3%e6%9e%90%e5%af%bc%e8%87%b4%e6%95%b0%e6%8d%ae%e5%ba%93%e8%bf%9e%e6%8e%a5%e5%bb%b6%e8%bf%9f%e5%88%86%e6%9e%90.html數據庫

相關文章
相關標籤/搜索