阻止特定的ip登陆数据库的2种方法 (轉)

阻止特定的ip登陆数据库的2种方法
===========================================================

方法1:使用系统触发器

方法2:修改监听器参数文件


(window nt平台,oracle 8.1.7下验证通过)
方法1:使用系统触发器
   create or replace trigger sys_trigger_test
     after logon on database  
   begin                                                        
     if sys_context('userenv','ip_address')='200.200.200.35' then
       raise_application_error(-20001,'logon forbidden');                
     end if;                                                                                                           
   end sys_trigger_test;

  用户登陆时的出错提示:

 ERROR:
 ORA-00604: 递归 SQL 层 1 出现错误
 ORA-20001: logon forbidden
 ORA-06512: 在line 3


方法2:修改监听器参数文件
   在$ORACLE_HOME/network/admin/目录下的protocol.ora文件(如果没有该文件则添加)中加入两行:   
    tcp.validnode_checking=yes
    tcp.excluded_nodes=(200.200.200.33)  
   其中tcp.excluded_nodes指的是要阻止的ip地址或机器名
   然后重启监听器即可

注1:oracle 815及以上版本可以使用方法1,在init.ora文件中设置_system_trig_enabled=false,则系统触发器失效
注2:方法1使用灵活,可以阻止登陆的形式很多,比如说特定时间内、用户使用特定程序禁止登陆等 情况,但系统开销较大,同时对某些用户起不到阻止登陆的作用;方法2系统开销小,但功能单一 
注3:对拥有系统权限ADMINISTER DATABASE TRIGGER或sysdbasysoper的用户,方法1无法阻止用户登陆,但触发器仍然会执行,系统缺省拥有ADMINISTER DATABASE TRIGGER权限的role有IMP_FULL_DATABASE、DBA,可以通过视图role_sys_priv,user_sys_priv等等来查询某个用户所拥有的系统权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值