注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oracle、MySQL资料及经验

.

 
 
 

日志

 
 

禁止远程导出导入的触发器  

2013-03-18 18:03:41|  分类: sql与pl/sql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

需要以具有DBA角色的用户执行:

create or replace trigger tr_exp
  after logon on database
declare
  v_pro varchar2(50);
  v_ip  varchar2(300);
begin
  --获得本会话执行的program和客户端ip
  select upper(substr(program, 1, 3)), sys_context('userenv', 'ip_address')
    into v_pro, v_ip
    from v$session
   where audsid = userenv('sessionid');
  --如果该会话执行exp、imp、expdp、impdp操作,且不是在1.165上执行,则报错
  if v_pro in ('EXP', 'IMP') and v_ip != '192.168.1.165' then
    raise_application_error(-20021,
                            'Prohibit remote execution exp/imp/export/import');
  end if;
end tr_exp;

 

写这个触发器时之所以费了一些时间,是在代码结尾习惯性地写了个例外,如下:
exception
when others then
null;
结果总也不能触发,去掉例外后,马上好使了。

已知触发器不能限制具有DBA角色的用户,经测试:system同样不受以上触发器限制。

  评论这张
 
阅读(225)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018