Oracle 表连接
Oracle 表连接
orale查看执行计划--实战
1.列计划.txt2.sql_trace.txt3.auto_trace.txt4.通过包来查看执行计划.txt
监控Oracle索引是否被使用?
开发人员提出:需要对之前的索引监控 然后找出没用的索引 找时间删除 从而减少未用索引占用空间 提高DML效率此文只是 监控索引 对监控结果 需要进行统计分析 然后可以考虑先unusable 索引 观察一段时间 再drop index
通过shell脚本定位性能sql和生成报告
oracle的sql monitor是一个很有用的工具集。但是通过sql命令和反复去调用dbms_tune来传入参数等等操作感觉挺费事的。可以通过如下的脚本来定位sql monitor中的性能sql,发现一些潜在的性能问题。这个脚本可以定位正在sql monitor监控范围内的sql语句。MONITOR_OWNER=`sqlplus -silent $DB_CONN_STR@$SH_DB_SID <<ENDse...
关于抓取session信息的一个脚本
关于session的诊断,可以基于动态性能视图,ash,awr..自己也写过一些简单的脚本,在平时的工作中也能够完成一些基本的工作。今天在看taner分享的脚本snapper的时候,让自己眼前一亮,也发现自己存在着很多的不足的地方。可以从脚本中看到他孜孜不倦的分享着自己的心得,而且自己也写了一些更加深入的一些工具集来解析orac...
多行数据的批处理之bulk collect
在写pl/sql的时候,很多时候都会用比较经典的模式,定义一个游标cursor,然后循环从游标中取值进行处理。类似下面的格式declarecursor xxxx is xxxxx;beginloop cur in xxxxx loopxxxxxend loop;end;/如果cursor中包含的数据太多的时候,可能会有性能问题,性能的考虑主要在于pl/sql引擎和sql引擎的切换,和编...
关于enq: TX - allocate ITL entry的问题分析
今天发现系统在下午1点左右的时候负载比较高,就抓取了一个最新的awr报告.Snap IdSnap TimeSessionsCursors/SessionBegin Snap:2089226-Nov-14 13:20:1736235.4...
使用shell脚本查看数据库负载情况(第二篇)
在之前写了一个shell脚本,能够得到一个基于时间点的数据库负载报告。使用shell脚本查看数据库负载情况 http://blog.itpub.net/23718752/viewspace-1168027/在生产环境中快照的生成频率可能10分钟或者半个小时就会生成,频率要快些,使用原先的脚本执行起来会有一定的延时。想查看在快照的时间间隔内数据库的负载...
通过shell绑定系统进程调优
数据库的性能调优,需要基于操作系统的性能指标,如果操作系统级发生了一些状况,那么会潜移默化的影响到数据库层面。而数据库中对应的进程和操作系统级也有一定的映射关系,在专有服务器模式下大体如此。有时候如果你注意到操作系统级有一些进程消耗资源高,那么很可能这个进程对应的数据库进程存在潜在的问题,这种方法...
通过shell脚本来得到不稳定的执行计划
生产系统中总是可能碰到各种各样的sql问题,其中大部分问题都和执行计划有关,执行计划出现问题有很多原因导致,比如统计信息过旧,比如数据的分布极不均匀等等都会导致执行计划出现很大的偏差。可能有的sql语句在一周时间内,有一天执行只需要5秒,过了几天之后却需要几个小时,这种执行计划时需要格外重视的,这种问题目...
delete相关的pl/sql调优
今天开发找到我,说有个问题想征求一下我的意见。问题的大体意思是,对目前环境中的两个表,我们就叫做表a,表b吧,他说根据一个时间字段去判断是否为5天前的记录,但是这个字段不是索引列字段。想问我是否需要添加索引会能极大地提高性能。对于这个问题没有肯定的回答,还是取决于数据和表的特性,首先我看了下...
基于DB time的调优分析
继昨天使用DB time能够快速灵活的定位sql语句之后,发现分析问题更快捷,高效了。今天就牛刀小试,把一个数据库从500%的负载调到不到100%的负载。前提是确实有可提升可改进的空间。首先查看了在快照57611的时间段里DB time很快,也收到了zabbix的邮件通知,
oracle使用profiler分析语句执行效率
profiler 从时间上分析sql语句,寻找效率较差的地方,便于优化
Oracle的pipelined函数实现高性能大数据处理
原文地址:http://mikixiyou.iteye.com/blog/1673672 在plsql开发中,会涉及到一些大数据量表的数据处理,如将某记录数超亿的表的记录经过处理转换插入到另外一张或几张表。 常规的操作方法固然可以实现,但时间、磁盘IO、redo日志等等都非常大。Oracle 提供了一种高级函数,可以将这种数据处理的性能提升到极限。这种函...
sql monitor的使用(一)
在sql调优中,对于sql语句的实时监控显得尤为重要,如果某条sql语句的性能比较差。可能从前端的直观感觉就是执行时间比较长。对于dba来说,可能关注的相关因素需要多一些.1)可以通过top命令来监控sql的性能情况,查看cpu使用率较高的oracle process,然后通过查看session和process得绑定得到对应的session,然后得到对应的...
通过shell定制dbms_advisor.quick_tune
在平时的调优工作中,在11g中的新特性sql monitor可以极大的简化性能监控的工作,对于执行时间超过5秒的sql语句都会记入v$sql_monitor中。但是如果某个sql语句还没有执行,或者执行时间已经是几天前了,等发现性能问题进行调优的话就会比较困难,采用dbms_advisor.quick_tune是一个不错的选择。如果sql语句比较庞大,比较迷...
使用sqlt手工创建sql_profile
在生产环境中有一些sql语句出现问题,大多是一些很紧急的问题,可能有些sql语句出现了执行计划的问题,通过hint能够做很大的改进,但是如果想让变更尽快生效,可以使用sql_profile来实现。说起sql_profile的创建有两种方式,一种是自动,通过sql tuning的功能能够得到一些建议,会自动生成sql_profile,只需要启用即可,如...
Oracle 查询转换初探
Oracle查询转换器的作用是把原始sql重写为语义相同的语句,目的是为了获得更高效的sql。查询转换主要有四种技术:子查询展开,视图合并,谓词推入,星型转换。了解查询转换是掌握SQL优化的基础,本文将对这四种技术做一些简单的介绍。
Oracle DBMS_STATS.SET_TABLE_STATS 模拟大数据量进行 SQL 调试和优化
生产上有一张 200 万条的表,需要进行 SQL 优化;测试环境中的这张表,里面只有 10 万行的数据。不需要真正插入 190 万条的数据,可以通过DBMS_STATS.SET_TABLE_STATS 这个包进行表统计信息的设置,来模拟大数据量的场景。首先,对测试环境的这张表进行统计信息收集,以得到准确的统计信息BEGIN DBMS_STA...
merge语句导致的CPU使用率过高的优化(二)
之前分享过一篇关于merge语句导致的CPU使用率过高优化的案例。的http://blog.itpub.net/23718752/viewspace-1819471/后续的跟进没有补充,也“秀”一张图,红色的火焰是原来的系统负载,右边的部分是最近的逻辑读情况,不过惭愧的是,这个不是优化的效果,因为应用的高峰期已经处理完了,后面的sql调用频率极低,所以感觉...