Monthly Archives: January 2011

AWR Report中的Execute to Parse

Execute to Parse的计算公式: 100 * (1 – Parses/Executions) = Execute to Parse 注意Parses包括了软解析和硬解析两部分 Parse次数统计: select name,value from v$sysstat where name = ‘parse count (total)’; Execution次数统计: select * from v$sysstat where name = ‘execute count’ EAGLE对这个参数也有比较详细的说明:Statspack之十一-Statspack报告各部分简要说明 个人认为提高这个指标的两个方法: 1、尽量使用软解析 2、合理设置session_cached_cursors session_cached_cursors的说明,摘自“参数session_cached_cursors的详细解释” “SESSION_CACHED_CURSORS,就是说的是一个session可以缓存多少个cursor,让后续相同的SQL语句不再打开游标,从而避免软解析的过程来提高性能。(绑定变量是解决硬解析的问题),软解析同硬解析一样,比较消耗资源.所以这个参数非常重要。 oracle有一个概念,那就是session cursor cache,中文描述就是有一块内存区域,用来存储关闭了的cursor。当一个cursor关闭之后,oracle会检查这个cursor的request次数是否超过3次,如果超过了三次,就会放入session cursor cache,这样在下次parse的时候,就可以从session cursor cache中找到这个statement, session cursor cache的管理也是使用LRU。session_cached_cursors这个参数是控制session cursor cache的大小的。session_cached_cursors定义了session cursor cache中存储的cursor的个数。这个值越大,则会消耗的内存越多。” 查询session [...]

oracle sga相关的查询语法

一、当前SGA的总体情况 select * from v$sgainfo; 二、当前SGA的详细信息 select * from v$sgastat 空闲的Shared Pool大小: select * from v$sgastat where pool = ‘shared pool’ and name = ‘free memory’ 三、SGA的变化记录 select * from v$sga_resize_ops 四、Library Cache的使用情况 select * from v$librarycache; 五、Data Dictionary的使用情况 select sum(gets), sum(getmisses), round(sum(getmisses) * 100 / sum(gets), 2 ) from v$rowcache; PS: 下面两个语句与我理想有一点偏差,需要再研究清楚 select sum(sharable_mem) [...]

[转载]Oracle性能监控用的Time Model说明

原文地址:DB time VS. DB CPU 摘录如下内容: 1. 数据库消耗的总时间包括background elapsed time + DB time,基本上在一个正常的系统中DB time要远远大于background elapsed time(指数据库后台进程消耗的时间,比如PMON进程本身)。2. DB time包含DB CPU + sql execute elapsed time + parse time elapsed + 其它的那些elapsed time,基本上一个正常的系统中,前三项占据了99%以上的DB time,而其中sql execute elapsed time又应该会在95%以上,但是值得注意的是DB CPU和sql execute elapsed time是有交集的,因此你会看到在一份AWR报告中有出现DB CPU + sql execute elapsed time超过100% DB time的情况。3. DB time是流逝的时间量(elapsed time),以微妙(microseconds)为单位,也就是百万分之一秒。在v$sys_time_model中的STAT_NAME是”DB time”。4. DB CPU是CPU运转的时间,不包含数据库进程在等待CPU的时间,同样以微妙(microseconds)为单位。在v$sys_time_model中的STAT_NAME是”DB CPU”。5. 我们在ASH报告中经常看到的’CPU [...]

oracle分析函数使用例子

一、创建表 create table SALES ( YEAR NUMBER, AMOUNT NUMBER, OFFICE VARCHAR2(10), SUB_OFFICE VARCHAR2(10) ) 二、按年度的销售额分析 select year 年份, amount 销量, rank()over (order by amount desc) 排名, lag(amount) over (order by year) 上年销量, lead(amount) over (order by year) 下年销量, sum(amount) over(order by year) 往年销量合计, round((ratio_to_report(amount) over()) * 100, 2) as 占比 from sales order by year 三、多维度汇总 [...]

查询长时间运行sql语句的进度

从文章 用Oracle的新特性优化SQL 学习的: SELECT SID, opname, TARGET, SOFAR, TOTALWORK, units, TIME_REMAINING, ELAPSED_SECONDSFROM V$SESSION_LONGOPSwhere sofar <> totalwork 从oracle 10g administration这本书里面看到,也可以用来查看data pump job的进展。

oracle测试中如何避免buffer cache的影响

以前想了很久没搞清楚,其实在10g里面是很简单的一个命令: alter system flush buffer_cache; 清空shared pool是一个相似的命令 alter system flush shared_pool; eygle的网站上有一个很详细的例子:Oracle HowTo:如何强制刷新Buffer Cache

oracle 10g administration读书笔记–查找最费时的sql语句

按总花费时间倒排的sql语句: select hash_value, executions,round(elapsed_time / 1000000,2) total_time,round(cpu_time / 1000000,2) cpu_seconds,sql_textfrom (select * from v$sql t order by t.ELAPSED_TIME desc); sql语句对应的执行计划: select * from v$sql_plan where hash_value = :hash_value

oracle 10g administration读书笔记–杀掉锁表的session

1、找出锁定表的session id select * from v$locked_object l, dba_objects o where l.object_id = o.object_id 2、找出session的SERIAL# select * from v$session where sid = :sid 3、杀掉session alter system kill session ‘sid, serial#’ immediate

Beyond Compare是个好工具

一、快速查看所有不同的文件 1、设置比较选项,默认为比较文件大小和时间戳。 2、展开所有子文件夹,选择仅显示的不同文件。 二、多种方式查看比较视图 三、实用的比较报告 Summer List报告的格式 Left Orphan Files Size Modified Right Orphan Files Size Modified Right Newer Files Size Modified Differences Files Size Modified 四、灵活的文件同步

检查xml文件有效性的两个小脚本

test_xml.js var x = new ActiveXObject(“MSXML2.DOMDocument”); var f = WScript.Arguments(0) if (!x.load(f)) WScript.Echo(f); test_xml.bat @echo offREM for /f %%i in (‘dir /b/s d:empweb*.xml’) do cscript //nologo d:test_xml.js %%ifor /r %1 %%i in (*.xml) do cscript //nologo d:test_xml.js %%i 注意事项: 1、bat文件里面for语句的循环变量,必须以%%打头,但是如果在命令行必须以%打头。 2、bat文件中使用%n引用命令行传递的参数。 3、for /f 和 for /r 都可以达到同样的目标,for /f 里面的命令必须用单引号括起来。