ORACLE查询当前执行效率低的sql
--CPU高的SQLselect?sql_text?from?v$sql?order?by?cpu_time?desc?--逻辑读多的SQL:select?*?from?(select?buffer_gets,?sql_textfrom?v$sqlareawhere?buffer_gets?>?500000order?by?buffer_gets?desc)?where?rownum<=30;?--执行次数多的SQL?:select?sql_text,executions?from?(select?sql_text,executions?from?v$sqlarea?order?by?executions?desc)?where?rownum<81;--读硬盘多的SQL?:select?sql_text,disk_reads?from?(select?sql_text,disk_reads?from?v$sqlarea?order?by?disk_reads?desc)?where?rownum<21;?--排序多的SQL?:select?sql_text,sorts?from(select?sql_text,sorts?from?v$sqlarea?order?by?sorts?desc)?where?rownum<21;??????????????????????????????--CPU消耗高,如果确认是oracle进程做的--那么直接在OS上抓到消耗CPU的PID,然后查出是哪个session,找出相应的SQL@getsqlbypidselect?sql_text?from?v$sqltext?where?hash_value?=?(select?sql_hash_value?from?v$session?where?sid?=?(select?s.sid?fromv$session?s,?v$process?pwhere?p.addr??=?s.paddrand???p.spid?=?&ospid))order?by?piece;