茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1669214 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
HoneyMoon_Day4_0087.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

DB研討會 : [轉貼]Oracle 審計功能

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]Oracle 審計功能

Oracle 審計功能

Oracle 審計功能

一. 簡介

審計(Audit)用於監視用戶所執行的數據庫操作,審計記錄可存在數據字典表(稱為審計記錄:存儲在system表空間中的 SYS.AUD$表中,可通過視圖dba_audit_trail查看)或操作系統審計記錄中(默認位置為 $ORACLE_BASE/admin/$ORACLE_SID/adump/).。默認情況下審計是沒有開啟的。

審計記錄包含有審計的操作、用戶執行的操作、操作的日期和時間等信息。

不管你是否打開數據庫的審計功能,以下這些操作系統會強制記錄:用管理員權限連接Instance;啟動數據庫;關閉數據庫。

二. 配置

2.1. 審計是否安裝

SQLPLUS> connect / AS SYSDBA
SQLPLUS> select * from sys.aud$; --沒有記錄返回
SQLPLUS> select * from dba_audit_trail; - 沒有記錄返回

如果做上述查詢的時候發現表不存在,說明審計相關的表還沒有安裝,需要安裝, 安裝後要重啟數據庫

SQLPLUS> connect / as sysdba
SQLPLUS> @$ORACLE_HOME/rdbms/admin/cataudit.sql

2.2. 審計表空間遷移

審計表默認安裝在SYSTEM表空間。可以將相關表遷移到其他表空間


SQL>connect / as sysdba;
SQL> alter table aud$ move tablespace new_tablespace;
SQL> alter index I_aud1 rebuild online tablespace new_tablespace;
SQL> alter table audit$ move tablespace new_tablespace;
SQL> alter index i_audit rebuild online tablespace new_tablespace;
SQL> alter table audit_actions move tablespace new_tablespace;
SQL> alter index i_audit_actions rebuild online tablespace new_tablespace;

2.3. 審計參數

Audit_sys_operations

是否對sysdba用戶做審計 ,關於sysdba用戶審計的結果,linux存放在audit_file_dest參數指定位置的aud文件中,windows存放在事件查看器的系統日誌中

Audit_trail

None:是默認值,不做審計;
DB:將audit trail 記錄在數據庫的審計相關表中,如aud$,審計的結果只有連接信息;
DB,Extended:這樣審計結果裡面除了連接信息還包含了當時執行的具體語句;
OS:將audit trail 記錄在操作系統文件中,文件名由audit_file_dest參數指定;
XML:10g裡新增的。
註:這兩個參數是static參數,需要重新啟動數據庫才能生效

2.4. 審計級別

當開啟審計功能後,可在三個級別對數據庫進行審計:Statement(語句)、Privilege(權限)、object(對像)。

Statement
按語句來審計,比如audit table 會審計數據庫中所有的create table,drop table,truncate table語句,alter session by cmy會審計cmy用戶所有的數據庫連接。

Privilege
按權限來審計,當用戶使用了該權限則被審計,如執行grant select any table to a,當執行了audit select any table語句後,當用戶a 訪問了用戶b的表時(如select * from b.t)會用到select any table權限,故會被審計。注意用戶是自己表的所有者,所以用戶訪問自己的表不會被審計。

Object

按對像審計,只審計on關鍵字指定對象的相關操作,如aduit alter,delete,drop,insert on cmy.t by scott; 這裡會對cmy用戶的t表進行審計,但同時使用了by子句,所以只會對scott用戶發起的操作進行審計。

注意Oracle沒有提供對schema中所有對象的審計功能,只能一個一個對像審計,對於後面創建的對象,Oracle則提供on default子句來實現自動審計,比如執行audit drop on default by access;後, 對於隨後創建的對象的drop操作都會審計。但這個default會對之後創建的所有數據庫對像有效,似乎沒辦法指定只對某個用戶創建的對象有效,想比trigger可以對schema的DDL進行「審計」,這個功能稍顯不足。

