• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle特定用户登录失败案例 ORA-20001

mysql 搞代码 4年前 (2022-01-09) 81次浏览 已收录 0个评论

手工创建了一个测试用户scott,发现远程登录没有问题的。此时考虑应该是数据库中有些用户限制了登录的。再看错误编号:ORA-20001

昨晚收到开发的邮件,说使用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%20t.owner,t.trigger_name,t.triggering_event,t.table_owner,t.status,t.trigger_body,t.description%20from%20dba_triggers%20t%20where%20t.triggering_event%20like%20’%LOGON%’;

果然是使用trigger限制登录IP及用户的。

trigger_body:
DECLARE
%20ipaddr%20VARCHAR2(30);
BEGIN
%20SELECT%20sys_context(‘userenv’,%20’ip_address’)%20INTO%20ipaddr%20FROM%20dual;
%20IF%20ipaddr%20not%20in%20(‘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′,’本文来源gaodai#ma#com搞@@代~&码网^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′)%20THEN
%20raise_application_error(‘-20001′,%20’You%20can%20not%20login,Please%20contact%20administrator’);
%20END%20IF;
END%20disablelogin_userdb1;

最后给出的建议:

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

%20


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle特定用户登录失败案例 ORA-20001

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址