当前位置:  数据库>oracle

通过Oracle数据库访问控制功能(Database access control)

    来源: 互联网  发布时间:2017-06-25

    本文导语: 简单来说通过在sqlnet.ora文件中设置如下参数来实现TCP.VALIDNODE_CHECKING控制是否打开数据库访问控制功能。TCP.EXCLUDED_NODES    黑名单拒绝访问的IPTCP.INVITED_NODES      白名单允许访问的IP 举例:TCP.VALIDNODE_CHECKING = YES TCP.EXCLUDED_NODES= (...

简单来说通过在sqlnet.ora文件中设置如下参数来实现
TCP.VALIDNODE_CHECKING控制是否打开数据库访问控制功能。
TCP.EXCLUDED_NODES    黑名单拒绝访问的IP
TCP.INVITED_NODES      白名单允许访问的IP

举例:
TCP.VALIDNODE_CHECKING = YES
TCP.EXCLUDED_NODES= (138.3.33.33)
TCP.INVITED_NODES=(138.4.44.44, hammer)

被拒绝的提示如: ORA-12537: TNS:connection closed

注意: 
修改sqlnet.ora文件中的IP列表后都需要重启监听才能生效。
 (原文是: Any changes to the values requires the TNS listener to be stopped and restarted.
但通过测试单机情况下lsnrctl reload同样可以生效。
 测试11G R2 RAC环境下lsnrctl reload不但不会使得更新内容生效,而且还将已经注册到监听中的服务清掉,导致数据库无法连接。因此rac环境下不能使用lsnrctl reload命令,必须重启监听。
 另外,11G R2 RAC上有两种监听,本地监听和SCAN监听,想让控制列表的生效,必须重启对应的监听,如果修改控制列表后,grid用户下(注意11g rac对监听的启停必须用grid用户,无论是lsnrctl还是srvctl) lsnrctl stop  - lsnrctl start 来重启了本地监听,那只有通过vip和本地public IP发起的数据库访问才会应用控制列表的更新内容,对于通过SCAN IP发起的访问并不应用更新内容,同样如果lsnrctl stop listener_scan1 - lsnrctl start listener_scan1 重启scan监听,则值对scan ip发起的访问适用更新后的访问控制列表。
 因此对于实际的生产可能同时存在适用VIP和使用SCAN IP访问的情况,因此需要所有监听全部重启,
srvctl [stop|start] listener -n [rac1|rac2|...] 
 srvctl [stop|start] scan_listener
并且对于RAC要记得修改所有节点的sqlnet.ora文件。)
启动监听是sqlnet.ora中TCP.INVITED_NODES中的域名和IP必须是可以解析的,但并不一定要可以连接,否则监听无法启动成功,提示TNS-12560: TNS:protocol adapter error。
 经过测试TCP.EXCLUDED_NODES中的ip或者域名如果不能解析并不影响监听的启动。
 所谓的不能解析如 IP写成了 192.168.1922.11 ,或者写了个域名 xxfdfd 但是无法解析成IP地址的情况。 
TCP.INVITED_NODES的优先级高于TCP.EXCLUDED_NODES,即当一个IP同时出现在拒绝和允许列表里,那该IP允许访问。
TCP.INVITED_NODES、TCP.EXCLUDED_NODES每项的IP列表格式都只能写一行不能换行。
数据库服务器自己的IP地址建议加到INVITED_NODES列表中,对于RAC环境则把public ip、vip、scan ip都加到INVITED_NODES列表中。
对于11G rac环境,该控制功能要设置在GRID_HOME/network/admin中的sqlnet.ora中,而不是Oracle HOME中。


参考
http://docs.oracle.com/cd/E11882_01/network.112/e41945/profile.htm#NETAG091
  Note 462933.1 What is TCP_VALIDNODE_CHECKING and How to Use It
 RAC: TCP.VALIDNODE_CHECKING Failing after Listener Reload (文档 ID 2109789.1)
 Listener Fails to Start Using TCP.VALIDNODE_CHECKING: TNS-12532 TNS:Invalid Argument (文档 ID 287500.1)


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 通过javascript库JQuery实现页面跳转功能代码
  • linux或unix中有类似注册表一样的东西吗?如果没有,注册表的功能是通过什么实现的呢?
  • olap工具软件,主体开发工作已经完成,欠缺web方式交互式的分析数据功能,欲通过java来完成,寻求合作
  • 通过SQL Server的位运算功能巧妙解决多选查询方法
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • php通过socket_bind()设置IP地址代码示例
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • linux下通过crond实现自动执行程序
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • 通过docker commit命令保存对docker容器的修改
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • java/j2ee iis7站长之家
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • 通过docker ps命令检查运行中的docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • Session id实现通过Cookie来传输方法及代码参考
  • Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
  • 通过docker search命令搜索可用docker镜像
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • Python3通过request.urlopen实现Web网页图片下载
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3