`
kamiff
  • 浏览: 88185 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle v$sqlarea 分析SQL语句使用资源情况

阅读更多
V$SQLAREA
  本视图持续跟踪所有shared pool中的共享cursor,在shared pool中的每一条SQL语句都对应一列。本视图在分析SQL语句资源使用方面非常重要。

V$SQLAREA中的信息列

HASH_VALUE:SQL语句的Hash值。
ADDRESS:SQL语句在SGA中的地址。
这两列被用于鉴别SQL语句,有时,两条不同的语句可能hash值相同。这时候,必须连同ADDRESS一同使用来确认SQL语句。
PARSING_USER_ID:为语句解析第一条CURSOR的用户
VERSION_COUNT:语句cursor的数量
KEPT_VERSIONS:
SHARABLE_MEMORY:cursor使用的共享内存总数
PERSISTENT_MEMORY:cursor使用的常驻内存总数
RUNTIME_MEMORY:cursor使用的运行时内存总数。
SQL_TEXT:SQL语句的文本(最大只能保存该语句的前1000个字符)。
MODULE,ACTION:使用了DBMS_APPLICATION_INFO时session解析第一条cursor时的信息

V$SQLAREA中的其它常用列

SORTS: 语句的排序数
CPU_TIME: 语句被解析和执行的CPU时间
ELAPSED_TIME: 语句被解析和执行的共用时间
PARSE_CALLS: 语句的解析调用(软、硬)次数
EXECUTIONS: 语句的执行次数
INVALIDATIONS: 语句的cursor失效次数
LOADS: 语句载入(载出)数量
ROWS_PROCESSED: 语句返回的列总数

V$SQLAREA中的连接列Column View Joined Column(s)
HASH_VALUE, ADDRESS V$SESSION SQL_HASH_VALUE, SQL_ADDRESS
HASH_VALUE, ADDRESS V$SQLTEXT, V$SQL, V$OPEN_CURSOR HASH_VALUE, ADDRESS
SQL_TEXT V$DB_OBJECT_CACHE NAME

示例:
1.查看消耗资源最多的SQL:
SELECT hash_value, executions, buffer_gets, disk_reads, parse_calls
FROM V$SQLAREA
WHERE buffer_gets > 10000000 OR disk_reads > 1000000
ORDER BY buffer_gets + 100 * disk_reads DESC;

2.查看某条SQL语句的资源消耗:
SELECT hash_value, buffer_gets, disk_reads, executions, parse_calls
FROM V$SQLAREA
WHERE hash_Value = 228801498 AND address = hextoraw('CBD8E4B0');


查找前10条性能差的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 ;
说明:
EXECUTIONS表示同一条SQL语句一共执行了多少次,SORTS表示排序的次数,DISK_READS表示物理读的数量。
DISK_READS NUMBER
The sum of the number of disk reads over all child cursors

SORTS NUMBER
Sum of the number of sorts that were done for all the child cursors

EXECUTIONS NUMBER
Total number of executions, totalled over all the child cursors
分析性能差的sql
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS, 
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, 
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, 
SQL_TEXT 
FROM V$SQLAREA 
WHERE EXECUTIONS>0 
AND BUFFER_GETS >0 
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
查询共享池中已经解析过的SQL语句及其相关信息
--EXECUTIONS 所有子游标的执行这条语句次数
--DISK_READS 所有子游标运行这条语句导致的读磁盘次数
--BUFFER_GETS 所有子游标运行这条语句导致的读内存次数
--Hit_radio 命中率
--Reads_per_run 每次执行读写磁盘数

笼统的说EXECUTIONS,BUFFER_GETS,Hit_radio越高表示读内存多,磁盘少是比较理想的状态,因此越高越好
另外两个越高读磁盘次数越多,因此低点好

选出最占用资源的查询
   
select b.username username,a.disk_reads reads,a.executions exec,
    a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,
    a.sql_text statement
    from v$sqlarea a,dba_users b
    where a.parsing_user_id=b.user_id
    and a.disk_reads>100000

分享到:
评论

相关推荐

    oracle_V$SQLAREA_.rar_oracle_oracle V$sqlarea

    查询共享池中已经解析过的SQL语句及其相关信息。

    [自己开发]一款非常好用的抓取Oracle数据库SQL语句的工具

    Oracle SQL Profiler,自己设计算法写的一款非常好用的抓取Oracle数据库SQL语句的工具,可以再没有源码的情况下监控ORACLE数据库服务器的v$sqlarea视图抓取出从点击开始按钮到点击结束按钮期间执行过的SQL语句。...

    查询Oracle中正在执行和执行过的SQL语句

    查询Oracle正在执行的sql语句及执行该语句的用户 ...FROM v$process a, v$session b, v$sqlarea c WHERE a.addr = b.paddr AND b.sql_hash_value = c.hash_value 其它网友给出的正在执行的sql语句代码 select a.u

    用Oracle动态性能视图采集查询调优数

    V$SQL: 这个视图使用一个CLOB(character large object,字符型巨对象)column,以提供SQL语句的完整文本,此外还有一列最多存放1000个 VARCHAR2字符的对象,这方便了使用。V$SQLAREA: 这个视图包含许多和V$SQL相同的...

    Oracle–查询时间段内执行的sql、Produce

    select * from v$sqlarea a where 1=1 and a.LAST_ACTIVE_TIME &gt;= to_date( '2013-02-21 18:23:00','yyyy-MM-dd HH24:mi:ss') and a.LAST_ACTIVE_TIME &lt; to_date( '2013-02-21 18:24:00','yyyy-MM-dd HH24:mi:...

    Oracle10g DBA经常使用的动态性能视图和数据字典

    v$sqlarea:共享池中使用当前光标的统计信息,光标是一块内存区域,有Oracle处理SQL语句时打开。 v$statname:在v$sesstat中报告各个统计的含义 v$sysstat:基于当前操作会话进行的系统统计 v$waitstat:出现一个...

    探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句

    Oracle数据库查看一个进程是如何执行相关的实际SQL语句 代码如下:SELECT b.sql_text, sid, serial#, osuser, machine FROM v$session a, v$sqlarea b WHERE a.sql_address = b.address; 查询前台发出的SQL语句. ...

    第6课 Oracle性能优化(之一)

    如果查到CPU的占用率非常高,取出PID,并查看对应的SQL... from v$process vp, v$session vs, v$sqlarea vq where vp.ADDR = vs.PADDR and vs.SQL_HASH_VALUE = vq.HASH_VALUE and vp.SPID = 3872 --换成对应的SPID

    oracle 会话 死锁 执行sql 执行job的方法

    //根据用户分组会话 select t.USERNAME,count(*) from v$session t group by t.USERNAME ...select m.SQL_TEXT from v$session t , v$sqlarea m where t.USERNAME ='BUDGET' and t.sql_id = m.SQL_ID // s

    Oracle Database SQL语句处理步骤

    一、解析  1、语法检查  sql语句解析的时候,先执行语法检查。看语句是否符合规范。  2、语义检查  这个阶段,数据库会去判断SQL语句...那是sql_id v$sql.sql_id.(sql语句shared pool check当匹配到了相

    oracle动态性能表

     按照OracleDocument中的描述,v$sysstat存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的资源使用情况。 类似于v$sesstat,该视图存储下列的统计信息: 1&gt;.事件发生次数的统计(如:user commits) 2&gt;...

    oracle_sql性能优化

    为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享. 因此,当你执行一个...

    ORACLE SQL性能优化系列

    为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享. 因此,当你执行一个...

    Oracle查看逻辑读、物理读资源占用排行的SQL语句

    查看逻辑读前10的SQL: 代码如下: set linesize 300; set pagesize 300;... FROM V$SQLAREA  WHERE buffer_gets &gt; 10000  ORDER BY “Gets/Exec” DESC ) WHERE rownum &lt;= 10; 查看物理读前

    深入解析Oracle.DBA入门进阶与诊断案例

    6.2.10 V$SQL与V$SQLAREA视图 287 6.2.11 Oracle 10g中version_count过高的诊断 292 6.2.12 诊断案例二:临时表引发的竞争 297 6.2.13 小结 299 第7章 重做(Redo) 300 7.1 Redo的作用 300 7.2 Redo的...

    msmmPrj.rar_The Oracle_oracle dynamic sql

    动态SQL的第4种方法通过SQLDA(The SQL Descriptor Area)和oracle内部交换数据,可以执行直到程序运行时还不知道选择表项或虚拟输入宿主变量的个数和类型的SQL语句

    用动态SQL方法4连接Oracle的实现

    用动态SQL方法4连接 Oracle 的实现 ...动态SQL的第4种方法通过SQLDA(The SQL Descriptor Area)和oracle内部交换数据,可以执行直到程序运行时还不知道选择表项或虚拟输入宿主变量的个数和类型的SQL语句。

    Oracle语句优化30个规则详解

     为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中。这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。 因此,当你...

    ORACLE9i_优化设计与系统调整

    §1.4.1 SQL语句处理顺序 29 §1.4.2 COMMIT语句处理顺序 32 §1.5 共享池 33 §1.6 块缓存(数据高速缓冲区) 33 §1.7 数据库写入进程 34 §1.8 日志写进程 34 §1.9 数据库检查点 34 §1.10 归档处理 35 §1.11 ...

    Oracle优化53解

    为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中。这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。 因此,当你...

Global site tag (gtag.js) - Google Analytics