如果要对Oracle 进行IP Check合法性,就必须在Server 的sqlnet.ora中增加参数 tcp.validnode_checking=yes 。但参数tcp.validnode_checking 在sqlnet.ora 中设定后,如果要对Listener进行管理时出现下面错误:
[oracle@itc-test9 admin]more sqlnet.ora
tcp.validnode_checking=yes
#tcp.inited_nodes=(10.89.53.90)
[oracle@itc-test9 admin]lsnrctl start
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-JUN-2009 10:04:53
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Starting /disk/oracle/OCM/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /disk/oracle/OCM/network/admin/listener.ora
Log messages written to /disk/oracle/OCM/network/log/listener.log
Error listening on: (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12560: TNS:protocol adapter error
TNS-00583: Valid node checking: unable to parse configuration parameters
让我们做另一个测试:
删掉sqlnet.ora 中的 tcp.validnode_checking=yes
[oracle@itc-test9 admin]more sqlnet.ora
#tcp.validnode_checking=yes
#tcp.inited_nodes=(10.89.53.90)
[oracle@itc-test9 admin]lsnrctl start ABC
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-JUN-2009 10:15:27
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Starting /disk/oracle/OCM/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /disk/oracle/OCM/network/admin/listener.ora
Log messages written to /disk/oracle/OCM/network/log/abc.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.89.53.63)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.89.53.63)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias ABC
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 12-JUN-2009 10:15:27
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /disk/oracle/OCM/network/admin/listener.ora
Listener Log File /disk/oracle/OCM/network/log/abc.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.89.53.63)(PORT=1521)))
Services Summary...
Service "study" has 1 instance(s).
Instance "study", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
能正常启动Listener 。
那我们现在修改 sqlnet.ora 增加参数 tcp.validnode_checking=yes
Client 端一样能正常连接。
参数tcp.validnode_checking=yes 的作用是为了check sqlnet.ora 中
参数 TCP.INVITED_NODES 中的IP address 合法性的。
如果由一个IP Address 或 Hostname 不能正常访问,就会导致Listener 不能正常启动。
进场会有一些Client 的用户由于机器改变,或关机。这样的情况下数据库的Listener 就不能正常打开,虽然Oracle 数据库的Lisenter 不是经常的打开关闭但我认为这个参数设置比较尴尬,在Oracle 9i 大到 11.1.0.6都有这种情况。
我希望在11R2中能将这个参数去掉,确实没有什么大用处。
metalink 对这种情况给出下列解释 “This behavior. is by design.”,
我认为这个设计很不好,应该去掉。
如果你看到这个参数,你是否认为合理呢?
Changes
Applied the patch for security alert # 68 or if this is a new installation. If some hostname changes have occurred on your network, this problem may also appear.
Cause
There is an invalid or unreachable hostname in the TCP.INVITED_NODES list in the sqlnet.ora file.
Oracle no longer allows the listener to startup if an invalid hostname or ip address is specified in the invited_nodes list. The listener will not start if any of the hosts or ip addresses are unreachable. The only solution to this issue is to ensure that all the hostnames and ip addresses in the invited nodes list are reachable from the host where the listener is starting.
Solution
This behavior. is by design.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/34596/viewspace-605999/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/34596/viewspace-605999/