oracle 等待事件

v$sesssion_wait

等待事件:性能调优最重要的一个指标
v$session v$sqltext
v$session_wait
v$system_event




select * from v$system_wait_class s order by s.time_waited

v$event_name

select name,parameter1,parameter2,parameter3 from v$event_name
where name='db file scattered read'


select * from v$event_name

select e.wait_class#,e.wait_class_id e.wait_class,count(*) as '数量'from v$event_name e group by e.wait_class#,e.wait_class_id e.wait_class
order by e.wait_class#

select name,wait_class from v$event_name e where e.wait_class#=6


select sid,event,p1,p1text from v$session


select sid from v$mystat where rownum <2
select s.sql_text from v$sqltext s where s.hashvalue=(select sql_hash_value from v$session a where sid=130) order by s.piece asc

awr top sql

select s.event,p1,p1text,p2,p2text,p3,p3text,wait_time, seconds_in_wait,state   from v$session_wait s where sid=130

常见等待事件
v$sesssion_wait

等待事件:性能调优最重要的一个指标
v$session v$sqltext
v$session_wait
v$system_event




select * from v$system_wait_class s order by s.time_waited

v$event_name

select name,parameter1,parameter2,parameter3 from v$event_name
where name='db file scattered read'


select * from v$event_name

select e.wait_class#,e.wait_class_id e.wait_class,count(*) as '数量'from v$event_name e group by e.wait_class#,e.wait_class_id e.wait_class
order by e.wait_class#

select name,wait_class from v$event_name e where e.wait_class#=6


select sid,event,p1,p1text from v$session


select sid from v$mystat where rownum <2
select s.sql_text from v$sqltext s where s.hashvalue=(select sql_hash_value from v$session a where sid=130) order by s.piece asc

awr top sql

select s.event,p1,p1text,p2,p2text,p3,p3text,wait_time, seconds_in_wait,state   from v$session_wait s where sid=130

常见等待事件

db file scattered read

private String file#
private String block#;
private String blocks;

File# 要读取的块所在的数据文件文件号
block# 要读取的数据文件的起始数据号
blocks 要读取数据块的数量 >1

db file sequential read
File# 要读取的块所在的数据文件文件号
block# 要读取的数据文件的起始数据号
blocks 要读取数据块的数量 =1


db file sequential read

File# 要更新的块所在的数据文件文件号
block# 要更新的数据文件的起始数据号
blocks 要读取数据块的数量 =1

db file single write
数据文件的数量太多。

db file parallel read

files
blocks
requests

db file parallel write
free buffer waits

timeouts

buffer busy waits: 一个会话正在等待一个buffer数据块

file# 等待访问数据块所在的文件的id号
blocks 等待访问的数据块的号
ID 

buffer busy waits
如果一个会话 要访问一个数据块,这个数据块正在被另外一个用户从物理磁盘读取到内存中,或者这个数据块正在被另一个serverprocess修改
cache buffer chain 访问LRU的时候等待事件

不同热块的处理方式是不同的
table block
index block
root index block
file header block

buffer latch

DB_BLOCK_LRU_LATCHES

latch addr
chain#

select  from v$latch l1,v$latchname l2 where l1.addr = latch addr and l1.latch#=l2.latch#

create table t as select * from dba_objects;
create index t_index_object_id on t(object_id);
exec dbms_stats.gather_table_stats(user,'t',cascade=>true);
--
select dbms_rowid.rowid_block_number(rowid),count(*) rowperblock from t group by dbms_rowid.rowid_block_number(rowid)

select rowperblcok,count(*) from (
select dbms_rowid.rowid_block_number(rowid),count(*) rowperblock from t group by dbms_rowid.rowid_block_number(rowid)) group by rowperblcok

alter table t1 minimize records_per_block




v$session_longops

set timing on
select * from emp;

select * from v$session_longops;
create table lotest as select aaa,bbb from dual connect  by aaaa<10000000

select a.sid,a.opname,a.sfar,a.totalwork,a.sql_hash_value from v$session_longops a;


select a.sql_text from v$sqlarea a,v$session_longops b where a.hasn_value = b.sql_hash_value
direct path read
意味着磁盘上有大量的临时数据产生

descriptor address 指向当前会话正在等待的一个 direct readIO



library cache lock

library cache pin

library cache的作用:存储共享游标
hash
hash_table 保存的是对象地址,根据对象地址访问对象

heap
句柄中记录:
对象的名字  锁的持有者 等待者 pin的持有者 等待者

堆的地址

计算hash值 ,在hashtable中找到句柄,在句柄中找到堆的地址。
对象句柄 =》library cache lock
内存堆 =》library cache pin

library cache lock三种模式
null
share
exclusive

library cache pin两种模式
share
exclusive

修改对象:获得这个对象的句柄的exclusive类型的lock,
并且拥有这个堆上的exclusive锁。
访问对象:访问这个对象handler上的null的锁和堆上的shared pin

null锁: select * from a;
--查询等待事件对应的用户名等 *****
select a.username,a.machine,a.sid,a.serial#,a.status,c.sql_text  from v$session a ,v$process b,v$sqltext c
where b.addr=a.paddr and a.sql_address=c.address
and s.sid in (select sid from v$session_wait where event='')

---
select s.sid,kglpnmod "lock-mode"
from v$session_wait w,x$kglpn p,v$session s,v$process o
where p.kglpnuse= s.saddr
and kglpnhdl=w.p1raw and w.event like '%library cache lock%'
and s.paddr = o.addr


sid  lock-mode
111   0
111   0
111   0
111   0
222   3
222   3

1 null
2 share
3 exclusive

---

log file paralled write

file 写入的文件的个数
blocks
requests

log buffer space

log file sequential read 

log file single write

log file switch

SQL*NET


AWR 性能收集、分析的工具

awrrpt.sql
@

猜你喜欢

转载自inotgaoshou.iteye.com/blog/1439429