orlace如何查询哪个用户什么时间访问那个表空间、哪个表?
我要达到的目的就是要掌握用户对数据库所作的各种操作。

解决方案 »

  1.   

    Oracle的审计机制是用来监视用户对ORACLE数据库所做的各种操作。在缺省情况下,系统的审计功能是关闭的
    大版主的博客
      

  2.   

    开起ORACLE的审计功能,默认情况下是不开的。
    查看是否审计功能是否启动
    SQL> show parameter audit
    开启审计
    SQL> conn /as sysdba
    SQL> show parameter audit
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    audit_file_dest                      string      /u01/app/oracle/admin/ORCL/adump
    audit_sys_operations                 boolean     FALSE
    audit_syslog_level                   string
    audit_trail                          string      NONESQL> alter system set audit_sys_operations=TRUE scope=spfile;    --审计管理用户(以sysdba/sysoper角色登陆)
    SQL> alter system set audit_trail=db,extended scope=spfile;
      

  3.   

    9楼正解,但只是使标准审计功能可用,但并没有开通审计,也就是说话说了一半,没有说完,我接着补充一下吧。
    1 开启table标准审计选项 
       SQL> AUDIT TABLE;
    Audit succeeded.
     开通对table的create\drop进行审计 AUDIT select any table, create any trigger;
    以上只是举例,监控其他操作还需要补充其他审计语句开启察看审计结果
    select * from DBA_AUDIT_TRAIL;2 使用细粒度审计
     如果要查看详细的sql语句,也就是详细的操作需要使用细粒度审计FGA,使用dbms_fga.add_policy来创建策略,例如dbms_fga.add_policy (
    object_schema => 'hr',
    object_name => 'employees',
    policy_name => 'audit_emps_salary',
    audit_condition=> 'dept_id=10',
    audit_column => 'salary',
    handler_schema => 'secure',
    handler_module => 'log_emps_salary',
    enable => TRUE,
    statement_types=> 'select' );