1. 程式人生 > >快速排除空閒等待事件得到敏感的非空閒等待事件

快速排除空閒等待事件得到敏感的非空閒等待事件

想必大家都知道Oracle的等待時間分為兩種,一種我們稱之為“空閒等待事件”,另外一種稱之為“非空閒等待事件”。
“空閒等待事件”——作為DBA可以不用過分的關注這類等待事件。
“非空閒等待事件”——當DBA發現這一類的等待事件的時候,就要提高警惕了,因為這一類的等待事件出現後,往往說明應用程式出現了不應該有的等待問題,需要逐一的排查。

得到等待事件的動態效能檢視是v$session_wait,不過要快速的排除“空閒等待事件”得到我們關心的等待事件該如何做呢?
這裡給出我想到的三種方法。

這裡演示的資料庫版本是Oracle 10.2.0.3
[email protected]> select * from v$version;


BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

1.第一種方法
如果資料庫中我們部署過statspack,那我們會得到一個比較有趣的檢視perfstat.stats$idle_event,這個檢視彙總了所有的空閒等待事件,我們排除這個檢視中的內容後就可以得到我們關心的內容了。

指令碼如下:
select sid,p1,p1raw,p2,p2raw,p3,p3raw,wait_time,seconds_in_wait,state,event
  from v$session_wait
 where event not in (select event from perfstat.stats$idle_event)

2.第二種方法
如果沒有部署statspack,可以通過系統的另外一個檢視得到近似的空閒等待事件的列表,這個檢視就是v$event_name,當wait_class欄位為“Idle”時,就可以得到空閒等待事件。
指令碼如下:
select sid,p1,p1raw,p2,p2raw,p3,p3raw,wait_time,seconds_in_wait,state,event

  from v$session_wait
 where event not in (select name from v$event_name where wait_class='Idle')
;

3.第三種方法
這種方法是比較“笨”的方法,不過也非常的有效,就是將我們知道的空閒等待事件統統的列到腳本里。
指令碼如下:
select sid,p1,p1raw,p2,p2raw,p3,p3raw,wait_time,seconds_in_wait,state,event
  from v$session_wait
 where event not in (
'AQ Proxy Cleanup Wait',
'ASM background timer',
'DIAG idle wait',
'EMON idle wait',
'KSV master wait',
'LNS ASYNC archive log',
'LNS ASYNC dest activation',
'LNS ASYNC end of log',
'LogMiner: client waiting for transaction',
'LogMiner: slave waiting for activate message',
'LogMiner: wakeup event for builder',
'LogMiner: wakeup event for preparer',
'LogMiner: wakeup event for reader',
'Null event',
'PX Deq Credit: need buffer',
'PX Deq Credit: send blkd',
'PX Deq: Execute Reply',
'PX Deq: Execution Msg',
'PX Deq: Par Recov Execute',
'PX Deq: Signal ACK',
'PX Deq: Table Q Normal',
'PX Deq: Table Q Sample',
'PX Deque wait',
'PX Idle Wait',
'Queue Monitor Shutdown Wait',
'Queue Monitor Slave Wait',
'Queue Monitor Wait',
'SQL*Net message from client',
'SQL*Net message to client',
'SQL*Net more data from client',
'STREAMS apply coord waiting for slave message',
'STREAMS apply slave idle wait',
'STREAMS apply slave waiting for coord message',
'STREAMS capture process filter callback wait for ruleset',
'STREAMS fetch slave waiting for txns',
'STREAMS waiting for subscribers to catch up',
'Streams AQ: RAC qmn coordinator idle wait',
'Streams AQ: deallocate messages from Streams Pool',
'Streams AQ: delete acknowledged messages',
'Streams AQ: qmn coordinator idle wait',
'Streams AQ: qmn slave idle wait',
'Streams AQ: waiting for messages in the queue',
'Streams AQ: waiting for time management or cleanup tasks',
'Streams fetch slave: waiting for txns',
'class slave wait',
'client message',
'dispatcher timer',
'gcs for action',
'gcs remote message',
'ges remote message',
'i/o slave wait',
'jobq slave wait',
'knlqdeq',
'lock manager wait for remote message',
'master wait',
'null event',
'parallel query dequeue',
'pipe get',
'pmon timer',
'queue messages',
'rdbms ipc message',
'slave wait',
'smon timer',
'virtual circuit status',
'wait for activate message',
'wait for unread message on broadcast channel',
'wakeup event for builder',
'wakeup event for preparer',
'wakeup event for reader',
'wakeup time manager')
/