2.5. 其他審計選項

by access 每一個被審計的操作都會生成一條audit trail。

by session 一個會話裡面同類型的操作只會生成一條audit trail,默認為by session。

whenever successful 操作成功(dba_audit_trail中returncode字段為0) 才審計,

whenever not successful 反之。省略該子句的話,不管操作成功與否都會審計。

2.6. 審計相關視圖

dba_audit_trail:保存所有的audit trail,實際上它只是一個基於aud$的視圖。其它的視圖dba_audit_session,dba_audit_object, dba_audit_statement都只是dba_audit_trail的一個子集。

dba_stmt_audit_opts:可以用來查看statement審計級別的audit options,即數據庫設置過哪些statement級別的審計。dba_obj_audit_opts,dba_priv_audit_opts視圖功能與之類似

all_def_audit_opts:用來查看數據庫用on default子句設置了哪些默認對像審計。


三. 使用

3.1. 開啟/關閉審計

開啟審計
alter system set audit_sys_operations=TRUE scope=spfile;

alter system set audit_trail=db,extended scope=spfile;

關閉審計
alter system set audit_trail=none;

3.2. 表操作審計

設置審計內容
audit all by lyj by access;
audit select table, update table, insert table, delete table by lyj by access;
audit execute procedure by lyj by access;

AUDIT DELETE ANY TABLE; --審計刪除表的操作

AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL; --只審計刪除失敗的情況

AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL; --只審計刪除成功的情況

AUDIT DELETE,UPDATE,INSERT ON user.table by SYSTEM; --審計SYSTEM用戶對表user.table的delete,update,insert操作

如果在命令後面添加by user則只對user的操作進行審計,如果省去by用戶,則對系統中所有的用戶進行審計(不包含sys用戶).

noaudit all on t_test; 撤銷審計

truncate table aud$; 清空審計表內容

附錄

http://www.cnblogs.com/CodingArt/articles/1653315.html
http://www.dbase.cc/2017/09/13/oracle/oracle%E5%AE%A1%E8%AE%A1/


原文出處:
Oracle 审计功能 - Xuty - 博客园
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]AUDIT 介紹

AUDIT介紹

何謂AUDIT
  • 它被稱為稽核,所謂的稽核是可以監控使用者對資料庫的操作,可分為三種稽核方式,分別為陳述稽核,權限稽核,物件稽核,在使用稽核前,要先設定資料庫的稽核參數
何謂稽核參數
  • 稽核參數又稱為AUDIT_TRAIL,它有多種值可以使用,以下是介紹常用的參數值
DB:稽核資料記錄在DBA_AUDIT_TRAIL表格裡
OS:稽核資料記錄在OS裡,所在的路徑為AUDIT_FILE_DEST參數所指定的目錄內
XML:稽核資料記錄在V$XML_AUDIT_TRAIL表格裡,也會存放在OS裡,檔案格式為xml檔,所在的路徑為AUDIT_FILE_DEST參數所指定的目錄內
NONE: 禁止使用資料庫稽核
格式
AUDIT audit_option
     [ BY { SESSION | ACCESS}]
     [ WHENEVER SUCCESSFUL | WHENEVER NOT SUCCESSFUL];
audit_option : 稽核目標
BY SESSION :
在同一連線中,多次執行稽核目標操作時,所有的操作輸出稽核資訊,此為預設值
BY ACCESS : 在同一連線中,多次執行稽核目標操作時,只對第一次操作輸出稽核資訊
WHENEVER SUCCESSFUL : 稽核正常執行的SQL與操作
WHENEVER NOT SUCCESSFUL : 稽核失敗或發生錯誤的SQL和操作
audit_option格式
  • 陳述稽核格式
{statement_option [,statement_option...] | ALL}
[ BY {proxy | user}]
statement_option : 陳述選項,例如ALTER SYSTEM,ALTER INDEX等SQL語句
proxy :  代理伺服器名稱
user : 使用者名稱
ALL 所有SQL語句稽核 
  • 權限稽核格式

