Oracle中如何查看低效sql

--查看低效sql方法如下

select

a.sql_text,

a.executions,

a.disk_reads,

a.buffer_gets,

round((a.buffer_gets-a.disk_reads)/a.disk_reads,2)  hit_radio,

round(a.disk_reads/a.executions,2) read_per_run

from v$sqlarea a

where a.executions>0

and a.buffer_gets>0

and a.disk_reads>0

and (a.buffer_gets-a.disk_reads)/a.disk_reads<0.8

order by 4 desc;

注意:

对于高效sql:把 (a.buffer_gets-a.disk_reads)/a.disk_reads<0.8改为 (a.buffer_gets-a.disk_reads)/a.disk_reads>0.8即可

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2024-09-09 03:47:39

Oracle中如何查看低效sql的相关文章

oracle中字段名与sql关键词重复的处理方法

ORACLE中,如果表中的字段名,正好跟sql中关键词重名,写sql语句时: 1.要将该字段名大写 2.字段名前后要加双引号(注:必须是双引号,单引号将无效) 比如:SELECT * FROM MYTABLE ORDER BY "ORDER"

oracle中得到一条SQL语句的执行时间的两种方式_oracle

oracle中如果需要得到一条SQL语句的执行时间可以用如下2种方式 复制代码 代码如下: SQL> set timing on; SQL> select count(*) from wea; COUNT(*) ---------- 39490 已用时间: 00: 00: 00.06 SQL> select sql_text, elapsed_time from v$sql 2 where sql_text like 'select count(*) from wea'; 未选定行 已用

Oracle中如何查看正在运行的sql

--查出此时正在运行的sql方法如下: select s.TERMINAL,s.machine,'alter system kill session '''||sid||','||serial#||''';', q.sql_text,s.event,s.* from v$session s,v$sql q where s.sql_id=q.sql_id and s.USERNAME='DATATRANS';--替换用户名DATATRANS即可 本栏目更多精彩内容:http://www.bianc

Oracle中如何查看对象持有锁的情况

同事在测试库上对一个表加字段,提示 ORA-00054, 资源忙. 应该是表对象的锁没有释放. 用如下SQL 查看一下系统中相关对象上锁的情况: <pre name="code" class="sql">/* Formatted on 2012/2/13 14:24:32 (QP5 v5.185.11230.41888) */ SELECT S.SID SESSION_ID, S.USERNAME, DECODE (LMODE, 0, ' None ',

oracle中如何查看表空间

1. 查看所有表空间大小 select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; 2. 未使用的表空间大小 select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name; 3. 所以使用空间可以这样计算 select a.tablespace_name,tot

Oracle中如何查看并行相关信息

下面我通过实验介绍三种查看并行相关内容,比如并行度.并行执行的实例等. 1.V$PQ_TQSTAT视图 – 脚本 [oracle@rac1 ~]$ cat showdop.sql column SERVER_TYPE format a15 column PROCESS format a10 select dfo_number,  tq_id,  server_type,  process,  num_rows,  bytes,  instance from v$pq_tqstat order b

oracle 中,下面哪个SQL效率比较高?

问题描述 要对比两张表TA和TB: select * from TA a where not exists (select v_key from TB b where a.v_key = b.v_key); select * from TA, (select v_key from TB) c where TA.v_key = c.v_key(+) and c.v_key is null;如果表TA和TB都有大量数据的话,哪个效率会比较高一点? 问题补充:话说能不能顺便稍微解释一下为什么较快或者较

ORACLE中数据递归查询遍历sql语句

查询遍历,需要在将数据在基表中按照层次结构进行存储.比如一个组织机构就是这样的典型例子: 实现语句: select column from table_name start with column=value connect by prior 父主键=子外键 例1:在oracle的emp 表中,每一条记录都有一个唯一标识当前雇员的empno和标识这个雇员的经理的mgr列.如果mgr 为空,则该雇员是该机构的最顶级.现在要列出每个雇员的层次结构(从顶到底): select lpad(' ',4*(

Oracle中日期方面的SQL实例

№1:取得当前日期是本月的第几周 SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'YY ------------------- 20030327 4 18:16:09 SQL> select to_char(sysdate,'W') from dual; T - 4 №2:取得当前日期是一个星期中的第几天,注意星期日是第一天 SQL> select sysdate,to_ch