博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle Study之--Oracle等待事件(5)
阅读量:6247 次
发布时间:2019-06-22

本文共 3584 字,大约阅读时间需要 11 分钟。

Db file single write
这个等待事件通常只发生在一种情况下,就是Oracle 更新数据文件头信息时(比如发生Checkpoint)。
当这个等待事件很明显时,需要考虑是不是数据库中的数据文件数量太大,导致Oracle 需要花较长的时间来做所有文件头的更新操作(checkpoint)。
这个等待事件有三个参数:
File#: 需要更新的数据块所在的数据文件的文件号。
Block#: 需要更新的数据块号。
Blocks: 需要更新的数据块数目(通常来说应该等于1)。

案例分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
15
:
03
:
26 
SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT 
from 
v$system_event
15
:
03
:
31   
2  
where 
upper(event) like 
'DB FILE%'
;
EVENT                                                            TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read                                                 
2093          
.01
db file scattered read                                                   
833          
.02
db file single write                                                      
27          
.28
db file parallel write                                                     
5        
17.48
 
15
:
03
:
51 
SYS@ prod>alter system checkpoint;
System altered.
 
15
:
03
:
35 
SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT 
from 
v$system_event
  
2
where 
upper(event) like 
'DB FILE%'
EVENT                                                            TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read                                                 
2673          
.01
db file scattered read                                                   
833          
.02
db file single write                                                      
36          
.55
db file parallel write                                                     
7        
14.73
Elapsed: 
00
:
00
:
00.01

Direct path read
这个等待事件发生在会话将数据块直接读取到PGA当中而不是SGA中的情况,这些被读取的数据通常是这个会话私有的数据,所以不需要放到SGA作为共享数据,因为这样做没有意义。这些数据通常是来自于临时段上的数据,比如一个会话中SQL的排序数据,并行执行过程中间产生的数据,以及Hash Join,merge join产生的排序数据,因为这些数据只对当前的会话的SQL操作有意义,所以不需要放到SGA当中。
当发生direct path read等待事件时,意味着磁盘上有大量的临时数据产生,比如排序,并行执行等操作。或者意味着PGA中空闲空间不足。
这个等待事件有三个参数:
Descriptor address:  一个指针,指向当前会话正在等待的一个direct read I/O。
First dba: descriptor address 中最旧的一个I/O数据块地址。
Block cnt: descriptor address上下文中涉及的有效的buffer 数量。


Direct path write
这个等待事件和direct path read 正好相反,是会话将一些数据从PGA中直接写入到磁盘文件上,而不经过SGA。
这种情况通常发生在:
使用临时表空间排序(内存不足)
数据的直接加载(使用append方式加载数据)
并行DML操作。
这个等待事件有三个参数:
Descriptor address: 一个指针,指向当前会话正在等待的一个direct I/O.
First dba: descriptor address 中最旧的一个I/O数据块地址。
Block cnt: descriptor address 上下文中涉及的有效地 buffer 数量。

案例分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
15
:
37
:
17 
SCOTT@ prod>
  
1
* select * 
from 
t1 order by 
1
600000 
rows selected.
Elapsed: 
00
:
00
:
04.35
Execution Plan
----------------------------------------------------------
Plan hash value: 
2148421099
-----------------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------
|   
0 
| SELECT STATEMENT   |      |   838K|    10M|       |  
4260   
(
1
)| 
00
:
00
:
52 
|
|   
1 
|  SORT ORDER BY     |      |   838K|    10M|    16M|  
4260   
(
1
)| 
00
:
00
:
52 
|
|   
2 
|   TABLE ACCESS FULL| T1   |   838K|    10M|       |   
276   
(
2
)| 
00
:
00
:
04 
|
-----------------------------------------------------------------------------------
Note
-----
   
- dynamic sampling used 
for 
this 
statement (level=
2
)
Statistics
----------------------------------------------------------
          
7  
recursive calls
          
3  
db block gets
       
1355  
consistent gets
       
1823  
physical reads
          
0  
redo size
   
10809270  
bytes sent via SQL*Net to client
     
440512  
bytes received via SQL*Net 
from 
client
      
40001  
SQL*Net roundtrips to/
from 
client
          
0  
sorts (memory)
          
1  
sorts (disk)
     
600000  
rows processed
      
15
:
36
:
39 
SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT 
from 
v$system_event
  
2
where 
upper(event) like 
'DIRECT%'
EVENT                                                            TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
direct path read                                                         
154          
.03
direct path read temp                                                   
1746            
0
direct path write temp                                                    
63          
.98
Elapsed: 
00
:
00
:
00.04
15
:
37
:
31 
SYS@ prod>
本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1536003,如需转载请自行联系原作者
你可能感兴趣的文章
面试算法题-合并2个有序数组
查看>>
windows下安装cygwin后ssh服务无法启动的解决办法
查看>>
C语言的const限定符
查看>>
python3简单爬虫
查看>>
maven工程jar冲突解决办法
查看>>
给PATH变量添加路径--用Enki学Linux系列(6)
查看>>
Juniper SRX 1firefly-perimeter 2.1X47-D20.7 端口交换机属性配置
查看>>
Redis+Mysql模式和内存+硬盘模式的异同
查看>>
RedHat Linux 4/5下LVM 在线扩容
查看>>
Spring - 事务管理(二)常用的使用方式
查看>>
git-config Manual Page
查看>>
Strongswan+freeradius+daloradius+ad认证实现ikev2接入服务二
查看>>
qcow2、raw、vmdk等镜像格式的比较和基本转换
查看>>
mysql百万级分页优化
查看>>
Rsync实时同步之rsync+inotify推送
查看>>
sed正则经典案例(三)
查看>>
Rsync数据同步工具
查看>>
代码生成器
查看>>
Android抓包方法Tcpdump+Wireshark
查看>>
强制踢除LINUX远程连接用户
查看>>