天天看點

啟動監聽報錯TNS-12547: TNS:lost contact

今天上午,遇到一個問題,客戶容災庫其中一個節點啟動監聽報錯 TNS-12547: TNS:lost contact (另外一個節點啟動正常)

根據報錯,懷疑是lintener.log日志檔案太大了,超過2G了,是以無法啟動,還有一個可能是/etc/hosts 目錄下沒有 127.0.0.1 loopback localhost 記錄,這是通常導緻此錯誤的常見原因

檢視lintener.log日志檔案,大小遠不足2G,第一種可能排除;

r2:/oracle/app/oracle/product/9.2.0/network/log>ls -lrt
total 24
drwxr-xr-x 2 oracle dba 256 Nov 15 2007 bak
-rw-r--r-- 1 oracle dba 6414 Feb 24 15:32 sqlnet.log
-rw-r--r-- 1 oracle dba 3025 Jul 09 11:38 listener.log
           

檢視/etc/hosts的内容:127.0.0.1 loopback localhost # loopback (lo0) name/address也正常,第二種可能排除

/etc/hosts
#
# This file contains the hostnames and their address for hosts in the
# network. This file is used to resolve a hostname into an Internet
# address. 
#
# At minimum, this file must contain the name and address for each
# device defined for TCP in your /etc/net file. It may also contain
# entries for well-known (reserved) names such as timeserver
# and printserver as well as any other host name and address.
#
# The format of this file is:
# Internet Address Hostname # Comments
# Items are separated by any number of blanks and/or tabs. A '#'
# indicates the beginning of a comment; characters up to the end of the
# line are not interpreted by routines which search this file. Blank
# lines are allowed.

# Internet Address Hostname # Comments
# 192.9.200.1 net0sample # ethernet name/address
# 128.100.0.1 token0sample # token ring name/address
# 10.2.0.2 x25sample # x.25 name/address
127.0.0.1 loopback localhost # loopback (lo0) name/address
           

這裡依舊嘗試了一下,rm lintener.log,在touch一個listener.log,在啟動監聽

Lsnrctl stop -----先停掉listener
rm listener.log ----cd $ORACLE_HOME/network/log
touch listener.log
lsnrctl start

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=135.10.34.38)(PORT=1521)))
TNS-12547: TNS:lost contact
TNS-12560: TNS rotocol adapter error
TNS-00517: Lost contact
IBM/AIX RISC System/6000 Error: 73: Connection reset by peer
           

報錯依舊,檢視lintener.log裡的記錄

09-JUL-2008 12:17:05 * 12546
TNS-12546: TNS ermission denied
TNS-12560: TNS rotocol adapter error
TNS-00516: Permission denied
           

檢視其程序:

r2:/oracle/app/oracle/product/9.2.0/network/admin>ps -ef |grep lsnr
 oracle 192870 168578 0 12:16:13 pts/9 0:00 grep lsnr
 oracle 254244 274714 0 11:06:44 pts/0 0:00 lsnrctl
 oracle 242390 1 0 11:06:57 pts/0 0:00 /oracle/app/oracle/product/9.2.0/bin/tnslsnr LISTENER -inherit
rzyzdb2:/oracle/app/oracle/product/9.2.0/network/admin>

kill -9 242390

r2:/oracle/app/oracle/product/9.2.0/network/log>lsnrctl start
LSNRCTL for IBM/AIX RISC System/6000: Version 9.2.0.8.0 - Production on 09-JUL-2008 12:24:21
Copyright 1991, 2006, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=135.10.34.38)(PORT=1521)))
TNS-12537: TNS:connection closed
TNS-12560: TNS rotocol adapter error
TNS-00507: Connection closed
           

檢視節點2的sqlnet.ora發現:

問題就在此(sqlnet.ora裡面有ip限制的,38這個ip,也就是出故障的這個ip不再sqlnet.ora内容裡,将38添加到sqlnet.ora後,啟動正常)

本文轉自:http://blog.sina.com.cn/s/blog_63953ac70100geqy.html