$ lsnrctl status
LSNRCTL for IBM/AIX RISC System/6000: Version 9.2.0.1.0 – Production on 21-JAN-2011 10:59:25
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=aixsvr)(PORT=1521)))
TNS-12618: TNS:versions are incompatible
上述报错是因为端口号1521已经被另一个监听使用。于是修改该监听的listener.ora文件,将端口改为1555.
vi listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = aixsvr)(PORT = 1555))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /ora9i/app/oracle)
))
$ lsnrctl reload
LSNRCTL for IBM/AIX RISC System/6000: Version 9.2.0.1.0 – Production on 21-JAN-2011 10:55:39
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=aixsvr)(PORT=1555)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
IBM/AIX RISC System/6000 Error: 79: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
IBM/AIX RISC System/6000 Error: 79: Connection refused
一开始的思路如下:
IBM/AIX RISC System/6000 Error: 79: Connection refused错误是不是表示1555端口未开放?用telnet测试:
telnet aixsvr 1555
$ telnet aixsvr 1555
Trying…
telnet: connect: A remote host refused an attempted connect operation.
$ telnet aixsvr 1521
Trying…
Connected to aixsvr.
Escape character is '^]'.
看到以上结果就想到是1555端口的问题,实际上这个思路是错误的,因为单纯的说端口开不开放是没有意义的,端口必须与程序或服务结合起来才有意义。即要先启动1555上的监听才能使用telnet aixsvr 1555的方式测试该端口是否可以连接。没有服务或程序支持的端口是无法连接的
解决办法:
修改了listener.ora的端口,使用reload,可能因为内存中有相关信息,导致了reload失败,修改一下监听的名字,再修改回来,然后重启监听,使用lsnrctl stop和lsnrctrl start就可以了。