[20210104]禁用或者刪除觸發器2.txt

lfree發表於2021-01-05

[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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章