目前我找到select * from v$sqlarea order by first_load_time desc,可是并非想要的。
1.中有执行成功的,可问题是我的老执行失败.
2.带参数.我只看见:p1,:p2,:P3....可是就是没有:p1=?
3.主要应为用的是一个封装类,所以没法在前台取sql,所以想从后台取?
十万为急..

解决方案 »

  1.   

    使用"审计"
    具体看oracle管理员指南
      

  2.   

    启动审计功能:
    修改数据库INIT.ORA文件中的audit_trail = true(注意把它前面的注释符#去掉)
    重新启动数据库
    DOS下执行
    SVRMGRL
    CONNECT INTERNAL/ORACLE
    SHUTDOWN IMMEDIATE
    STARTUP
    然后用DBA用户登陆SQL*PLUS
    CONNECT SYSTEM/MANAGER
    创建一个审计:
    SQL> audit create table by access whenever successful;审计已成功。
    SQL> select sessionid SID,userid USID,action# ACT,obj$name OBNAME,TIMESTAMP# TIME FROM SYS.AUD$; SID   USID   ACT   OBNAME   TIME
    -----  ------ ---- -------  ------
    202   SYSTEM    1     A     2002-08-24 00:59:01说明审计已经启动。====================================
    自己写的,如有不当之处请各位指正。
      

  3.   

    需要审计吗?
    看看这个:
    select A.SID,A.SERIAL#,A.MACHINE,A.PROGRAM,GET_SQL(A.SQL_ADDRESS,A.SQL_HASH_VALUE) 
    from v$session a 
    where a.username is not null 
    and a.status='ACTIVE' 3。function get_sql: create or replace function GET_SQL(V_SQLADDRESS in RAW, V_SQLHASHVALUE in NUMBER) return varchar2 is 
      Result varchar2(2000); 
      CURSOR C1 IS 
      SELECT A.SQL_TEXT FROM V$SQLAREA A 
      WHERE A.ADDRESS=V_SQLADDRESS 
      AND A.HASH_VALUE=V_SQLHASHVALUE; 
    begin 
         FOR REC IN C1 LOOP 
         RESULT:=RESULT||REC.SQL_TEXT; 
         END LOOP; 
      return(Result); 
    end GET_SQL;