我从V$sql 中可以看到以下语句。UPDATE "TB_REF_HEAT_HISTORY" SET "HEAT_ID"=:V00001,"ITEM_ID"=:V00002,"STRAND_NUMBER"=:V00003,"ID_FIRST_VALUE"=:V00004,"ID_LAST_VALUE"=:V00005 WHERE "HEAT_ID"=:V00006 AND "ITEM_ID"=:V00007 AND "STRAND_NUMBER"=:V00008 AND "ID_FIRST_VALUE"=:V00009 AND "ID_LAST_VALUE"=:V00010 AND "ROWID"=:V00011怎么全是变量,比如:V00001,:V00002之类的?有没有办法知道具体的值呢?

解决方案 »

  1.   

    可以通过LOGMINER分析日志文件 查询某时间段执行过的语句。
      

  2.   


    这个怎么用呢?我在开始菜单中没找到logminer
      

  3.   

    logminer是第三方工具,需要安装的。
      

  4.   

    我在网上找到一篇文章,关于使用Logminer的,http://hi.baidu.com/edeed/blog/item/01dda90142210f051d958315.html太复杂了...有没有更简单的办法呢?
      

  5.   


    --TRY IT
    select user_name,sql_text 
       from v$open_cursor 
       where sid in (select sid from 
    (select sid,serial# 
    from v$session 
       where status='ACTIVE'))
      

  6.   

    谢谢yf520gn: sql_text字段中记录的SQL语句不完整....而且 在V$sql 可以取出96条记录,用你给的SQL语句只能查询出18条.
      

  7.   


    能再帮忙看看吗?特别是SQL_TEXT字段的SQL语句,很多都只有半截
      

  8.   

    我的理解:
    V$SQLTEXT 查询的是sga中被共享的sql_text,所以,如果外部传递进来的是变量,你查询出来的也是变量。
    v$open_cursor 查询的是当前游标被解析的sql,并且,sql_text的类型,varchar2(60),所以看到半截并且不全。LZ可以尝试性的查询 v$sqlarea或v$sql 这两个视图里的信息比较全。 
    不过,也都有局限性。好像都是查询打开单个游标的语句,并且,字长1000,如果查询全部,要根据address和hash_value去匹配。
      

  9.   

    对了,v$sql中存储的是original SQL 
    v$sqlarea中存储的是 in memory, parsed, and ready for execution SQL。
      

  10.   


    首先谢谢,意思是address或hash_value相同的,代表的是一句SQL?
      

  11.   

    哈哈哈,V$SQL中有个CLOB栏位叫SQL_FULLTEXT有全的哦
      

  12.   

    TOAD中集成有LOGMINDER看起来比较方便.