Oracle 性能相关常用脚本(SQL)
在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考。以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整。
1、寻找最多BUFFER_GETS开销的SQL 语句
- --filename: top_sql_by_buffer_gets.sql
- --Identify heavy SQL (Get the SQL with heavy BUFFER_GETS)
- SET LINESIZE 190
- COL sql_text FORMAT a100 WRAP
- SET PAGESIZE 100
- SELECT *
- FROM ( SELECT sql_text,
- sql_id,
- executions,
- disk_reads,
- buffer_gets
- FROM v$sqlarea
- WHERE DECODE (executions, 0, buffer_gets, buffer_gets / executions) >
- (SELECT AVG (DECODE (executions, 0, buffer_gets, buffer_gets / executions))
- + STDDEV (DECODE (executions, 0, buffer_gets, buffer_gets / executions))
- FROM v$sqlarea)
- AND parsing_user_id != 3D
- ORDER BY 5 DESC) x /*更正@20140613,原来为order by 4,感谢网友lmalds指正*/
- WHERE ROWNUM <= 10;
2、寻找最多DISK_READS开销的SQL 语句
- --filename:top_sql_disk_reads.sql
- --Identify heavy SQL (Get the SQL with heavy DISK_READS)
- SET LINESIZE 190
- COL sql_text FORMAT a100 WRAP
- SET PAGESIZE 100
- SELECT *
- FROM ( SELECT sql_text,
- sql_id,
- executions,
- disk_reads,
- buffer_gets
- FROM v$sqlarea
- WHERE DECODE (executions, 0, disk_reads, disk_reads / executions) >
- (SELECT AVG (DECODE (executions, 0, disk_reads, disk_reads / executions))
- + STDDEV (DECODE (executions, 0, disk_reads, disk_reads / executions))
- FROM v$sqlarea)
- AND parsing_user_id != 3D
- ORDER BY 4 DESC) x /* 更正@20140613,原来为order by 3,谢谢网友lmalds指正*/
- WHERE ROWNUM <= 10;
3、寻找最近30分钟导致资源过高开销的事件
- --filename:top_event_in_30_min.sql
- --Last 30 minutes result those resources that are in high demand on your system.
- SET LINESIZE 180
- COL event FORMAT a60
- COL total_wait_time FORMAT 999999999999999999
- SELECT active_session_history.event,
- SUM (
- active_session_history.wait_time
- + active_session_history.time_waited)
- total_wait_time
- FROM v$active_session_history active_session_history
- WHERE active_session_history.sample_time BETWEEN SYSDATE - 60 / 2880
- AND SYSDATE
- AND active_session_history.event IS NOT NULL
- GROUP BY active_session_history.event
- ORDER BY 2 DESC;
4、查找最近30分钟内等待最多的用户
- --filename:top_wait_by_user.sql
- --What user is waiting the most?
- SET LINESIZE 180
- COL event FORMAT a60
- COL total_wait_time FORMAT 999999999999999999
- SELECT ss.sid,
- NVL (ss.username, 'oracle') AS username,
- SUM (ash.wait_time + ash.time_waited) total_wait_time
- FROM v$active_session_history ash, v$session ss
- WHERE ash.sample_time BETWEEN SYSDATE - 60 / 2880 AND SYSDATE AND ash.session_id = ss.sid
- GROUP BY ss.sid, ss.username
- ORDER BY 3 DESC;
5、查找30分钟消耗最多资源的SQL语句
- --filename:top_sql_by_wait.sql
- -- What SQL is currently using the most resources?
- SET LINESIZE 180
- COL sql_text FORMAT a90 WRAP
- COL username FORMAT a20 WRAP
- SET PAGESIZE 200
- SELECT *
- FROM ( SELECT sqlarea.sql_text,
- dba_users.username,
- sqlarea.sql_id,
- SUM (active_session_history.wait_time + active_session_history.time_waited)
- total_wait_time
- FROM v$active_session_history active_session_history, v$sqlarea sqlarea, dba_users
- WHERE active_session_history.sample_time BETWEEN SYSDATE - 60 / 2880 AND SYSDATE
- AND active_session_history.sql_id = sqlarea.sql_id
- AND active_session_history.user_id = dba_users.user_id
- GROUP BY active_session_history.user_id,
- sqlarea.sql_text,
- sqlarea.sql_id,
- dba_users.username
- ORDER BY 4 DESC) x
- WHERE ROWNUM <= 11;
6、等待最多的对象
- --filename:top_object_by_wait.sql
- --What object is currently causing the highest resource waits?
- SET LINESIZE 180
- COLUMN OBJECT_NAME FORMAT a30
- COLUMN EVENT FORMAT a30
- SELECT dba_objects.object_name,
- dba_objects.object_type,
- active_session_history.event,
- SUM (active_session_history.wait_time + active_session_history.time_waited) ttl_wait_time
- FROM v$active_session_history active_session_history, dba_objects
- WHERE active_session_history.sample_time BETWEEN SYSDATE - 60 / 2880 AND SYSDATE
- AND active_session_history.current_obj# = dba_objects.object_id
- GROUP BY dba_objects.object_name, dba_objects.object_type, active_session_history.event
- ORDER BY 4 DESC;
7、寻找基于指定时间范围内的历史SQL语句
- --注该查询受到awr快照相关参数的影响
- -- filename:top_sql_in_spec_time.sql
- --Top SQLs Elaps time and CPU time in a given time range..
- --X.ELAPSED_TIME/1000000 => From Micro second to second
- --X.ELAPSED_TIME/1000000/X.EXECUTIONS_DELTA => How many times the sql ran
- SET PAUSE ON
- SET PAUSE 'Press Return To Continue'
- SET LINESIZE 180
- COL sql_text FORMAT a80 WRAP
- SELECT sql_text,
- dhst.sql_id,
- ROUND (x.elapsed_time / 1000000 / x.executions_delta, 3) elapsed_time_sec,
- ROUND (x.cpu_time / 1000000 / x.executions_delta, 3) cpu_time_sec,
- x.elapsed_time,
- x.cpu_time,
- executions_delta AS exec_delta
- FROM dba_hist_sqltext dhst,
- ( SELECT dhss.sql_id sql_id,
- SUM (dhss.cpu_time_delta) cpu_time,
- SUM (dhss.elapsed_time_delta) elapsed_time,
- CASE SUM (dhss.executions_delta) WHEN 0 THEN 1 ELSE SUM (dhss.executions_delta) END
- AS executions_delta
- FROM dba_hist_sqlstat dhss
- WHERE dhss.snap_id IN
- (SELECT snap_id
- FROM dba_hist_snapshot
- WHERE begin_interval_time >= TO_DATE ('&input_start_date', 'YYYYMMDD HH24:MI')
- AND end_interval_time <= TO_DATE ('&input_end_date', 'YYYYMMDD HH24:MI'))
- GROUP BY dhss.sql_id) x
- WHERE x.sql_id = dhst.sql_id
- ORDER BY elapsed_time_sec DESC;
8、寻找基于指定时间范围内及指定用户的历史SQL语句
- --注该查询受到awr快照相关参数的影响
- --Author : Robinson
- --Blog : http://blog.csdn.net/robinson_0612
- SELECT DBMS_LOB.SUBSTR (sql_text, 4000, 1) AS sql,
- ROUND (x.elapsed_time / 1000000, 2) elapsed_time_sec,
- ROUND (x.cpu_time / 1000000, 2) cpu_time_sec,
- x.executions_delta AS exec_num,
- ROUND ( (x.elapsed_time / 1000000) / x.executions_delta, 2) AS exec_time_per_query_sec
- FROM dba_hist_sqltext dhst,
- ( SELECT dhss.sql_id sql_id,
- SUM (dhss.cpu_time_delta) cpu_time,
- SUM (dhss.elapsed_time_delta) elapsed_time,
- CASE SUM (dhss.executions_delta) WHEN 0 THEN 1 ELSE SUM (dhss.executions_delta) END
- AS executions_delta
- --DHSS.EXECUTIONS_DELTA = No of queries execution (per hour)
- FROM dba_hist_sqlstat dhss
- WHERE dhss.snap_id IN
- (SELECT snap_id
- FROM dba_hist_snapshot
- WHERE begin_interval_time >= TO_DATE ('&input_start_date', 'YYYYMMDD HH24:MI')
- AND end_interval_time <= TO_DATE ('&input_end_date', 'YYYYMMDD HH24:MI'))
- AND dhss.parsing_schema_name LIKE UPPER ('%&input_username%')
- GROUP BY dhss.sql_id) x
- WHERE x.sql_id = dhst.sql_id
- ORDER BY elapsed_time_sec DESC;
9、SQL语句被执行的次数
- --exe_delta表明在指定时间内增长的次数
- -- filename: sql_exec_num.sql
- -- How many Times a query executed?
- SET LINESIZE 180
- SET VERIFY OFF
- SELECT TO_CHAR (s.begin_interval_time, 'yyyymmdd hh24:mi:ss'),
- sql.sql_id AS sql_id,
- sql.executions_delta AS exe_delta,
- sql.executions_total
- FROM dba_hist_sqlstat sql, dba_hist_snapshot s
- WHERE sql_id = '&input_sql_id'
- AND s.snap_id = sql.snap_id
- AND s.begin_interval_time > TO_DATE ('&input_start_date', 'YYYYMMDD HH24:MI')
- AND s.begin_interval_time < TO_DATE ('&input_end_date', 'YYYYMMDD HH24:MI')
- ORDER BY s.begin_interval_time;
- 转:http://blog.csdn.net/leshami/article/details/8904804
Oracle 性能相关常用脚本(SQL)的更多相关文章
- SqlServer和Oracle中一些常用的sql语句9 SQL优化
--SQL查询优化 尽量避免使用or,not,distinct运算符,简化连接条件 /*Or运算符*/ use db_business go select * from 仓库 where 城市='北京 ...
- SqlServer和Oracle中一些常用的sql语句10 特殊应用
--482, ORACLE / SQL SERVER --订购数量超过平均值的书籍 WITH Orders_Book AS ( SELECT Book_Name, SUM(Qty) Book_Qty ...
- SqlServer和Oracle中一些常用的sql语句3 行列转换
--217, SQL SERVER SELECT Cust_Name , MAX(CASE WHEN Order_Date ='2009-08-01' THEN AR END) "2009- ...
- SqlServer和Oracle中一些常用的sql语句5 流程控制语句
--在sql语句中 begin...end 用来设定一个程序块 相关于c#中的{} declare @yz real,@w int --声明变量 set @w=120 --为变量赋值 if @w< ...
- 常用脚本--SQL Server获取OS日志
--=================================================== --SQL Server获取OS日志: ), ), ), ) select @start_d ...
- SqlServer和Oracle中一些常用的sql语句6 存储过程
--不带参数的存储过程 CREATE procedure proc_sql1 as begin declare @i int set @i=0 while @i<26 begin print c ...
- SqlServer和Oracle中一些常用的sql语句7 游标
declare db_cursor4 scroll cursor for select * from 供应商 --声明游标 open db_cursor4 --打开游标 fetch first fro ...
- SqlServer和Oracle中一些常用的sql语句8 触发器和事务
--创建和执行事后触发器 --更新仓库备份表中记录时自动创建数据表且插入三条记录 create trigger db_trigger1 on 仓库备份 for update as begin if E ...
- SqlServer和Oracle中一些常用的sql语句4 局部/全局变量
--把wh1仓库号中姓名含有"平"字的职工工资在原来的基础上加288 update 职工备份 set 工资=工资+288 where 仓库号='wh1' and 姓名 like ' ...
随机推荐
- mysql之select(一)
select 初始准备工作: 1.建木瓜库并选中 create database mugua; use mugua; 2.创建商品表.栏目表.品牌表 create table goods ( good ...
- linux下ssh/scp无密钥登陆方法
一.双方机器都是root用户登陆方法 A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A ...
- lintcode:数字组合III
数字组合III 组给出两个整数n和k,返回从1......n中选出的k个数的组合. 您在真实的面试中是否遇到过这个题? Yes 样例 例如 n = 4 且 k = 2 返回的解为: [[2,4],[3 ...
- 545E. Paths and Trees
题目链接 题意:给定一个无向图和一个点u,找出若干条边组成一个子图,要求这个子图中u到其他个点的最短距离与在原图中的相等,并且要求子图所有边的权重之和最小,求出最小值并输出子图的边号. 思路:先求一遍 ...
- Delphi动态事件深入分析(对象方法在调用的时候会传递一个隐含的Self指针,而该指针的值在EAX中。即左边第一个参数)
Delphi动态事件深入分析 2009-2-7 作者:不得闲核心提示:本实验证明了在类中方法的调用时候,所有的方法都隐含了一个Self参数,并且该参数作为对象方法的第一个参数传递... 首先做一个空窗 ...
- WordPress主题制作教程7:引用其他php的方法
在模板中包含指定的模板文件,指定{slug}和{name}就可以包含文件{slug}-{name}.php,如果没有这个文件则包含{slug}.php文件 <?php get_template_ ...
- Awstats分析Nginx日志
1.nginx日志格式设定 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$ ...
- jquery的extend和fn.extend的使用说明
jQuery.fn.extend(object); 对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”.jQuery类的实例可以使用这个“成员函数”. jQuery为开发 ...
- Sails 自定义 model 方法
Sails 自定义 model 方法 在 Sails 中 model 提供了一些原生的静态方法,如 .create(), .update(), .destroy(), .find(), 等. 在实际业 ...
- QT 实现彩色图亮度均衡,RGB和HSI空间互相转换
从昨天折腾到今天.再折腾下去我都要上主楼了 大致和灰度图均衡是一样的,主要是不能像平滑什么的直接对R,G,B三个分量进行.这样出来的图像时没法看的.因此我们要对亮度进行均衡.而HSI彩色空间中的分量 ...