我只是个菜鸟程序员,数据库这块懂的很少,可能讲的很不专业,见谅!
情况是这样的:数据库(oracle10g)里面有张表里面的部分记录数据都变成了0,现在没有查到具体原因,我想要通过查看数据库的sql语句执行的具体记录确定一下问题发生的具体时间(领导吩咐的任务总得有答复,你们懂的),通过baidu知道了可以通过查询 v$sqlarea 这个视图来查看sql语句执行记录,但是我查询之后发现里面 LAST_ACTIVE_TIME 最早的是10天前的记录,数据变成0这个情况发现的时间远比10天前要早,请问我怎样才能查看更早些时间的sql语句执行记录?另外,怎样设置才能这些记录保存的条数多一些,时间久一些?避免下次再查的时候查不到sql执行记录oracle语句执行记录

解决方案 »

  1.   

    审计开了没?如是开了,直接可以查;如果没开,可以借助logminer查看更早
      

  2.   

    审计貌似没开啊,我  
    SQL-》show parameter audit
    了一下,发现audit_sys_operation
    和 audit_trail 都是falselogminer我没用过,网上查了查这东西用之前需要先安装
    由于客户的安全策略,我要连数据库只能先远程到客户那边一台window机器,再在那台机器上通过他们的一个内网小地址连接数据库,我不太敢操作,怕出问题那台机器上有安装plsql,能否通过plsql查以前的sql语句执行情况啊?
      

  3.   

    另外我还想问下,sql语句执行日志是存在文件里面的吗?如果时的话,路径是什么?我能把那些文件copy到我的机器上再进行分析吗?
      

  4.   

    就在日志文件里面,copy过来不行
    如果系统不忙,flashback_transaction_query这个表先试试,看能否到10天前
    PL/SQL恐怕也不行吧
    如果你的系统是10g及以上的,只要直接把日志文件加载,然后分析即可。10g其实不需要生成dictionary文件了。
      

  5.   

    也就是10g以上的logminer也可以直接用
      

  6.   

    网上说
    select name from v$archived_log;
    这个语句可以查询日志文件路径
    我查了一下,发现是空的  =,=
    什么情况,莫非这个日志文件不是默认保存的?需要做配置吗?还是说我上面这个查日志路径的语句不对啊?
      

  7.   


    我只是个java程序员
    略懂一点oracle的知识
    如果您有空且方便的话,我希望能加您QQ说
    求传说中的一站式服务