已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
GoldenGate安裝部署及解決方案目錄GoldenGate安裝部署及解決方案11、GoldenGate 簡介32、文檔約定和說明53、GoldenGate軟件安裝63.1 GoldenGate軟件安裝包下載63.2 Windows下安裝73.3 Linux和Unix下安裝84、GoldenGate同步基本配置94.1 oracle之間同步和GoldenGate基礎(chǔ)94.2 oracle與db2同步174.3 oracle與sybase同步185、GoldenGate同步方案195.1 使用GoldenGate初始化加載195.2 一對多數(shù)據(jù)同步(廣播復(fù)制)215.3 多對一數(shù)據(jù)同步(集中復(fù)制)225.4 數(shù)據(jù)轉(zhuǎn)換和過濾235.5 關(guān)于目標(biāo)端高數(shù)據(jù)安全性下的GoldenGate配置方案275.6 GoldenGate雙向復(fù)制(active-active)306、GoldenGate數(shù)據(jù)同步性能測試336.1 測試中主要監(jiān)測數(shù)據(jù)和監(jiān)測方式336.2 測試腳本和GoldenGate配置346.3 測試步驟386.4 性能測試結(jié)果407、GoldenGate推薦配置427.1 添加必要的環(huán)境參數(shù)427.2 BATCHSQL參數(shù)427.3 數(shù)據(jù)庫用戶密碼加密437.4 trail再壓縮448、GoldenGate Troubleshooting458.1 一些常用的進(jìn)程信息和日志的查看方式458.2 解析trail文件45附: GoldenGate新版本的一個特性46參考文檔48文檔控制日期作者版本說明2011-5-19周炯1.0初稿1、GoldenGate 簡介GoldenGate軟件是一種基于日志的結(jié)構(gòu)化數(shù)據(jù)復(fù)制軟件,它通過解析源數(shù)據(jù)庫在線日志或歸檔日志獲得數(shù)據(jù)的增刪改變化,再將這些變化應(yīng)用到目標(biāo)數(shù)據(jù)庫,實現(xiàn)源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫實時同步(real-time data synchronize)、雙活(active-active high availability)。GoldenGate軟件可以在異構(gòu)的IT基礎(chǔ)結(jié)構(gòu)(包括幾乎所有常用操作系統(tǒng)平臺和數(shù)據(jù)庫平臺)之間實現(xiàn)大量數(shù)據(jù)亞秒一級的實時復(fù)制,其復(fù)制過程簡圖如下: 如上圖所示,GoldenGate的數(shù)據(jù)復(fù)制過程如下: 利用捕捉進(jìn)程(Capture Process)在源系統(tǒng)端讀取Online Redo Log或Archive Log,然后進(jìn)行解析,只提取其中數(shù)據(jù)的變化如增、刪、改操作,并將相關(guān)信息轉(zhuǎn)換為GoldenGate自定義的中間格式存放在隊列文件(trail)中。再利用傳送進(jìn)程將隊列文件通過TCP/IP傳送到目標(biāo)系統(tǒng)。捕捉進(jìn)程在每次讀完log中的數(shù)據(jù)變化并在數(shù)據(jù)傳送到目標(biāo)系統(tǒng)后,會寫檢查點(checkpoint),記錄當(dāng)前完成捕捉的log位置,檢查點的存在可以使捕捉進(jìn)程在中止并恢復(fù)后可從檢查點位置繼續(xù)復(fù)制; 目標(biāo)系統(tǒng)接受數(shù)據(jù)變化并緩存到GoldenGate隊列當(dāng)中,隊列為一系列臨時存儲數(shù)據(jù)變化的文件,等待投遞進(jìn)程讀取數(shù)據(jù); GoldenGate投遞進(jìn)程從隊列中讀取數(shù)據(jù)變化并創(chuàng)建對應(yīng)的SQL語句,通過數(shù)據(jù)庫的本地接口執(zhí)行,提交到數(shù)據(jù)庫成功后更新自己的檢查點,記錄已經(jīng)完成復(fù)制的位置,數(shù)據(jù)的復(fù)制過程最終完成。 由此可見,GoldenGate是一種基于軟件的數(shù)據(jù)復(fù)制方式,它從數(shù)據(jù)庫的日志解析數(shù)據(jù)的變化(數(shù)據(jù)量只有日志的四分之一左右)。GoldenGate將數(shù)據(jù)變化轉(zhuǎn)化為自己的格式,直接通過TCP/IP網(wǎng)絡(luò)傳輸,無需依賴于數(shù)據(jù)庫自身的傳遞方式,而且可以通過高達(dá)9:1的壓縮率對數(shù)據(jù)進(jìn)行壓縮,可以大大降低帶寬需求。在目標(biāo)端,GoldenGate可以通過交易重組、分批加載等技術(shù)手段大大加快數(shù)據(jù)投遞的速度和效率,降低目標(biāo)系統(tǒng)的資源占用,可以在亞秒級實現(xiàn)大量數(shù)據(jù)的復(fù)制,并且目標(biāo)端數(shù)據(jù)庫是活動的GoldenGate提供了靈活的應(yīng)用方案,基于其先進(jìn)、靈活的技術(shù)架構(gòu)可以根據(jù)用戶需求組成各種拓?fù)浣Y(jié)構(gòu),如圖所示: GoldenGate可以提供可靠的數(shù)據(jù)復(fù)制,主要體現(xiàn)在下面三點: (1)保證事務(wù)一致性 GoldenGate在災(zāi)備數(shù)據(jù)庫應(yīng)用復(fù)制數(shù)據(jù)庫交易的順序與在生產(chǎn)中心數(shù)據(jù)庫上的順序相同,并且按照相同的事務(wù)環(huán)境提交,確保在目標(biāo)系統(tǒng)上數(shù)據(jù)的完整性和讀一致性,為實時查詢和事務(wù)處理創(chuàng)造了條件。 (2)檢查點機(jī)制保障數(shù)據(jù)無丟失 GoldenGate的抽取和復(fù)制進(jìn)程使用檢查點機(jī)制記錄完成復(fù)制的位置。對于抽取進(jìn)程,其檢查點記錄當(dāng)前已經(jīng)抽取日志的位置和寫隊列文件的位置;對于投遞進(jìn)程,其檢查點記錄當(dāng)前讀取隊列文件的位置。檢查點機(jī)制可以保證在系統(tǒng)、網(wǎng)絡(luò)或GoldenGate進(jìn)程故障重啟后數(shù)據(jù)無丟失。 (3)可靠的數(shù)據(jù)傳輸機(jī)制 GoldenGate用應(yīng)答機(jī)制傳輸交易數(shù)據(jù),只有在得到確認(rèn)消息后才認(rèn)為數(shù)據(jù)傳輸完成,否則將自動重新傳輸數(shù)據(jù),從而保證了抽取出的所有數(shù)據(jù)都能發(fā)送到備份端。數(shù)據(jù)傳輸過程中支持128位加密和數(shù)據(jù)壓縮功能。Oracle 公司的GoldenGate產(chǎn)品,可以在異構(gòu)的IT基礎(chǔ)結(jié)構(gòu)之間實現(xiàn)大量數(shù)據(jù)的秒一級的數(shù)據(jù)捕捉、轉(zhuǎn)換和投遞。目前最新版本為V.0。GoldenGate可以支持幾乎所有常用操作系統(tǒng)如和數(shù)據(jù)庫平臺,如下表所示: 操作系統(tǒng) 數(shù)據(jù)庫 MS NT, 2000, XP, Linux, Sun Solaris, HP-UX, IBM AIX, HP NonStop, TRU64, IBM z/OS,OS/390 Oracle, DB2, MS SQL Server, MySQL, Enscribe, SQL/MP, SQL/MX, Sybase, Teradata, 其他ODBC 兼容數(shù)據(jù)庫 2、文檔約定和說明為統(tǒng)一表示命令和便于查看,對格式作如下約定:GG_HOME 表示從操作系統(tǒng)命令行(cmd)進(jìn)入GoldenGate安裝路徑下執(zhí)行命令。GGSCI 表示在GoldenGate命令環(huán)境中執(zhí)行命令。SQL 表示在數(shù)據(jù)庫下執(zhí)行SQL語句/*/ 表示配置文件內(nèi)容,/*不包含在內(nèi)。 表示自定義參數(shù),如自定義表名以下示例中若無特殊說明,GoldenGate使用的版本主要為11.1,部分使用10.4版本,除部分新特性,兩者基本無差別;GoldenGate命令行中的操作均是在mgr主進(jìn)程running時進(jìn)行,當(dāng)然,GoldenGate安裝部分除外。補充說明:該文檔主要介紹GoldenGate基本使用、GoldenGate的各類解決方案,以及以往本人在使用測試中總結(jié)的經(jīng)驗,文中的例子和執(zhí)行的命令都是參照官方文檔并親自測試執(zhí)行過。但因個人能力所限,錯漏之處再所難免,文檔中也不可能覆蓋GoldenGate的方方面面。而且,因為GoldenGate本身提供了大量的參數(shù),也不可能在這里一一列舉,本文檔中只舉例了常用的一些參數(shù)命令,關(guān)于各個參數(shù)的具體使用語法和作用,還請參照官方文檔Oracle GoldeGate Reference Guide。3、GoldenGate軟件安裝在不同的操作系統(tǒng)和平臺上安裝GoldenGate,需要在官網(wǎng)下載對應(yīng)的版本。32位系統(tǒng)和64位系統(tǒng)的安裝介質(zhì)雖然不同,但是在同一OS上安裝方式是一樣的。GoldenGate需要解析數(shù)據(jù)庫的日志文件,所以安裝位置必須要能訪問到日志文件(在線日志和歸檔文件),并具有相應(yīng)的權(quán)限。3.1 GoldenGate軟件安裝包下載經(jīng)常有人問我GoldenGate的下載地址,所以在這里專門說明一下。GoldenGate軟件的官方下載地址:/ 目前只有這個地址能下到對應(yīng)32位操作系統(tǒng)的安裝介質(zhì)。首頁如下:網(wǎng)頁開頭點擊這個Continue進(jìn)入下載。首次進(jìn)入需要登記一些個人信息,如名字、公司等,然后下方選擇同意協(xié)議之類的,點Continue進(jìn)入搜索。搜索時如下選擇:點GO,然后選擇對應(yīng)版本的Oracle GoldenGate下載。GoldenGate安裝包一般只有幾十兆的大小,下載還是很快的。GoldenGate除了同步軟件這塊,還有其他相關(guān)的產(chǎn)品,比如Oracle GoldenGate Director,用于集中圖形化管理和監(jiān)控;Oracle GoldenGate Veridata,用于兩端同步數(shù)據(jù)質(zhì)量檢驗。在本文檔中暫不介紹。3.2 Windows下安裝(1)安裝Microsoft Visual C + 2005 SP1Windows操作系統(tǒng)需要首先下載安裝Microsoft Visual C + 2005 SP1發(fā)行包(注意該軟件也分32位和64位)。(2)綠色安裝GoldenGate下載對應(yīng)平臺版本的GoldenGate安裝包,解壓。然后進(jìn)入操作系統(tǒng)命令行(cmd),進(jìn)入GoldenGate解壓路徑下,執(zhí)行:GG_HOME ggsci -進(jìn)入GoldenGate命令窗口模式GGSCI CREATE SUBDIRS -建立子目錄GGSCIedit param mgr -配置GoldenGate主進(jìn)程參數(shù)由于第一次執(zhí)行該命令,會提示創(chuàng)建mgr參數(shù)文件,點“是”并在文本中輸入如下參數(shù):/*PORT 7801 -GoldenGate主進(jìn)程端口號DYNAMICPORTLIST 7802-7820 -GoldenGate為進(jìn)程間通訊動態(tài)分配的端口段,注意這里如果分配的端口端少于extract-replicat進(jìn)程對的話,會導(dǎo)致部分進(jìn)程因通訊失敗而出錯。*/保存,生成的參數(shù)文件保存在GG_HOME dirprm下然后可以啟動GoldenGate主控制進(jìn)程:GGSCIstart mgr GGSCIinfo all -查看進(jìn)程狀態(tài)如果進(jìn)程MANAGER狀態(tài)顯示為RUNNING則表示主進(jìn)程已在運行。至此軟件安裝完成。(3)管理GoldenGate服務(wù)在WINDOWS下還可以將GoldenGate主進(jìn)程作為系統(tǒng)服務(wù)進(jìn)行管理,如下配置:GGSCI edit param ./globals -配置全局參數(shù),注意前面的 ./ 表明與其他參數(shù)文件位置不同,該參數(shù)文件是直接位于GoldenGate安裝路徑下的輸入:/*MGRSERVNAME -GoldenGate主進(jìn)程端口號,為自定義的系統(tǒng)服務(wù)名*/然后退出GGSCI命令行:GGSCI exitGG_HOME install addservice addevents -創(chuàng)建服務(wù),完成后可以直接進(jìn)服務(wù)進(jìn)行管理WINDOWS刪除GoldenGate服務(wù):GG_HOME install deleteevents deleteservice -對應(yīng)刪除服務(wù)操作或者在注冊表刪除:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 一般服務(wù)會以相同的名字在這里顯示一個主健,直接刪除相關(guān)的鍵值便可3.3 Linux和Unix下安裝(1)檢查必需的lib包下載對應(yīng)平臺版本的GoldenGate,解壓。在解壓路徑下執(zhí)行:rootGG_HOME # ldd ggsci將列出所有需要的lib和當(dāng)前缺少的。GoldenGate在Linux和Unix下安裝,需要安裝ORACLE的lib環(huán)境以及$ORACLE_HOME/lib下的幾個包,所以必須安裝在Oracle之后,而且確保在環(huán)境變量中加入:export LD_LIBRARY_PATH=$ORACLE_HOME/lib(2)綠色安裝GoldenGate在解壓路徑下執(zhí)行./ggsci進(jìn)行接口命令行,rootGG_HOME # ./ggsci -進(jìn)入GoldenGate命令窗口模式GGSCI CREATE SUBDIRS -建立子目錄GGSCIedit param mgr -配置GoldenGate主進(jìn)程參數(shù)由于第一次執(zhí)行該命令,會提示創(chuàng)建mgr參數(shù)文件,點“是”并在文本中輸入如下參數(shù):/*PORT 7801 -GoldenGate主進(jìn)程端口號DYNAMICPORTLIST 7802-7820 -GoldenGate為進(jìn)程間通訊動態(tài)分配的端口段,注意這里如果分配的端口端少于extract-replicat進(jìn)程對的話,會導(dǎo)致部分進(jìn)程因通訊失敗而出錯。*/保存,生成的參數(shù)文件保存在GG_HOME dirprm下然后可以啟動GoldenGate主控制進(jìn)程:GGSCIstart mgr GGSCIinfo all -查看進(jìn)程狀態(tài)如果進(jìn)程MANAGER狀態(tài)顯示為RUNNING則表示主進(jìn)程已在運行。至此軟件安裝完成。和Windows下安裝的主要區(qū)別是需要確認(rèn)必需的lib包,進(jìn)入GGSCI接口命令行后的操作都是一致的。4、GoldenGate同步基本配置GoldenGate支持目前大部分主流數(shù)據(jù)庫,這也是它的優(yōu)勢之一。下面列舉了Oracle、Db2、Sybase之間的同步。同步測試的準(zhǔn)備工作中,有一部分是共通的,如下:(1) 在源端和目標(biāo)端建立相同結(jié)構(gòu)的兩個表,建立主鍵。保證復(fù)制的對象在一開始是一致的。(2) 保證沒有相關(guān)對象的觸發(fā)器(會導(dǎo)致數(shù)據(jù)沖突的那些)或設(shè)置失效。(3) 數(shù)據(jù)庫需要開啟必須的日志模式。不同數(shù)據(jù)庫的配置差異主要在這一步。(4) 源端和目標(biāo)端都需要安裝相應(yīng)版本的GoldenGate軟件,并分配一個有DBA權(quán)限的數(shù)據(jù)庫用戶給GoldenGate用以連接數(shù)據(jù)庫。備注:分配給GoldenGate的用戶一般情況下并不需要完全的DBA權(quán)限,在官方文檔上有詳細(xì)的權(quán)限需求說明,但是完全按照那個配置比較繁瑣。額外的,如果數(shù)據(jù)庫使用ASM時,需要sysdba權(quán)限。4.1 oracle之間同步和GoldenGate基礎(chǔ)4.1.1 Oracle數(shù)據(jù)庫設(shè)置首先安裝好ORACLE,設(shè)置好ORACLE_SID,ORACLE_HOME等環(huán)境變量。當(dāng)然,推薦的做法是在每個進(jìn)程配置文件里都加上指定的環(huán)境變量參數(shù),在后面優(yōu)化配置中進(jìn)行說明。Oracle數(shù)據(jù)庫需要開啟歸檔日志,并開啟最小附加日志模式。SQL select supplemental_log_data_min from v$database; -查看是否開啟了最小附加日志模式SQL alter database add supplemental log data; -開啟最小附加日志模式實際生產(chǎn)應(yīng)用中,最好同時打開ORACLE的強制日志模式,以防止源數(shù)據(jù)庫因直接路徑加載忽略redo生成而導(dǎo)致這部分?jǐn)?shù)據(jù)無法同步:SQL select force_logging from v$database;SQL Alter database force logging;光開啟最小附加日志模式還不夠,還需要打開表級的補全日志,可以在GoldenGate中使用add trandata命令強制重做日志記錄主鍵值,以保證在目標(biāo)端能成功復(fù)制:GGSCI dblogin userid ddw,password ddw -GoldenGate中登錄OARCLE數(shù)據(jù)庫GGSCIadd trandata ddw. -表名可以使用通配符GGSCI add trandata coss3.per_test,nokey,cols(sampletime, objectid) -無主鍵指定字段補全的示例也可以在數(shù)據(jù)庫中打開:SQL alter table add supplemental log data (primary key) columns;千萬不要小看這步日志設(shè)置,其實在GoldenGate的配置中,這步是最容易出錯的環(huán)節(jié)。如果開啟DDL復(fù)制做冗災(zāi)備份,最好直接在數(shù)據(jù)庫級別打開補全日志:SQL alter database add supplemental log data (primary key,unique,foreign key) columns;檢查一下,全是YES就OK了(整個數(shù)據(jù)庫級別補全)SQL select supplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_ui from v$database; 4.1.2關(guān)于Oracle補全日志補充說明Oracle日志(redo log)一般用于實例恢復(fù)和介質(zhì)恢復(fù),但是如果需要靠日志還原完整的DML操作信息(比如Logmnr、Streams和這里的Goldengate),默認(rèn)記錄的日志量還不夠。比如一個UPDATE的操作,默認(rèn)redo只記錄了rowid以及被修改的字段信息,但這里GoldenGate還原這個事務(wù),因為不是根據(jù)rowid而是SQL層面根據(jù)唯一鍵值來定位記錄,所以還需要將主鍵或者其他字段的信息附加到日志中去。要往日志中增加這些額外字段信息的操作,就是開啟補全日志,即Add Supplemental Logging。打開補全日志,會使數(shù)據(jù)庫的日志量增加,所以只打開需要的級別和對象即可。Oracle補全日志可以在數(shù)據(jù)庫級別設(shè)置,也可以在表級別設(shè)置。在數(shù)據(jù)庫級別中,補全日志按補全的信息量,對應(yīng)好幾個級別:(1) 最小附加日志(Minimal supplemental logging):是開啟logmnr的最低日志要求,提供了行鏈接(chained rows)和多種數(shù)據(jù)存儲(比如聚簇表、索引組織表)的信息。在Oracle 9.2之后的版本中,默認(rèn)都不開啟。(2) 主鍵補全(Primary key supplemental logging):在日志中補全所有主鍵列。如果表中無主鍵,則補全一個非空唯一索引列;如果非空唯一索引鍵也沒,那么會補全除了LOB和LONG類型字段以外的所有列,這時就和下面的所有補全一樣了。(3) 唯一鍵補全(Unique key supplemental logging):當(dāng)唯一鍵列或位圖索引列被修改時,在日志中補全所有唯一鍵列或位圖索引列。打開唯一鍵補全也會同時打開主鍵補全。注意這個級別是需要條件觸發(fā)的。(4) 外鍵補全(Foreign Key supplemental logging):當(dāng)外鍵列被修改時,將在日志中補全所有外鍵列。這個級別也是需要條件觸發(fā)的。(5) 所有補全(All supplemental logging):在日志中補全所有字段(排除LOB和LONG類型)。這里對于補全日志的詳細(xì)操作語句不做一一說明。數(shù)據(jù)庫級別中的5個類型中,除了最小附加日志級別,都可以在表級進(jìn)行設(shè)置。除此之外,表級還可以明確指定需要補全的列。Oracle表級補全日志需要在最小補全日志打開的情況下才起作用,即若一個數(shù)據(jù)庫沒有開最小補全日志或之前drop supplemental log data操作則即便指定了表級補全日志,實際在重做日志輸出的過程中描述的記錄仍只記錄rowid和相關(guān)列值。而要關(guān)閉最小補全日志,也必須首先關(guān)閉數(shù)據(jù)庫級別的其他補全級別后,才能關(guān)閉。所以在GoldenGate中,對于Oracle數(shù)據(jù)庫的日志補全要求,至少是打開最小附加日志和主鍵補全。主鍵補全只要在需要同步的表上開啟即可。當(dāng)然GoldenGate的add trandata語法中也可以指定補全的列,這和Oracle表級補全日志的功能完全一致。畢竟,日志還是由數(shù)據(jù)庫生成的,GoldenGate并不能直接控制日志的生成方式和規(guī)則,只能根據(jù)所捕獲的數(shù)據(jù)庫的日志規(guī)則而來。不同的數(shù)據(jù)庫,日志補全的規(guī)則也會不同。以上部分內(nèi)容參考自O(shè)racle 10gR2 UtilitiesSupplemental Logging部分4.1.3 dml同步 一對一的實時同步簡單配置同步流程如圖:(1)源數(shù)據(jù)庫端添加提取進(jìn)程(extract process)GGSCI add extract extl,tranlog,begin now -新增抽取進(jìn)程extl,基于日志方式,立即生效需要注意的是,GoldenGate中的進(jìn)程名最長只能8個字符。注意,如果是在RAC環(huán)境下,需要再加上THREADS 指定提取的日志THREADGGSCI add extract extl,tranlog,begin now , THREADS GGSCI edit param extl -生成并編輯同名配置文件/*extract extl -抽取進(jìn)程名userid ddworcl,password ddw -連接本機(jī)DB的帳號密碼rmthost 4, mgrport 7801 -目標(biāo)數(shù)據(jù)庫服務(wù)器地址和GG服務(wù)端口號rmttrail d:toolsGGgg10gdirdatrl -遠(yuǎn)程隊列的位置(下一步建的東西)dynamicresolution -優(yōu)化參數(shù),動態(tài)分析表結(jié)構(gòu)gettruncates -抓取truncate數(shù)據(jù)table ddw.aatest; -需要抽取的表,可以使用通配符*/然后給這個提取進(jìn)程創(chuàng)建遠(yuǎn)端隊列,即圖中的RMTTRAIL:GGSCI add rmttrail d:toolsGGgg10gdirdatrl extract extl 需要注意的是,這里最后的名稱rl(可以自定義,字母或數(shù)字)是指以后生成的trail文件都會以rl開頭,如rl000001,這個文件頭名稱最長只能2個字符。如果需要在文件級別區(qū)分隊列,建議將隊列創(chuàng)建于于不同的目錄下。開啟這個提取進(jìn)程:GGSCI start extlGGSCI info all -查看所有進(jìn)程狀態(tài)此時extl進(jìn)程running則表示已成功運行,這時開始會在前面指定的目標(biāo)端隊列位置生成trail文件。如果進(jìn)程出錯,可以使用view report extl 查看錯誤信息。(2)目標(biāo)數(shù)據(jù)庫端添加復(fù)制應(yīng)用進(jìn)程(replicat process)在目標(biāo)端GoldenGate命令行中配置復(fù)制進(jìn)程:GGSCIadd replicat repl exttrail d:toolsGGgg10gdirdatrl,begin now,nodbcheckpoint 新增復(fù)制進(jìn)程,使用對應(yīng)的隊列rl,即刻開始,使用文件檢查點GGSCIedit param repl -配置復(fù)制進(jìn)程參數(shù)/*replicat repl -復(fù)制進(jìn)程名userid ddworcl,password ddw -目標(biāo)數(shù)據(jù)庫的帳號密碼assumetargetdefs -兩臺數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)一致則使用此參數(shù)reperror default,discard -如果復(fù)制數(shù)據(jù)出錯則忽略discardfile D:repsz.dsc,append,megabytes 100 -錯誤信息寫入XXXX文件,追加模式,最大100mgettruncates -復(fù)制truncate操作 map ddw.aatest, target ddw.aatest_1; -映射關(guān)系,注意target前必須留一個空格-map ddw.aatest, target ddw.aatest_1, keycols (name), where (TYPE1 = 1) -加兩橫杠在配置文件中進(jìn)行注釋;keycols指定唯一鍵;where篩選數(shù)據(jù)*/開啟復(fù)制進(jìn)程:GGSCIstart repl至此,一個最簡單的同步配置完成,對于源數(shù)據(jù)庫相應(yīng)表的insert,update,delete和truncate操作都將通過日志捕獲并同步到目標(biāo)數(shù)據(jù)庫。 使用datapump加入datapump后的數(shù)據(jù)傳輸?shù)牧鞒蹋哼@里的datapump與ORACLE 10g推出的數(shù)據(jù)泵不是一個概念。在GoldenGate中,datapump相當(dāng)于一個次級提取進(jìn)程(secondary extract)。在上面演示的同步流程中,提取進(jìn)程直接將提取的redo信息經(jīng)過處理后放置到了目標(biāo)端服務(wù)器上,當(dāng)兩者之間的網(wǎng)絡(luò)出現(xiàn)故障時,會因無法生成trail文件而導(dǎo)致提取進(jìn)程崩潰,錯誤提示類似如下:2010-11-12 10:01:21 GGS ERROR 150 TCP/IP error 10061 (由于目標(biāo)機(jī)器積極拒絕,無法連接。); retries exceeded.2010-11-12 10:01:21 GGS ERROR 190 PROCESS ABENDING.而加入datapump后,主提取進(jìn)程(即第一個extract)首先將trail生成在本地,然后datapump讀取本地trail再發(fā)送到目標(biāo)服務(wù)器,即便網(wǎng)絡(luò)故障,主提取進(jìn)程仍然能隨著事務(wù)生成trail文件,而datapump則會暫時停止傳輸,等待網(wǎng)絡(luò)通暢后在將堆積的本地trail文件發(fā)送至目標(biāo)服務(wù)器,從而實現(xiàn)了斷點傳輸?shù)墓δ?。在實際應(yīng)用中,每一個同步流程都應(yīng)該配置datapump以應(yīng)對網(wǎng)絡(luò)問題。加入datapump的配置:將前面extl參數(shù)文件中的/*rmthost 4, mgrport 7801 rmttrail d:toolsGGgg10gdirdatrl*/替換為/*exttrail d:toolsGGgg10gdirdatl1 -本地隊列文件生成位置*/配置datapump進(jìn)程:GGSCI ADD EXTRACT pump1, EXTTRAILSOURCE , BEGIN -即是對應(yīng)extl配置文件中定義的d:toolsGGgg10gdirdatl1GGSCI edit param pump1/*extract pump1userid ddw, password ddwrmthost 4, mgrport 7801rmttrail d:toolsGGgg10gdirdatr1PASSTHRU|NOPASSTHRU -直通模式或普通模式gettruncatestable ddw.bbtest;*/直通模式用在兩邊表名、列名一致,可以直接映射的情況,不需要額外配置;普通模式可以配置表名列名自定義映射,可以加FILTER、transformation等,需要配置一個數(shù)據(jù)定義文件(data-definitions file)。然后修改原先為提取進(jìn)程配置遠(yuǎn)端隊列位置:GGSCI delete rmttrail d:toolsGGgg10gdirdatrl extract extlGGSCI add rmttrail d:toolsGGgg10gdirdatrl extract pump1然后啟動extl和pump進(jìn)程就OK了。 使用數(shù)據(jù)定義文件GoldenGate數(shù)據(jù)定義文件(data-definitions file),主要用于不同數(shù)據(jù)源之間(比如下面的Oracle與DB2之間的同步),進(jìn)行數(shù)據(jù)同步時用來轉(zhuǎn)換數(shù)據(jù)格式。數(shù)據(jù)定義文件主要包含表名、字段名、字段類型、字段長度和偏移量。利用GoldenGate的defgen工具生成一個數(shù)據(jù)定義文件(data-definitions file),大致步驟如下:(1)創(chuàng)建DEFGEN工具的參數(shù)文件(2)運行DEFGEN工具生成數(shù)據(jù)定義文件(3)配置GG進(jìn)程識別定義文件例子:GGSCI edit param defgen -創(chuàng)建DEFGEN工具的參數(shù)文件/*DEFSFILE -指定由DEFGEN生成的數(shù)據(jù)定義文件的全路徑和名稱SOURCEDB | TARGETDB , -oracle不需要配置這個參數(shù)USERID ,PASSWORD -DB2不需要配置PASSWORDTABLE . -分析指定表生成配置文件*/類似如下(ORACLE):/*DEFSFILE GG_HOMEdirdefextdb.refUSERID ddw,PASSWORD ddwTABLE ddw.aatest;*/然后退出GGSCI,在GG安裝路徑下運行DEFGEN工具:GG_HOME defgen paramfile dirprm/defgen.prm配置文件默認(rèn)生成在GG_HOMEdirdef下,不要去手動修改。如果對應(yīng)表的表結(jié)構(gòu)發(fā)生更改,需要重新生成這個配置文件。然后將生成的配置文件拷貝至目標(biāo)服務(wù)器的GG_HOMEdirdef下。修改復(fù)制進(jìn)程repl參數(shù)文件:GGSCIedit param repl將原先的assumetargetdefs參數(shù)替換為sourcedefs GG_HOME dirdefextdb.refGGSCIstop replGGSCIstart repl數(shù)據(jù)定義文件的配置完成。 配置進(jìn)程檢查點(checkpoint)檢查點記錄了進(jìn)程讀寫的位置信息用以數(shù)據(jù)恢復(fù),目的是為了防止進(jìn)程因系統(tǒng)、網(wǎng)絡(luò)崩潰而導(dǎo)致的數(shù)據(jù)丟失,對于GoldenGate保證數(shù)據(jù)同步過程中數(shù)據(jù)不丟失非常重要。GoldenGate的檢查點由一個內(nèi)部進(jìn)程自動控制,與數(shù)據(jù)庫檢查點的概念類似。提取進(jìn)程的檢查點記錄它在數(shù)據(jù)源中的讀取位置和隊列的寫出位置,復(fù)制進(jìn)程的檢查點記錄它讀取隊列的位置。每條提取或復(fù)制進(jìn)程都有自己對應(yīng)的檢查點信息。當(dāng)GoldenGate的進(jìn)程重啟時,由它所記錄的檢查點決定需要讀取的隊列位置。GoldenGate的檢查點信息有兩種存放方式:(1)默認(rèn)存放在GGHOMEdirchk下的文件中,一個進(jìn)程對應(yīng)一個文件。提取進(jìn)程只能使用這種模式。不需要特殊配置。(2)存放在數(shù)據(jù)庫指定的表中,需要進(jìn)行如下配置:首先在./globals參數(shù)文件中加入:/*CHECKPOINTTABLE . -指定的檢查點記錄表*/然后運行:GGSCI DBLOGIN SOURCEDB , USERID , PASSWORD GGSCI ADD CHECKPOINTTABLE . -生成這個檢查點記錄表在新增復(fù)制進(jìn)程時可以在添加時指定checkpointtable .替代nodbcheckpoint,使用數(shù)據(jù)庫記錄檢查點信息。ORACLE官方文檔中,比較推薦將復(fù)制進(jìn)程的檢查點信息存放到數(shù)據(jù)庫表中進(jìn)行管理,認(rèn)為在某些情況下能促進(jìn)數(shù)據(jù)恢復(fù)。并指出檢查點信息量非常小,而且是進(jìn)行記錄更新而非記錄插入,一個進(jìn)程只對應(yīng)一條記錄,在它特殊的檢查點處理機(jī)制下不會對數(shù)據(jù)庫造成影響。個人猜想是當(dāng)目標(biāo)數(shù)據(jù)庫崩潰還原后(特別是在不完全恢復(fù)的情況下),檢查點信息能同數(shù)據(jù)庫一起還原,在數(shù)據(jù)上能利用數(shù)據(jù)庫事務(wù)性與數(shù)據(jù)庫保持一致,從而在數(shù)據(jù)庫正常打開后能繼續(xù)進(jìn)行數(shù)據(jù)同步。但實際上并不必要,因為數(shù)據(jù)庫故障的情況多種多樣,就算檢查點同步恢復(fù)后,也不能保證直接就能啟動GoldenGate進(jìn)程。4.1.3 ddl同步GoldenGate的DDL同步只支持兩邊一致的數(shù)據(jù)庫,限制條件較多(如不能進(jìn)行字段映射、轉(zhuǎn)換等),具體可以參考官方文檔。DDL的抓取不是通過日志抓取來捕獲的,而是通過觸發(fā)器來實現(xiàn),所以對源數(shù)據(jù)庫的性能影響要比單純的數(shù)據(jù)抓取要大很多,可謂屏棄了GoldenGate的優(yōu)勢。盡量不要使用GoldenGate的DDL復(fù)制功能,在大多數(shù)業(yè)務(wù)系統(tǒng)中,實際上不會有頻繁的數(shù)據(jù)庫結(jié)構(gòu)變動,完全可以通過手工的方式進(jìn)行維護(hù)。確實有大量DDL操作的環(huán)境,如果可以,還是推薦物理DG之類的替換方案;確實要使用GoldenGate的DDL復(fù)制,那么請詳細(xì)參考官方文檔的限制和說明。-以上主要為個人意見,有不同看法的請無視開啟DDL復(fù)制的基本配置步驟為:(1)關(guān)閉ORACLE的回收站功能。(2)選擇一個數(shù)據(jù)庫schema存放支持DDL的GoldenGate對象,運行相應(yīng)創(chuàng)建腳本。(3)編輯globals參數(shù)文件。(4)修改extl和repl的配置文件具體操作步驟:(1)關(guān)閉數(shù)據(jù)庫回收站:SQLalter system set recyclebin=off scope=both; (2)編輯globals參數(shù)文件:GGSCIedit param ./globals添加以下內(nèi)容后保存:GGSCHEMA ddw -標(biāo)明支持DDL的GG對象存放在哪個schema下(3)執(zhí)行創(chuàng)建腳本:首先需要命令行進(jìn)入GG安裝目錄下,然后再運行sqlplus執(zhí)行腳本,如果不進(jìn)入目錄下腳本執(zhí)行會報錯(應(yīng)該是由于GG腳本中子腳本嵌套使用相對路徑的問題所造成)。SQLmarker_setup.sql -提示輸入目標(biāo)schemaSQLddl_setup.sql -提示輸入目標(biāo)schema,輸入initialsetup最后輸入yesSQLrole_setup.sqlSQLgrant GGS_GGSUSER_ROLE to ddw; -不進(jìn)行該步賦權(quán)后面起進(jìn)程會報錯SQLddl_enable.sql -使觸發(fā)器生效(4)修改提取進(jìn)程和復(fù)制進(jìn)程的配置文件,分別加入ddl include all屬性。此時repl必須指定assumetargetdefs屬性,這表明只有兩邊數(shù)據(jù)庫結(jié)構(gòu)一致的情況下才可以啟用DDL復(fù)制。另外,開啟DDL同步不能再只映射單表了,對整個模式下的對象都有效。加入DDL復(fù)制之后,數(shù)據(jù)復(fù)制的lag明顯增加了。清除數(shù)據(jù)庫中DDL復(fù)制的設(shè)置在實際測試中,由于我在同一個數(shù)據(jù)庫中進(jìn)行映射,映射表結(jié)構(gòu)不一致,導(dǎo)致進(jìn)程報了一系列的錯誤。這個時候需要把通過腳本創(chuàng)建的GG對象中的數(shù)據(jù)清空,安裝目錄下只提供了清除對象的腳本,可以如下操作:首先要求把所有的GG進(jìn)程停掉,包括mgr進(jìn)程SQLddl_disable.sql -首先使DDL觸發(fā)器失效SQLddl_remove.sqlSQLmarker_remove.sqlrole_setup.sql沒有對應(yīng)的清除腳本,但是這塊不影響配置信息的清除然后重新再創(chuàng)建腳本。4.2 oracle與db2同步設(shè)置DB2數(shù)據(jù)庫參數(shù):db2 connect to user using -DB2命令行工具登陸DB2db2 get db cfg for -查看數(shù)據(jù)庫參數(shù)配置db2 update db cfg for using LOGRETAIN ON -設(shè)置LOGRETAIN參數(shù)db2 update db cfg for using USEREXIT ON -設(shè)置USEREXIT參數(shù)設(shè)置完后的參數(shù)配置相關(guān)顯示如下:Log retain for recovery status = RECOVERY User exit for logging status = YES 重啟數(shù)據(jù)庫并進(jìn)行全庫備份:db2 stop forcedb2 startdb2 backup db 指定歸檔路徑:(OVERFLOWLOGPATH參數(shù))db2 connect to user using db2 update db cfg using overflowlogpath GoldenGate中執(zhí)行add trandata補全日志:GGSCI dblogin sourcedb sample userid db2admin,password db2admin - 除oracle外的數(shù)據(jù)庫都需要指定sourcedb參數(shù),指定數(shù)據(jù)庫名稱GGSCIadd trandata db2admin.其他的同步配置與Oracle中一樣,需要注意的是進(jìn)程配置文件中登陸DB2的部分都需要指定sourcedb這個參數(shù)(ORACLE不需要,指定了反而報錯)。還有就是復(fù)制進(jìn)程的配置文件中一般不能指定assumetargetdefs參數(shù),因為不是結(jié)構(gòu)一致的數(shù)據(jù)庫,需要通過defgen工具生成數(shù)據(jù)定義文件進(jìn)行映射。4.3 oracle與sybase同步Sybase數(shù)據(jù)庫設(shè)置使用sybase的SQL Advantage,用sa用戶登錄,執(zhí)行dbcc settrunc( ltm, valid )修改參數(shù)。GoldenGate中連接SybaseGGSCI dblogin sourcedb zhoubase userid sa password sasasa同樣做如下設(shè)置GGSCIadd trandata .其他配置和Oracle中一樣。需要注意的是,Sybase是個區(qū)分大小寫的數(shù)據(jù)庫(sql server同樣)。而Oracle不區(qū)分大小寫,這就導(dǎo)致了表和字段在復(fù)制進(jìn)程映射的時候,容易因大小寫問題導(dǎo)致映射失敗。解決方法是在表名外加上雙引號或者單引號,參照如下復(fù)制進(jìn)程的配置文件內(nèi)容:/*replicat repsy sourcedefs d:toolsGGgg10gdirdefextsy.refUSERID ddw, PASSWORD ddw reperror default, discard discardfile D:repsy.dsc,append,megabytes 100 MAP “dbo.BBTEST”, TARGET “DDW.AASYBASE”; -引號區(qū)分大小寫*/5、GoldenGate同步方案GoldenGate工具雖小,但它提供表級字段級同步映射,而且同步性能優(yōu)異、資源消耗低,使它的靈活性很強,可以提供多種數(shù)據(jù)同步、冗災(zāi)的解決方案。5.1 使用GoldenGate初始化加載這里所指的GoldenGate初始化加載,只是它指提供的direct load方式,因為其他幾種官方介紹的初始化方式要么需要借助其他數(shù)據(jù)庫工具(如extract-SQL*Loader),要么中間走了完全沒必要的步驟導(dǎo)致性能很差(如extract-file-replicat方式),都不算純正的GoldenGate方式。初始化加載架構(gòu):上圖中,顯示了初始化加載啟用了兩條同步路線:上面一條是真正的initial load,負(fù)責(zé)將源數(shù)據(jù)端的數(shù)據(jù)一次性發(fā)送到目標(biāo)數(shù)據(jù)庫;下面一條,其實就是普通的GoldenGate同步進(jìn)程,負(fù)責(zé)抓取初始化加載時源端數(shù)據(jù)庫進(jìn)行的在線數(shù)據(jù)變化。因為在實際應(yīng)用中,往往需要在生產(chǎn)庫(源數(shù)據(jù)庫)不停機(jī)的狀態(tài)下,將數(shù)據(jù)加載到備用數(shù)據(jù)庫(目標(biāo)數(shù)據(jù)庫)中并應(yīng)用實時同步,在數(shù)據(jù)初始化的過程中,生產(chǎn)庫將繼續(xù)進(jìn)行正常的事務(wù)操作,所以此時需要有抓取進(jìn)程在初始化時開始將這些變化捕獲,以免數(shù)據(jù)丟失。實際部署時需要注意正確的執(zhí)行順序,大致可以分為以下幾步:(1) 源端和目標(biāo)端創(chuàng)建配置各個同步進(jìn)程。(2) 開啟源端同步抓取進(jìn)程(圖上的Change Extra
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度商用鍋爐安全檢測與維修服務(wù)承包合同
- 2025年度航空航天設(shè)備采購合同范本二零二五年度
- 2025年度物聯(lián)網(wǎng)技術(shù)應(yīng)用合作合同封面版
- 2025年度航空客運服務(wù)滿意度調(diào)查合同
- 2025版私人房產(chǎn)抵押貸款合同樣本2篇
- 二零二五年度文化產(chǎn)業(yè)發(fā)展基金投資合同范本3篇
- 2025年度港口裝卸合同運輸條款作業(yè)效率提升方案
- 2025年度科技創(chuàng)新:人工智能技術(shù)研發(fā)合同標(biāo)的描述
- 2025年度護(hù)坡工程信息化管理平臺開發(fā)合同
- 二零二四年度企業(yè)銷售顧問合同3篇
- 小學(xué)一年級數(shù)學(xué)上冊口算練習(xí)題總匯
- 潤滑油知識-液壓油
- 2024年江蘇省中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 《中國香文化》課件
- 盤錦市重點中學(xué)2024年中考英語全真模擬試卷含答案
- 平安產(chǎn)險湖南省商業(yè)性雞蛋價格指數(shù)保險條款
- 提高臥床患者踝泵運動的執(zhí)行率
- 廣東省普通高中學(xué)生檔案
- 初中公寓主任述職報告
- 九年級下冊滬教版上?;瘜W(xué)5.2酸和堿的性質(zhì)研究 課件
- ISO17025經(jīng)典培訓(xùn)教材
評論
0/150
提交評論