[20210104]禁用或者刪除觸發器2.txt
[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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20210104]單例項data buffer states 2.txt單例
- 除錯觸發器除錯觸發器
- JavaScript 陣列新增或者刪除元素JavaScript陣列
- JavaScript動態新增或者刪除HTML元素JavaScriptHTML
- mysql觸發器實時檢測一條語句進行備份刪除MySql觸發器
- [20200224]vim小技巧刪除製表符2.txt
- [20190130]刪除tab$記錄的恢復2.txt
- 點選新增或者刪除表格行詳解
- 如何刪除GitHub或者GitLab 上的資料夾?GithubGitlab
- Linux vi如何刪除一行或者多行內容Linux
- MySQL / MariaDB 觸發器的建立、使用、檢視、刪除教程及應用場景實戰案例MySql觸發器
- Win10系統怎麼禁用“刪除檔案”對話方塊_win10禁用“刪除檔案”對話方塊的方法Win10
- 在 Linux 中更改、刪除或禁用使用者密碼Linux密碼
- Win10系統怎麼禁用安全刪除硬體功能Win10
- D觸發器觸發器
- mysql觸發器MySql觸發器
- 使用context_info傳遞上下文資訊禁用會話級觸發器Context會話觸發器
- dvd驅動器怎麼刪除 win10如何刪除dvd驅動器Win10
- 為什麼CRM Opportunity的刪除會觸發一個通向BW系統的RFCUnity
- MySql-觸發器MySql觸發器
- sqlserver 列觸發器SQLServer觸發器
- 建立MySQL觸發器MySql觸發器
- SqlServer-觸發器SQLServer觸發器
- logon觸發器for dbaGo觸發器
- MySQL使用觸發器MySql觸發器
- 語句觸發器觸發器
- win10系統啟動多了onekeyGhost 或者 其他 系統,如何刪除Win10
- [Oracle]Oracle資料庫資料被修改或者刪除恢復資料Oracle資料庫
- 瞭解SQL Server觸發器及觸發器中的事務AWSQLServer觸發器
- Win7筆記本禁用觸控板的方法 Win7怎麼禁用觸控板功能?Win7筆記
- 行為和觸發器觸發器
- MySQL觸發器介紹MySql觸發器
- sql-server觸發器SQLServer觸發器
- 觸發器 REFERENCING OLD AS OLD觸發器
- 大屏一體機觸屏被禁用
- Oracle開發基礎-觸發器Oracle觸發器
- php(js)批量刪除/單個刪除PHPJS
- mvvm模式 事件觸發器[wpf]MVVM模式事件觸發器