Streams AQ: qmn coordinator waiting for slave to start等待事件

lhrbest發表於2016-11-10

       Streams AQ: qmn coordinator waiting for slave to start等待事件很少見到,今天在檢視一個客戶的AWR報告中發現了這個等待事件,AWR報告的TOP如下:
                      

Event

Waits

Time(s)

Avg wait (ms)

% DB time

Wait Class

DB CPU

 

308

 

62.85

 

db file sequential read

92,033

96

1

19.60

User I/O

db file scattered read

44,852

90

2

18.39

User I/O

Streams AQ: qmn coordinator waiting for slave to start

3

16

5269

3.23

Other

gc cr grant 2-way

60,943

11

0

2.27

Cluster

    Streams AQ: qmn coordinator waiting for slave to start等待事件等待的次數非常少,在一個小時的AWR報告中就出現了3次,但是每次的等待時間卻非常長,平均達5秒以上。在10g版本中,QMON(Queue Monitor Processes自動協調slave經常的分配,aq_tm_processes無需在手動設定,slave程式會在需要的時候自動分配。
    檢視了使用者的aq_tm_processes引數為0,資料庫版本為10.2.0.5(oracle是不建議將aq_tm_processes設定為0的),那說明此時oracle在自動分配slave程式時時存在問題的,效率過低,所以如果出現Streams AQ: qmn coordinator waiting for slave to start等待事件,還是建議aq_tm_processes引數設定為非零值,讓oracle預先分配幾個slave程式,該引數的取值範圍是0~10,或者取消aq_tm_processes引數的設定,讓oracle自動分配
    可以透過下面的程式碼檢視QMON自動調整是否啟用,同時aq_tm_processes引數是否被設定為0:

  1. connect / as sysdba

  2. set serveroutput on

  3. declare
  4. mycheck number;
  5. begin
  6. select 1 into mycheck from v$parameter where name = 'aq_tm_processes' and value = '0' and (ismodified != 'FALSE' OR isdefault = 'FALSE');
  7. if mycheck = 1 then
  8. dbms_output.put_line('The parameter ''aq_tm_processes'' is explicitly set to 0!');
  9. end if;
  10. exception when no_data_found then
  11. dbms_output.put_line('The parameter ''aq_tm_processes'' is not explicitly set to 0.');
  12. end;
  13. /
     取消aq_tm_processes引數的設定:

  1. connect / as sysdba
  2. alter system reset aq_tm_processes scope=spfile sid=\'*\';
    補充:從11.2.0.3以後的版本中,aq_tm_processes預設值又調整為1.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2128262/,如需轉載,請註明出處,否則將追究法律責任。

相關文章