探究AWR 第二篇
在探究awr第一篇中介绍了awr的一些基本操作 http://blog.itpub.net/23718752/viewspace-1123134/在这一篇中,我们来分析几个awr报告来探究一下awr的一些信息,其实在报告中有很多的信息是互相印证的。对于我们深入理解awr报告还是很哟帮助的。首先来看看CPU负载的分析,这个也是理解awr的一个切入点。CPU资源的考虑...
使用shell脚本查看数据库负载情况(第二篇)
在之前写了一个shell脚本,能够得到一个基于时间点的数据库负载报告。使用shell脚本查看数据库负载情况 http://blog.itpub.net/23718752/viewspace-1168027/在生产环境中快照的生成频率可能10分钟或者半个小时就会生成,频率要快些,使用原先的脚本执行起来会有一定的延时。想查看在快照的时间间隔内数据库的负载...
通过sql语句分析足彩(第三篇)
在之前写过两片关于sql语句分析足彩的。都从不同的角度提供了一些思路,之前是基于500场比赛的数据分析,为了数据分析的更加有说服性,我抽取了7000多场比赛的数据来作为分析的基础。自己是在世界杯的时候开始买的,发现真是期望越大,失望越大.。来看看总体的比赛情况。从1月份开始到10月份,有大概7000多场比赛。我们...
聚簇因子和执行计划的联系
SQL> select *from t1 where rownum
关于等待事件"read by other session"
在查看数据库负载的时候,发现早上10点开始到12点的这两个钟头,系统负载异常的高。于是抓取了一个awr报告。Snap IdSnap TimeSessionsCursors/SessionBegin Snap:2402718-Dec-14 10:00:433065...
使用shell定制addm脚本
在10g开始推出的addm对于工作中的调优能够提供很多的帮助,而且建议也更加客观和全面。但是使用addmrpt.sql的时候还是有些慢,可以使用如下的脚本来定制addm,能够根据快照生成指定的addm报告。脚本的内容如下:相比于定制awr,ash要略微有一些难度。对于addm目前只提供了文本格式的内容,所以格式的处理上没什么特别的地...
简单实用的sql小技巧(第二篇)
ASCII和CHR在平时的工作中,可能会在sql或者pl/sql块中嵌入特殊字符,比如空格,回车之类。这个时候可以使用ascii和chr来做字符和ascii码的转换。比如我们想得到字母a对应的ascii码,可以使用ascii来实现。SQL> select ascii('a') from dual;ASCII('A')---------- 97如果反推,需要...
关于reset sequence
sequence在工作中使用比较频繁,对于Insert中插入的值,如果只需要它能够自动递增,这个时候sequence就派上用场了。但是既然sequence的值需要递增就有可能会达到最大值。比如sequence从1开始递增,递增幅度为1,最大值为100,那么很快就会达到最大值。我们可以指定sequence的值。这个时候可以使用删除,重建的方式,但是这种...
关于long类型的转换
在oracle中对于long类型的处理时很纠结的。最开始引入这个数据类型的时候是对原有数据类型的补充,但是后面发现还是碰到了一些问题,使用Lob类型代替了。但是long类型从兼容性上来说还得支持,而且从数据库的数据字典中还是能够看到Long类型的影子。比如我们想查看一个表中某个列的默认值情况,可以查询user_tab_cols,或者...
关于索引的内部信息
在oracle中对于索引的存储都是采用B树索引来实现。B树索引是比较成熟的一种数据存储结构,在很多的软件中都有大量的应用,oracle中也不例外。因为B树索引是树形结构。存储的时候也是带枝带叶的。简单来说,索引就像文章里的目录,字典中的词条检索项。索引分为根节点,分支节点和叶子节点。这种结构对应生活中的树来说明就...
关于索引扫描的极速调优实战(第二篇)
在上一篇http://blog.itpub.net/23718752/viewspace-1364914/ 中我们大体介绍了下问题的情况,已经初步根据awr能够抓取到存在问题的sql语句。这条sql语句执行很频繁,目前平均执行时间在0.5秒。开发部门希望我们能不能做点优化,他们也在同时想办法从业务上来优化这个问题。从0.5秒的情况下,能够再提高很多,是得费很大力...
关于索引扫描的极速调优实战(第一篇)
一般在生产环境中,如果某个查询中涉及一个大表,走索引扫描是显然是最值得推荐的方式,但是索引扫描有unique index scan, range scan,skip scan, full scan, fast full scan,这些索引扫描看起来好像很繁杂,但是如果掌握得当,却能够在索引扫描的基础上极速提升性能。关于索引扫描的方式,可以参考。http://blog.itpub.net...
关于索引和空值的讨论
在日常的工作中,空值总是有特殊的身份,对于它的处理有时候也是比较纠结。有时候创建索引的时候会因为空值出现一些奇怪的结果。有时候一个简单的查询因为空值却走不了索引。有时候却因为空值而能走索引。我们来简单的模拟一下这些问题。首先创建一个空表,注意对于id列我们是加了not null的约束的。SQL> crea...
关于生产系统锁问题的排查
今天生产系统中的一个daemon出现了严重的数据处理延迟,客户需要我们立即给出处理的方案。在综合评估之后,为了不保证在线业务延迟,开发部门给出了临时的解决意见。先停掉了一个应用,然后重启之后那个daemon就没有问题了。等我连上系统,这个问题已经不存在了,但是还是要提供一些更加详细的信息来进一步诊断这个问题。...
通过shell脚本查看锁信息
在生产环境维护中,如果碰到较长时间的锁等待,很可能会造成各种可能的问题。我们可以使用如下的脚本来实时监控锁的情况。sqlplus -S $DB_CONN_STR@$SH_DB_SID
使用awr来分析session leak问题
awr是生产环境中排查问题的利器,但是有一些问题是awr定位不了的。不如session leak的问题,因为v$session中的数据是实时改变的,一来awr生成快照的频率也有限,二来如果session leak的问题发生,但是系统资源消耗不高,awr也不一定能够马上定位出问题所在。对于session leak的问题,当发生问题的时候,等我们连到系统中的...
通过pl/sql计算程序的运行时间
在sqlplus中运行sql语句或者pl/sql的时候如果需要统计运行的时间,只需要开启set timing on选项即可。SQL> set timing onSQL> SQL> select count(*)from cat; COUNT(*)---------- 408Elapsed: 00:00:00.15如果在运行pl/sql的时候如果需要计算程序运行的时间...
操作系统存储管理和oracle数据库(第一篇)
在上大学的时候,学习操作系统感觉特别枯燥,都是些条条框框的知识点,感觉和实际的关联不大。发现越是工作以后,在工作中越想深入了解,发现操作系统越发的重要。像现在的RHCE市场反响不错,如果想深入地学习,就有很多操作系统的知识需要补补。在实践中结合理论还是不错的一种学习方法。自从接触数据库以后,越来越感觉到...
关于不可见索引的学习
不可见索引在日常工作中可能实用比较少,自己体验了一把,还是比较实用的功能,在平时的工作中不妨尝试一下。我们来先体验一下,然后再细细的总结一下。测试环境基于11gR2> sqlplus -vSQL*Plus: Release 11.2.0.2.0 Production我们先来创建一个表来看看,然后创建一个不可见索引,来看看索引的访问情况。create tabl...
关于pl/sql中的绑定变量
在看关于shared pool的文档时,必定会提到绑定变量,也能够通过几个简单的例子对绑定变量带来影响有深刻的认识,但是在工作中,可能有时候我们就忘了绑定变量的影响了,其实有时候一个很小的变动就会导致性能几十几百倍的提升。简单用跟一个实例来说明。我们先清空shared pool,排除其它的运行语句带来的影响。SQL>alter...