天天看点

【oracle】sqlnet.ora 访问控制策略

sqlnet.ora中进行下列参数的设置可以限制或允许用户从特定的客户机连接到数据库中。

tcp.validnode_checking=yes|no

tcp.invited_nodes=(ip|hostname,...)

tcp.excluded_nodes=(ip|hostname,...)

##如果是hostname 则需要在/etc/hosts 里面配置对应的ip

tcp.validnode_checking   参数确定是否对客户机ip地址进行检查;

tcp.invited_nodes        参数列举允许连接的客户机的ip地址;

tcp.excluded_nodes       参数列举不允许连接的客户机的ip地址。

需要注意的地方:

1、tcp.invited_nodes与tcp.excluded_nodes都存在,以tcp.invited_nodes为主

2、一定要许可或不要禁止服务器本机的ip地址,否则通过lsnrctl将不能启动或停止监听,因为该过程监听程序会通过本机的ip访问监听器,而该ip被禁止了,但是通过服务启动或关闭则不影响。

3、修改之后,分两种情况

  如果是第一次使用sqlnet.ora 文件,则需要重启数据库。

  如果之前已经使用了sqlnet.ora 则不需要重启数据库,reload 监听就可以!

4、任何平台都可以,但是只适用于tcp/ip协议

下面做实验测试访问控制:

环境:、

数据库:yangdb  主机名:rac3 ip 10.250.7.241

                主机名:rac1 ip 10.250.7.225 

在 yangdb 上面的sqlnet.ora 设置,在rac1服务器端进行访问! 

<b>场景一:修改文件,不启动监听</b>

oracle@rac3:/opt/oracle/11.2.0/alifpre/network/admin&gt;vi sqlnet.ora 

tcp.validnode_checking=yes

#允许访问的ip

tcp.invited_nodes =(10.250.7.241,10.250.7.225)

#不允许访问的ip

#tcp.excluded_nodes=(ip1,ip2,…x…) 

在rac1 端访问,显示tns-12547: tns:lost contact

oracle@rac1:/opt/rac/oracle/11.2.0/dbs/network/admin&gt;tnsping yangdb

tns ping utility for linux: version 11.2.0.1.0 - production on 27-sep-2011 21:50:35

copyright (c) 1997, 2009, oracle.  all rights reserved.

used parameter files:

used tnsnames adapter to resolve the alias

attempting to contact (description = (address = (protocol = tcp)(host = 10.250.7.241)(port = 1521)) (connect_data = (server = dedicated) (service_name = yangdb)))

tns-12547: tns:lost contact

tns ping utility for linux: version 11.2.0.1.0 - production on 27-sep-2011 21:53:58

tns ping utility for linux: version 11.2.0.1.0 - production on 27-sep-2011 21:54:49

tns-12537: tns:connection closed~           

<b>在 rac3 上进行reload 命令:</b>

oracle@rac3:/opt/oracle/11.2.0/alifpre/network/admin&gt;lsnrctl reload

lsnrctl for linux: version 11.2.0.1.0 - production on 27-sep-2011 21:55:05

copyright (c) 1991, 2009, oracle.  all rights reserved.

connecting to (address=(protocol=tcp)(host=)(port=1521))

the command completed successfully

<b>再次访问yangdb,则可以访问</b>

<b>在yangdb 上创建表</b>

yang@yangdb-rac3&gt;  create table yang1 as select * from dba_objects ;

table created.

tns ping utility for linux: version 11.2.0.1.0 - production on 27-sep-2011 21:55:10

ok (10 msec)

oracle@rac1:/opt/rac/oracle/11.2.0/dbs/network/admin&gt;sqlplus yang/yang@yangdb

sql*plus: release 11.2.0.1.0 production on tue sep 27 21:55:17 2011

copyright (c) 1982, 2009, oracle.  all rights reserved.

connected to:

oracle database 11g enterprise edition release 11.2.0.1.0 - 64bit production

with the partitioning, olap, data mining and real application testing options

yang@yangdb&gt; select count(*) from yang1

  count(*)

----------

     72508

yang@yangdb&gt; exit

<b>场景二:修改rac3 上的sqlnet.ora 文件,进行reload操作,rac1 访问rac3的yangdb受限制</b>

#tcp.invited_nodes =(10.250.7.241,10.250.7.225)

tcp.invited_nodes =(10.250.7.241)

#tcp.excluded_nodes=(ip1,ip2,…x…)                     

tns ping utility for linux: version 11.2.0.1.0 - production on 27-sep-2011 21:57:20

tns-12537: tns:connection closed

tns ping utility for linux: version 11.2.0.1.0 - production on 27-sep-2011 21:58:11

<b>场景三 在sqlnet.ora 中同时设置 tcp.invited_nodes,tcp.excluded_nodes 以tcp.invited_nodes 为准!</b>

#tcp.invited_nodes =(10.250.7.241)

tcp.excluded_nodes=(10.250.7.225)                                         "sqlnet.ora" 7l, 186c 已写入

oracle@rac3:/opt/oracle/11.2.0/alifpre/network/admin&gt;

lsnrctl for linux: version 11.2.0.1.0 - production on 27-sep-2011 21:58:19

oracle@rac3:/opt/oracle/11.2.0/alifpre/network/admin&gt;                     oracle@rac1:/opt/rac/oracle/11.2.0/dbs/network/admin&gt;tnsping yangdb

tns ping utility for linux: version 11.2.0.1.0 - production on 27-sep-2011 21:58:25

ok (0 msec)

继续阅读