{system_privilege [,system_privilege...] | ALL PRIVILEGES
[ BY {proxy | user}]
 system_privilege : 系統權限,例如CREATE TABLE系統權限或CREATE INDEX系統權限等
 proxy :  代理伺服器名稱
 user : 使用者名稱
  ALL PRIVILEGES : 所有權限稽核
  • 物件稽核格式
{object_option [,object_option...] | ALL}
{ ON [schema.]object_name | ON DIRECTORY directory_name | ON DEFAULT}
 object_option : 成為稽核目標操作,例如DELETE,READ,INSERT,UPDATE等操作
 ALL : 會稽核所有可在object_option指定操作
  ON : 可以指定目標物件為表格,檢視,序列,預儲程序,預儲函數,預儲程式包裝,實體化檢視,函數庫
DEFAULT : 建立預設的物件選項,指定AUDIT執行後,所建立的物件選項會當成預設的稽核選項應用 
 schema : 結構名稱
 object_name : 物件名稱
 directory_name : 目錄名稱
使用方式
  • SQL語法示範
說明 : 稽核hr使用者擁有表格查詢操作
audit select table by hr;
說明 : 針對使用者hr使用create any table系統權限作稽核 
audit create any table by hr;
說明 : 對hr使用者擁有的emp表格的查詢進行稽核 
audit select on hr.emp;

原文出處:Oracle SQL學習筆記本: AUDIT介紹
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]Oracle 稽核方式解析 [audit]

《Oracle 稽核方式解析 [audit]》

摘要:《Oracle 稽核方式解析 [audit]》

以下是參考網路上文件後寫下,若有錯誤還請指教,謝謝.

-----------------------------------------------------------------------------------------------------------------

1.Oracle audit: 特定對象對某種權限的使用;對特定表 select、insert、update、delete;

B. Create Table 的權限使用

C. Update Ting.medmedf

可稽核的內容: 可得知OS登入的帳號、使用的oracle帳號、機器名稱、稽核被觸發的時間、依據稽核內容記錄。

例如: 使用者在何時登入系統;使用者是否存取特定資料表。

優點: A. 每個session 只會產生一筆稽核資料;或是每次存取資料表時一筆稽核資料。 資源使用較 FGA (Fine-grained audit) 少。

B. 可將此記錄記在 DB 或是 系統事件檢視器中。 缺點: A.無法得知細節資訊。例如無法確切得知使用者存取的是那一筆資料,用


了什麼SQL,改了什麼資料。 ====> 可透過trigger實現,但僅能針對特定重要資料表。

B.若要對特定對象下的所有資料表作稽核,需要逐筆設定。

C.audit 設定需變更資料庫參數;必須重啟資料庫才能變更設定。

2.System triggers : 與一般建立在資料表上的trigger不同。 此 trigger 是建立在系統事件之上;例如 登入、登出、資料庫開啟、

關、creation、altering、dropping of schema objects。

AFTER STARTUP

BEFORE SHUTDOWN

AFTER LOGON

BEFORE LOGOFF

AFTER DB_ROLE_CHANGE -- for Data Guard failover and switchover

AFTER SUSPEND

AFTER SERVERERROR

例如:

CREATE OR REPLACE TRIGGER bcs_trigger

BEFORE LOGON

ON DATABASE

BEGIN

NULL;

END:

2.1 DDL trigger : 當Schema 有ddl異動時觸發

BEFORE / AFTER ALTER

BEFORE / AFTER ANALYZE

BEFORE / AFTER ASSOCIATE STATISTICS

BEFORE / AFTER AUDIT

BEFORE / AFTER COMMENT

BEFORE / AFTER CREATE

BEFORE / AFTER DDL

BEFORE / AFTER DISASSOCIATE STATISTICS

BEFORE / AFTER DROP

BEFORE / AFTER GRANT

BEFORE / AFTER NOAUDIT

BEFORE / AFTER RENAME

BEFORE / AFTER REVOKE


