優化邏輯Standby的資料同步效能
一、調整APPLIER程式數:
檢視一下當前的空閒APPLIER程式情況:
v$logstdby_process顯示standby端的程式使用情況
SQL> select * from v$logstdby_process where type='APPLIER' and status_code=16166;
no rows selected
其中status_code=16166表示該程式是空閒程式
沒有返回結果,有兩種可能:一方面,可能是因為當前沒有需要應用的日誌,沒有啟動應用程式;另一方面就是當前的應用非常繁忙,需要DBA去增減APPLIER程式。
檢查事物的應用情況:
SQL> select name,value from v$logstdby_stats where name like 'transactions%';
NAME VALUE
-------------------- --------------------
transactions ready 25
transactions applied 25
將兩個值想減(ready-applied),如果該值超出空閒APPLIER的程式兩倍,則說明APPLIER的值太少,需要天劍APPLIER的程式數; 反之如果該值比空閒APPLIER的程式數小的多,則證明APPLIER的程式數過多,可以適量的減少APPLIER的程式數
檢視當前啟動的APPLIER的程式數:
SQL> select count(*) from v$logstdby_process where type='APPLIER';
COUNT(*)
----------
5
設定APPILER的程式數:
SQL> alter database stop logical standby apply;
Database altered.
SQL> exec dbms_logstdby.apply_set('APPLY_SERVERS',10)
PL/SQL procedure successfully completed.
啟動SQL應用,並檢視程式的設定:
SQL> alter database start logical standby apply immediate;
Database altered.
SQL> select count(*) from v$logstdby_process where type='APPLIER';
COUNT(*)
----------
10
SQL> select * from v$logstdby_stats where name='number of appliers';
NAME VALUE
-------------------- --------------------
number of appliers 10
二、調整PREPAPER的程式數目
PREPAPER程式將接受到的REDO資料中的塊修改轉換成LCRs(Logical Change Records),當APPLIER程式有空閒程式,而Transactions Ready還很多,簡單的說就是“供不應求”的時候,需要加大供給,適當的增大PREPAPER程式數。
檢查空閒的PREPARER程式數
SQL> select count(*) from v$logstdby_process
2 where type='PREPARER' and status_code=16166
3 /
COUNT(*)
----------
0
與APPLIER程式相似,該查詢結果為0並不代表沒有空閒的PREPARER程式,也可能是當前沒有REDO資料需要處理
調整PREPARER程式數的方法:
檢視當前的PERPARER程式數
SQL> select * from v$Logstdby_stats where name='number of preparers';
NAME VALUE
-------------------- --------------------
number of preparers 1
或者:
SQL> select count(*) from v$logstdby_process where type='PREPARER';
COUNT(*)
----------
1
停止SQL應用並設定PREPARER程式數:
SQL> alter database stop logical standby apply;
Database altered.
SQL> exec dbms_logstdby.apply_set('PREPARE_SERVERS',3);
PL/SQL procedure successfully completed.
啟動SQL應用,並檢視新的PREPARER程式數目:
SQL> alter database start logical standby apply immediate;
Database altered.
SQL> select * from v$logstdby_stats where name='number of preparers';
NAME VALUE
-------------------- --------------------
number of preparers 3
SQL> select count(*) from v$logstdby_process where type='PREPARER';
COUNT(*)
----------
3
三、調戲LCR使用的記憶體:
LCR中儲存的是轉換後的塊修改的記錄,這部分資料儲存在SGA中
檢視當前LCR可用的最大記憶體:(顯示單位為MB)
SQL> select * from v$logstdby_stats where name like '%SGA%LCR%';
NAME VALUE
------------------------------ --------------------
maximum SGA for LCR cache 30
調整LCR大小的步驟:
SQL> alter database stop logical standby apply;
Database altered.
SQL> exec dbms_logstdby.apply_set('MAX_SGA',50)
PL/SQL procedure successfully completed.
SQL> alter database start logical standby apply immediate;
Database altered.
檢視調整後的LCR最大記憶體:
SQL> select * from v$logstdby_stats where name like '%SGA%LCR%';
NAME VALUE
------------------------------ --------------------
maximum SGA for LCR cache 50
四、調整事物應用方式:
預設情況下邏輯Standby端的事物順序與primary資料庫提交的事物順序是一樣的;
設定邏輯Standby的書屋順序不按primary資料庫順序執行:
SQL> alter database stop logical standby apply;
Database altered.
SQL> exec dbms_logstdby.apply_set('PRESERVE_COMMIT_ORDER', 'FALSE');
PL/SQL procedure successfully completed.
SQL> alter database start logical standby apply immediate;
Database altered.
恢復邏輯Standby資料庫的事物執行順序:
SQL> exec dbms_logstdby.apply_unset('PRESERVE_COMMIT_ORDER')
PL/SQL procedure successfully completed.
SQL> alter database start logical standby apply immediate;
Database altered.
-----EDN-----
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29320885/viewspace-1107828/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 邏輯Standby建立及日常管理,優化優化
- 物理Standby資料庫及邏輯Standby資料庫(Physical Standby & Logical Standby)資料庫
- 物理standby和邏輯standby的區別
- sql優化之邏輯優化SQL優化
- DataGuard搭建邏輯StandBy
- 管理邏輯STANDBY資料庫——DATA GUARD概念和管理資料庫
- 建立邏輯STANDBY資料庫——DATA GUARD概念和管理資料庫
- PostgreSQL邏輯複製資料同步到kafkaSQLKafka
- [zt] Oracle如何配置邏輯備用資料庫(Logical Standby)Oracle資料庫
- 【SQL 優化】異常的邏輯讀SQL優化
- 【效能優化】ORACLE資料庫效能優化概述優化Oracle資料庫
- 邏輯 rac standby和物理 rac standby的switchover 和 failoverAI
- ORACLE10G 物理standby轉為邏輯standbyOracle
- 關於 es 資料同步的一次效能優化實踐優化
- 資料庫效能優化資料庫優化
- 邏輯資料庫的管理資料庫
- Spark效能優化:優化資料結構Spark優化資料結構
- 資料化與資訊化的邏輯,有本質的區別
- 大量邏輯讀的瓶頸分析和優化優化
- Oracle physical standby中的邏輯備份(exp命令)Oracle
- 資料庫效能優化2資料庫優化
- Oracle資料庫效能優化Oracle資料庫優化
- MYSQL 大資料效能優化MySql大資料優化
- SQL Server效能的改進得益於邏輯資料庫設計SQLServer資料庫
- MySQL資料庫的效能優化指南MySql資料庫優化
- [zt] 談資料庫的效能優化資料庫優化
- 【DataGuarad】邏輯遷移與standby備庫
- 資料庫效能優化之SQL語句優化資料庫優化SQL
- Java 執行緒與同步的效能優化Java執行緒優化
- Amazon Redshift簡化資料管道背後的技術邏輯
- 資料庫優化效能解析資料庫優化
- ORACLE資料庫效能優化概述Oracle資料庫優化
- 資料庫效能優化總結資料庫優化
- 關於前端資料&邏輯的思考前端
- 資料分析 | 資料視覺化圖表,BI工具構建邏輯視覺化
- 資料庫效能優化-索引與sql相關優化資料庫優化索引SQL
- 《Oracle效能優化求生指南》-第四章:資料庫邏輯設計和物理設計-學習小結-1Oracle優化資料庫
- Oracle 10g 邏輯Standby 建立及注意點Oracle 10g