流同步機制優化(二)
流同步機制建立已經快要一年半了,原本執行五、六個小時的過程,目前執行時間已經需要十多個小時左右。如果不對其進行優化,將會影響正常業務。
流同步機制優化(一):http://yangtingkun.itpub.net/post/468/309034
上一篇文章以前確定了幾個優化方向,其中方法三的風險相對較小,也比較易於執行。
但是事情並非如此簡單,通過查詢METALINK發現,清除資訊還要面臨兩個問題:
首先是一個bug:Bug 3953131 - Altering first_scn of Streams capture results in ORA-30036 / ORA-1562。
本來問題已經夠複雜的了,就不希望bug再來搗亂,不過根據bug的描述似乎是由於清除的資料量太大造成的。那麼分多次執行,每次清除部分資料,應該可以避免這個問題。
第二個問題是,似乎直接使用DBMS_CAPTURE_ADM包的ALTER_CAPTURE過程對9i不適應。在METALINK文章裡面談到,這個方法可以在10g中使用,而在9i中必須使用Oracle提供的另外一個包。這個包單獨提供下載,而且是加密的。在SYS使用者下執行這個包,給人一種很沒有底的感覺。雖然這個包是METALINK提供的。
觀察指令碼中的註釋資訊,發現如果需要提高過程的執行速度,那麼仍然需要在LOGMNR_RESTART_CKPT$表中增加索引。
既然橫豎要新增索引,不如先按照方案二嘗試優化SQL。如果優化效果明顯,就可以避免執行那個加密的包了。
SQL> CONN SYSTEM
Enter password:
Connected.
SQL> CREATE INDEX IND_LOGM_LOG ON LOGMNR_LOG$(FIRST_CHANGE#, NEXT_CHANGE#);
Index created.
SQL> CREATE INDEX IND_LOGM_REST_CKPT_CKPTVALID ON LOGMNR_RESTART_CKPT$(CKPT_SCN, VALID);
Index created.
SQL> CONN STRMADMIN
Enter password:
Connected.
SQL> EXPLAIN PLAN FOR
2 SELECT DISTINCT (A.CKPT_SCN)
3 FROM SYSTEM.LOGMNR_RESTART_CKPT$ A
4 WHERE A.CKPT_SCN <= :1
5 AND A.VALID = 1
6 AND EXISTS
7 (
8 SELECT *
9 FROM SYSTEM.LOGMNR_LOG$ L
10 WHERE A.CKPT_SCN BETWEEN L.FIRST_CHANGE# AND L.NEXT_CHANGE#
11 )
12 ORDER BY A.CKPT_SCN DESC
13 ;
Explained.
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes| Cost |
------------------------------------------------------------------------------
| 0| SELECT STATEMENT | | | | |
| 1| SORT UNIQUE | | | | |
| 2| NESTED LOOPS | | | | |
| 3| INDEX RANGE SCAN| IND_LOGM_REST_CKPT_CKPTVALID | | | |
| 4| INDEX RANGE SCAN| IND_LOGM_LOG | | | |
-------------------------------------------------------------------------------
Note: rule based optimization, PLAN_TABLE' is old version
12 rows selected.
至此優化目的已經到達,再次執行時執行時間已經不到半個小時。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69354/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 流同步機制優化(一)優化
- 安卓之同步機制優劣分析安卓
- 前端效能優化(二)——瀏覽器快取機制前端優化瀏覽器快取
- 鎖機制優化MySQL優化MySql
- 終端優化機制:墓碑機制和Doze優化
- iOS Cell非同步圖片載入優化,快取機制詳解iOS非同步優化快取
- Android效能優化(4):UI渲染機制以及優化Android優化UI
- iOS 二進位制流轉化-專案筆記iOS筆記
- 效能優化-FSL(Force Synchronous Layout)強制同步佈局優化
- Javascript非同步機制JavaScript非同步
- 核心同步機制 RCU
- 同步機制比較
- 深入剖析setState同步非同步機制非同步
- 網站效能優化實戰(二)——深入淺出瀏覽器渲染機制網站優化瀏覽器
- MySQL效能優化(九)-- 鎖機制之行鎖MySql優化
- .NET垃圾回收(GC)機制效能優化方案GC優化
- JS執行機制--同步與非同步JS非同步
- 執行緒同步機制執行緒
- Flutter 非同步機制:microtaskFlutter非同步
- redis主從同步機制Redis主從同步
- MySQL 5.7半同步機制MySql
- mysql主從同步機制MySql主從同步
- Linux 核心同步機制Linux
- Java 同步機制淺談Java
- 淺談:Redis持久化機制(二)AOF篇Redis持久化
- 響應式流的核心機制——背壓機制
- 流機制環境準備
- mysql鎖機制總結,以及優化建議MySql優化
- 觸控事件分發核心機制優化吸收事件優化
- android記憶體管理機制與優化Android記憶體優化
- Java 併發機制底層實現 —— volatile 原理、synchronize 鎖優化機制Java優化
- JavaScript非同步機制詳解JavaScript非同步
- CAS 無鎖式同步機制
- MySQL 引擎特性:InnoDB 同步機制MySql
- 效能優化篇 - js事件迴圈機制(event loop)優化JS事件OOP
- AtomicLong 與 LongAdder(CAS機制的優化)優化
- 阿里IM技術分享(七):閒魚IM的線上、離線聊天資料同步機制優化實踐阿里優化
- C++ 效能優化篇二《影響優化的計算機行為》C++優化計算機