俞群愛
(浙江傳媒學院現代教育技術中心,杭州 310018)
Oracle-AR多主體復制方式(Advanced Replication Multi-master Replication)是Oracle數據庫提供的一種數據對稱復制方式,它通過Oracle的一些進程完成數據庫對象的復制、保存,使多個數據庫組成一個分布式的系統。所有在一臺服務器的數據改變會被捕捉并提交到另一臺服務器上,從而實現兩臺數據庫服務器的數據同步。使用Oracle-AR多主體復制方式可以實現數據的高可用性,當復制對其中一臺主機出現問題時,應用可以在另一臺主機上正常運行,保證應用的連續性[1]。
Oracle-AR多主體復制方式由兩臺數據庫服務器組成,一臺為源數據庫,一臺為目的數據庫。源數據庫和目的數據庫的構成是相同的,都由錯誤日志(Error log)、內部過程、復制表、內部觸發器、延遲事務隊列和后臺進程(SMON PMON)等6部分組成,如圖1所示。
在多臺數據庫服務器上需要同步的對象稱為復制對象,復制對象的集合稱為復制組。內部觸發器(Inner Trigger)捕捉復制組里復制對象的數據變化,以事務的形式存放在延遲事務隊列(Deferred Transaction Queue)里。在規定的時間點,后臺進程激活作業,作業把延遲的事務推送到目的數據庫。目的數據庫上的內部過程接收到延遲事務,在復制組里的相應對象里執行該事務,如果事務不能成功執行,則保存在錯誤隊列里。至此,一個完整的同步過程就結束了。由于數據庫內部高級復制構成是完全一樣的,源數據庫和目的數據庫概念是相對的,只要是發起事務的數據庫均可稱為源數據庫。

圖1 Oracle-AR的內部機制圖Fig.1 Oracle-AR interior system
Oracle-AR多主體復制方式通過事務的傳遞達到兩臺或多臺數據庫服務器數據的一致,保障了數據的安全性,保證了數據的可用性,成為理想的數據庫容錯方案,其應用廣泛,如聯網售票系統[2]、遠程倉儲配送系統[3]等。Oracle-AR多主體復制方式具有以下5個方面的優點。
(1)高可用性
有多份“一致”數據,后臺應用可以連任何一臺數據庫服務器,并且多臺數據庫服務器均是可讀可寫,增加并行性。
(2)支持應用鏈接切換
很好地支持Failover(主要針對主庫失效等故障原因)與Switchover(針對主庫升級等維護原因)兩種切換方式。切換時間快,損失的鏈接較少。
(3)部署維護監控容易
Oracle-AR多主體復制方式部署簡單易行,可以通過OEM(Oracle EnterprisesManagement)工具容易監控運行狀態,操作方便。
(4)較強的容錯性
Oracle-AR的多主體復制方式同步的粒度是事務,所有的事務均存放在隊列中,不能成功執行的事務也會保存起來,待以后重用。
(5)可擴展性好
Oracle AR對稱復制能同步多臺數據庫服務器上的數據,而且擴展不需改動先前部署站點。
Oracle-AR多主體對稱復制方式的部署雖然與實際應用環境有關,但基本上可以分為兩個階段,即數據庫服務器間通信配置階段和多主體對稱復制的配置階段,如圖2所示。

