久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何進行Oracle數據庫Kfk: Async Disk IO等待事件的深度解析

174次閱讀
沒有評論

共計 2802 個字符,預計需要花費 8 分鐘才能閱讀完成。

行業資訊    
數據庫    
如何進行 Oracle 數據庫 Kfk: Async Disk IO 等待事件的深度解析

如何進行 Oracle 數據庫 Kfk: Async Disk IO 等待事件的深度解析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

  概述

一大早運維團隊就來找事,說系統又有點卡了,然后發現了一個比較少見的等待事件 –kfk: async disk  IO,趁著這次排查的過程也簡單說下這個等待事件吧!

1、查看 TOP N 等待事件

SELECT inst_id,EVENT, SUM(DECODE(WAIT_TIME, 0, 0, 1))  Prev , SUM(DECODE(WAIT_TIME, 0, 1, 0))  Curr , COUNT(*)  Tot  , sum(SECONDS_IN_WAIT) SECONDS_IN_WAIT FROM GV$SESSION_WAIT WHERE event NOT IN (smon timer , pmon timer , rdbms ipc message , SQL*Net message from client , gcs remote message) AND event NOT LIKE  %idle%  AND event NOT LIKE  %Idle%  AND event NOT LIKE  %Streams AQ%  GROUP BY inst_id,EVENT ORDER BY 1,5 desc; --class slave wait

可以發現排在前面的是 kfk: async disk IO 等待事件。

2、根據等待事件查會話

SELECT /*+rule */ sid, s.serial#, spid, event, sql_id, seconds_in_wait ws, row_wait_obj# obj, s.username, s.machine, BLOCKING_INSTANCE|| . ||blocking_session b_sess FROM v$session s, v$process p WHERE event= event_name  AND s.paddr = p.addr order by 6;

3、查詢某個會話詳情

SELECT /*+rule */ sid, s.serial#, spid, event, sql_id, seconds_in_wait ws, row_wait_obj# obj, s.username, s.machine, BLOCKING_INSTANCE|| . ||blocking_session b_sess FROM v$session s, v$process p WHERE event= event_name  AND s.paddr = p.addr order by 6;

顯示在備份..

4、檢查服務器是否在備份?

查看備份日志發現確實是正在做 0 級全備。

5、查看 kfk: async disk IO

select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name= kfk: async disk IO

6、關于 kfk: async disk IO

kfk: async disk IO 等待事件是 ASM 下異步的 System  I/ O 等待事件,kfk 內核層面在 disk_asynch_io=true 時被激活。當 rbal 或其他 ASM 相關后臺進程在維護 ASM 磁盤組時可能進入 kfk:  async disk IO 等待。

先確定一點,kfk: async disk IO 是 11G 后 ASM 下直接路徑操作和 ASM 維護操作時會遇到的一個等待事件。

先來看大牛的描述吧:

異步 IO 的兩個函數:io_submit 和 io_getevents,Oracle 是先調用 io_submit 發起異步 IO,然后調用 io_getevents 查看 IO 狀態。

從圖中可以看到,這位大牛認為,io_submit 階段,等待是 kfk: async disk IO,從 io_getevents 到 IO 完成,是 direct  path read。

再來看看緊接著的下幅圖:

在這幅圖中,這位大師打開 10046,并同時用 Truss、Strace 類的工具跟蹤進程的執行,跟蹤結果中,先有 io_submit 調用,馬上就是向 10046 跟蹤文件中寫 kfk:  async disk IO 等待。在 io_getevents 調用后,又緊接著是向 10046 跟蹤文件中寫 direct path  read 等待事件。據此,此大師得出結論,io_submit 期間,等待事件是 kfk: async disk IO,io_getevents 則對應 direct  path read。

但實際情況 kfk: async disk IO 并不如此簡單,因為如果是 io_submit 對應 kfk: async disk  IO,io_getevents 對應 direct path read。我們都知道,間路徑 IO,db file scattered  read 等待事件時,異步 IO 的完成,也是先 io_submit 發出 IO,再在后面使用 io_getevents 查看 IO 狀態。和直接路徑一樣的,為什么間接路徑時,只有 db  file scattered read 等待事件,并不伴隨有 kfk: async disk IO 等待事件呢。

顯然,是直接路徑和間接路徑的區別,產生了 kfk: async disk IO 等待。他們的區別在哪里呢,看下面這幅圖

這幅圖是直接路徑下的情況,由 DTrace 跟蹤得到,比 Truss、Strace 結果更豐富、準確。

Oracle 在發出異步 IO 指令后,會去做一些其他的事情,并不等待 IO 完成。異步 IO 嗎,并不需要發出 IO 指令后,就一直等著 IO 完成。

在進行了一些操作后,Oracle 調用函數,以 0 秒的超時查看 IO 的完成狀態。

0 秒的超時,就是不會有任何停留,僅僅調用函數查看 IO 狀態,如 IO 已完成,則進入 IO 完成流程。

如 IO 沒有完成,會再進行一些其他操作,然后再次調用函數,以 600 秒超時,查看 IO 狀態。也就是停留最多 600 秒,等待 IO 完成。如果 IO 完成,進入 IO 完成流程。

再來看等待事件,從發出 IO 指令,到 0 秒超時,等待事件是 kfk: async disk  IO。如果 0 秒超時 IO 沒有完成,其后直到 IO 完成的等待事件是 direct path read。

間接路徑時,所有 IO,都是 600 秒超時,沒有 0 秒超時這一塊,所以,間接路徑只有 db file scattered read 等待,而沒有 kfk: async  disk IO 等待。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-18發表,共計2802字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 邛崃市| 盖州市| 贵阳市| 区。| 光山县| 涞水县| 昌黎县| 含山县| 宁远县| 上蔡县| 车致| 四川省| 安国市| 西充县| 洛阳市| 历史| 郁南县| 霍州市| 江永县| 灵台县| 平潭县| 万盛区| 邢台市| 濉溪县| 高唐县| 呼图壁县| 漳州市| 邹平县| 彭州市| 麻城市| 雅安市| 昆明市| 南华县| 曲靖市| 南充市| 怀化市| 朝阳区| 罗甸县| 会昌县| 吐鲁番市| 琼结县|