Oracle特定用户登录失败案例 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 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(另一个用户,没有做限制)登录 访问加用户前缀,或者去除触发器(不建议)。

linux下登录不上oracle,Oracle特定用户登录失败案例 ORA-20001相关推荐

  1. ORACLE 触发器控制用户登录之权限限制

    出于数据安全性,公司要求DBA实现控制拒绝特定的用户登录,由于公司不同的工作楼层分属于不同的vlan,因此单从linux主机层次依赖ACL访问列表控制登录数据库服务器,已经不能实现. 因此,只能考虑从 ...

  2. Oracle数据库用管理员登录,oracle数据库关于用户登录

    本文主要向大家介绍了oracle数据库关于用户登录的问题,通过具体的内容向大家展现,希望对大家学习oracle数据库有所帮助. oracle 数据库的安装 : 一: 安装的时候可以设定解锁的用户  一 ...

  3. oracle通过sid远程登录,oracle怎么捕获用户登录信息,如SID,IP地址等

    可以利用登录触发器,如 CREATE OR REPLACE TRIGGER tr_login_record AFTER logon ON DATABASE DECLARE miUserSid NUMB ...

  4. Linux下scp无密码上传 下载 文件 目录的方法

    这篇文章主要介绍了Linux下scp无密码上传 下载 文件 目录的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在Linux下远程备份的时候,需要配置scp的 无密码复制文件.目录.就把这个 ...

  5. Linux下向GitHub 上传代码

    Linux下向GitHub 上传代码 1.先在Github个人主页创建一个仓库 2.在根目录下,复制仓库链接,将仓库复制到本地 git clone https://gitclone.com/githu ...

  6. Linux下shell脚本实战之批量新建用户

    Linux下shell脚本实战之批量新建用户 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.使用提供的user.txt用户列表 2.批量新建us ...

  7. 微信小程序同一个登录按钮上触发获取微信用户信息和电话号码

    微信小程序同一个登录按钮上触发获取微信用户信息和电话号码 因为微信小程序获取用户信息getuserinfo方法和获取电话号码open-type="getPhoneNumber" @ ...

  8. html用户登录页面设计,简洁时尚的用户登录界面设计效果

    这是一款简洁时尚的用户登录界面设计效果.该用户登录效果使用CSS和JS来完成,它使用元素滑动效果来制作登录表单动画,字体效果时尚大方,是非常不错的用户登录界面UI设计效果. 使用方法 HTML结构 该 ...

  9. Linux空间过满无法登录,linux下磁盘空间不足导致oracle无法登录的解决方案

    问题:​​​​​​oracle突然无法登录成功 原因:发现是磁盘空间不足,而且oracle被关闭了 解决方案如下: 1.确定oracle安装在哪台linux机器,并登录 2.查看磁盘使用情况 : df ...

  10. oracle禁用系统用户登录,关闭系统 - 在 x86 平台上引导和关闭 Oracle Solaris

    关闭系统 以下过程和示例说明如何使用 shutdown 和 init 命令关闭系统. 如何确定登录到系统的用户 对于作为多用户分时系统的 Oracle Solaris 系统,关闭系统前可能需要确定是否 ...

最新文章

  1. [置顶] 我整理的一些常用网址
  2. Android 抽屉效果的导航菜单实现
  3. kill bill 杀死比尔盖茨比尔克林顿在人心中的位置..
  4. html抽奖源码_开源FPGA开发板OpenICE 介绍及抽奖
  5. JAVA 实现FTP功能_Java实现FTP上传下载功能
  6. 1056. 组合数的和(15)
  7. 《Effective Java》—— 对于所有对象都通用的方法
  8. [转] Lodash
  9. Struts项目中前端页面向后台页面传参中文出现乱码(Get请求)
  10. 对waitpid 的学习
  11. poj3984(经典dfs)
  12. win32汇编实现一个简单的TCP服务端程序(WinSock的简单认知应用)
  13. 十大OpenGL教程
  14. vtk相机_VTK相机参数
  15. python 华泰股票交易接口_TradeApi 自带资金管理的A股程序化交易接口
  16. 清除浮动解决高度坍塌的5种方法 以及兼容IE
  17. steam饥荒服务器为什么显示未响应,《饥荒:联机版》服务器卡顿原因分析及解决教程...
  18. flex的常用用法二十条
  19. 虚幻引擎5.1现已发布!
  20. c++ 隐藏和显示标题栏

热门文章

  1. Hacking EV3系列之七:iPhone 手势无线控制LEGO EV3 Gyro Boy 机器人
  2. 37.WLAN Qos介绍
  3. 祝贺光环2014年6月28日PMP考试通过率90.28%
  4. [BJWC2008]王之财宝
  5. android+串口+键盘,串口转USB HID键盘鼠标方案
  6. 我国IPTV研究目前已达到全球领先水平
  7. 华为nova 2 Plus魔镜版语音助手逗趣玩不停
  8. 设计模式之美 精华总结 笔记(一)
  9. 缓存面试五连击(下篇)
  10. 北京外国语大学计算机考研,北京外国语大学考研难吗?一般要什么水平才可以进入?...