AUDIT IN SESSION CURRENT無法NOAUDIT

yangtingkun發表於2010-11-20

前兩天看文件提到AUDIT IN SESSION CURRENT方式,無法透過NOAUDIT命令取消審計,只有使用者退出連線審計設定才自動結束。

 

 

先來看正常的審計特點:

SQL> conn yangtk/yangtk
已連線。
SQL> create table t_1 (id number);

表已建立。

SQL> select owner, obj_name, action_name
  2  from user_audit_trail
  3  where action_name = 'CREATE TABLE'
  4  and timestamp > trunc(sysdate);

未選定行

SQL> audit create table;

審計已成功。

SQL> create table t_2 (id number);

表已建立。

SQL> select owner, obj_name, action_name
  2  from user_audit_trail
  3  where action_name = 'CREATE TABLE'
  4  and timestamp > trunc(sysdate);

未選定行

SQL> conn yangtk/yangtk
已連線。
SQL> create table t_3 (id number);

表已建立。

SQL> select owner, obj_name, action_name
  2  from user_audit_trail
  3  where action_name = 'CREATE TABLE'
  4  and timestamp > trunc(sysdate);

OWNER      OBJ_NAME   ACTION_NAME
---------- ---------- ----------------------------
YANGTK     T_3        CREATE TABLE

SQL> noaudit create table; 

審計未成功。

SQL> create table t_4 (id number);

表已建立。

SQL> select owner, obj_name, action_name
  2  from user_audit_trail
  3  where action_name = 'CREATE TABLE'
  4  and timestamp > trunc(sysdate);

OWNER      OBJ_NAME   ACTION_NAME
---------- ---------- ----------------------------
YANGTK     T_3        CREATE TABLE
YANGTK     T_4        CREATE TABLE

SQL> conn yangtk/yangtk
已連線。
SQL> create table t_5 (id number);

表已建立。

SQL> select owner, obj_name, action_name
  2  from user_audit_trail
  3  where action_name = 'CREATE TABLE'
  4  and timestamp > trunc(sysdate);

OWNER      OBJ_NAME   ACTION_NAME
---------- ---------- ----------------------------
YANGTK     T_3        CREATE TABLE
YANGTK     T_4        CREATE TABLE

這說明審計的設定和取消都只對命令發出後的會話有效,而已經在執行的會話是不受這個命令影響的。

新特性IN SESSION CURRENT方式改變了這一點,使得審計對且僅對當前會話生效:

SQL> audit create table in session current;

審計已成功。

SQL> create table t_6 (id number);

表已建立。

SQL> select owner, obj_name, action_name
  2  from user_audit_trail
  3  where action_name = 'CREATE TABLE'
  4  and timestamp > trunc(sysdate);

OWNER      OBJ_NAME   ACTION_NAME
---------- ---------- ----------------------------
YANGTK     T_3        CREATE TABLE
YANGTK     T_4        CREATE TABLE
YANGTK     T_6        CREATE TABLE

由於Oracle沒有提供NOAUDIT IN SESSION CURRENT語法,而直接NOAUDIT又對當前會話不生效,顯然是沒有辦法取消IN SESSION CURRENT的審計設定的。

SQL> noaudit create table in session current;
noaudit create table in session current
                     *
1 行出現錯誤:
ORA-46342:
不能對 IN SESSION 子句執行 NOAUDIT 命令

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-678591/,如需轉載,請註明出處,否則將追究法律責任。

相關文章