Oracle中等待事件深入分析

來源:互聯網
上載者:User

概述

等待事件主要可以分為兩類,即空閑(IDLE)等待事件和非空閑(NON-IDLE)等待事件。

1).空閑等待事件

ORACLE正等待某種工作,在診斷和最佳化資料庫的時候,不用過多注意這部分事件。

2). 非空閑等待事件

專門針對 ORACLE 的活動,指資料庫任務或應用運行過程中發生的等待,這些等待事件是 在調整資料庫的時候需要關注與研究的。

在 Oracle 10g 中的等待事件可以通過 v$event_name 視圖來查看等待事件的相關資訊。

常見等待事件

Buffer busy waits

從本質上講,這個等待事件的產生僅說明了一個會話在等待一個 Buffer(資料區塊),但是導致這個現象的原因卻有很多種。

常見的兩種是:

當一個會話視圖修改一個資料區塊,但這個資料區塊正在被另一個會話修改時
當一個會話需要讀取一個資料區塊,但這個資料區塊正在被另一個會話讀取到記憶體中時。
Oracle 操作的最小單位是塊( Block),即使你要修改一條記錄,也需要對這條記錄所在的這個資料區塊做操作。

當一個會話修改一個資料區塊時,是按照以下步驟來完成的:

( 1) 以排他的方式獲得這個資料區塊( Latch)

( 2) 修改這個資料區塊。

( 3) 釋放 Latch。

Buffer latch

記憶體中資料區塊的存放位置是記錄在一個 hash 列表( cache buffer chains)當中的。

當一個會話需要訪問某個資料區塊時,它首先要搜尋這個 hash 列表,從列表中獲得資料區塊的地址,然後通過這個地址去訪問需要的資料區塊,這個列表 Oracle會使用一個 latch 來保護它的完整性。

當一個會話需要訪問這個列表時,需要擷取一個 Latch,只有這樣,才能保證這個列表在這個會話的瀏覽當中不會發生變化。

產生 buffer latch 的等待事件的主要原因是:

( 1) Buffer chains 太長,導致會話搜尋這個列表花費的時間太長,使其他的會話處於等待狀態。
( 2) 同樣的資料區塊被頻繁訪問,就是我們通常說的熱快問題。
Control file parallel write

控制檔案頻繁寫入的原因很多,比如:

( 1) 日誌切換太過頻繁,導致控制檔案資訊相應地需要頻繁更新。

( 2) 系統 I/O 出現瓶頸,導致所有 I/O 出現等待。

當系統出現日誌切換過於頻繁的情形時,可以考慮適當地增大記錄檔的大小來降低日誌切換頻率。

當系統出現大量的 control file parallel write 等待事件時,可以通過比如降低控制檔案的拷貝數量,將控制檔案的拷貝存放在不同的物理磁碟上的方式來緩解I/O 爭用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.