如果你用的是oracle 10g的话,这个有种很简单的方法就是查看awr报告。
很简单,你登陆到服务器的操作系统,进入到$ORACLE_HOME/rdbms/admin目录下。然后sqlplus "/as sysdba"登陆到数据库,执行
@awrrpt.sql;
然后按照提示一步一步做,注意格式选html(这样方便你阅读)。最后会让你命名这个文件。
完了之后,你把那个文件拷贝到本地用IE打开就看到了。里面有很详细的,包括这段时间占CPU,IO,等等最严重的SQL排行。很好很强大。
-------------------------
至于你说查看当前的sql,你在v$session里查看长期blocking别人的session ID,然后根据这个session id从v$text里就能查到这个sql了。
-------------------------
很明确了吧
通过ORACLE提供的底层SQL来查找性能最差的SQL。
SELECT * FROM (
SELECT PARSING_USER_ID
EXECUTIONS,
SORTS,
COMMAND_TYPE,
DISK_READS,
sql_text
FROM v$sqlarea
ORDER BY disk_reads DESC )
WHERE ROWNUM<10 ;
–查找前十条性能差的sql