久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久

以文本方式查看主題

-  曙海教育集團論壇  (http://www.xinguifushi.cn/bbs/index.asp)
--  Oracle數據庫  (http://www.xinguifushi.cn/bbs/list.asp?boardid=65)
----  有關oracle高可靠性的一些討論和想法  (http://www.xinguifushi.cn/bbs/dispbbs.asp?boardid=65&id=2496)

--  作者:wangxinxin
--  發布時間:2010-12-11 10:49:48
--  有關oracle高可靠性的一些討論和想法
Oracle 數據庫復制常用腳本 Oracle的數據復制是一個Oracle數據庫產品中比較成熟的一項技術,它是整個分布式計算解決方案的一個重要組成部分。 對于具有復制環境的數據庫系統,和Oracle DBA一樣,同樣要有一個人來專門負責維護Oracle的數據復制問題,稱之為Oracle Replication Administrator(Oracle復制治理員)。本文就Oracle數據復制中復制治理員經常關心的一些關于復制系統的問題,編寫了不同的存儲過程。當然,通過Oracle提供的復制治理器也可以達到這些目的,但在實際應用中,Oracle復制治理器具有不靈活,速度慢,同時我們不能對其查詢結果進行隨意控制等等的缺點。一、查看Oracle8x延遲事務隊列調用及調用個數IT我最牛-程序員的技術討論與分享園地U Zh:uwC*f [`
推(push)一個大的延遲事務(Deferred Transactions)隊列是非常慢的。一個常見的問題就是一個事務中含有非常多的調用(calls)。假如系統檢測到一個錯誤,如ora-01403(數據未找到錯誤),也就是我們常說的檢測到沖突,而且沒有沖突消除方法,寫到deferror錯誤表和回滾事務的時間就會更長,事務中假如調用calls很多,則消耗在任何一個調用的時間就會以指數形式增長。對于數據復制中每個事務的調用數Oracel強烈建議不超過50個。下面的存儲過程提供了一個快速查看延遲事務隊列中的事務列表以及每個事務中調用數的腳本。輸出是以傳輸順序排列的,這個順序就是事務將要傳播到主節點的順序。這對于確定傳播中的延遲以及掛起等是非常有幫助的。在搭建Oracle數據復制環境中,有一個經驗是值得注重的,那就是一定要設置沖突解決方案,即可使用Oracle系統提供的幾種方案,也可以自己編寫腳本來完成沖突處理。為什么這樣說,一定要設置沖突解決方案,也許我們可以說,我們的復制環境是一個單項復制,不可能出現沖突現象。在這里我講一個自己的親身經歷的例子來說明這個問題,在實際工作中,我搭建了一個具有15個節點的高級復制環境,一個主定義節點,14個主節點,其中14個主節點向主定義節點單向傳遞數據。一般來講這種情況下不會出現沖突。但是在實際應用中,問題就出現了,其中幾個節點在傳輸了一些數據后,就掛(hang)了起來。所有可能查找的原因到查了,始終發現不了問題的根結。最后發現是由于數據傳播到遠程節點后,出現了錯誤,而在該節點又沒有設置沖突解決方案,同時出現錯誤的該事務又具有超過1000條的調用。其中有一條調用出錯了,事務需要回滾,而這個在本地和遠程節點間的回滾時間就會以幾何基數增長。就出現了前面談到的系統掛起(hang)的表現。這也就是說即是在根本不可能出現沖突的系統中,由于偶然的不定的錯誤進程,批量數據的處理以及沒有考慮復制情況下的數據導入都可造成在傳播過程中嚴重的性能問題,最嚴重的情況就是系統掛起,不能完成正常的復制工作。最簡單和有效的辦法就是在多路復制環境下設置一個系統確省的沖突處理方法來避免這種情況的發生。下面這個存儲過程就是在Oracle 8 環境下列出延遲事務隊列中的事務和事務中調用個數的腳本,該腳本對Oracle 7 不支持,這是因為Oracle 8 和Oracle 7 的復制機制發生了變化。存儲過程調用方法:在SQL/PLUS下,首先運行下面的設置,使存儲過程的輸出到屏幕上, SET SERVEROUTPUT ON SIZE 200000IT我最牛-程序員的技術討論與分享園地 [QN1b/S{p
EXEC P_LIST_TRANSACTIONS(ORA_SJJK); 其中,存儲過程的參數as_destination為所要查看的事務傳播到目的節點的延遲隊列,為數據庫聯接(DBLINK)名。假如我們看到一個事務具有很多的調用(超過50個),這個事務很可能就是造成延遲事務隊列推過程延遲甚至是掛起的原因。附:存儲過程腳本:下載該腳本 CREATE OR REPLACE PROCEDURE REPADMIN.P_LIST_TRANSACTION(as_destination in VARCHAR2) ISIT我最牛-程序員的技術討論與分享園地.iF8N-]X)]
local_node VARCHAR2(128);
h}6G.w-Ynvo xm0remote_node VARCHAR2(128);
-rt;~\'~S5t;H$_0last_scn NUMBER;
]-IYARd!C0last_tid VARCHAR2(22);
A(G:f1^/zEg0last_tdb VARCHAR2(128);
-k7e1jF8x~%Y2U0cnt NUMBER; CURSOR c(last_delivered NUMBER, last_tid VARCHAR2, last_tdb VARCHAR2) IS
%K} iw5^+U0@.p#l_;Y0select cscn, enq_tid,
"mfj?wQPR?0dscn, DECODE(c.recipient_key, 0, \'D\', \'R\')IT我最牛-程序員的技術討論與分享園地"|T iM&C
from system.def$_aqcall c whereIT我最牛-程序員的技術討論與分享園地 ]7{z(V)Y r
(c.cscn >= last_delivered)
r3j^ qN(Q dJ0and ((c.cscn > last_delivered) or (c.enq_tid > last_tid))IT我最牛-程序員的技術討論與分享園地#cM`Sy2|z"J!mkd
and (IT我最牛-程序員的技術討論與分享園地 uGND5w^zK
( c.recipient_key = 0IT我最牛-程序員的技術討論與分享園地 S9X"R0rr [
and exists ( select /*+ index(cd def$_calldest_primary) */ nullIT我最牛-程序員的技術討論與分享園地)}6g9X,VW6rSI
from system.def$_calldest cd
Qu RoT0where cd.enq_tid = c.enq_tid
c:|F}H:U8H0and cd.dblink = remote_node ) )IT我最牛-程序員的技術討論與分享園地o:xlN-\\~&RW
or ( c.recipient_key > 0
/n.C.U#x+@^r9i0and ( ( exists (
RJn1N X8L0select null from system.repcat$_repprop P
p0K"SHo0where P.dblink = remote_node
(v/@uPB S#Z+BK0and P.how = 1IT我最牛-程序員的技術討論與分享園地z8c/d,_dl:k)V z4v c?\\)I
and P.recipient_key = c.recipient_keyIT我最牛-程序員的技術討論與分享園地8^#XZ esRGsV7@X
and ((P.delivery_order is NULL)
J,A8YJF&R.rk7i0or (P.delivery_order < c.cscn))))IT我最牛-程序員的技術討論與分享園地Q~QMzj2qu
or ( existsIT我最牛-程序員的技術討論與分享園地h0u!g4u`n]Fk
( select /*+ ordered use_nl(rp) */ nullIT我最牛-程序員的技術討論與分享園地xi7JU%o8k ?rK6^
from system.def$_aqcall cc, system.repcat$_repprop rp
]LI(_ iW*Lq0where cc.enq_tid = c.enq_tidIT我最牛-程序員的技術討論與分享園地 j L]1po+OO$}
and cc.cscn is null
DT:w:s K mV%Zi)e-eE0and rp.recipient_key = cc.recipient_key
T Sk,Q3Yi0and rp.how = 1IT我最牛-程序員的技術討論與分享園地#oJ\'FE/m:oZ
and rp.dblink = remote_node
5Sq cXFi0and ((rp.delivery_order is NULL)IT我最牛-程序員的技術討論與分享園地W%i]?[\'Q H"w%c t6R
or (rp.delivery_order < c.cscn)))))))
)Jz,Z _.v8sKK0order by c.cscn, c.enq_tid;
-bX3g%})S0 BEGINIT我最牛-程序員的技術討論與分享園地cg;O {S;P,C
SELECT NLS_UPPER(global_name) INTO local_node FROM global_name;IT我最牛-程序員的技術討論與分享園地6V*YiVDf1V
SELECT dblink INTO remote_node from deftrandest
4rwJ,K)J%T#Vb0WHERE dblink LIKE UPPER (as_destination\'%\') AND ROWNUM < 2;IT我最牛-程序員的技術討論與分享園地Ot {l0Y3r
IF (remote_node IS NULL) THENIT我最牛-程序員的技術討論與分享園地 M0?+t&J!i7K7A
DBMS_OUTPUT.PUT_LINE (\'不能確定目標節點,輸入參數有誤!\');IT我最牛-程序員的技術討論與分享園地h!OAf1V!p$_%a\\
RETURN;
J#| ~8K)\\(~0ELSEIT我最牛-程序員的技術討論與分享園地r1TMy#X-ycB A
DBMS_OUTPUT.PUT_LINE (\'延遲事務目標節點為: \'remote_node);
}@3Q4B hX0QNU0DBMS_OUTPUT.PUT_LINE (\'-------------------------------------------\');
j#O*A.|9l*x\'t0END IF;
]Zu\\p!M;oL0SELECT last_delivered, last_enq_tid, dblink
M+},sK&?kTW0yy0INTO last_scn, last_tid, last_tdbIT我最牛-程序員的技術討論與分享園地 K6p)_&{{.w9j\\F\'l
FROM system.def$_destinationIT我最牛-程序員的技術討論與分享園地1TReDRJ&S@M
WHERE dblink = remote_node; FOR R IN C(last_scn,last_tid,last_tdb) LOOP
/d7paN2i0SELECT count(*) INTO cnt FROM system.def$_aqcall WHERE enq_tid = r.enq_tid;
\'ZsC8D&i1VPn0DBMS_OUTPUT.PUT_LINE (\'延遲事務 ID=\'r.enq_tid\' 調用個數=\'to_char(cnt));
mCj!Dqr$Y/n#}0END LOOP;
rune`K0END;
9yy\'z{9dB0/
@5wg:b|6{0  二、Oracle 8高級復制環境設置問題診斷腳本要保證搭建的一個高級復制環境工作,必須保證所有的復制對象處于正常狀態,對于一個高級復制環境,要檢查一個復制環境中是否所有對象均處于正常工作狀態,需要檢查不同的系統字典對象,包括復制組對象,復制對象,復制方案對象等等。假如搭建的這個高級復制環境包含很多節點,每個節點又包含幾個復制方案(schema)以及每個方案又包含多個復制對象,則完成一遍檢查需要作很多的重復工作,這里針對這個問題,編寫了一個復制設置問題診斷包,只有運行該包中相應的過程,即可完成對上面提到的相關對象的診斷,給出相應診斷結果。運行方法是,在SQL/PLUS環境下, SQL> spool <文件名>IT我最牛-程序員的技術討論與分享園地}M(~$p;~+u
SQL> set serveroutput on
Y\'krMK/REE0SQL> exec rep_diag.rep_diag; 這里強調一點,運行該包的用戶,必須具有對系統字典表dba_repschema、dba_diagnose、dba_repcat以及dba_repcatlog的檢索(select)權限,當然,復制治理員(RepAdmin)用戶是均有這些權限的。附:高級復制環境設置問題診斷包腳本。下載該腳本 CREATE OR REPLACE PACKAGE REP_DIAG IS
RmHX+AO kyL0PROCEDURE REP_DIAG;IT我最牛-程序員的技術討論與分享園地} g W\'f)wR*`3\\4H
PROCEDURE REP_SCHEMA;IT我最牛-程序員的技術討論與分享園地O L][Y\'i:h
PROCEDURE REP_OBJECT;
?sl|$N)G*W0PROCEDURE REP_ERROR;IT我最牛-程序員的技術討論與分享園地t(sw~2W%d,O ES3j
PROCEDURE REP_STAT;IT我最牛-程序員的技術討論與分享園地glC a aHf{f
END REP_DIAG;
9tosP r2i9iQ0/ CREATE OR REPLACE PACKAGE BODY REP_DIAG IS
%}GF\'Ll%O3s0PROCEDURE REP_DIAG ISIT我最牛-程序員的技術討論與分享園地E^B3{9N(z.Q{
BEGINIT我最牛-程序員的技術討論與分享園地 q\\ EDRj0w m
        REP_SCHEMA;IT我最牛-程序員的技術討論與分享園地M-H3HX.F{
        REP_OBJECT;IT我最牛-程序員的技術討論與分享園地 s+]\'[rz\'w
        REP_ERROR;IT我最牛-程序員的技術討論與分享園地l0nO9l q#K&L2o
        REP_STAT;       
mP"SO\\0END REP_DIAG; PROCEDURE REP_SCHEMA ASIT我最牛-程序員的技術討論與分享園地)\\)v7|aZZ
   CURSOR C_SCHEMA IS SELECT SNAME, DBLINK, MASTERDEFIT我最牛-程序員的技術討論與分享園地DQ$h#G;g1E:o\'Xb
                FROM SYS.DBA_REPSCHEMA;IT我最牛-程序員的技術討論與分享園地0zD+A pfcN[7L
BEGINIT我最牛-程序員的技術討論與分享園地Zr)Ci[5ij
        DBMS_OUTPUT.PUT_LINE(\'復制方案明細信息\');IT我最牛-程序員的技術討論與分享園地v[!I](f
        DBMS_OUTPUT.PUT_LINE(\'-------------------------\');
"ly?a a4V P ?W ww z%w0        FOR T_SCHEMA IN C_SCHEMA LOOP
(?&A[1uJ W:\\/JA2w0                DBMS_OUTPUT.PUT_LINE(\'方案名稱:    \'T_SCHEMA.SNAME);IT我最牛-程序員的技術討論與分享園地V"|+sC ZH6c
                DBMS_OUTPUT.PUT_LINE(\'是否為主定義節點: \'T_SCHEMA.MASTERDEF);IT我最牛-程序員的技術討論與分享園地H9b2r}4U
                DBMS_OUTPUT.PUT_LINE(\'數據庫聯接名稱:    \'T_SCHEMA.DBLINK);IT我最牛-程序員的技術討論與分享園地p+D6?J/mxl {(`5\\*k
                DBMS_OUTPUT.PUT_LINE(\'.\');IT我最牛-程序員的技術討論與分享園地]J,Cp7txXe5`
        END LOOP;
)p@P\'v[0END REP_SCHEMA;
q5~:i"^ E?f? IN0 PROCEDURE REP_OBJECT AS
Q E-|1|bn.z0   CURSOR C_REP_OBJECT IS SELECT SNAME, ONAME, TYPE, STATUSIT我最牛-程序員的技術討論與分享園地 ?w.KLAU r V@^1m(B
   

主站蜘蛛池模板: 亚洲加勒比 | a欧美| 免费一级特黄特色黄大任片 | 国产亚洲欧美日韩在线观看一区二区 | 老人毛片 | 深夜福利视频大全在线观看 | 亚洲色欧美 | 麻豆视频一区 | 成人a站| 天天看片天天爽_免费播放 天天看夜夜 | 亚洲一级高清在线中文字幕 | 国产一区二区三区免费在线视频 | 成人毛片免费观看视频在线 | 成人在线免费观看网站 | 毛片免费在线观看 | 成人国产精品久久久免费 | 不卡国产视频 | 最新福利片v国产片 | 亚洲国产欧美精品一区二区三区 | 日本三级2021最新理论在线观看 | 综合自拍 | 国产午夜精品理论片在线 | 最刺激黄a大片免费观看下截 | 国产高清一级视频在线观看 | 国产成人精品日本亚洲语音2 | 久久一日本道色综合久久m 久久伊人成人网 | 国产精品美女一区二区三区 | 美女免费毛片 | 丝袜毛片| 国产精品人成人免费国产 | 日本一区二区不卡久久入口 | 国产成人免费手机在线观看视频 | 欧美色视频日本片免费高清 | 欧美日韩一区二区在线视频 | 免费观看性欧美大片无片 | 国产高清无专砖区2021 | 一区二区三区视频免费观看 | 亚洲成人播放 | 成人午夜视频在线观 | 国产在线播放成人免费 | 日韩一级欧美一级在线观看 |