今天在更改触发器的时候碰到个坑,是自己不小心造成的。
因业务需要将几个ip地址增加到白名单中,数据库的白名单是通过创建登录触发器设置的,需要将ip地址加入到触发器,重建创建完成的。
更改五分钟之后业务那边反馈,连接数据库有如下无报错
根据上面的报错信息判断应该是登录触发器出了问题,查看一下这个ora报错是什么
如上信息显示尝试检索触发器以执行,但发现该触发器无效。这也意味着触发器的编译/授权失败,这个应该是触发器有问题,查看一下触发器是否禁用/valid的。
查看触发器是否禁用
发现触发器状态是enable状态
因为业务那边比较着急,我重新编辑还是报这个错,为了临时能够解决问题,准备先禁用这个触发器,使业务先恢复正常之后再排查问题
执行如下语句将该触发器disable掉
alter trigger LOGON_IP_CONTROL disable;
复制
但是业务反馈还是没有恢复,连接依然报错,报错截图如下
查看一下触发器状态看是否是valid
执行如下sql
select * from dba_objects where owner='SYSTEM' AND OBJECT_TYPE='TRIGGER' AND OBJECT_NAME='LOGON_IP_CONTROL';
复制
结果如下:
发现有个重名的登录触发器,owner是sys,这个应该是刚才操作的时候没有切换到system直接操作导致的,并且状态是invalid,大致判断应该是用户登录触发了sys的触发器,然后这个触发器状态为无效,先删除该触发器
执行如下sql
alter trigger sys.LOGON_IP_CONTROL disable;
drop trigger sys.LOGON_IP_CONTROL;
复制
测试
业务用户测试能够正常连接
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。