wait event : read by other session

更新 發佈閱讀 3 分鐘


個人網站: https://kxodia.com

今天在第一個節點發現有wait event read by other session 與DB file sequential read幾乎佔據了80% 的DB time。

研究一下這是兩個session引發的問題,以session執行的動作又有不同的現象

兩邊都為select所引起的” read by other session”

Buffer lock分為Shared模式和Exclusive模式,當讀取SGA中的buffer時,是屬於Shared模式,並不會引起Buffer lock,但相反若需要產生物理I/O,將buffer 載入到buffer cache時,則是發生Exclusive模式的佔用,同時也會發生db file sequential read、db file scattered read的I/O等待現象,當有另一個session也需要讀取時就會發生read by other session。

當載入SGA完成後,另一個session則進行的是邏輯I/O,若今天的情況是一開始便存在於SGA則是shared的模式,則會發生buffer busy waits。

參考: WAITEVENT: "read by other session" Reference Note (Doc ID 732891.1)


那我們就來觀察一下AWR內 Physical read Requests發現某張table與其index占用相當高,也是使用者反應的SQL內所使用的表。

查一下buffer裝啥囉~

select o.OBJECT_TYPE, substr(o.OBJECT_NAME,1,10)
objname , b.objd , b.status, count(b.objd) from v$bh b,
dba_objects o where b.objd = o.data_object_id and o.object_name=<'table_name'>
group by o.object_type,
o.object_name,b.objd, b.status ;


還真的我要的這張表不存在,那當然得做實體I/O,並且另一個session 就產生了這個wait event了


持續調查!

發現buffer cache 與另外一個節點相比小得可憐,也可觀察一下SGA內各個pool爭用的狀況。



結論:

1. 進行SQL調優來降低Physical I/O ,進而減少此wait event

2. 擴大SGA ,設置較大buffer cache size (keep)




















