Oracle使用審計監控使用者執行過的SQL語句

2021-09-01 01:50:48 字數 1545 閱讀 4151

1.使用管理員使用者sys,建立儲存過程:

create or replace procedure audituser(audituser in varchar2,oper in int) 

is policyname varchar2(2000);

policynum varchar2(20);

cursor tables is select object_name from dba_objects where owner=audituser and object_type='table';

begin

for tablename in tables loop

begin

policynum := 'audit1_';

policyname := concat(policynum,tablename.object_name);

if oper=1 then

dbms_fga.add_policy(object_schema=>audituser,object_name=>tablename.object_name,policy_name => policyname,

statement_types=>'select,insert,update,delete',enable=>true);

end if;

if oper=0 then

dbms_fga.drop_policy(object_schema=>audituser,object_name=>tablename.object_name,policy_name => policyname);

end if;

exception

when others then

null;

end;

end loop;

commit;

end;

入參audituser 表示要審計的使用者,oper=1表示審計使用者的所有表,oper=0表示刪除審計策略

2.執行測試,輸入相關引數。

3.開啟系統,使用以下語句,查詢審計結果,系統操作的表。

select * from dba_audit_trail;

4.可使用截斷表刪除資料。

truncate table  dba_audit_trail

注意的地方:必須 使用sys

審計完成之後最好刪除建立的審計策略。

查詢執行過的sql語句:

select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail order by timestamp desc

系統允許一段時間之後,資料量增加,查詢會很慢,可刪除表資料

truncate table fga_log$

查詢建立的審計策略:

select * from dba_audit_policies

Oracle使用審計監控使用者執行過的SQL語句

監控使用者執行過的sql語句,經常會使用查詢v sql等檢視,但這樣查不出來多次執行相同的sql語句,使用審計可以解決這個問題,這裡採用精細審計某個使用者的所有表。用sys使用者登記 建立下面的的過程 create or replace procedure audituser audituser i...

oracle 審計使用者連線

為防止惡意使用者對系統進行攻擊,我們可以監控系統的連線情況。與此同時結合定期檢查和分析,便可以迅速的發現那些異常和非法的資料庫連線。實現對oracle系統登入的審計的方法不是唯一的,這裡給出使用觸發器記錄使用者登入資訊。希望能起到拋磚引玉的目的。1.建立記錄審計資訊的表 conn sec sec c...

oracle使用者登入審計

oracle中可以按照如下方式對使用者登陸失敗進行審計 1 確認sys.aud 是否存在?desc sys.aud 2 觀察user 表中lcount為非0的使用者,如果包含被鎖賬戶,則可以判定很有可能是該使用者登陸嘗試失敗過多 造成了賬戶被鎖 select name,lcount from sys...