zoukankan      html  css  js  c++  java
  • 用户地址oracle特定用户登录失败案例

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--用户地址

        昨晚收到开发的邮件,说使用PL/SQL DEV登录数据库时,出现如下错误,要求处理下:

        用户和地址

        看到这个错误我也比拟愁闷,没碰到过这类情况。于是手工创建了一个测试用户scott,发明远程登录没有问题的。此时考虑应该是数据库中有些用户制约了登录的。再看错误编号:ORA-20001,oracle保存的异常错误号范围为-20999到-20000,提供给用户自定义异常使用的,这进一步确认了数据库的一些用户被做了制约的。那到底做了哪些制约呢?
    通常有两种方法:
    (1)在sqlnet.ora文件中配置,比如:
    制约IP地址192.168.131.109对数据库的拜访
    在sqlnet.ora文件中添加如下内容:
    tcp.validnode_checking=yes
    tcp.invited_nodes=(192.168.130.11)
    tcp.excluded_nodes=(192.168.131.109)

        第一行的含义:启用IP制约功能;
    第二行的含义:答应拜访数据库的IP地址列表,多个IP地址使用逗号离开,此例中我们写入数据库服务器的IP地址;
    第三行的含义:制止拜访数据库的IP地址列表,多个IP地址使用逗号离开,此处我们写入欲制约的IP地址192.168.131.109。
    然后重启监听生效。

        (2)使用trigger
    在trigger中定义,哪些IP及哪些用户能够远程登录数据库。

        说明:使用profile是不能做到制约IP登录的。

     很明显,方法(1)不能自定义错误号:ORA-20001,而使用方法(2)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;

    最后给出的建议:

        可以以mtdb(另一个用户,没有做制约)登录 拜访加用户前缀,或者去除触发器(不建议)。

    文章结束给大家分享下程序员的一些笑话语录: 面试官:熟悉哪种语言
    应聘者:JAVA
    面试官:知道什么叫类么
    应聘者:我这人实在,工作努力,不知道什么叫累
    面试官:知道什么是包?
    应聘者:我这人实在 平常不带包 也不用公司准备了
    面试官:知道什么是接口吗?
    应聘者:我这个人工作认真。从来不找借口偷懒
    面试官:知道什么是继承么
    应聘者:我是孤儿没什么可以继承的
    面试官:知道什么叫对象么?
    应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
    面试官:知道多态么?
    应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系??

  • 相关阅读:
    vue 之循环添加不同class
    小程序 之使用HMACSHA1算法加密报文
    微信小程序 之wx.getLocation()获取地理信息中的小坑
    js 时间戳与yyyy-mm-dd或yyyy-MM-dd HH-mm-ss互相转换
    小程序 之登录 wx.login()
    打开串口(COM)号大于9时报错
    linux的mysql权限错误导致看不到mysql数据库
    Nginx报错汇总
    获取磁盘总空间和剩余空间
    关于CoCreateInstance的0x800401f0问题
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3076678.html
Copyright © 2011-2022 走看看