它的用途是什么?
select sql_text
from V$sqltext_with_newlines where
address = (select DECODE(RAWTOHEX(sql_address), '00', prev_sql_addr, sql_address
)
from V$session
where username = :uname
and sid = :snum)
ORDER BY piece
我只知道它是由toad生成的,并且挂起了一个非常强大的生产环境
一些表会议显示了这一点:
COUNT(0) EVENT
---------- ----------------------------------------------------------------
1 smon timer
1 db file parallel read
1 pmon timer
1 read by other session
1 SQL*Net message to client
1 PL/SQL lock timer
2 SQL*Net break/reset to client
2 PX Deq Credit: send blkd
7 db file scattered read
8 db file sequential read
12 jobq slave wait
14 PX Deq: Execution Msg
30 rdbms ipc message
333 SQL*Net message from client
450 latch: library cache
答案 0 :(得分:2)
这似乎是一个非常简单的查询,如果它真的导致问题,我会感到惊讶。数据字典视图通常使用数十个表,但此查询的执行计划在我的系统上只有9个步骤,查询运行得非常快。即使优化器完全错误地计划,所涉及的表也不是很大,所以事情不应该太慢。
查询真的在做什么,或者只是坐在那里等待某人检索更多行?尝试使用这样的东西来找出它消耗的资源。运行它几次,如果数字不增加查询不是问题:
select elapsed_time/1000000 elapsed_seconds, cpu_time/1000000 cpu_seconds
,user_io_wait_time/1000000 user_io_wait_seconds, buffer_gets
,executions, v$sql.*
from v$sql
where lower(sql_text) like lower('%DECODE(RAWTOHEX(sql_address)%');
您的查询似乎检索当前正在运行的语句,尽管我不确定TOAD使用它的确切内容。也许它是会话浏览器的一部分? TOAD和所有类似的查询工具在后台运行许多这样的查询。我从未见过他们打倒服务器。虽然使用TOAD很可能会出现一些错误导致UI冻结并使其在查询中看起来非常困难。