oracle 10g如何实现高级查询(oracleawr报告怎么设置)

技术Oracle中FGA功能怎么用这篇文章主要为大家展示了“Oracle中FGA功能怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle中FGA功能怎么用”这篇文

本文主要展示“如何在Oracle中使用FGA函数”,简单易懂,组织清晰,希望能帮你解惑。让边肖带领大家学习《如何在甲骨文中使用FGA函数》一文。

你可能对trigger很熟悉,但是Oracle也有一个叫FGA的功能,和trigger类似,但是功能更强大。它的全称是细粒度审计。是一种特殊的审计方式。使用FGA只需要调用甲骨文的包DBMS_FGA。ADD_POLICY创建一些策略(审计策略)。每个策略只能针对一个表或视图。在建立策略后,可以记录表或视图上的所有DML操作(选择、插入、更新、删除),当然,可以添加一些过滤条件来监控一些特殊操作。

补充:所谓审核就是记录你的任意操作。如果你的操作(执行DML语句)满足指定条件,你执行的sql语句会被记录在sys user下的一些表中,还有你的其他信息,比如执行时间、用户名、你使用的工具、机器名称等。

FGA存在于oracle 9i中,但只有选择的报表可以在9i中审计。所有DML操作只能从10g开始审核。

1.FGA软件包的使用。ADD_POLICY

创建审计策略的语法

FGA数据库管理系统。ADD_POLICY(

Object_schema VARCHAR2,- schema模式的名称,表或视图的所有者

Object_name VARCHAR2,-对象的名称,表或视图的名称

Policy _ namevarchar2,-审核策略的名称,与数据库中的其他对象一样,它需要具有唯一的名称。

Audit_condition VARCHAR2,-过滤标准,例如可以选择记录哪些合格的操作。

Audit _ ColumnVarchar2,-表中的一列,只能记录对表中一列的操作。如果未指定,将审核所有列。

下面的Handler_schema VARCHAR2,handler _ module的所有者只能是创建策略的用户,而上面的object_schema可以是任何用户。

Handler _ module varchar2,-可以是存储过程或函数,但它将在检测到任何合格操作时执行。

Enable BOOLEAN,- true或false表示策略打开或关闭,false表示不进行审核。

Statement_types VARCHAR2,-指示将审核哪些操作,您可以填写select、insert、update和delete中的一个或多个。

Audit _ trail binary _ integer默认情况下,-有一个参数db,xml表示被审计的信息以XML文件的形式保存到数据库或者保存到磁盘。

audit _ column _ opts BInary _ INTEGER IN DEFAULT);-事实上,此选项仅在audt_column中指定了列时有效。它有两个选项,any_columns和all_columns。如果表中有eno、eno和ename列,并且这两列是在audit_column中指定的,那么选择any _ columns意味着对任何列的任何操作都将被记录,而在这里指定all _ columns意味着只有一条sql语句同时操作这两列。

例如,假设您创建了表:创建表温度(埃纳姆瓦尔恰尔2(30));为此表创建策略

每个策略只能针对一个表或视图,一个表或视图可能对应多个策略。删除表时,默认情况下会删除策略

开始

系统。FGA数据库管理系统。ADD_POLICY(

object_schema='ARWEN '

,对象名='TEMP '

,策略名称

 => '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表示记录将被保存到数据库中,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;
 
 查看创建好的policy对象和符合审计条件时被记录的操作
我们可以通过select * from dba_objects查看table,view等对象,类似的policy创建好后我们可以通过SELECT * FROM DBA_AUDIT_POLICIES来查看.
如果我们对表temp执行了DML操作,那些信息将会被操作到sys用户下的表中,Select* from sys.dba_fga_audit_trail可以查找到.(注意这只有前面设置将记录信息
保存到数据库才能这样查,如果保存到xml文件中可以Select *from  V$XML_AUDIT_TRAIL)
 
2.删除审计策略,假如删除上面创建的策略
begin
SYS.DBMS_FGA.DROP_POLICY  (
            object_schema    => 'ARWEN'
            ,object_name     => 'TEMP'
            ,policy_name     => 'FGA_TEMP'
            );
end;
 
3.使用handler_module
 
假如你想在审计到某些操作时还进行进一步的处理,比如把信息写到自己创建的日志中,或者发送邮件通知相关人员.就要在创建policy时使用handler_module的功能,指定一个存储过程去做相应的处理.假如我创建一个存储过程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;
--这里的存储过程有点特殊,它必须带v_object_schema VARCHAR2, v_object_name VARCHAR2, v_policy_name VARCHAR2这三个参数才行,如果直接写一个一般的存储过程就会出错的.在policy中调用存储过程就这样 写
 
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' --注意此处的用户只能是创建此policy的用户,如果是其他用户名会出错的
   ,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相关的表或者视图:

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相关的包或者过程:

dbms_fga.add_policy
dbms_fga.drop_policy

表、视图、包的列或者参数的使用方法,可以查看相关文档。

以上是“Oracle中FGA功能怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153553.html

(0)

相关推荐

  • php如何去掉一维数组的键值

    技术php如何去掉一维数组的键值这篇文章主要介绍“php如何去掉一维数组的键值”,在日常操作中,相信很多人在php如何去掉一维数组的键值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php

    攻略 2021年11月27日
  • MySQL数据库的建模工具都有哪些

    技术MySQL数据库的建模工具都有哪些这篇文章将为大家详细讲解有关MySQL数据库的建模工具都有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。数据库建模和设计是软件开

    攻略 2021年11月4日
  • Tomcat 结合Atomikos 实现JTA

    技术Tomcat 结合Atomikos 实现JTA Tomcat 结合Atomikos 实现JTA最近项目切换环境,把weblogic 换成tomcat 记录中间遇到的问题
    Tomcat下配置Atomi

    礼包 2021年11月23日
  • C/C++编译器QStudio怎么使用

    技术C/C++编译器QStudio怎么使用本篇内容介绍了“C/C++编译器QStudio怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔

    攻略 2021年11月30日
  • 三、七天入门django开发

    技术三、七天入门django开发 三、七天入门django开发 - Django模型层前言
    Django 提供了完善的模型(model)层用来创建和存取数据,不需要我们直接对数据库进行操作。
    模型层是什

    礼包 2021年12月9日
  • STL组件之迭代器如何实现

    技术STL组件之迭代器如何实现小编给大家分享一下STL组件之迭代器如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!STL的一个重要特点是

    攻略 2021年12月3日