今天做了一下这样的测试,首先我的版本是ORACLE 10,系统是LINUX AS4 U4然后通过网上的方法直接修改SQLNET.ORA文件加入如下行
#允许访问的IP
TCP.INVITED_NODES=(192.168.1.103)
#不允许访问的IP
TCP.EXCLUDED_NODES=(192.168.1.102)
#检测上述参数的设置
TCP.VALIDNODE_CHECKING=yes
但是不知道是格式问题,还是其他啥问题,这样加上去的始终不行,(好像静态注册可以,但是动态注册的监听就不行了)
然后使用了NETMGR来添加,具体问题在PROFILE里面的GENERAL的ACCESS RIGHTS,我第一次加入了能够登陆的IP,然后测试了下可以了,但是我重启ORACLE监听的时候出现ORA-12547: TNS:lost contact,然后重启机器依然报这个错,然后注销掉修改,重启机器,启动监听一切OK,第二次我在可以登陆的IP中加入了本机的IP,然后一切OK,没有允许的IP访问数据库出现如下错误
[oracle@b000-lnxdb02 admin]$ sqlplus sys/woaini@mydg1 as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Aug 3 12:54:57 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
Enter user-name: exit
Enter password:
ERROR:
ORA-01017: invalid username/password; logon denied
或者
[oracle@b000-lnxpomsdbtest ~]$ sqlplus sys/woaini@mydg1 as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Aug 2 21:59:04 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-12537: TNS:connection closed
Enter user-name:
ERROR:
ORA-01017: invalid username/password; logon denied
最后分析下,想一想其实在本机如果不使用操作系统登陆系统,其实还是会通过监听来连接到数据库,而在监听上并没有设置本机是允许登陆的,也许就会出问题,但是这只是我自己的猜测。