物化檢視重新整理結合ADG的嘗試 (r8筆記第47天)
最近開發提了幾個需求,需要把幾個線上的分散式的表整合到統計系統中方便統計,看來分久必合,合久必分,當時的分開考慮,肯定沒有想到以後會整合起來,這 可對我們是一些額外的工作,這個時候增量資料的問題就擺在我們眼前,當然目前已經基本拋棄了根據日期來增量同步資料,因為會有dml的資料不準確,當然數 據多了,分析多了,對統計系統對資料的精確度也在提高。 比如資料的架構是下面這種形式,左邊的是線上系統,右邊的統計系統。
當然這種重新整理現在已然沒有什麼新意了,而且目前來看也算是經歷住了一些大查詢的考驗。 但是如果結合ADG來看待物化檢視重新整理,是否能夠成正果? 原本的重新整理流程圖是這樣的情況,假設存在兩個OLTP的主庫primary1,primary2,資料都會通過物化檢視日誌增量重新整理到統計庫中。
我在處理這種案例的時候就在想,第一次重新整理是一個全量的重新整理,如果資料量很大的情況,對主庫是不是壓力有些大,如果物化檢視比較多的情況下,這勢必對主庫有一些潛在的影響。
尤其是我碰到一個主庫沒有開大頁,然後看著swap等待程序,剩餘記憶體被越刷越少,老是擔心出現OOM-killer的情況,這就得不償失了。
如果是在備庫執行,在ADG的環境中,可以認為是同一個資料來源,只是一個只讀,一個可寫。
假設我們需要建立的物化檢視如下:
create materialized view TEST.ACC20_USER_INFO refresh fast as select *from ACC20.USER_INFO@public_primary1;
create materialized view TEST.ACC15_USER_INFO refresh fast as select *from ACC15.USER_INFO@public_primary1;
但是吃了晚飯回去繼續折騰這個問題,發現卻不行了。
非常相似的語句,繼續開了一個視窗執行就報錯了。
SQL>create materialized view TEST.ACC13_USER_INFO refresh fast as select *from ACC13.USER_INFO@public_primary1;
create materialized view TEST.ACC13_USER_INFO refresh fast as select *from ACC13.USER_INFO@public_primary1;
*
ERROR at line 1:
ORA-16000: database open for read-only access
ORA-06512: at "SYS.DBMS_SNAPSHOT_UTL", line 364
ORA-06512: at "SYS.DBMS_SNAPSHOT_UTL", line 446
ORA-06512: at line 1
SQL>create materialized view TEST.ACC13_USER_INFO refresh fast as select *from ACC13.USER_INFO@public_primary1;
create materialized view TEST.ACC13_USER_INFO as select *from ACC13.USER_INFO@public_primary1;
*
ERROR at line 1:
ORA-16000: database open for read-only access
ORA-06512: at "SYS.DBMS_SNAPSHOT_UTL", line 364
ORA-06512: at "SYS.DBMS_SNAPSHOT_UTL", line 446
ORA-06512: at line 1
自己在想,是不是物化檢視日誌影響的,於是刪除了主庫的物化檢視日誌,繼續測試,在ADG的環境繼續嘗試全表掃描,依舊是同樣的報錯。
不能增量重新整理著實讓我有一些失落,為什麼最開始的時候可以呢,那是因為在同一個session裡。
不過退一步來說,對於ADG的資料重新整理,如果附帶這樣的子查詢的形式,其實還是可行的,不過對於大量資料的重新整理就得不償失了。
CREATE MATERIALIZED VIEW MIMI.MV_TEST
TABLESPACE USERS
BUILD IMMEDIATE
REFRESH COMPLETE
AS (SELECT * FROM TEST@MIMI_ROSTBY WHERE ROWNUM>0);
筆記簡介:
分享自己整理的學習筆記,大多數是關於oracle的工作心得,還有一些關於linux,shell,MySQL,Java開發等的筆記,有感興趣的朋友可以加我微信公眾號: jianrong-notes 已經堅持740多天了,共同進步,儘量堅持每天都發 :)
可以通過以下方式聯絡到我
微信公眾號:jianrong-notes
個人郵箱 :[email protected]
個人技術部落格:http://blog.itpub.net/23718752/
微信: jeanron100 (新增請註明原因)