久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle中FGA功能怎么用

155次閱讀
沒有評論

共計(jì) 3924 個(gè)字符,預(yù)計(jì)需要花費(fèi) 10 分鐘才能閱讀完成。

這篇文章主要為大家展示了“Oracle 中 FGA 功能怎么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Oracle 中 FGA 功能怎么用”這篇文章吧。

大家對 trigger 可能比較熟悉, 但 Oracle 還有一個(gè)叫 FGA 的功能, 它的作用和 trigger 類似, 但功能更強(qiáng)大. 它的全稱是 Fine-Grained Audit , 是 Audit 的一種特殊方式. 使用 FGA 只要調(diào)用 Oracle 的包 DBMS_FGA.ADD_POLICY 創(chuàng)建一些 policy(審計(jì)策略)就行. 每個(gè) policy 只能針對一個(gè)表或視圖. 建好策略后所有對表或視圖的 DML 操作 (select,insert,update,delete 都可以記錄到, 當(dāng)然也可以添加一些篩選條件只監(jiān)測某些特殊的操作.
補(bǔ)充: 所謂審計(jì)就是記錄你的任意操作, 假如你的操作 (執(zhí)行 DML 語句) 符合指定的條件, 則你執(zhí)行的 sql 語句, 將被記錄到 sys 用戶下的一些表中, 還會將你的其他信息, 比如執(zhí)行時(shí)間, 用戶名, 通過什么工具, 機(jī)器名等.
FGA 在 oracle 9i 中就有了, 但在 9i 中只能審計(jì) select 語句. 從 10g 開始才能審計(jì)所有的 DML 操作
 
1. 包 DBMS_FGA.ADD_POLICY 的用法
 
創(chuàng)建審計(jì)策略的語法
DBMS_FGA.ADD_POLICY (
  object_schema      VARCHAR2,  –schema 的名字, 表或視圖的擁有者
  object_name        VARCHAR2, – 對象名, 表或視圖的名字
  policy_name        VARCHAR2,  – 審計(jì)策略名字, 它和數(shù)據(jù)庫中其他對象一樣, 需要有一個(gè)不重復(fù), 唯一的名字
  audit_condition      VARCHAR2,  – 篩選條件比如可以選擇哪些符合條件的操作被記錄
  audit_column        VARCHAR2, – 表中的某一列, 可以只記錄對表中某一列的操作. 如果不指定表示審計(jì)所有的列
  handler_schema     VARCHAR2,  – 是下面的 handler_module 的擁有者, 其實(shí)也只能是創(chuàng)建 policy 的用戶, 而上面的 object_schema 可以是任意用戶
  handler_module      VARCHAR2,– 可以是一個(gè)一個(gè)存儲過程或函數(shù), 但監(jiān)測到任何一條符合條件的操作時(shí)執(zhí)行它.
  enable              BOOLEAN,  –true 或 false 表示 policy 是開啟或關(guān)閉狀態(tài), 如果是 false 表示不進(jìn)行審計(jì)
  statement_types     VARCHAR2, – 表示哪些操作將被審計(jì), 可以填上 select,insert,update,delete 中的一個(gè)或幾個(gè)
  audit_trail           BINARY_INTEGER IN DEFAULT,– 有參數(shù) db,xml 表示審計(jì)到的信息保存到數(shù)據(jù)庫中或是以 xml 文件形式保存到磁盤上
  audit_column_opts   BINARY_INTEGER IN DEFAULT); – 這個(gè)選項(xiàng)其實(shí)只有在 audt_column 中指定了某列時(shí)才起作用. 它有 any_columns,all_columns 兩個(gè)選項(xiàng)假如表中有 eno,ename 兩列, 并在 audit_column 中指定了這兩列, 那么選 any_columns 表示只要操作其中的任意一列都將被記錄, 而這里指定 all_columns 的話是說只有一個(gè) sql 語句同時(shí)操作了這兩列才被記錄
 
舉例, 假如創(chuàng)建表:create table temp(eno int,ename varchar2(30)); 針對這個(gè)表創(chuàng)建 policy
每個(gè)策略只能針對一個(gè)表或視圖, 而一個(gè)表或視圖可能對應(yīng)多個(gè)策略. 當(dāng)表被刪除時(shí)策略也隨之默認(rèn)被刪除
BEGIN
          SYS.DBMS_FGA.ADD_POLICY  (
    object_schema    = ARWEN
    ,object_name     = TEMP
    ,policy_name     = FGA_TEMP
   ,audit_condition       = NULL
   ,audit_column          = eno,ename
   ,handler_schema        = null
   ,handler_module        = null
   ,enable                = TRUE
   ,statement_types       = SELECT,INSERT,UPDATE,DELETE
   ,audit_trail           = SYS.DBMS_FGA.DB+SYS.DBMS_FGA.EXTENDED
     –DBMS_FGA.DB 表示記錄將被保存到數(shù)據(jù)庫中,DBMS_FGA.EXTENDED 表示如果 sql 語句中帶有綁定變量也會被記錄下來.
      – 如果是這樣選 audit_trail = SYS.DBMS_FGA.DB 表示不會記錄綁定變量
      –SYS.DBMS_FGA.DB+SYS.DBMS_FGA.EXTENDED 改成 SYS.DBMS_FGA.XML+SYS.DBMS_FGA.EXTENDED 表示記錄保存成 xml 文件
–xml 文件所在目錄可以通過 SHOW PARAMETER AUDIT_FILE_DEST 查看, 如果要更改目錄 ALTER SYSTEM SET AUDIT_FILE_DEST = directory_path DEFERRED;
 ,audit_column_opts     = SYS.DBMS_FGA.ALL_COLUMNS)
END;
 
  查看創(chuàng)建好的 policy 對象和符合審計(jì)條件時(shí)被記錄的操作
我們可以通過 select * from dba_objects 查看 table,view 等對象, 類似的 policy 創(chuàng)建好后我們可以通過 SELECT * FROM DBA_AUDIT_POLICIES 來查看.
如果我們對表 temp 執(zhí)行了 DML 操作, 那些信息將會被操作到 sys 用戶下的表中,Select* from sys.dba_fga_audit_trail 可以查找到.(注意這只有前面設(shè)置將記錄信息
保存到數(shù)據(jù)庫才能這樣查, 如果保存到 xml 文件中可以 Select *from  V$XML_AUDIT_TRAIL)
 
2. 刪除審計(jì)策略, 假如刪除上面創(chuàng)建的策略
begin
SYS.DBMS_FGA.DROP_POLICY  (
            object_schema    = ARWEN
            ,object_name     = TEMP
            ,policy_name     = FGA_TEMP
            );
end;
 
3. 使用 handler_module
 
假如你想在審計(jì)到某些操作時(shí)還進(jìn)行進(jìn)一步的處理, 比如把信息寫到自己創(chuàng)建的日志中, 或者發(fā)送郵件通知相關(guān)人員. 就要在創(chuàng)建 policy 時(shí)使用 handler_module 的功能, 指定一個(gè)存儲過程去做相應(yīng)的處理. 假如我創(chuàng)建一個(gè)存儲過程 temp_handler
CREATE OR REPLACE PROCEDURE temp_handler
(v_object_schema VARCHAR2
      , v_object_name VARCHAR2
      , v_policy_name VARCHAR2
     )
     IS
v_temp varchar2(30);
begin
null;
end temp_handler;
– 這里的存儲過程有點(diǎn)特殊, 它必須帶 v_object_schema VARCHAR2, v_object_name VARCHAR2, v_policy_name VARCHAR2 這三個(gè)參數(shù)才行, 如果直接寫一個(gè)一般的存儲過程就會出錯(cuò)的. 在 policy 中調(diào)用存儲過程就這樣 寫
 
BEGIN
          SYS.DBMS_FGA.ADD_POLICY  (
   object_schema    = ARWEN
   ,object_name     = TEMP
   ,policy_name     = FGA_TEMP
   ,audit_condition       = NULL
   ,audit_column          = eno,ename
   ,handler_schema        = ARWEN – 注意此處的用戶只能是創(chuàng)建此 policy 的用戶, 如果是其他用戶名會出錯(cuò)的
   ,handler_module        = TEMP_HANDLER
   ,enable                = TRUE
   ,statement_types       = SELECT,INSERT,UPDATE,DELETE
   ,audit_trail           = SYS.DBMS_FGA.DB+SYS.DBMS_FGA.EXTENDED
   ,audit_column_opts     = SYS.DBMS_FGA.ALL_COLUMNS)
END;

與 FGA 相關(guān)的表或者視圖:

select  * from fga$
select  * from fga_log$
select  * from fgacol$
select * from dba_fga_audit_trail
select * from dba_common_audit_trail
select * from dba_audit_policies
select * from dba_fga_audit_trail

與 FGA 相關(guān)的包或者過程:

dbms_fga.add_policy
dbms_fga.drop_policy

表、視圖、包的列或者參數(shù)的使用方法,可以查看相關(guān)文檔。

以上是“Oracle 中 FGA 功能怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-17發(fā)表,共計(jì)3924字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 贞丰县| 天长市| 会同县| 余干县| 砚山县| 黄梅县| 府谷县| 宁南县| 赫章县| 瓦房店市| 怀来县| 嘉黎县| 松阳县| 台北县| 新泰市| 芷江| 荣成市| 子洲县| 尖扎县| 大安市| 房产| 鸡西市| 象山县| 临颍县| 麻江县| 琼结县| 富宁县| 安龙县| 蕉岭县| 博兴县| 东海县| 新巴尔虎右旗| 休宁县| 海淀区| 砚山县| 武夷山市| 平度市| 顺义区| 永善县| 资溪县| 城步|