Oracle Study之--Oracle等待事件(5)
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,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的Oracle Study之--Oracle等待事件(5)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS6.7上使用FPM打包制作自
- 下一篇: JAVA 网络编程小记