- 浏览: 271709 次
- 性别:
- 来自: 北京
最新评论
-
caoxiaoj2ee:
:cry:
java 基础学习 -
shuiguozheng:
这么好的文章,被我发现额。谢谢
Tomcat集群与负载均衡区别以及特性 -
liwenjie:
接口中所有变量都必须被定义为final static?
sta ...
java 基础学习 -
javamonkey:
无论何种O,都没有考虑到展示的问题。
VO , PO , BO , QO, DAO ,POJO -
sdscx0530:
不错 谢谢
巧用Google Code备份代码
(2)-V$SQL_PLAN
本视图提供了一种方式检查那些执行过的并且仍在缓存中的 cursor的执行计划。
通常,本视图提供的信息与打印出的 EXPLAIN PLAN非常相似,不过, EXPLAIN PLAN显示的是理论上的计划,并不一定在执行的时候就会被使用,但 V$SQL_PLAN中包括的是实际被使用的计划。获自 EXPLAIN PLAN语句的执行计划跟具体执行的计划可以不同,因为 cursor可能被不同的 session参数值编译 (如, HASH_AREA_SIZE)。
V$SQL_PLAN 中数据可以:
l 确认当前的执行计划
l 鉴别创建表索引效果
l 寻找 cursor包括的存取路径 (例如,全表查询或范围索引查询 )
l 鉴别索引的选择是否最优
l 决定是否最优化选择的详细执行计划 (如, nested loops join)如开发者所愿。
本视图同时也可被用于当成一种关键机制在计划对比中。计划对比通常用于下列各项发生改变时:
l 删除和新建索引
l 在数据库对象上执行分析语句
l 修改初始参数值
l 从 rule-based切换至 cost-based优化方式
l 升级应用程序或数据库到新版本之后
如果之前的计划仍然在 (例如,从 V$SQL_PLAN选择出记录并保存到 oracle表中供参考 ),那么就有可能去鉴别一条 SQL语句在执行计划改变后性能方面有什么变化。
注意:
Oracle公司强烈推荐你使用 DBMS_STATS包而非 ANALYZE收集优化统计。该包可以让你平行地搜集统计项,收集分区对象 (partitioned objects)的全集统计,并且通过其它方式更好的调整你的统计收集方式。此处, cost-based优化器将最终使用被 DBMS_STATS收集的统计项。浏览 Oracle9i Supplied PL/SQL包和类型参考以获得关于此包的更多信息。
不过,你必须使用 ANALYZE语句而非 DBMS_STATS进行统计收集,不涉及 cost-based优化器,就像:
·使用 VALIDATE或 LIST CHAINED ROWS子句
·在 freelist blocks上收集信息。
V$SQL_PLAN 中的常用列:
除了一些新加列,本视图几乎包括所有的 PLAN_TABLE列,那些同样存在于 PLAN_TABLE中的列拥有相同的值:
l ADDRESS:当前 cursor父句柄位置
l HASH_VALUE:在 library cache中父语句的 HASH值。
ADDRESS和 HASH_VALUE这两列可以被用于连接 v$sqlarea查询 cursor-specific 信息。
l CHILD_NUMBER:使用这个执行计划的子 cursor数
列 ADDRESS,HASH_VALUE以及 CHILD_NUMBER可被用于连接 v$sql查询子 cursor信息。
l OPERATION: 在各步骤执行内部操作的名称,例如: TABLE ACCESS
l OPTIONS: 描述列 OPERATION在操作上的变种,例如: FULL
l OBJECT_NODE: 用于访问对象的数据库链接 database link 的名称对于使用并行执行的本地查询该列能够描述操作中输出的次序。
l OBJECT#: 表或索引对象数量
l OBJECT_OWNER: 对于包含有表或索引的架构 schema 给出其所有者的名称
l OBJECT_NAME: 表或索引名
l OPTIMIZER: 执行计划中首列的默认优化模式;例如, CHOOSE。比如业务是个存储数据库,它将告知是否对象是最优化的。
l ID: 在执行计划中分派到每一步的序号。
l PARENT_ID: 对 ID 步骤的输出进行操作的下一个执行步骤的 ID。
l DEPTH: 业务树深度 (或级 )。
l POSITION: 对于具有相同 PARENT_ID 的操作其相应的处理次序。
l COST: cost-based方式优化的操作开销的评估,如果语句使用 rule-based方式,本列将为空。
l CARDINALITY: 根据 cost-based方式操作所访问的行数的评估。
l BYTES: 根据 cost-based方式操作产生的字节的评估,。
l OTHER_TAG: 其它列的内容说明。
l PARTITION_START: 范围存取分区中的开始分区。
l PARTITION_STOP: 范围存取分区中的停止分区。
l PARTITION_ID: 计算 PARTITION_START和 PARTITION_STOP这对列值的步数
l OTHER: 其它信息即执行步骤细节,供用户参考。
l DISTRIBUTION: 为了并行查询,存储用于从生产服务器到消费服务器分配列的方法
l CPU_COST: 根据 cost-based方式 CPU操作开销的评估。如果语句使用 rule-based方式,本列为空。
l IO_COST: 根据 cost-based方式 I/O操作开销的评估。如果语句使用 rule-based方式,本列为空。
l TEMP_SPACE: cost-based方式操作 (sort or hash-join)的临时空间占用评估。如果语句使用 rule-based方式,本列为空。
l ACCESS_PREDICATES: 指明以便在存取结构中定位列,例如,在范围索引查询中的开始或者结束位置。
l FILTER_PREDICATES: 在生成数据之前即指明过滤列。
CONNECT BY操作产生 DEPTH列替换 LEVEL伪列,有时被用于在 SQL脚本中帮助 indent PLAN_TABLE数据
V$SQL_PLAN 中的连接列
列 ADDRESS,HASH_VALUE和 CHILD_NUMBER被用于连接 V$SQL或 V$SQLAREA来获取 cursor-specific信息,例如, BUFFER_GET,或连接 V$SQLTEXT获取完整的 SQL语句。
Column View Joined Column(s)
ADDRESS, HASH_VALUE V$SQLAREA ADDRESS, HASH_VALUE
ADDRESS,HASH_VALUE,CHILD_NUMBER V$SQL ADDRESS,HASH_VALUE,CHILD_NUMBER
ADDRESS, HASH_VALUE V$SQLTEXT ADDRESS, HASH_VALUE
确认 SQL 语句的优化计划
下列语句显示一条指定 SQL语句的执行计划。查看一条 SQL语句的执行计划是调整优化 SQL语句的第一步。这条被查询到执行计划的 SQL语句是通过语句的 HASH_VALUE和 ADDRESS列识别。分两步执行:
1.SELECT sql_text, address, hash_value FROM v$sql
WHERE sql_text like '%TAG%';
SQL_TEXT ADDRESS HASH_VALUE
-------- -------- ----------
82157784 1224822469
2.SELECT operation, options, object_name, cost FROM v$sql_plan
WHERE address = '82157784' AND hash_value = 1224822469;
OPERATION OPTIONS OBJECT_NAME COST
-------------------- ------------- ------------------ ----
SELECT STATEMENT 5
SORT
AGGREGATE
HASH JOIN 5
TABLE ACCESS FULL DEPARTMENTS 2
TABLE ACCESS FULL EMPLOYEES 2
转载:学习Oracle动态性能表-(4)-V$SESSTAT
按照 OracleOnlineBook中的描述, v$sesstat存储 session从 login到 logout的详细资源使用统计。
类似于 v$sysstat,该视图存储下列类别的统计:
l 事件发生次数的统计,如用户提交数。
l 数据产生,存取或者操作的 total列 (如: redo size)
l 执行操作所花费的时间累积,例如 session CPU占用 (如果 TIMED_STATISTICS值为 true)
注意:
如果初始参数 STATISTICS_LEVEL被设置为 TYPICAL或 ALL,时间统计被数据库自动收集如果 STATISTICS_LEVEL被设置为 BASIC,你必须设置 TIMED_STATISTICS值为 TRUE以打开收集功能。
如果你已设置了 DB_CACHE_ADVICE,TIMED_STATISTICS或 TIMED_OS_STATISTICS,或在初始参数文件或使用 ALTER_SYSTEM或 ALTER SESSION,那么你所设定的值的值将覆盖 STATISTICS_LEVEL的值。
v$sysstat和 v$sesstat差别如下:
n v$sesstat只保存 session数据,而 v$sysstat则保存所有 sessions的累积值。
n v$sesstat只是暂存数据, session退出后数据即清空。 v$sysstat则是累积的,只有当实例被 shutdown才会清空。
n v$sesstat不包括统计项名称,如果要获得统计项名称则必须与 v$sysstat或 v$statname连接查询获得。
v$sesstat可被用于找出如下类型 session:
n 高资源占用
n 高平均资源占用比 (登陆后资源使用率 )
n 默认资源占用比 (两快照之间 )
在 V$SESSTAT 中使用统计
多数 v$sesstat中的统计参考是 v$sysstat描述的子集,包括 session logical reads, CPU used by this session, db block changes, redo size, physical writes, parse count (hard), parse count (total), sorts (memory), and sorts (disk).
V$SESSTAT 常用列说明
n SID: session唯一 ID
n STATISTIC#:资源唯一 ID
n VALUE:资源使用
示例 1 :下列找出当前 session 中最高的 logical 和 Physical I/O 比率 .
下列 SQL语句显示了所有连接到数据库的 session逻辑、物理读比率 (每秒 )。 logical和 physical I/O比率是通过自登陆后的时间消耗计算得出。对于 sessions连接到数据库这种长周期操作而言也许不够精确,不过做个示例却足够了。
先获得 session逻辑读和物理读统计项的 STATISTIC#值:
SELECT name , statistic#
FROM V$STATNAME
WHERE name IN ( 'session logical reads' , 'physical reads' ) ;
NAME STATISTIC#
------------------------------ ----------
session logical reads 9
physical reads 40
通过上面获得的 STATISTIC#值执行下列语句:
SELECT ses.sid
, DECODE(ses.action,NULL,'online','batch') "User"
, MAX(DECODE(sta.statistic#,9,sta.value,0))
/greatest(3600*24*(sysdate-ses.logon_time),1) "Log IO/s"
, MAX(DECODE(sta.statistic#,40,sta.value,0))
/greatest(3600*24*(sysdate-ses.logon_time),1) "Phy IO/s"
, 60*24*(sysdate-ses.logon_time) "Minutes"
FROM V$SESSION ses
, V$SESSTAT sta
WHERE ses.status = 'ACTIVE'
AND sta.sid = ses.sid
AND sta.statistic# IN (9,40)
GROUP BY ses.sid, ses.action, ses.logon_time
ORDER BY
SUM( DECODE(sta.statistic#,40,100*sta.value,sta.value) )
/ greatest(3600*24*(sysdate-ses.logon_time),1) DESC;
SID User Log IO/s Phy IO/s Minutes
----- ------ -------- -------- -------
1951 batch 291 257.3 1
470 online 6,161 62.9 0
730 batch 7,568 43.2 197
2153 online 1,482 98.9 10
2386 batch 7,620 35.6 35
1815 batch 7,503 35.5 26
1965 online 4,879 42.9 19
1668 online 4,318 44.5 1
1142 online 955 69.2 35
1855 batch 573 70.5 8
1971 online 1,138 56.6 1
1323 online 3,263 32.4 5
1479 batch 2,857 35.1 3
421 online 1,322 46.8 15
2405 online 258 50.4 8
示例 2 :又例如通过 v$sesstat 和 v$statname 连接查询某个 SID 各项信息。
select a.*,b. name
from v$sesstat a,v$statname b
where a.sid= 10 and a.statistic#=b.statistic#;
(2)-v$mystat
本视图是 v$sesstat的一个子集,返回当前 session的统计项。当通过触发器审计 session资源使用,可以使用 v$mystat来捕获资源使用,这将比直接扫描 v$sesstat的列要节省资源的多。
发表评论
-
三大WEB服务器对比分析(apache ,lighttpd,nginx)
2012-11-07 14:42 1026一.软件介绍(apache lighttpd ngin ... -
apache+tomcat+jk1.2.18+lighttpd squid
2012-11-07 14:29 1021我这里主要是用lighttpd ... -
Oracle数据库 基础 创建数据库(手工脚本)
2012-11-02 17:10 903一、概念 一个Oracle数据库,最基本的构成(逻辑) ... -
apache tomcat 集群 分组
2012-11-01 03:09 1012对tomcat cluster集群配置中session复 ... -
MyEclipse 注册机 注册码 可用
2012-10-08 09:31 3import java.io.BufferedReade ... -
详解ORACLE数据库的分区表
2012-09-28 15:22 782引用:http://space.itpub ... -
web.xml文件中配置<mime-mapping>下载文件类型
2012-06-26 15:56 905TOMCAT在默认情况下下载.rar的文件是把文件当作t ... -
测试附件下载
2012-06-14 15:54 829测试 -
struts中#、%和$这三个符号的使用方法
2012-05-12 18:04 893转自:http://blog.sina.com.c ... -
node.js是什么,解决什么问题
2012-03-05 10:19 1103http://www.ibm.com/developerwor ... -
Java URLConnection 总结
2012-02-27 09:32 1042Java URLConnection 总 ... -
GA,RC,Beta,Release,Trial,Standard......等软件版本具体代表什么意思
2012-02-24 14:42 2110GA,RC,Beta,Release,Trial,Sta ... -
1.一天一点学习Linux
2011-07-04 16:13 847http://www.opsers.org/base/lear ... -
spring 参考手册
2011-07-04 14:44 824http://ajava.org/online/spring2 ... -
linux base
2011-07-01 10:50 549http://www.yesky.com/SoftChanne ... -
linux 软件通用安装
2011-07-01 10:14 692http://www.yesky.com/SoftChanne ... -
Java IO 的一般使用原则
2011-06-30 13:32 804Java IO 的一般使用原则: 一、按数据来源(去向) ... -
linux 重启服务 awk命令 kill系统服务
2011-06-29 14:56 1459[root@java-dev05 script]# more ... -
jquery + css
2011-06-28 12:40 777http://sd.csdn.net/a/20110620/3 ... -
java内存泄露
2011-06-21 17:29 802http://tech.it168.com/j/n/2007- ...
相关推荐
Oracle性能视图学习大全。很不错的学习资料
本文详细介绍oracle 动态性能视图,基本上涵盖了所有的视图
最完整的oracle动态性能视图详解,供DBA对数据库进行优化或者排错等很有好处,是oracle的老师给的哦~
oracle动态性能视图
数据字典视图和动态性能视图的区别 : a:数据字典视图名一般用复数,而动态性能视图名一般用单数,比如dba_tablepsaces vs v$tablespace。 b:数据字典视图只有在数据库opn的情况下才可以访问,而部分动态性能视图...
Oracle动态性能视图[收集].pdf
oracle九大性能视图,从这些视图中查找可供优化的信息,肯定让你收获不少哦,看看吧
Oracle动态性能视图,对学习oracle有非常好帮助。
本人自己总结的Oracle 10g数据库中与数据字典和动态性能视图有关的命令。
常用oracle视图 V$SESSION 在本视图中,每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR,LGWR,arcchiver等等。 V$SESSION中的常用列 V$SESSION是基础信息视图,用于找寻...
这些视图被称为动态性能视图,因为它们在数据库打开和使用时不断进行更新,而且它们的内容主要与性能有关。 虽然这些视图很像普通的数据库表,但它们不允许用户直接进行修改。这些视图提供内部磁盘结构和内存结构...
Oracle 动态性能视图
详细讲解了oracle主要的动态性能视图,值得评鉴
比较详细的介绍了Oracle的V$性能视图的使用方法及技巧。 摘要:高级DBA经常告诉刚刚入行的DBA,在Oracle 6年代,他们曾经将每一张V$视图烂熟于心。在Oracle 6中,仅仅只有23个V$视图,那时侯的DBA可以很轻松地使用...
Oracle数据库动态性能视图
对经常使用的动态性能视图进行的简单介绍,方便,实用
不错的优化资料,oracle最重要的9个动态性能视图!适合调优。
二、DBA最常用的动态性能视图 v$datafile:数据库使用的数据文件信息 v$librarycache:共享池中SQL语句的管理信息 v$lock:通过访问数据库会话,设置对象锁的所有信息 v$log:从控制文件中提取有关重做日志组的...