標籤:oracle
Oracle Study之--Oracle等待事件(5)
Db file single write
這個等待事件通常只發生在一種情況下,就是Oracle 更新資料檔案頭資訊時(比如發生Checkpoint)。
當這個等待事件很明顯時,需要考慮是不是資料庫中的資料檔案數量太大,導致Oracle 需要花較長的時間來做所有檔案頭的更新操作(checkpoint)。
這個等待事件有三個參數:
File#: 需要更新的資料區塊所在的資料檔案的檔案號。
Block#: 需要更新的資料區塊號。
Blocks: 需要更新的資料區塊數目(通常來說應該等於1)。
案例分析:
15:03:26 [email protected] prod>select event,TOTAL_WAITS,AVERAGE_WAIT from v$system_event15:03:31 2 where upper(event) like ‘DB FILE%‘;EVENT TOTAL_WAITS AVERAGE_WAIT---------------------------------------------------------------- ----------- ------------db file sequential read 2093 .01db file scattered read 833 .02db file single write 27 .28db file parallel write 5 17.4815:03:51 [email protected] prod>alter system checkpoint;System altered.15:03:35 [email protected] 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 .01db file scattered read 833 .02db file single write 36 .55db file parallel write 7 14.73Elapsed: 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 數量。
案例分析:
15:37:17 [email protected] prod> 1* select * from t1 order by 1600000 rows selected.Elapsed: 00:00:04.35Execution 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 [email protected] 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 .03direct path read temp 1746 0direct path write temp 63 .98Elapsed: 00:00:00.0415:37:31 [email protected] prod>
本文出自 “天涯客的blog” 部落格,請務必保留此出處http://tiany.blog.51cto.com/513694/1536003