grant execute on DBMS_FGA to scott
conn scott/tiger
--建立觸發的存儲過程
set serveroutput on
CREATE or replace PROCEDURE log_emps_salary
(schema# varchar2, table# varchar2, policy# varchar2)
iS
BEGIN
dbms_output.put_line('用戶 '||schema#||' 的表 '||table#||' 被查看了,觸發了 '||policy#);
END;
/
--增加FGA審計
begin
dbms_fga.add_policy (
object_schema => 'scott',
object_name => 'emp',
policy_name => 'audit_emps_salary',
audit_condition=> 'deptno=10',
audit_column => 'sal',
handler_schema => 'scott',
handler_module => 'log_emps_salary',
enable => TRUE,
statement_types=> 'select' );
end;
/
這個審計策會記錄任何用戶訪問了emp表的deptno爲10的sal值得select操作
************************************************************************************************************************************************************
DBMS_FGA.ADD_POLICY ( *
object_schema VARCHAR2, --schema的名字,表或視圖的擁有者 *
object_name VARCHAR2, --對象名,表或視圖的名字 *
policy_name VARCHAR2, --審計策略名字,它和數據庫中其他對象一樣,需要有一個不重複,唯一的名字 *
audit_condition VARCHAR2, --篩選條件比如可以選擇哪些符合條件的操作被記錄 *
audit_column VARCHAR2, --表中的某一列,可以只記錄對錶中某一列的操作.如果不指定表示審計所有的列 *
handler_schema VARCHAR2, --是下面的handler_module的擁有者,其實也只能是創建policy的用戶,而上面的object_schema可以是任意用戶 *
handler_module VARCHAR2,--可以是一個一個存儲過程或函數,但監測到任何一條符合條件的操作時執行它. *
enable BOOLEAN, --true 或false表示policy是開啓或關閉狀態,如果是false表示不進行審計 *
statement_types VARCHAR2, --表示哪些操作將被審計,可以填上select,insert,update,delete中的一個或幾個 *
audit_trail BINARY_INTEGER IN DEFAULT,--有參數db,xml表示審計到的信息保存到數據庫中或是以xml文件形式保存到磁盤上 *
audit_column_opts BINARY_INTEGER IN DEFAULT); --和audit_conlumn配合使用,any_columns,all_columns兩個選項 *
*************************************************************************************************************************************************************
select * from emp;
select ename from emp;
--刪除審計
EXEC dbms_fga.drop_policy ( -
object_schema => 'scott', -
object_name => 'emp', -
policy_name => 'audit_emps_salary');
--啓用審計
begin
dbms_fga.enable_policy (
object_schema => 'scott',
object_name => 'emp',
policy_name => 'audit_emps_salary' );
end;
/
--禁用審計
begin
dbms_fga.disable_policy (
object_schema => 'scott',
object_name => 'emp',
policy_name => 'audit_emps_salary' );
end;
/
----fga相關的數據字典-------------------
DBA_FGA_AUDIT_TRAIL --查看審計記錄
ALL_AUDIT_POLICIES
DBA_AUDIT_POLICIES
USER_AUDIT_POLICIES