BEFORE / AFTER TRUNCATE

AFTER SUSPEND

例如:

CREATE OR REPLACE TRIGGER bcs_trigger

BEFORE CREATE

ON SCHEMA

BEGIN

NULL;

END:

3.Update、delete、insert triggers: 建立在資料上的trigger,可得知使用者操作的細微動作;例如 哪一筆資料被更新,原本資料的

樣與之後資料的模樣均可被記錄。 缺點: 只能針對特定重要資料表記錄。

4.Fine-grained audit: 可針對特定資料表的存取作記錄,會有當時執行的SQL語句及可限制某條件下被操作才稽核。

優點: A. 不須重啟資料庫,僅須執行package (dbms_fga)

B.可知道所操作的SQL指令。

缺點: A. oracle 9i 只能針對 select 作稽核; oracle 10g 可以作 select、update 、insert、 delete的稽核

B. 因每個作業都會產生一筆資料,所以資源使用較 Oracle audit 多。


C. 若要對特定對象下的所有資料表作稽核,需要逐筆設定。 日後若有新的資料表,須再次設定。

Fine-grained auditing may be useful for specific auditing situations, but is not suggested for daily auditing activities.

5.System log: 事件檢視器

上述作業建議要針對特定用途而使用,或定期作稽核資料的清除或備份。

否則日後容易變成系統負擔;資料過多難以稽核使用。


原文出處:《Oracle 稽核方式解析 [audit]》 | 學如逆水行舟 - 點部落
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]認識 Audit

[Oracle]Audit(一)--認識Audit

1.Audit的概念

Audit是監視和記錄用戶對數據庫進行的操作,以供DBA進行問題分析。利用Audit功能,可以完成以下任務:

  • 監視和收集特定數據庫活動的數據。例如管理員能夠審計哪些表被更新,在某個時間點上有多少個並行用戶統計數據;
  • 保證用戶對自己的活動負責。這些活動包括在特定模式、特定表、特定行等對像上進行的操作;
  • 審計數據庫中的可疑活動。如一個未經授權的用戶正從表中刪除數據,那麼數據庫管理員必須審計所有數據庫連接,以及在數據庫中所有成功和失敗的刪除操作。

根據審計類型不同,審計記錄中的信息也有所不同。通常,一條審計記錄中包含用戶名、會話標識、終端標識、所操作的模式對像名稱、執行的操作、執行的完整語句代碼、日期和時間戳、所使用的系統權限。

 

2.Audit的分類

在oracle 11g中,一共有4種審計類型:

  • 語句審計(Statement Auditing):對特定的SQL語句進行審計,不指定具體對像;
  • 權限審計(Privilege Auditing):對特定的系統權限使用情況進行審計;
  • 對像審計(Object Auditing):對特定的模式對像上執行的特定語句進行審計;
  • 網絡審計(Network Auditing):對網絡協議錯誤與網絡層內部錯誤進行審計。

此外,根據用戶是否成功執行,可以分為對執行成功的語句進行審計、對不成功的語句進行審計、無論成功與否都進行審計。

根據對同一個語句審計次數不同,可以分為會話審計和存取審計。會話審計是指對某個用戶或所有用戶的同一語句只審計一次,形成一條審計記錄;存取審計是指對某個用戶或所有用戶的同一語句每執行一次審計一次,形成多條審計記錄。

 

3.審計環境設置


使用審計功能,需要對數據庫初始化參數AUDIT_TRAIL進行設置,其參數值可以為:

  • none:不啟用審計功能;
  • db:啟用審計功能,審計信息寫入sys.aud$數據字典中,審計的結果只有連接信息(sys用戶的記錄以及強制性要求的記錄都寫入操作系統文件中);
  • db_extended:審計結果除了有連接信息,還有執行的具體語句。關於db與db_extended的區別,見例子1;
  • os:啟用審計功能,審計信息寫入操作系統文件;
  • xml:啟用審計功能,審計信息寫入xml格式的操作系統文件中;

查看是否啟用了審計功能:


