GoldenGate安裝部署及解決方案.docx_第1頁(yè)
GoldenGate安裝部署及解決方案.docx_第2頁(yè)
GoldenGate安裝部署及解決方案.docx_第3頁(yè)
GoldenGate安裝部署及解決方案.docx_第4頁(yè)
GoldenGate安裝部署及解決方案.docx_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余43頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論