• 转://因触发器限制导致oracle用户登录失败


    使用PL/SQL DEV登录数据库时,出现如下错误

    手工创建了test用户,通过dev工具登录没问题。怀疑数据库中有些用户限制了登录的。再看错误编号:ORA-20001,oracle保留的异常错误号范围为-20999到-20000,提供给用户自定义异常使用,进一步确认某些用户是做了限制,一般限制方法有两种:
    1、在sqlnet.ora文件中配置
    例:限制IP地址192.168.131.109对数据库的访问,在sqlnet.ora文件中添加如下内容:
    tcp.validnode_checking=yes #启用IP限制功能
    tcp.invited_nodes=(192.168.130.11) #允许访问数据库的IP地址,多个IP使用逗号分开
    tcp.excluded_nodes=(192.168.131.109) #禁止访问数据库的IP地址,多个IP使用逗号分开

    2、使用trigger
    在trigger中定义,哪些IP及哪些用户能够远程登录数据库。
    注:使用profile是不能做到限制IP登录的。

    从问题描述中,sqlnet.ora方式不能定义错误号,而trigger方式可以,查看数据库的的trigger,如下:
    select t.owner,t.trigger_name,t.triggering_event,t.table_owner,t.status,t.trigger_body,t.description from dba_triggers t where t.triggering_event like '%LOGON%';

    结果说明是使用trigger限制登录IP及用户。
    trigger_body:
    DECLARE
    ipaddr VARCHAR2(30);
    BEGIN
    SELECT sys_context('userenv', 'ip_address') INTO ipaddr FROM dual;
    IF ipaddr not in ('192.168.131.54','192.168.131.55','192.168.131.97','192.168.131.60','192.168.131.61','192.168.131.63','192.168.131.64','192.168.131.62','192.168.131.65','192.168.131.95','192.168.131.57','192.168.131.58','192.168.131.59','192.168.131.94','192.168.131.93','192.168.105.94','192.168.105.95','192.168.105.96','192.168.105.98','192.168.105.99','192.168.105.65') THEN
    raise_application_error('-20001', 'You can not login,Please contact administrator');
    END IF;
    END disablelogin_userdb1;

    建议:
    1、不受限用户登录再加前缀访问受限用户的对象
    2、去除触发器,但可能是业务或安全要求,一般不建议

  • 相关阅读:
    树洞留言板~
    异常The following attributes are mutually exclusive: asproute aspcontroller, aspaction asppage, asppagehandler
    持续交付:发布可靠软件的系统方法
    sql分页遍历出现重复数据原因与解决方案
    jenkens2权威指南
    timer
    window10、window11连接局域网共享打印机失败处理办法
    解决“Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足……”
    ts在项目中的使用三斜线引入 与 import区别
    vue unshift渲染遇到的坑
  • 原文地址:https://www.cnblogs.com/zfox2017/p/7730385.html
Copyright © 2020-2023  润新知