SQL show parameter audit_trail
NAME TYPE VALUE
---------------------------------- ----------- ------------------------------
audit_trail string DB

修改審計環境參數:


SQL spfile;
System altered
SQL
shutdown immediate;

--
需要重啟數據庫
SQL
> startup;

 

4.審計詳解

4.1 語句審計(Statement auditing)

(1)語句審計是對特定的SQL語句進行審計,與具體的對象沒有關係。創建語句審計的基本語法為:

AUDIT
 sql_statement_
shortcut | ALL |
 STATEMENTS

[ BY user_lists ] | [ IN SESSION CURRENT ] [ BY SESSION | ACCESS ] [ WHENEVER [NOT ] SUCCESSFUL]

解釋:

- sql_statement_shortcut:被審計的SQL語句的快捷方式;

- ALL:審計大部分SQL語句,這裡不在列出;

- ALL STATEMENT:對最高級別的SQL語句進行審計,即對直接執行的SQL語句進行審計,而不對包含在PL/SQL程序中的SQL語句進行審計;

- BY user_lists:指定審計的用戶,如果不指定,則審計全部用戶;

- IN SESSION CURRENT:只對當前會話進行審計;

- BY SESSION:會話審計,同一個SQL語句只審計一次;

- BY ACCESS:存取審計,同一個SQL語句執行幾次就審計幾次;

- WHENEVER SUCCESSFUL:只審計執行成功的SQL語句;

- WHENEVER NOT SUCCESS:只審計執行不成功的SQL語句;


(2)如果要取消對某個語句的審計,只需將AUDIT命令改為NOAUDIT命令即可,其語法與創建AUDIT相同。

(3)通過數據字典DBA_STMT_AUDIT_OPTS可以瞭解當前數據庫哪些用戶進行了語句審計及審計設置信息。例如,查看與scott用戶相關的語句審計:


SQL;
PROXY_NAME AUDIT_OPTION SUCCESS FAILURE
------- ----------- --------------- ---------- ----------
SCOTT ACCESS
SCOTT
BY ACCESS

 

例子1.在scott模式下創建表test02,查看其審計信息。

查看audit_trace參數


SQL show parameter audit_trail
NAME TYPE VALUE
---------------------------------- ----------- ------------------------------
audit_trail string DB

step1.對scott用戶創建語句審計


audit table
scott
access
audit
table
scott
by access

step2.創建表test02,插入2行數據:


SQL;
SQL test02
(
id
,
name
),
local
)
);
created
SQL
;
complete
SQL
test02
);
SQL
);
row inserted
SQL
;
Commit complete

step3.查看sys.aud$和sys.audit_actions視圖



a.userid,
a.userhost,
a.terminal,
a.action#,
aa.name,
dbms_lob.substr(a.sqltext)
sqltext,
dbms_lob.substr(a.sqlbind)
sqlbind,
a.obj$creator,
a.obj$name,
a.ntimestamp#


sys.aud$ a,
sys.audit_actions aa

a.obj$name
'

a.action#
aa.action

a.ntimestamp#
');

結果為:


USERID  USERHOST                   TERMINAL         ACTION# NAME          SQLTEXT                                SQLBIND  OBJ$CREATOR OBJ$NAME A.NTIMESTAMP#24
----- -------------------------- ---------------- ------- ------------- -------------------------------------- -------- ----------- -------- ------------------
SCOTT WORKGROUP\DESKTOP
SCOTT WORKGROUP\DESKTOP

SCOTT WORKGROUP\DESKTOP
26

結合sys.aud$和sys.audit.actions,我們可與看到對數據庫進行了create table和2次insert操作,但是我們還是不知道具體信息。接下來,我們將audit_trail參數改為:audit_trail = db_extended。

step4.修改audit_trail參數


SQL spfile;
System altered
SQL
immediate ;
SQL
startup;
SQL
show parameter audit_trail
NAME TYPE VALUE
---------------------------------- ----------- ------------------------------
audit_trail string DB_EXTENDED