圖2 Oracle-AR多主體復制部署步驟Fig.2 Steps of Oracle-AR multi-master replication
2.1.1 參數初始化
部署Oracle-AR對稱復制多主體方式需要調整一些初始化參數。這些參數設置如果不合理,可能成為多主體方式運行的瓶頸。需修改的參數有:
(1)global-names=true(數據庫鏈接名(database link)必須與被連接的數據庫名稱一致);
(2)job-queue-processes=15(指SNP(Snapshot Process)進程的啟動個數為15。系統缺省值為0,正常定義范圍為0~36,根據任務的多少,可以配置不同的數值。)
2.1.2 網絡通信文件
NET8是Oracle網絡通信機制,支持本地客戶端訪問遠程數據庫,實現了分布式數據庫方式和Oracle的分布式處理。配置NET8可以實現后臺應用連接數據庫的透明切換。
2.1.3 數據庫鏈接
數據庫鏈接是兩個物理數據庫服務器間的通道,它允許客戶端方便地訪問對端的數據庫。數據庫鏈接是單向的,要想使數據庫間可以互相訪問,需要建立兩條數據庫鏈接。在Oracle-AR對稱復制多主體方式中建立數據庫鏈接,是為了延遲事務能夠安全可靠地到達對端數據庫。
2.2.1 創建管理用戶
Oracle-AR多主體復制方式的維護和部署操作都在一個獨立的帳戶下進行的,這個帳戶為REPADMIN。
2.2.2 創建復制組和添加復制對象
Oracle-AR多主體復制方式支持的復制對象的種類很多,基本上涵蓋了數據庫所有的對象,主要有表,索引,包體,存儲過程函數,觸發器,同義詞等對象。
2.2.3 復制點
Oracle-AR多主體復制方式把所有需要進行同步的數據庫服務器稱為主體站點(Master Site)。把可以進行復制管理操作的站點稱為主體定義站點(Master Defined Site)。主體定義站點只能有一個,主體站點可以有多個,在主體定義站點實施的管理操作會自動同步到各個主體站點執行。
2.2.4 設置沖突解決方案
由于Oracle-AR內的每個數據庫上的數據可讀可修改,如果正好兩臺數據庫分別對同一復制對象的同一數據進行修改,就會發生數據沖突,需要一種機制來解決這種危險的情況,這種機制稱為沖突解決方案。Oracle提供很多的沖突解決策略,用戶也可以定制自己的沖突解決策略。
2.2.5 設置推送策略
推送策略是指將延遲事務隊列里的事務通過數據鏈路推送到多個數據庫的時間安排。如果推送時間過短,對數據庫性能影響較大,如果推送時間過長,各個數據庫上的數據存在不一致性,而且增加了沖突可能性。
彩鈴(Color Ring Back Tone,CRBT)業務是移動運營商為迎合年輕人時尚前衛而開通的業務。該業務旨在張揚個性,與人們的生活息息相關。如果彩鈴業務不能正常運行,或者定制的鈴音混亂,會導致大量的客戶投訴。因此,為彩鈴業務設計的數據庫方案既要保證數據安全性,又要保證業務的連續性。同時,考慮到彩鈴業務的特點,在初期定制時修改數據量較大,到后期改動比較平穩,我們決定采用Oracle-AR多主體復制方式。
為了支持應用連接數據庫的透明切換,我們把兩臺服務器上的數據庫設置成完全一樣的,具體配置如表1所示。

表1 彩鈴業務服務器/數據庫的配置Table 1 The configuration of server database of CRBT service
配置NET8網絡連接,為了實現對應用透明數據庫連接,需要配置虛網絡服務名iip.ebupt.com,虛網絡服務名會動態綁定iip1上或iip2上數據庫。配置如下:
在tnsnames.ora里設置數據庫連接字符串,使兩臺數據庫之間可以互相訪問。


去除listener.ora中(GLOBAL-DBNAME=iip.ebupt.com)項,配置模式如下:


由于iip1和iip2上的數據庫名和域名均相同,使得它們的global-name也相同,不能順利地建立數據庫鏈接,因此,需要強制地轉換一下數據庫的全局名:
alter database rename global-name to IIP1.EBUPT.COM;
alter database rename global-name to IIP2.EBUPT.COM;
后續的操作與正常的部署流程完全一樣,這里不再贅述。
Oracle-AR多主體復制方式成功滿足了移動彩鈴業務的需求,保證了數據的安全性和可靠性,同時實現了數據的高可用性,在出現單點故障時,彩鈴應用能很快地切換到另外數據庫上,保證了業務的連續性,可為彩鈴用戶提供可靠、高質量的服務。
[1] 徐秀華,文必龍,畢碩本.Oracle 9i高級復制技術及其應用[J].計算機應用研究,2003(11):107-109.XU Xiu-hua,WEN Bi-long,BI Shuo-ben.Oracle 9i Advanced Replication Technology and Its Applications[J].Application Research of Computers,2003(11):107-109.(in Chinese)
[2] 李振宏.基于Oracle高級復制的聯網售票系統數據庫設計[J].電腦開發與應用,2007,20(5):62-63.LI Zhen-hong.The network ticketing system database design of Oracle-based Advanced Replication[J].Computer Development&Applications,2007,20(5):62-63.(in Chinese)
[3] 姚東.Oracle高級復制技術在“遠程倉儲配送”系統的應用[J].現代計算機,2002(9):29-32.YAO Dong.Oracle advanced replication technology in the“remote storage and distribution” system application[J].Modern Computer,2002(9):29-32.(in Chinese)