为了分析程序都执行了哪些sql语句,我在v$sqlarea表中查询最近执行过的sql,但是有些特别长的sql记录不全(用的是pl/sql developer),我是个oracle新手,想问一下只是显示不全还是记录的时候就不全?该如何获得完整的最近执行过的sql?

解决方案 »

  1.   

    --纠正一下
    只能才可SQL语句的前1000个字符
      

  2.   

    是啊,就是1000个字符,太少了,那个sql语句得有1300左右的字符,难道没法获得吗?
      

  3.   

    表面上是没有办法了,只能对SQL进行优化缩小,或对Sql进行封装,比如对一下语句写成view,procedure等等方法来改进.
      

  4.   

    没法优化啊,能直接优化的话就不用费这些事到oracle里面找了。实际上这是我们单位的erp软件进行的查询,我想了解这些查询的实际sql是什么,操作了哪些表,如何关联的,以便了解数据结构作一些二次开发。 
      

  5.   

    根据SELECT * FROM v$sqlarea中找到hash_value然后执行
    SELECT * FROM v$sqltext WHERE hash_value = '&hash_value' ORDER BY piece即可得到完整的sql语句
      

  6.   

    select sql_text from v$sqltext_with_newlines
    where hash_value = '&sql_hash_value'            
    order by piece ;