2011-01-12 112 views
1

我有一個Oracle登錄觸發器,執行一些alter session語句。我想知道如果用戶進行「更改會話」,是否可以捕獲另一個觸發器?會話修改觸發器?

CREATE OR REPLACE TRIGGER CI_LOGON AFTER LOGON ON DATABASE 
BEGIN 
    execute immediate 
    'ALTER SESSION SET PLSQL_WARNINGS=''ENABLE:ALL'',''DISABLE:06015'''; 

    execute immediate 
    'ALTER SESSION SET PLSQL_DEBUG = true'; 

EXCEPTION 
    WHEN OTHERS THEN 
     NULL; 
END; 


SQL> show parameters plsql 

NAME         TYPE  VALUE 
------------------------------------ ----------- ------------------------------ 
plsql_ccflags      string 
plsql_code_type      string  INTERPRETED 
plsql_debug       boolean  TRUE 
plsql_optimize_level     integer  2 
plsql_v2_compatibility    boolean  FALSE 
plsql_warnings      string  ENABLE:ALL, DISABLE: 6015 
SQL> 
SQL> ALTER SESSION SET PLSQL_DEBUG = false; 

SQL> show parameters plsql 

NAME         TYPE  VALUE 
------------------------------------ ----------- ------------------------------ 
plsql_ccflags      string 
plsql_code_type      string  INTERPRETED 
plsql_debug       boolean  FALSE 
plsql_optimize_level     integer  2 
plsql_v2_compatibility    boolean  FALSE 
plsql_warnings      string  ENABLE:ALL, DISABLE: 6015 

感謝 基督教

回答

1

不要這樣想,但你可以對ALL_PLSQL_OBJECT_SETTINGS

您可能還需要跟蹤誰在改變包/程序等一些其他的運行定期檢查DDL觸發器。

+0

「與其他一些DDL觸發器」,這是一個好主意 - thx – christian