Oracle DG 邏輯Standby資料同步效能最佳化

來源:互聯網
上載者:User

1、調整APPLIER進程數

APPLIER進程就是執行應用操作的進程。在預設情況下邏輯Standby會啟動5個APPLIER進程,如果日誌應用任務繁重(或者說Primary資料庫修改量較大),則適當多啟動幾個APPLIER進程有助於提高應用的效率。

先查看當前閒置APPLIER進程數:

SQL> SELECT COUNT(*) AS IDLE_APPLIER FROM V$LOGSTDBY_PROCESS WHERE TYPE = 'APPLIER' and status_code = 16166;

IDLE_APPLIER

------------

0

返回結果為0,難道都在忙?這個真不一定,閒置APPLIER進程數為0不一定代表應用非常繁忙,也有可能是因為當前沒什麼需要應用的日誌,甚至都沒啟動應用進程。

說 明: status_code=16166表示進程是空閑狀態,因為stats_code=16166對應的狀態說明列STATS為ORA-16116: no work available。

檢查事務的應用情況:

SQL> SELECT NAME,VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE 'transactions%';

NAME  VALUE

----- ---------------------------

trans 358

trans 358

如果ready-applied的值比APPLIER進程數的兩倍還要大,則說明DBA有必要考慮增加APPLIER進程的數目了,反之如果applied與ready的值差不多大,或者其差比APPLIER進程數還小,則說明APPLIER進程數偏多,DBA有必要考慮適當減小進程的數目。

如果確認當前APPLIER進程都非常繁忙,要增加APPLIER進程,可按如下步驟操作:

1) 停止邏輯Standby端的SQL應用:

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

Database altered.

2) 執行下列語句,調整APPLIER進程數為10:

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('APPLY_SERVERS',10);

PL/SQL procedure successfully completed.

3) 重新啟動SQL應用:

JSSLDG> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Database altered.

4) 查出的就是當前啟動並執行APPLIER進程數:

更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

SQL> SELECT COUNT(0) FROM  V$LOGSTDBY_PROCESS WHERE TYPE='APPLIER';

COUNT(0)

----------

10

也可以通過V$LOGSTDBY_STATS視圖查詢,例如:

SQL> SELECT * FROM V$LOGSTDBY_STATS WHERE NAME='number of appliers';

NAME  VALUE

----- ----------------------------------------------------------------

numbe 10

2、調整PREPARER進程數

PREPAPER進程將接收到的REDO資料中的塊修改轉換成LCRs(Logical Change Records)。一般需要調整PREPAPER進程數的機會不多,通常只有一種情況:APPLIER進程有空閑,Transactions Ready還很多,但沒有閒置PREPAPER進程,這時候DBA可能就需要增加一些PREPAPER進程。

先檢查空閑PREPAPER進程數量:

SQL> SELECT COUNT(*) AS IDLE_PREPARER FROM V$LOGSTDBY_PROCESS

WHERE TYPE = 'PREPARER' and status_code = 16166;

IDLE_PREPARER

-------------

0

說 明:如果顯示為0,別怕,也有可能是因為當前沒什麼新的REDO資料需要處理。

如果確實需要調整PREPAPER進程數量,可以按照下列步驟進行。

首先停止SQL應用:

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

Database altered.

調整PREPAPER進程數量為4(預設只有1個PREPAPER進程):

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('PREPARE_SERVERS',4);

PL/SQL procedure successfully completed.

重新啟動SQL應用即可:

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Database altered.

查看當前啟動的PREPAPER進程數, 查詢V$LOGSTDBY_STATS視圖,例如:

SQL>  SELECT * FROM V$LOGSTDBY_STATS WHERE NAME='number of preparers';

NAME  VALUE

----- ----------------------------------------------------------------

numbe 4

3、調整LCR使用的記憶體

LCR中儲存的是轉換後的塊修改的記錄,這部分資料儲存在SGA中。

查詢當前LCR可用的最大記憶體:

SQL> SELECT * FROM V$LOGSTDBY_STATS WHERE NAME='maximum SGA for LCR cache';

NAME                                                VALUE

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.