共計 3179 個字符,預(yù)計需要花費(fèi) 8 分鐘才能閱讀完成。
本篇文章為大家展示了 Oracle 系統(tǒng)數(shù)據(jù)的復(fù)制技術(shù),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
數(shù)據(jù)復(fù)制的實現(xiàn)
下面我們舉一個例子來說明各步具體需要完成的工作。在這個例子中我們采用多主控站點(diǎn)復(fù)制方式,設(shè)有兩個主控站點(diǎn)和兩個共享數(shù)據(jù)表。兩個主控站點(diǎn)分別為:處理站點(diǎn)(cl.world)和解釋站點(diǎn)(js.wo rld);兩個數(shù)據(jù)表為測區(qū) (survey) 和測線 (line)。
STEP1 創(chuàng)建復(fù)制站點(diǎn):
(1)首先以 SYSTEM 身份登陸主站點(diǎn)數(shù)據(jù)庫 cl.worldCONNECT system/manager@cl.world;
(2)創(chuàng)建用戶 mdash; 復(fù)制管理員,并為該用戶授權(quán)復(fù)制管理員負(fù)責(zé)復(fù)制站點(diǎn)的創(chuàng)建和管理,每個復(fù)制站點(diǎn)都必須創(chuàng)建復(fù)制管理員以下為引用的內(nèi)容:
CREATE USER repadmin IDENTIFIED BY repadmin; BEGIN DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username = rsquo;repadmin rsquo;); END;
(3)為本站點(diǎn)指定傳播者;
傳播者負(fù)責(zé)將本地 *** 更新的數(shù)據(jù)傳播到其他站點(diǎn)上,以下為引用的內(nèi)容:
BEGIN DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username = rsquo;repadmin rsquo;); END;
(4)為本站點(diǎn)指定接收者;
接收者負(fù)責(zé)接收其他站點(diǎn)上的傳播者傳送過來的數(shù)據(jù),以下為引用的內(nèi)容:
BEGIN DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP ( username = rsquo;repadmin rsquo;, privilege_type = rsquo;receiver rsquo;, list_of_gnames = NULL); END;
(5)確定清除時間;
為了使傳送過來事務(wù)隊列不致過大,需要將成功加載的事務(wù)從事物隊列里清除掉,這里設(shè)定每小時清除一次。以下為引用的內(nèi)容:
CONNECT repadmin/repadmin@cl.world BEGIN DBMS_DEFER_SYS.SCHEDULE_PURGE ( next_date = SYSDATE, interval = rsquo;SYSDATE + 1/24 rsquo;, delay_seconds = 0); END;
在建立好站點(diǎn) cl.world 后,以同樣的方法創(chuàng)建站點(diǎn) js. world。
(6)創(chuàng)建各主控站點(diǎn)之間的調(diào)度鏈接。
創(chuàng)建各主控站點(diǎn)之間的調(diào)度鏈接需要先在各主控站點(diǎn)間建立數(shù)據(jù)庫鏈接,之后為每個數(shù)據(jù)庫鏈接定義調(diào)度時間。
首先,在處理站點(diǎn)上建立與解釋站點(diǎn)的數(shù)據(jù)庫鏈接,這里需要先建立一個公用數(shù)據(jù)庫鏈接,供其他私有數(shù)據(jù)庫鏈接來使用。以下為引用的內(nèi)容:
CONNECT SYSTEM/MANAGER@cl.world CREATE PUBLIC DATABASE LINK js.world USING rsquo;js.world rsquo;; CONNECT repadmin/repadmin@cl.world CREATE DATABASE LINK js.world CONNECT TO repadmin IDENTIFIED BY repadmin;
同樣,在解釋站點(diǎn)上建立與處理站點(diǎn)的數(shù)據(jù)庫鏈接。以下為引用的內(nèi)容:
CONNECT SYSTEM/MANAGER@js.world CREATE PUBLIC DATABASE LINK cl.world USING rsquo;cl.world rsquo;; CONNECT repadmin/repadmin@js.world CREATE DATABASE LINK cl.world CONNECT TO repadmin IDENTIFIED BY repadmin;
調(diào)度鏈接確定本站點(diǎn)上的事務(wù)向其他站點(diǎn)發(fā)送的頻度,下面的代碼為 10 分鐘一次,以下為引用的內(nèi)容:
CONNECT repadmin/repadmin@cl.world BEGIN DBMS_DEFER_SYS.SCHEDULE_PUSH ( destination = rsquo;js.world rsquo;, interval = rsquo;SYSDATE + (1/144) rsquo;, next_date = SYSDATE, parallelism = 1, execution_seconds = 1500, delay_seconds = 1200); END;
在解釋站點(diǎn)上做相同的工作 STEP2 創(chuàng)建主控組在復(fù)制環(huán)境中,Oracle 用組來管理復(fù)制對象。通過將相關(guān)的復(fù)制對象放在一個組里,從而方便對大量數(shù)據(jù)對象的管理。
這里我們假設(shè)用戶模式 integr ation 在處理站點(diǎn)和解釋站點(diǎn)都已存在,而且表測區(qū) (survey) 和測線 (line) 也已經(jīng)創(chuàng)建。
(1)創(chuàng)建主控組對象 以下為引用的內(nèi)容:
CONNECT repadmin/repadmin@cl.world BEGIN DBMS_REPCAT.CREATE_MASTER_REPGROUP ( gname = rsquo;inte_repg rsquo;); END;
(2)向主控組中添加數(shù)據(jù)對象,將測區(qū)表 survey 加入到組 inte_repg 中以下為引用的內(nèi)容:
BEGIN DBMS_REPCAT.CREATE_MASTER_REPOBJECT ( gname = rsquo;inte_repg rsquo;, type = rsquo;TABLE rsquo;, oname = rsquo;survey rsquo;, sname = rsquo;integration rsquo;, use_existing_object = TRUE, copy_rows = FALSE); END;
以同樣的方法將測線表 line 加入到組 inte_repg 中。
(3)在主控組中添加其他參與復(fù)制的站點(diǎn),數(shù)據(jù)庫之間的同步方式在此指定以下為引用的內(nèi)容:
BEGIN DBMS_REPCAT.ADD_MASTER_DATABASE ( gname = rsquo;inte_repg rsquo;, master = rsquo;js.world rsquo;, use_existing_objects = TRUE, copy_rows = FALSE, propagation_mode = rsquo;ASYNCHRONOUS rsquo;); END;
(4)如果可能出現(xiàn)沖突,則需要配置沖突解決方案。沖突解決方案將在后面介紹。
(5)為每個對象生成復(fù)制支持, 以下為引用的內(nèi)容:
BEGIN DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT ( sname = rsquo;integration rsquo;, oname = rsquo;survey rsquo;, type = rsquo;TABLE rsquo;, min_communication = TRUE); END;
測線表 line 也一樣。
(6)重新開始復(fù)制以下為引用的內(nèi)容:
BEGIN DBMS_REPCAT.RESUME_MASTER_ACTIVITY ( gname = rsquo;inte_repg rsquo;); END;
以同樣的方式設(shè)置解釋站點(diǎn)。設(shè)置成功后,數(shù)據(jù)復(fù)制過程就宣告完畢,庫中的數(shù)據(jù)就可進(jìn)行復(fù)制。
上述內(nèi)容就是 Oracle 系統(tǒng)數(shù)據(jù)的復(fù)制技術(shù),你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。