ORACLE审计初步入门
【轉自】http://space.itpub.net/9240380/viewspace-614029
1,術語簡解
dbms_fga包是oracle本身自具功能強大的pl/sql包,實現表級各種select,insert ,delete,update操作的日志記錄
?
dbms_fga包適用于oracle cbo優化器模型.(注:從oracle 9i后,oracle默認就是采用cbo優化器模型,rbo模型基本已經f廢棄)
?
Dbms_fga包含以下函數:
Summary of DBMS_FGA Subprograms
Table 40-1DBMS_FGA Package Subprograms
| Subprogram | Description |
| ADD_POLICY Procedure ? | Creates an?audit?policy using the supplied predicate as the audit condition |
| DISABLE_POLICY Procedure ? | Disables an audit policy |
| DROP_POLICY Procedure ? | Drops an audit policy |
| ENABLE_POLICY Procedure ? | Enables an audit policy |
?
2,實施步驟
a,添加一個審計策略
Sqlplus ‘/as sysdba’
SQL>exec dbms_fga.add_policy(object_schema=>'zxy',
object_name=>'mv',
policy_name=>'mypolicy1',
statement_types=>'select,insert,update,delete');
?
PL/SQL procedure successfully completed.
?
?測試審計功能
SQL> conn zxy/system
??Connected.
SQL> select * from mv;
??no rows selected
?
SQL> conn /as sysdba
??Connected.
?
SQL> select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail;
??TIMESTAMP ?DB_USER ? ? ?OS_USER ? ? ? ? ? ? ? ? ? ? ? ?SQL_TEXT
??--------------- ---------------- ------------------------------?-------------------------------------------
??03-SEP-09 ? ZXY ? ? ? ? ? ? ? ?ora10g?? ? ? ? ? ? ? ? ? ? ? ? ?select * from mv
?
SQL> conn zxy/system
??Connected.
?
SQL> insert into mv values(1);
??1 row created.
?
SQL> commit;
??Commit complete.
?
SQL> conn /as sysdba
??Connected.
?
SQL> select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail;
??TIMESTAMP DB_USER ? ? ?OS_USER ? ? ? ? ? ? ? ? ?SQL_TEXT
??-------------- ----------------?-------------------------?-----------------------------------------------------------
??03-SEP-09 ?ZXY ? ? ? ? ? ? ??ora10g?? ? ? ? ? ? ? ? ? ? select * from mv
??03-SEP-09 ?ZXY ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ??insert into mv values(1)
?
b,禁用申計策略
SQL>exec dbms_fga.disable_policy(object_schema=>'zxy',
?? ? ? ? ? ? ? ? object_name=>'mv',
?? ? ? ? ? ? ? ? policy_name=>'mypolicy1');
??PL/SQL procedure successfully completed.
?
測試審計功能
SQL> conn zxy/system
??Connected.
?
SQL> delete from mv;
??1 row deleted.
?
SQL> commit;
??Commit complete.
?
SQL> select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail; --注:delete的操作日志未被申計記錄
??TIMESTAMP DB_USER ? ? ? ??OS_USER ? ? ? ? ? ? ? ? ??SQL_TEXT
??-------------- ------------------?-------------------------- -----------------------------------------------------------------
??03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ?ora10g ? ? ? ? ? ? ? ? ? ? ?select * from mv
??03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ?ora10g ? ? ? ? ? ? ? ? ? ? ?insert into mv values(1)??
?
SQL> conn zxy/system
??Connected.
?
SQL> insert into mv values(1);
??1 row created.
?
SQL> insert into mv values(2);
??1 row created.
?
SQL> commit;
??Commit complete.
?
SQL>conn /as sysdba
SQL>?select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail;
?注:以上兩句insert未被申計記錄
?TIMESTAMP DB_USER ? ? ? ? ? ? ?OS_USER ? ? ? ? ? ? ? ?SQL_TEXT
?-------------- ----------------------?------------------------?--------------------------------------------------------
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?insert into mv values(1)
?
c,啟用申計策略
SQL>exec?dbms_fga.enable_policy(object_schema=>'zxy',
?? ? ? ? ? ? ? ? object_name=>'mv',
?? ? ? ? ? ? ? ? policy_name=>'mypolicy1');
??PL/SQL procedure successfully completed.
?
測試審計功能?
SQL> delete from mv where a=2;?--此delete已被申計記錄
??1 row deleted.
?
SQL> commit;
??Commit complete.
?
SQL> select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail;
?
?TIMESTAMP DB_USER ? ? ? ? ? ? ?OS_USER ? ? ? ? ? ? ? ?SQL_TEXT
?-------------- ----------------------?------------------------?--------------------------------------------------------
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?delete from mv where a=2
??
SQL> select * from mv;
??? ? ? ?A
?? ? ?----------
?? ? ? ??1
?
select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail;
03-SEP-09 ZXY
ora10g
select * from mv
?
TIMESTAMP DB_USER
--------- ------------------------------
OS_USER
--------------------------------------------------------------------------------
SQL_TEXT
--------------------------------------------------------------------------------
?
?
?
?TIMESTAMP DB_USER ? ? ? ? ? ? ?OS_USER ? ? ? ? ? ? ? ?SQL_TEXT
?-------------- ----------------------?------------------------?--------------------------------------------------------
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?insert into mv values(1)
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?delete from mv where a=2
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g
d,刪除申計策略
SQL>exec?dbms_fga.drop_policy(object_schema=>'zxy',
?? ? ? ? ? ? ? ? object_name=>'mv',
?? ? ? ? ? ? ? ? policy_name=>'mypolicy1');
??PL/SQL procedure successfully completed.
測試申計功能
SQL> insert into mv values(9);
??1 row created.
?
SQL> delete from mv where a=9;
??1 row deleted.
?
SQL> commit;
??Commit complete.
?
SQL> select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail; --以上insert及delete語句的操作未被申計記錄
?
?
?TIMESTAMP DB_USER ? ? ? ? ? ? ?OS_USER ? ? ? ? ? ? ? ?SQL_TEXT
?-------------- ----------------------?------------------------?--------------------------------------------------------
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?delete from mv where a=2
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?insert into mv values(1)
?
??
SQL> select * from mv;
??? ? ? ?A
----------
????????1
??
SQL> select timestamp,db_user,os_user,sql_text from dba_fga_audit_trail; --以上select的操作未被申請記錄
?
?TIMESTAMP DB_USER ? ? ? ? ? ? ?OS_USER ? ? ? ? ? ? ? ?SQL_TEXT
?-------------- ----------------------?------------------------?--------------------------------------------------------
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?delete from mv where a=2
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?select * from mv
?03-SEP-09 ?ZXY ? ? ? ? ? ? ? ? ? ? ??ora10g ? ? ? ? ? ? ? ? ? ?insert into mv values(1)
?
總結
以上是生活随笔為你收集整理的ORACLE审计初步入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么让u盘在虚拟机上显示不出来吗 虚拟机
- 下一篇: 在dbca建库的时候报ORA-27125