留言
avatar-img
留言分享你的想法!
avatar-img
工程師Kxodia的技術報告的沙龍
4會員
13內容數
2022/04/08
今天新安裝一台11024的Oracle RAC DB 在AIX的環境 並要更新PSU到 root> /oracle/11.2.0/grid/OPatch/opatch auto /source/oracle/30501155 -ocmrf /tmp/ocm.f [email protected]
2022/04/08
今天新安裝一台11024的Oracle RAC DB 在AIX的環境 並要更新PSU到 root> /oracle/11.2.0/grid/OPatch/opatch auto /source/oracle/30501155 -ocmrf /tmp/ocm.f [email protected]
2022/03/14
今天要將oracle goldengate 的extract 從classic 轉成integrated mode. 真是簡單的任務阿~ 趕緊做完下班囉~ 結果! 裡面有如何轉換的步驟,排錯的方式就是將Extract 重新打開讓他跑一下,追上就好了,但! 如果這樣就好我還寫個屁? 下班!
Thumbnail
2022/03/14
今天要將oracle goldengate 的extract 從classic 轉成integrated mode. 真是簡單的任務阿~ 趕緊做完下班囉~ 結果! 裡面有如何轉換的步驟,排錯的方式就是將Extract 重新打開讓他跑一下,追上就好了,但! 如果這樣就好我還寫個屁? 下班!
Thumbnail
2022/03/08
今天安裝了oracle OEMCC 13.5,又因應log4j了更新的一些補丁,遭遇了一些問題分享 我們需要更新OMSPATCHER 與OPATCH,用來上FMW component與DB Plug-in Home,在更新完OMSPATCHER 與OPATCH確認版本時發生了錯誤
Thumbnail
2022/03/08
今天安裝了oracle OEMCC 13.5,又因應log4j了更新的一些補丁,遭遇了一些問題分享 我們需要更新OMSPATCHER 與OPATCH,用來上FMW component與DB Plug-in Home,在更新完OMSPATCHER 與OPATCH確認版本時發生了錯誤
Thumbnail
看更多
你可能也想看
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
在Python中,queue是一個非常有用的模块。 它提供了多種佇列(queue)實現,用於在多線程環境中安全地交換信息或者數據。 佇列(queue)是一種先進先出(FIFO)的數據結構,允許在佇列的一端插入元素,另一端取出元素。(FIFO 是First In, First Out 的縮寫)
Thumbnail
在Python中,queue是一個非常有用的模块。 它提供了多種佇列(queue)實現,用於在多線程環境中安全地交換信息或者數據。 佇列(queue)是一種先進先出(FIFO)的數據結構,允許在佇列的一端插入元素,另一端取出元素。(FIFO 是First In, First Out 的縮寫)
Thumbnail
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
Thumbnail
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
Thumbnail
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
Thumbnail
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
Thumbnail
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
Thumbnail
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
Thumbnail
前言 這是第一次寫技術文章,但其實應該也只能說是蒐集很多資料並學習如何透過自己的話解釋的內容,並不能像其他大神可能分享一些很酷的技術,目標就單純是為了完成最後一週的作業(如下)。 走入非同步之前 執行環境(Execution Context) 執行環境堆疊 (Execution stack)
Thumbnail
前言 這是第一次寫技術文章,但其實應該也只能說是蒐集很多資料並學習如何透過自己的話解釋的內容,並不能像其他大神可能分享一些很酷的技術,目標就單純是為了完成最後一週的作業(如下)。 走入非同步之前 執行環境(Execution Context) 執行環境堆疊 (Execution stack)
Thumbnail
假設資料如下: local DB裡面的test Collection SELECT SELECT可以這樣寫: 由於config/database.php中設定的default DB_CONNECTION是mysql,所以這邊特別指定使用mongodb connection。 回傳結果如下: 軟刪除
Thumbnail
假設資料如下: local DB裡面的test Collection SELECT SELECT可以這樣寫: 由於config/database.php中設定的default DB_CONNECTION是mysql,所以這邊特別指定使用mongodb connection。 回傳結果如下: 軟刪除
Thumbnail
如果你 WHERE 的條件需要常常更動,但每次都要進去 QUERY 所在的儲存格編輯語法,實在是有點太麻煩了?但其實有個小技巧,可以讓 QUERY 更新得更輕鬆。來看看吧!
Thumbnail
如果你 WHERE 的條件需要常常更動,但每次都要進去 QUERY 所在的儲存格編輯語法,實在是有點太麻煩了?但其實有個小技巧,可以讓 QUERY 更新得更輕鬆。來看看吧!
Thumbnail
當伺服器需要處理一些比較花時間的任務時(如發送Email、上傳影片等等),讓user等待直到執行完畢,是個很不明智的選擇,這時候就很適合使用Queue,讓工作在背景執行,使用者就能立刻做下一件事,不必在那邊等待。 .env: QUEUE_CONNECTION預設是sync 改成database:
Thumbnail
當伺服器需要處理一些比較花時間的任務時(如發送Email、上傳影片等等),讓user等待直到執行完畢,是個很不明智的選擇,這時候就很適合使用Queue,讓工作在背景執行,使用者就能立刻做下一件事,不必在那邊等待。 .env: QUEUE_CONNECTION預設是sync 改成database:
Thumbnail
如上篇,使用Migration來做DB版本控制,但是會發現開發過程中若是要建立測試資料,要進DB一筆一筆手動新增或執行預先寫好的insert sql,其實有點麻煩,使用Laravel提供的Seeder功能,就可以解決這個問題。 指令如下,假設建立一個user table seeder:
Thumbnail
如上篇,使用Migration來做DB版本控制,但是會發現開發過程中若是要建立測試資料,要進DB一筆一筆手動新增或執行預先寫好的insert sql,其實有點麻煩,使用Laravel提供的Seeder功能,就可以解決這個問題。 指令如下,假設建立一個user table seeder:
Thumbnail
進入目錄、列出目錄列表、讀取檔案內容、寫入檔案(資料)、變更檔案名稱、刪除檔案、目錄內新增檔案、變更目錄名稱、刪除目錄
Thumbnail
進入目錄、列出目錄列表、讀取檔案內容、寫入檔案(資料)、變更檔案名稱、刪除檔案、目錄內新增檔案、變更目錄名稱、刪除目錄
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News