相關推薦

快速排除空閒等待事件得到敏感空閒等待事件

想必大家都知道Oracle的等待時間分為兩種,一種我們稱之為“空閒等待事件”,另外一種稱之為“非空閒等待事件”。“空閒等待事件”——作為DBA可以不用過分的關注這類等待事件。“非空閒等待事件”——當DBA發現這一類的等待事件的時候,就要提高警惕了,因為這一類的等待事件出現後

轉:Oracle系統空閒等待事件

select sid,       p1,       p1raw,       p2,       p2raw,       p3,       p3raw,       wait_time,       seconds_in_wait,       state,     

oracle空閒等待事件

會話在SGA中讀取或修改緩衝區之前,必須要先獲取cahce buffers chains鎖存器,獲取後然後遍歷這個緩衝區鏈,直到發現它需要的緩衝區頭。然後以共享方式或獨佔方式獲取該緩衝區鎖或緩衝區頭部的PIN,一旦緩衝區被PIN住,會話即釋放cache buffers chains鎖存器。如果無法獲得PIN,

SQLServer中使用擴展事件獲取Session級別的等待信息以及SQLServer 2016中Session級別等待信息的增強

cut 數據庫服務 事件 網絡 再次 drop nal exist 歷史 本文出處:http://www.cnblogs.com/wy123/p/6835939.html 什麽是等待 簡單說明一下什麽是等待:當應用程序對SQL Server發起一個Sess

單片機的OS的事件驅動

初始 設定 比較 -o scan ner 檢測模塊 缺點 其他 單片機的非OS的事件驅動 Part 1  前言   很多單片機項目恐怕都是沒有操作系統的前後臺結構,就是main函數裏用while無限循環各種任務,中斷處理緊急任務。這種結構最簡單,上手很容易,可是當項目比較大

區塊鏈快速入門(三)——CFT(拜占庭容錯)共識算法

mit 之前 acceptor 存儲 死鎖 分布式系 投票 span cat 區塊鏈快速入門(三)——CFT(非拜占庭容錯)共識算法 一、CFT簡介 CFT(Crash Fault Tolerance),即故障容錯,是非拜占庭問題的容錯技術。Paxos 問題是指分布式的

快速排除(最優法,不是快排)求隨機陣列中第k大數(c++)(讓數隨機沒寫)

#include <iostream> using namespace std; int get_kth(int arr[], int n, int k) {     int left = 0;     int right = n - 1;     while

Node-單執行緒、事件驅動、阻塞I/O

Nodejs既然這麼流行就肯定有它的博大精深之處,自然不是我這還沒入門的小白可以掌握的,我就簡單說一下目前自己的理解程度。 一、單執行緒、非阻塞I/O、事件驅動 這是nodejs的三個特點。 單執行緒 Nodejs是單執行緒,和多執行緒相比: 優點:可以避免系統分配多執行緒以及執行

【轉載】快速排序(三種演算法實現和遞迴實現)

