用oracle中的LOGMINER工具可以从数据库的联机和归档重做日志中分析和提取有价值的信息。

解决方案 »

  1.   

    只要对应时段的在线/归档日志还在,可以用logminer分析
    增加字段能造成线上故障,是sql语句中,尤其是insert语句没有指明字段吧
      

  2.   

    也有可能是select * 造成的
    写语句不指明具体字段名称后患无穷啊
      

  3.   


    也有可能是select * 造成的
    写语句不指明具体字段名称后患无穷啊是使用一个工具根据数据库中的表生成对应的sqlMap映射文件的。  在测试环境中有这几个字段,所以生成的sqlMap里面就多了这几个字段, 这个sqlMap发到线上之后, 由于线上没有这几个字段,所以就报错了。 
      

  4.   

    那需要 开启oracle 审计记录,Oracle审计主要用于记录用户对数据库所做的操作
    一。oracle中审计的配置:
    1.审计相关的三个重要参数:
     a.audit_file_dest:指定审计文件存放的位置:
     b.audit_trail:指定审计的类型:
       none:为系统默认值,不进行审计
       DB:将审计结果放在数据库表中,aud$,通常只记录连接的信息.
       DB_EXTENDED:将审计结果放在数据库表中,记录具体执行语句
       OS:将审计结果记录在操作系统文件中,文件位置由audit_file_dest参数指定,(windows系统中将直接在事件查看器的系统日志中记录)
       XML:将审计结果记录在audit_file_dest指定位置下的XML文件中。
     c.audit_sys_operations:是否对sysdba用户做审计 ,关于sysdba用户审计的结果,linux存放在audit_file_dest参数指定位置的aud文件中,windows存放在事件查看器的系统日志中 2.审计的级别:
      开启审计后,可在statement语句、privilege权限和object对象级别对数据库进行审计。
      a.statement:按语句来审计如audit table xxx;
      b.privilege:按权限来审计,如audit select any table
      c.object:按对象来审计,如audit all on hr.employees by HR,只会对hr用户对employees表执行的操作做审计
      
      3.审计的其它相关选项:
      by access 每个被审计的操作都会生成一条记录
      by session 默认值,每个会话里同类型操作只会生成一条audit trail
      whenever successful:操作成功才审计
      whenever not successful:操作不成功才审计
      
      4.查询审计结果的视图
      dba_audit_trail:查看所有的普通审计记录
      dba_fga_audit_trail:查看所有细粒度审计记录
      sys.aud$审计结果实际存放的系统表
      
      5.取消审计: noaudit select any table 
      
      6.开启审计方法
      a.查看参数
      SQL> show parameter auditNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    audit_file_dest                      string      /u01/oracle/product/admin/orcl
                                                     /adump
    audit_sys_operations                 boolean     FALSE
    audit_syslog_level                   string
    audit_trail                          string      NONE
    b.设置审计类型并重启数据库
    SQL> alter system set audit_trail = db_extended scope=spfile;System altered.
    c.审计用户对表操作
    SQL> audit table ;Audit succeeded.
    d.切换用户后创建表
    SQL> connect test/[email protected]/orcl
    Connected.
    SQL> create table audtest (id int);Table created.
    e.管理员登录查看审计结果
    SQL> connect sys/[email protected]/orcl as sysdba
    Connected.
    SQL> select username,sql_text from dba_audit_trail;USERNAME
    ------------------------------
    SQL_TEXT
    --------------------------------------------------------------------------------
    TEST
    create table audtest (id int)详细参照   http://www.cnblogs.com/CodingArt/articles/1772381.html