- 作者: 三十而立
- 时间:2009年11月07日 13:28:02
- 请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“inthirties(三十而立)”和出处”http://blog.youkuaiyun.com/inthirties/archive/2009/11/07/4783396.aspx”,深入讨论可以联系inthirties@gmail.com。
在Oracle数据库中,我们可以通过SQLNET.ora文件实现地址访问限制。
tcp.validnode_checking=yes
tcp.invited_nodes=(ip1,ip2......)
tcp.excluded_nodes=(ip1,ip2......)
在未设置这些参数前,测试数据库可以正常访问:
D:>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 10.2.0.3.0 - Production on -7-11月 -2009 20:12:12
Copyright (c) 1997, 2006, Oracle. All rights reserved.
已使用的参数文件,:
C:oracle.2.0networkadminsqlnet.ora
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
OK (30 毫秒)
当设置参数之后:
tcp.validnode_checking=yes
tcp.invited_nodes=(192.168.1.100,192.168.1.101,192.168.1.102)
重新启动监听器使设置生效:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
我们再来看客户端的访问:
D:>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 10.2.0.3.0 - Production on -7-11月 -2009 20:14:56
Copyright (c) 1997, 2006, Oracle. All rights reserved.
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.33.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
TNS-12547: TNS: 丢失连接
需要注意的是一定要将本地地址,或者Cluster群集其他节点的地址都加入到允许列表,否则监听器可能无法启动。
修改参数之后,重启监听器设置即可生效。
通过监听器的限制,通常属于轻量级,比在数据库内部通过触发器进行限制效率要高。
- 如果没有那句“三十而立”,三十岁的男人正可以轻轻松松
- 专业论坛 http://www.inthirties.com
- 技术博客 http://blog.youkuaiyun.com/inthirties
- 个人站点 http://blog.inthirties.com
- Oracle Mysql技术论坛| 打造实用的Oracle Mysql技术交流园地