監控使用者執行過的sql語句,經常會使用查詢v$sql等檢視,但這樣查不出來多次執行相同的sql語句,使用審計可以解決這個問題,這裡採用精細審計某個使用者的所有表。
用sys使用者登記
建立下面的的過程
create or replace procedure audituser(audituser in varchar2,oper in int)
ispolicyname varchar2(2000);
policynum varchar2(20);
cursor tables is select object_name from dba_objects where wner=audituser and object_type='table';
begin
for tablename in tables loop
begin
policynum := 'audit1_';
policyname := concat(policynum,tablename.object_name);
if per=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 per=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;
查詢建立的審計策略:
select * from dba_audit_policies
入參audituser 表示要審計的使用者,oper=1表示審計使用者的所有表,oper=0表示刪除審計策略
審計完成之後最好刪除建立的審計策略。
查詢執行過的sql語句:
select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail order by timestamp desc
系統允許一段時間之後,資料量增加,查詢會很慢,可刪除表資料
truncate table fga_log$
Oracle使用審計監控使用者執行過的SQL語句
1.使用管理員使用者sys,建立儲存過程 create or replace procedure audituser audituser in varchar2,oper in int is policyname varchar2 2000 policynum varchar2 20 cursor ...
oracle 審計使用者連線
為防止惡意使用者對系統進行攻擊,我們可以監控系統的連線情況。與此同時結合定期檢查和分析,便可以迅速的發現那些異常和非法的資料庫連線。實現對oracle系統登入的審計的方法不是唯一的,這裡給出使用觸發器記錄使用者登入資訊。希望能起到拋磚引玉的目的。1.建立記錄審計資訊的表 conn sec sec c...
oracle使用者登入審計
oracle中可以按照如下方式對使用者登陸失敗進行審計 1 確認sys.aud 是否存在?desc sys.aud 2 觀察user 表中lcount為非0的使用者,如果包含被鎖賬戶,則可以判定很有可能是該使用者登陸嘗試失敗過多 造成了賬戶被鎖 select name,lcount from sys...