原文地址 python實現: import random a = [4,1,7,6,9,2,2,3,5,7,8,9,3,1,2,3,4,5,8,0,3,5] b = [4,1,7,6,9,2,8,0,3,5] def twoPointerSort(nums,le

Spring webflux--響應式、阻塞、事件驅型web框架

一、基本概念---阻塞(Blocking I/O)/非阻塞(Non-blocking I/O),同步(Synchronous I/O)/非同步(Asynchronous I/O): 在進行網路程式設計時,我們常常見到同步(Synchronous I/O)/非同步(As

SQLServer中使用擴充套件事件獲取Session級別的等待資訊以及SQLServer 2016中Session級別等待資訊的增強

什麼是等待 簡單說明一下什麼是等待:當應用程式對SQL Server發起一個Session請求的時候,這個Session請求在資料庫中執行的過程中會申請其所需要的資源,比如可能會申請記憶體資源,表上的鎖資源,物理IO資源,網路資源等等,如果當前Session執行過程中需要申請的某些資源無法立即得

快速排序(三種演算法實現和遞迴實現)

快速排序(Quick Sort)是對氣泡排序的一種改進,基本思想是選取一個記錄作為樞軸,經過一趟排序,將整段序列分為兩個部分,其中一部分的值都小於樞軸,另一部分都大於樞軸。然後繼續對這兩部分繼續進行排序,從而使整個序列達到有序。 遞迴實現: void Q

selenium 學習-js執行,事件模擬,頁面載入等待

概念 在使用 Selenium WebDriver 做自動化測試的時候,會經常模擬滑鼠和鍵盤的一些行為。比如使用滑鼠單擊、雙擊、右擊、拖拽等動作;或者鍵盤輸入、快捷鍵使用、組合鍵使用等模擬鍵盤的操作。在 WebDeriver 中,有一個專門的類來負責實現這些測試場景,那就是 Actions 類,在使用該

ACM基礎演算法複習(STL + DFS + BFS + 並查集 + 快速冪 + 歐幾里演算法)

從進隊到現在,師哥們陸陸續續講了很多基礎演算法,對我這種菜雞而言沒有什麼基礎,感覺都挺難的,所以還是複習複習,看看還有多少沒還給師哥的。。。 上課的內容大致有以下幾個模組(C語言基礎和python姑且不算) 1. STL

UCOSIII事件標誌組和同時等待多個核心物件

1.1事件標誌組:        有時候一個任務需要與多個事件同步,這個時候就需要使用事件標誌組。事件標誌組與任務之間有兩種同步機制:“或”同步和“與”同步。      “或”同步:等待多個事件時,任何一個事件發生 ,任務都被同步,這個就稱為“或”同步。     

Oracle等待事件之四---log相關等待事件

一、Log file parallel write 後臺程序LGWR負責將log buffer當中的資料寫入到REDO檔案中,以重用log buffer的資料。如果每個REDO LOG組裡面有2個以上的成員,那麼LGWR程序將會並行地將REDO資訊寫入到這些檔案中。 如果資

基於事件通知的執行緒等待(vb.net)

在這個帖子中提及了執行緒等待的問題,原方法是用迴圈判斷執行緒狀態來決定是否繼續執行的思路。這種方法的主要問題是浪費資源,雖然用Sleep可以減少cpu的佔用量,但遠不如用事件通知的方法來的優雅。 下面貼出基於事件通知的執行緒等待的程式碼,完全可以舉一反三。 (魏滔序原創,轉帖

實現所有的執行緒一起等待某個事件的發生,當某個事件發生時,所有執行緒一起開始往下執行

假設要統計EXCEL裡的各個Sheet裡的的資料,可以開多個執行緒分別統計各個Sheet,等各個執行緒都統計完成後再進行彙總,這個時候就要實現如題描述的情景。這裡舉例說明,為了簡化,只是模擬。 我們知道,java裡的join是指等待該執行緒終止,才繼續往下執行。“join”很

[置頂]快速排序的遞迴方式和遞迴方式

我們知道快遞排序大部分的版本都是遞迴的方式來實現的:通過Pritation來實現劃分,並遞迴實現前後的劃分。由於同學上次百度二面面試官問起快速排序的非遞迴的實現方式,當時同學不會,因為我們大部分看到的都

記錄一次生產釋出事件——(簡單的空驗證也能引發大問題)

歡樂小插曲 ​ 時間定格在週四——常規釋出日下午三點,研發任務早已完成、測試也無大礙。這時,辦公室外走廊裡傳來了一陣急促的報警聲——“此大樓發生緊急情況,請各單位抓緊撤離”。像往常一樣刷刷部落格園,坐等釋出生產的我聞聽此聲,虎軀一震正準備要跑路,轉頭看向周圍的同事。大都很淡定的坐在工位上各自擼碼。於是收回我那