此時,再向test02表插入1行數據


SQL);
row inserted
SQL
;
Commit complete

step5.再次查看sys.aud$和sys.audit_actions視圖


USERID  USERHOST                   TERMINAL         ACTION# NAME          SQLTEXT                                SQLBIND  OBJ$CREATOR OBJ$NAME A.NTIMESTAMP#24
----- -------------------------- ---------------- ------- ------------- -------------------------------------- -------- ----------- -------- ------------------
SCOTT WORKGROUP\DESKTOP
SCOTT WORKGROUP\DESKTOP

SCOTT WORKGROUP\DESKTOP

SCOTT WORKGROUP\DESKTOP
53

可以看到,在SQLTEXT欄位有了具體的執行SQL語句。

 

4.2 權限審計

(1)權限審計是對特定的 系統權限進行審計,語法為:

AUDIT
 system_privilege | 
[ ALL PRIVILEGES ] [ BY user_lists ] | [ IN SESSION CURRENT ] [ BY SESSION | ACCESS ] [ WHENEVER [ NOT ] SUCCESSFUL]

(2)如果要瞭解當前數據庫中對哪些用戶使用了什麼權限審計,可以通過數據字典DBA_PRIV_AUDIT_OPTS來查看。

例子2.對scott用戶的select any table權限進行審計

step1.查看scott的系統權限


SQL;
GRANTEE PRIVILEGE ADMIN_OPTION
---------------------------- ---------------------------------------- ------------
SCOTT NO
SCOTT UNLIMITED TABLESPACE NO
SCOTT
VIEW NO

step2.使用scott用戶,在模式‘LIJIAMAN’下創建表test03,查詢其審計信息:


USERID  USERHOST                   TERMINAL           ACTION# NAME         SQLTEXT                       SQLBIND  OBJ$CREATOR  OBJ$NAME  A.NTIMESTAMP#24
---- ------------------------- --------------- ---------- ------------ ---------------------------- -------- ------------ --------- ------------------
SCOTT WORKGROUP\DESKTOP
(
id
,
name
)
)

step3.使用scott用戶,在scott下創建表test05,查詢其審計信息:


USERID   USERHOST                   TERMINAL            ACTION# NAME            SQLTEXT              SQLBIND   OBJ$CREATOR  OBJ$NAME   A.NTIMESTAMP#24
----- -------------------------- ---------------- ---------- --------------- -------------------- --------- ------------ ---------- ------------------
SCOTT WORKGROUP\DESKTOP24
test05
(
id
,
name
)
)

通過這個這個例子,我們可以看到,只要scott用戶使用select any table權限,我們就可以通過審計得到其操作信息。

 

4.3 對像審計

(1)對像審計是指對特定模式對象的操作進行審計,與用戶無關,語法為:

AUDIT
 sql_operation | 
ALL ON [schema.]object ] [ BY user_lists ] | [ IN SESSION CURRENT ] [ BY SESSION | ACCESS ] [ WHENEVER [ NOT ] SUCCESSFUL]

其中,sql_operation指定了特定對像上要審計的SQL語句。

(2)如果要查看當前數據庫哪些模式對像進行了對象審計,可以通過查詢DBA_OBJ_AUDIT_OPTS獲得。


例子3.對模式scott下的表dept進行對像審計


SQL session;
Audit succeeded

查看其審計信息:


USERID           USERHOST                   TERMINAL            ACTION# NAME         SQLTEXT                            SQLBIND  OBJ$CREATOR  OBJ$NAME   A.NTIMESTAMP#24
-------------- -------------------------- ---------------- ---------- ----------- ---------------------------------- -------- ------------ ---------- ------------------
LIJIAMAN WORKGROUP\DESKTOP
LIJIAMAN WORKGROUP\DESKTOP
19

 

4.4 網絡審計

網絡審計對協議錯誤與網絡層內部錯誤進行審計,網絡審計捕獲客戶端與服務器通信過程中發生的錯誤,這些錯誤由SQL*NET網絡服務拋出。網絡審計的語法為:


AUDIT NETWORK
]
] SUCCESSFUL]

 

下一篇介紹如何去清理Audit數據

 

================================================================

2019年1月2日補充:

(1)如何關閉默認的login、logoff審計

 在11g默認審計中,Oracle會去審計用戶的登入登出操作。如果用戶登入登出操作很多,那麼sys.aud$表會非常的大。我的1個生產數據庫由於沒有關閉對登入登出的審計,導致積累了16GB的審計數據。在一個平時不怎麼使用的測試庫裡面,登入登出的審計信息也非常的多。


 counter
sys.aud$ a,
sys.audit_actions b
b.action
a.action#,b.name
desc

如何關閉呢,可以使用sql語句來關閉

SQL> noaudit session; 

原文出處: [Oracle]Audit(一)--认识Audit - gegeman - 博客园
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]清理 Audit 數據

[Oracle]Audit(二)--清理Audit數據

上一篇,初步瞭解了Audit的作用以及如何使用Audit,本篇記錄如何手動清理Audit數據。

(一) 概述

Audit的數據主要存儲在sys.aud$表中,該表默認位於system表空間中,我們根據需求,將該表移到了sysaux表空間中。由於審計數據量較大,需要經常關注sysaux表空間的使用情況,同時根據實際情況對sys.aud$表進行數據清理。

(二) 清理步驟

(1)使用sys賬號登陸數據庫,打開計時功能,方便查看每一個命令的執行時間

SQLon

(2)在清理數據之前先查看數據量大小

SQLfrom sys.aud$;

(3)查看Audit表中最早一筆數據的時間,即審計表中記錄的最早的時間


SQL sys.aud$;
(NTIMESTAMP#)
--------------------------------------
54.496893 上午

(4)查看審計數據最後歸檔時間,只有歸檔的數據才能刪除


SQL dba_audit_mgmt_last_arch_ts;
AUDIT_TRAIL RAC_INSTANCE LAST_ARCHIVE_TS
--------- ------------ --------------------------------
STANDARD AUDIT TRAIL 00

(5)初始化清理Audit的功能,該命令只有在第一次執行時需要運行,default_cleanup_interval =>168代表清理週期為168小時。


SQL>

sys.DBMS_AUDIT_MGMT.init_cleanup(
audit_trail_type
sys.DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
default_cleanup_interval
);
;
/

(6)確認清除Audit功能是否開啟,yes為開啟


SQL>
ON
BEGIN

DBMS_OUTPUT.put_line(
);

DBMS_OUTPUT.put_line(
);
;
;
/

(7)設置需要清理的天數,最後一個數字‘7’代表清理‘7’天前的數據(歸檔時間大於等於清除時間)


SQL>

sys.DBMS_AUDIT_MGMT.set_last_archive_timestamp(
audit_trail_type
sys.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
last_archive_time
);
;
/

(8) 執行清除,時間長短受數據量大小影響(經測試600萬條數據大約20分鐘)


SQL>

sys.DBMS_AUDIT_MGMT.clean_audit_trail(
audit_trail_type
sys.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
use_last_arch_timestamp
TRUE);
;
/

(9)在清理後,sys.aud$表的大小並沒有發生改變,需要收回空間

解釋:在上面清理表sys.aud$後,實際上,數據還在磁盤上,只是數據不受保護了而已,其空間並沒有釋放,需要將其釋放回收


SQL查看aud$的大小
SEGMENT_NAME BYTES1024
------------------------------------------------------------------------------ ---------------
AUD$
SQL
激活行移動
altered.
SQL
進行空間回收
altered.
SQL
關閉行移動
altered.
SQL
--再次查看aud$的大小

SEGMENT_NAME BYTES
1024
------------------------------------------------------------------------------ ---------------
AUD$ 666.8125

經過2次查看空間大小,可以看到空間已經被釋放。


原文出處:[Oracle]Audit(二)--清理Audit数据 - gegeman - 博客园
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|