ITPub博客

首页 > 数据库 > Oracle > [20210104]禁用或者删除触发器2.txt

[20210104]禁用或者删除触发器2.txt

原创 Oracle 作者:lfree 时间:2021-01-05 09:04:07 0 删除 编辑

[20210104]禁用或者删除触发器2.txt

--//链接http://www.itpub.net/thread-2140367-1-1.html的问题。
用sys用户 as sysdba登录后, 禁用或者删除触发器的时候卡死。 卡死的同时其他用户还不能登录,断开sys进程后登录正常。
请问下这个logon类型的触发器,怎么能删掉它或者让它失效。

--//我记忆里以前也有用户遇到类似问题,登录执行脚本时间太长,如何禁用呢?ZALBB给出一个方法:
1  alter system set "_system_trig_enabled"=false scope=spfile;
2  shutdown immediate;
3  startup;
4  drop trigger xxx.
5  alter system reset "_system_trig_enabled";

--//介绍的方法要重启数据库,我看了一些修改_system_trig_enabled不需要重启,测试看看。
1.环境:
SYS@book> @ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> @ hide _system_trig_enabled
NAME                 DESCRIPTION                 DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE ISSES ISSYS_MOD
-------------------- --------------------------- ------------- ------------- ------------ ----- ---------
_system_trig_enabled are system triggers enabled TRUE          TRUE          TRUE         FALSE IMMEDIATE

CREATE OR REPLACE TRIGGER this_is_a_test
   AFTER LOGON ON DATABASE
BEGIN
   sys.DBMS_LOCK.sleep (10);
end;
/
 
--//这样要等10秒才能登录数据库。

$ time sqlplus  -s -l scott/book <<< quit
real    0m10.071s
user    0m0.023s
sys     0m0.011s

2.继续测试:
--//只要有会话登录具有dba权限的可以修改spfile文件。
SCOTT@book> alter trigger sys.this_is_a_test disable;
alter trigger sys.this_is_a_test disable
              *
ERROR at line 1:
ORA-01031: insufficient privileges

SCOTT@book> alter system set "_system_trig_enabled"=false scope=memory;
System altered.

$  time sqlplus  -s -l scott/book <<< quit
real    0m0.069s
user    0m0.017s
sys     0m0.017s
--//OK,这样已经不需要等待10秒。再以sys用户登录,关闭或者disable该触发器。

SCOTT@book> alter system set "_system_trig_enabled"=true scope=memory;
System altered.

3.问题是如果没有任何用户登录的情况下呢?
或者登录的用户权限限制无法修改spfile文件呢?如何操作呢?

--//通过bbed修改是否可行呢?因为这样可能要刷新共享池或者数据缓存,估计也不行。
--//另外写一篇测试看看。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2747411/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2823
  • 访问量
    6620664