oracle 定位热块和热链的方法
定位热链的方法
declare
v_num number;
begin
for i in
1..1000000
loop
select sal into
v_num
from emp
where
ename='SMITH';
end loop;
end;
/
declare
v_num number;
begin
for i in
1..1000000
loop
select sal into
v_num
from emp
where
ename='KING';
end loop;
end;
/
declare
v_num number;
begin
for i in
1..1000000
loop
select sal into
v_num
from emp
where
ename='SCOTT';
end loop;
end;
/
一.获取当前系统等待事件
select event, count(*) from v$session
where wait_class
<> 'Idle' group by event order by 2;
EVENT
COUNT(*)
----------------------------------------------------------
----------
SQL*Net message to client 1
latch: cache buffers
chains 1
二.获取哪些活跃会话正在处于latch: cache buffers chains
select
sid,username,event,p1raw,sql_id,logon_time,last_call_et
from v$session where
event='latch: cache buffers chains' and status='ACTIVE'
SYS@ora10g> /
SID USERNAME EVENT P1RAW SQL_ID LOGON_TIM
LAST_CALL_ET
----------- ---------------- ------------------------------
------------------------------ ------------- --------- ------------
138
SCOTT latch: cache buffers chains 0000000082FED878 766dr19szth9c
07-OCT-14 18
140 SCOTT latch: cache buffers chains
0000000082E3FCC0 5mmqfh10738vp 07-OCT-14 15
三.确认等待的P1RAW是否出现很多是相同的.
SYS@ora10g>
l
1 select sid,p1raw,p2,p3,seconds_in_wait,wait_time,state from
v$session_wait
2* where event='latch: cache buffers chains' order by
3,2
SYS@ora10g> /
SID P1RAW P2 P3 SECONDS_IN_WAIT WAIT_TIME STATE
-----------
---------------- ---------- ---------- --------------- ----------
-------------------
140 0000000082E3FCC0 122 1 15 10 WAITED KNOWN
TIME
138 0000000082E3FCC0 122 0 3 -1 WAITED SHORT TIME
四.找出这个latch管理的对象.
关注TCH值
SYS@ora10g> undefine latch_addr
SYS@ora10g> l
select
a.hladdr,a.file#,a.dbablk,a.tch,a.obj,b.object_name from x$bh a, dba_objects
b
where (a.obj = b.object_id or a.obj = b.data_object_id) and a.hladdr =
'&&latch_addr'
union select hladdr,file#,dbablk,tch,obj,null from
x$bh
where obj in (select obj from x$bh where hladdr = '&latch_addr'
minus select object_id from dba_objects
minus select
data_object_id from dba_objects) and hladdr = '&latch_addr' order by 4
SYS@ora10g> /
Enter value for latch_addr:
0000000082E3FCC0
HLADDR FILE# DBABLK TCH OBJ OBJECT_NAME
----------------
---------- ---------- ---------- ----------
------------------------------
0000000082E3FCC0 1 55349 0 92
DEPENDENCY$
0000000082E3FCC0 2 1662 1 4294967295
0000000082E3FCC0
3 963 1 3709 WRI$_ADV_RATIONALE_PK
0000000082E3FCC0 3
4835 1 9246
0000000082E3FCC0 3 5068 1 51296
ORDER_ITEMS
0000000082E3FCC0 3 5068 1 51296
WRH$_PARAMETER
0000000082E3FCC0 4 17383 1 52516
O1
0000000082E3FCC0 4 39306 1 52516 O1
0000000082E3FCC0 4
60530 1 52516 O1
0000000082E3FCC0 4 60763 1 52516
O1
0000000082E3FCC0 4 60996 1 52516 O1
0000000082E3FCC0 4
61229 1 52516 O1
0000000082E3FCC0 4 64868 1 52516
O1
0000000082E3FCC0 4 65101 1 52516 O1
0000000082E3FCC0 4
65334 1 52516 O1
0000000082E3FCC0 4 65567 1 52516
O1
0000000082E3FCC0 4 69206 1 52516 O1
0000000082E3FCC0 4
69439 1 52516 O1
0000000082E3FCC0 4 69672 1 52516
O1
0000000082E3FCC0 4 69905 1 52516 O1
0000000082E3FCC0 4
70138 1 52516 O1
0000000082E3FCC0 3 23119 39 49873
SYS_IOT_OVER_49872
0000000082E3FCC0 4 31 411 51151 EMP
23 rows selected.
五.根据sql_id获取到相应SQL.结合SQL中的对象.结合上面的TCH值进一步判断热块.
SYS@ora10g> select executions,sql_text from
v$sqlarea where sql_id in ('766dr19szth9c','5mmqfh10738vp');
EXECUTIONS SQL_TEXT
----------
------------------------------------------------------------
7000000
SELECT SAL FROM EMP WHERE ENAME='KING'
45374216 SELECT SAL FROM EMP WHERE
ENAME='SCOTT'
六.复杂SQL,太多表关联,要依据执行计划来判断.
定位热块的方法
latch: buffer busy waits 等待事件
原因:
热块 修改导致
declare
v_num number;
begin
for i in 1..1000000
loop
select sal into v_num
from emp
where
ename='SMITH';
update emp set sal=sal+0
where
ename='SMITH';
commit;
end loop;
end;
/
declare
v_num number;
begin
for i in 1..1000000
loop
select sal into v_num
from emp
where
ename='KING';
update emp set sal=sal+0
where
ename='KING';
commit;
end loop;
end;
/
declare
v_num number;
begin
for i in 1..1000000
loop
select sal into v_num
from emp
where
ename='SCOTT';
update emp set sal=sal+0
where
ename='SCOTT';
commit;
end loop;
end;
/
SYS@ora10g> select event, count(*)
from v$session where wait_class <> 'Idle' group by event order by 2;
SYS@ora10g> /
EVENT
COUNT(*)
----------------------------------------------------------
----------
log file switch (checkpoint incomplete) 1
SQL*Net
message to client 1
buffer busy waits 2
SYS@ora10g> select
sid,username,event,p1,p2,p3,sql_id,logon_time,last_call_et
from v$session
where event='buffer busy waits' and status='ACTIVE'
SYS@ora10g> /
SID USERNAME EVENT P1 P2 P3 SQL_ID LOGON_TIM
LAST_CALL_ET
----------- ---------------- ------------------------------
---------- ---------- ---------- ------------- --------- ------------
138
SCOTT buffer busy waits 4 32 1 dh3kc1jqtnxw5
07-OCT-14 249
140 SCOTT buffer busy waits 4 32 1
71ssxfx45kyrh 07-OCT-14 246
158 SCOTT buffer busy waits
4 32 1 5vcss49awm6fn 07-OCT-14 252
SELECT owner , segment_name , segment_type
FROM
dba_extents
WHERE file_id = &FileNumber
AND &BlockNumber
BETWEEN block_id AND block_id + blocks -1
SYS@ora10g> /
Enter value for filenumber:
4
old 3: WHERE file_id = &FileNumber
new 3: WHERE file_id =
4
Enter value for blocknumber: 32
old 4: AND &BlockNumber BETWEEN
block_id AND block_id + blocks -1
new 4: AND 32 BETWEEN block_id AND
block_id + blocks -1
OWNER SEGMENT_NAME SEGMENT_TYPE
------------
------------------------- ------------------
SCOTT EMP TABLE
SYS_S:191_P:5773_ora11g> select * from v$waitstat order by 1;
CLASS COUNT TIME
------------------ ---------- ----------
1st
level bmb 0 0
2nd level bmb 0 0
3rd level bmb
0 0
bitmap block 0 0
bitmap index block 0
0
data block 0 0
extent map 0 0
file header
block 60 240
free list 0 0
save undo block
0 0
save undo header 0 0
segment header 0
0
sort block 0 0
system undo block 0 0
system
undo header 0 0
undo block 0 0
undo header
1 0
unused 0 0
18 rows selected.
oracle 定位热块和热链的方法的更多相关文章
- 读取模式下cbc latch的事件模拟(热块竞争和热链竞争)-P62
文章目录 1. 背景 2. 过程 2.1 热块竞争 2.1.1 版本11.2.0.1.0 2.1.1.1 session 1(sid:34) 2.1.1.2 session 2(sid:35) 2.1 ...
- cache buffers chains以及热块解决方案
cache buffers chains以及热块解决方案 今天是2013-10-10,今天下午我调休了,中午饭过后从14点一直睡到16点,这种感觉真爽. 之前学习过关于buffer cache的ca ...
- 消除热块(hot block)
上篇日志提到了,那么高的负载,是存在数据块读竞争,下面介绍几个方法来消除块竟争 查找块竟争 SELECT p1 "file#", p2 "block#", p3 ...
- 12 oracle 数据库坏块--物理坏块-ORA-01578/ORA-01110
oracle 数据库坏块--物理坏块 数据坏块的类型物理坏块:通常是由于硬件损坏如磁盘异常导致.内存有问题.存储链有问题. IO有问题.文件系统有问题. Oracle本身的问题等逻辑坏块:可能都是软件 ...
- Oracle数据库坏块的恢复
模拟数据块坏块: 对于发生数据块不一致的数据块,如果当前数据库有备份且处于归档模式,那么就可以利用rman工具数据块恢复功能 对数据块进行恢复,这种方法最简单有效,而且可以在数据文件在线时进行,不会发 ...
- 使用BBED模拟Oracle数据库坏块
BBED(OracleBlockBrowerandEDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢 ...
- 对Oracle数据库坏块的理解
1.物理坏块和逻辑坏块 在数据库中有一个概念叫做数据块的一致性,Oracle的数据块的一致性包括了两个层次:物理一致性和逻辑一致性,如果一个数据块在这两个层次上存在不一致性,那就对应到了我们今天要要说 ...
- 【Quick 3.3】资源脚本加密及热更新(三)热更新模块
[Quick 3.3]资源脚本加密及热更新(三)热更新模块 注:本文基于Quick-cocos2dx-3.3版本编写 一.介绍 lua相对于c++开发的优点之一是代码可以在运行的时候才加载,基于此我们 ...
- java的热部署和热加载
ps:热部署和热加载其实是两个类似但不同的概念,之前理解不深,so,这篇文章重构了下. 一.热部署与热加载 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载. 对于Java应用程序来说 ...
随机推荐
- ASP.NET使用EasyUI-DataGrid + ashx + JQuery Ajax:实现数据的增删查改,查询和分页!
转自:http://www.cnblogs.com/lt-style/p/3457399.html 数据表: 学生表:学生编号.姓名.性别.班级编号.年龄 班级表:班级编号.班级名称 开发过程: 1. ...
- android报错——java.lang.ClassNotFoundException[android]
E/AndroidRuntime(1875): Caused by: java.lang.ClassNotFoundException:XXXXX in loader dalvik.system ...
- 使用VisualStudio进行单元测试之二
借着工作忙的借口,偷了两天懒,今天继续单元测试之旅.前面说了如何进行一个最简单的单元测试,这次呢就跟大家一起来熟悉一下,在visual studio中如何进行数据驱动的单元测试. 开始之前先来明确一下 ...
- VS2013项目受源代码管理向源代码管理注册此项目时出错
在使用TFS的时候有时出现无法加载项目,后来删除项目添加也是不行 编译项目的时候提示如题的错误,用记事本打开出错的几个项目的.csproj文件,把下面几行内容删掉就行了. <SccProject ...
- KEIL、uVision、RealView、MDK、KEIL C51区别比较
KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251 从接触MCS-51单片机开始,我们就知道有一个 ...
- books
<<learning opencv>>, 布拉德斯基 (Bradski.G.) (作者), 克勒 (Kaehler.A.) (作者), 这本书一定要第二版的,因为第二版 ...
- Dijkstra算法求解最短路径分析
最短路径是图论算法中的经典问题.图分为有向图.无向图,路径权值有正值.负值,针对不同的情况需要分别选用不同的算法.在维基上面给出了各种不同的场景应用不同的算法的基本原则:最短路问题. 针对无向图,正权 ...
- 宁波Uber优步司机奖励政策(2月1日~2月7日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- SQL 中having 和where的区别分析
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集 在select语句中可以使用groupby子 ...
- 一、两种方式初始化Mybatis
一.xml Configuration.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTY ...