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
@