SharePlex實施文檔以及常見故障_第1頁
SharePlex實施文檔以及常見故障_第2頁
SharePlex實施文檔以及常見故障_第3頁
SharePlex實施文檔以及常見故障_第4頁
SharePlex實施文檔以及常見故障_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1.SharePlex安裝配置部分 41.1解壓安裝 41.2ora_setup配置 41.3sp_cop-u2300&啟動 41.4sp_ctrl控制臺 51.5config配置文件 51.6analyzeconfig<config_name> 52.SharePlex常用操作 62.1copy命令 62.2compare與repair 72.3param設置參數 72.4清除當前復制 82.5SharePlex實用參數命令 82.6忽略大事務的操作 92.7修改SharePlex的數據庫用戶密碼 92.8新增復制表 122.9刪除復制表 132.10重命名表 142.11新增LOB列或者重命名列 142.12Altertablemoveanewtablespace 152.13一個軟件啟動多個SP實例 163.SharePlexAA復制實施 193.1前言 193.2環境準備 193.3數據初始化 193.4reconcile隊列數據 203.5開啟目標端post 203.6目標端FK,job,trigger處理 214.SharePlex其他復制說明 214.1DDL復制 214.2異構復制mapcolumns 224.3級聯復制 234.3.1中間系統為數據庫,有post情況下級聯復制 234.3.2中間系統為pass-through 244.4SharePlex高可用復制 244.5配置Change-History復制 244.5.1Change-History 244.5.2其他的change-history配置選項 264.6Oracle到Kafka復制 274.6.1概述 274.6.2發送到Kafka說明 274.6.3源端SharePlex配置 284.6.4開啟supplementallogging 284.6.5設置SP_OCT_USE_SUPP_KEYS參數 284.6.6配置復制 284.6.7目標端SharePlex配置 294.6.8查看并且修改Kafka設置 294.6.9設置恢復選項 315.日常監控 325.1啟動/關閉SharePlex 325.2登錄控制臺 325.3主要監控項目 325.4查看日志 346.一些性能診斷方案 356.1針對capturetooslow 357.SharePlex一些問題的解決方案 357.1Vieweventsanderror 357.2忽略一些確定的可以忽略的錯誤 367.3insertnull復制到Kafka不顯示 377.3.1問題描述 377.3.2解決方案 38

1.SharePlex安裝配置部分端口:2100:SharePlex默認端口。2501:startlauncher需要開啟端口,可以使用copy快速復制表。安裝前數據庫操作打開數據庫最小附加日志:首先查看v$transaction視圖有沒有大事務,盡量避免有大事務的時候執行,如果系統資源非常緊會導致宕機,RAC情況下各個節點都需要執行。alterdatabaseaddsupplementallogdata(primarykey,uniqueindex)columns;查詢最小附加日志情況:selectSUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI,SUPPLEMENTAL_LOG_DATA_FK,SUPPLEMENTAL_LOG_DATA_ALLfromv$database;源庫需要打開歸檔。1.1解壓安裝使用oracle用戶解壓,安裝。$./SharePlex-8.6.6-b64-oracle110-rh-40-amd64-m64.tpm1.2ora_setup配置--配置shareplex,配置時如果需要自定義復制的源與目標端的ORACLE_SID,則需要配置tnsnames.ora別名,且/etc/oratab中必須有對應于自定義的tnsnames別名的ORACLE_SID。1.3sp_cop-u2300&啟動[splexlocalhost~]exportSP_SYS_HOST_NAME=cluster1vip可以使用該參數指定shareplex啟動到指定的IP上,可以使用netstat-an|grep<port_number>--啟動-u可以啟動shareplex實例到指定端口,可以復制多個庫。1.4sp_ctrl控制臺SharePlex日常操作都在sp_ctrl控制臺中進行,啟動命令為:/<prodir>/bin/sp_ctrl,一般啟動之后首先進入控制臺執行sp_ctrl>stoppost,停止。1.5config配置文件Config配置文件為復制鏈路需要復制對象以及鏈路映射文件。sp_ctrl>listconfigsp_ctrl>verifyconfigsp_ctrl>activateconfig<file_name>sp_ctrl>activateconfig<filename>[threads-n][nolock]--加nolock不鎖表,如果在一定時間獲取鎖失敗,則繼續往下進行activate盡量執行兩次,確保成功,可以同時tail-f<event_log>查看執行情況。config配置樣例以及配置規則:datasource:o.wahaha#sourcetablestargettablesroutingmap#splex.demo_srcsplex.demo_desttarget_systemo.target_sid--target_sid為目標端的sid或別名。splex.demo_src--源庫的用戶名.表名,可以使用%通配符,全匹配半匹配等。priv%not(table_name)排除表。splex.demo_dest--目標庫的用戶名.表名target_systemo.target_sid--目標庫的IP或hosts文件中映射名為目標端的sid或別名。hr.testhr.test51:scott_tabo.honor1--IP或主機名后加冒號,可以為該表復制單獨起一個隊列。mary.cust2!key(c1,c2)mary.cust2prodao.sid--自定義pk1.6analyzeconfig<config_name>--可以分析config,生成報表,分析數據庫表操作頻繁記錄等。2.SharePlex常用操作2.1copy命令命令說明:會將目標先truncate掉,然后再利用expdp加constraint=y參數導出再導入,如果你不想truncate目標端的原有同步數據則你需要使用另一個命令appendcopy命令可實現單表或表分區的同步,不適合大批量表的同步。使用要求:目標端啟動launcher:sp_ctrl>startlauncher――默認端口是2501同步的表出現在已激活的配置文件中。目標端的復制表所屬用戶需先建立,copy可以創建表結構,但要求表空間不變,所以建議先建好表結構再復制。語法如下:sp_ctrl>copyowner.tablename[attarget_host]如果相同的對象復制到不同的主機,需加attarget_host選項,源端和目標端的用戶名或者表名不一致的話還需加入目標端的owner.tablename。檢查源端的copy狀態:sp_ctrl>copystatusallcopystatus<jobid>查看job細節cancel<jobid>可以取消job,一般針對長時間waitfor的job當日志積累多了不方便查看時,可清除日志:源端清除日志:sp_ctrl>clearhistoryall目標端清除:cdvardir/log;rmsync_clt*log2.2compare與repair如果發現或懷疑源端和目標端的表數據不一致,可以通過compare命令查看和修復。但由于compare需要把比較的數據排序,然后逐條比較,大量數據的比較可能會導致資源的過量使用,所以不建議對大量數據的比較。sp_ctrl>comparetableowner.tabletoowner.tabletargettarget_hosto.targetsid[repair]比較表分區:sp_ctrl>comparetableowner.tablep1toowner.tablep1targettarget_hosto.targetsid[repair]直接修復在后面加上repair,不加repair參數則將可用于修復的SQL語句生成在日志文件中。查看比較進度:sp_ctrl>showcompare[detail]取消比較:sp_ctrl>comparecancelid<id>清除比較日志:sp_ctrl>removelogcompareid<id>或者removelogcompareall可以指定compare使用其他端口,不指定則隨機選端口:comparetableowner.tablep1toowner.tablep1targettarget_hosto.targetsid[repair]port25002.3param設置參數sp_ctrl>listparamall--列出所有參數。sp_ctrl>setparam--設置參數sp_ctrl>listparammodified--查看被修改的參數shareplex安裝目錄說明:/bin包含可執行程序的符號連接/.app_modules包含可執行程序/data默認參數文件,包含默認的參數設置/doc空目錄/installSharePlex安裝、license管理等相關的腳本/libSharePlex應用到的庫文件/utilSharePlex工具,SQL腳本,監控腳本等2.4清除當前復制sp_ctrl>shutdown$env|grepSP_SYS_VARDIR--一定要在清除之前確認清理的實例正確。執行下條語句之前一定確認上述參數正確,防止清理掉正在使用的實例。$ora_cleanupsplex/splex2.5SharePlex實用參數命令exportSP_SYS_VARDIR=/splex/vardir--類似ORACLE_SID,指定splex使用指定的隊列配置文件等等。exportSP_SYS_HOST_NAME–在啟動sp_cop之前設置,指定SharePlex啟動在指定的IP上,在RAC安裝時需要注意此選項。sp_ctrl>setparamSP_OPO_DISABLE_OBJECT_NUM<源端object_ID>--在目標端設置。拋棄指定表。sp_ctrl>r202--執行上條命令20次,兩秒一次。sp_ctrl>helptargetsp_ctrl>targeto.orclsetmetadatatime:sp_time.op:sp_op--可以在目標端增加列,寫入時間戳與DML語句行為。sp_ctrl>helptargetsetmetadatatime2.6忽略大事務的操作過大的事務復制可能會遇到問題,所以建議所有大于1000萬數據DML操作事務,分成多批次commit,并建議不要對相同表做并行的大事物操作。在有的場景下可能不希望源端的某些修改復制到目標端,比如源端清除歷史數據而目標端需要保留等。具體步驟如下:源端,在數據庫中以shareplex用戶執行util目錄下的create_ignore.sql,該腳本創建了SHAREPLEX_IGNORE_TRANSprocedure;只需執行一次。在執行大的事務前先執行這個procedure,即可忽略對該事務(從這個存儲過程至下一個commit之間的所有DML操作)的復制,如:SQL>conntest/testSQL>execsplex.shareplex_ignore_trans;SQL>insertintotb1values(100,'aaa');SQL>commit;2.7修改SharePlex的數據庫用戶密碼SharePlex數據庫用戶的密碼還存在于SharePlex參數文件中,不能簡單的在數據庫中更改,需要執行SharePlex提供的腳本進行,具體步驟如下。對每個環境都單獨列出了詳細步驟。源端stopcapture進程,觀察SharePlex隊列中數據都已應用到目標端;shutdown源端和目標端的SharePlex;執行prod/bin目錄下的ora_chpwd命令來自動改變存儲在數據庫中和paramdb文件中的密碼。生產環境:dcdb02:/oracle$ora_chpwdThisprogramallowsyoutochangethepasswordoftheSharePlexuseraccountneededtorunOraclereplication.Inresponsetoprompts,acarriagereturnwillchoosethedefaultgiveninbrackets.Ifthereisnodefault,areplymustbeentered.PleaseentertheSIDwhereSharePlexisinstalled[dl2]:emptyresponse--tryagain:splex注意:在此處不要使用本地的實例名,要輸入TNS別名,然后回車;InordertochangethepasswordfortheSharePlexuseraccount,wemustconnecttothedatabaseasSYSTEM.EnterpasswordfortheSYSTEMaccount,whichwillnotecho[MANAGER]:emptyresponse--tryagain:注意:此處輸入oracle數據庫system的口令,但應當在口令的后面加上TNS_ALIAS,然后回車;connecting--Thismaytakeafewseconds.EnterthecurrentusernameforSharePlexuser:emptyresponse--tryagain:splexEnternewpasswordforSharePlexuser:emptyresponse--tryagain:Re-enterpasswordforSharePlexuser:emptyresponse--tryagain:注意:此處輸入SharePlex用戶的口令,但應當在口令的后面加上TNS_ALIAS,然后回車。ChangingSharePlexparameterdatabase...SharePlexpasswordchangecompletedsuccessfully.管理環境:dcadm:/oracle$ora_chpwdThisprogramallowsyoutochangethepasswordoftheSharePlexuseraccountneededtorunOraclereplication.Inresponsetoprompts,acarriagereturnwillchoosethedefaultgiveninbrackets.Ifthereisnodefault,areplymustbeentered.PleaseentertheSIDwhereSharePlexisinstalled[adm]:admemptyresponse--tryagain:InordertochangethepasswordfortheSharePlexuseraccount,wemustconnecttothedatabaseasSYSTEM.EnterpasswordfortheSYSTEMaccount,whichwillnotecho[MANAGER]:emptyresponse--tryagain:注意:此處輸入oracle數據庫system的口令,不需要后面加上TNS_ALIAS,然后回車;connecting--Thismaytakeafewseconds.EnterthecurrentusernameforSharePlexuser:emptyresponse--tryagain:splexEnternewpasswordforSharePlexuser:emptyresponse--tryagain:Re-enterpasswordforSharePlexuser:emptyresponse--tryagain:注意:此處輸入SharePlex用戶的口令,不需要在口令的后面加上TNS_ALIAS,然后回車。ChangingSharePlexparameterdatabase...SharePlexpasswordchangecompletedsuccessfully.啟動源端和目標端的SharePlex;源端startcapture進程,觀察SharePlex是否復制正常。2.8新增復制表如果需要對新建的表進行復制,則需要遵循以下步驟:(盡量在業務少的時候進行)(1)在目標系統數據庫建立相同的表,然后在源系統的SharePlex控制臺sp_ctrl下運行copyconfig命令將當前配置文件復制并生成一個新的配置文件。例如,當前處在激活狀態的配置文件名為filename,則建立一個文件名為newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(2)通過源系統的SharePlex控制臺sp_ctrl運行editconfig命令編輯新建的配置文件newnamesp_ctrl(sysA)>editconfignewname(3)在文件里為新建的表增加一行信息,這行信息包括該表在源系統中的表名、該表在目標服務其中的表名和路由信息。例如,在源和目標服務器的APP模式下新建了名為a的表,則應該在文件里增加如下的信息:APP.aAPP.asysBo.TargetSID(4)保存并退出配置文件;(5)停止用戶對新建表的任何操作,包括select,update,insert和delete等操作;(6)在源系統的SharePlex控制臺sp_ctrl下運行activateconfig命令激活修改后的新的配置文件,在激活的過程中原先處于激活狀態的舊的配置文件會自動解除激活狀態;sp_ctrl(sysA)>activateconfignewnamelive(7)此時,維護工作完成,用戶可以對新建的表進行訪問和操作。如果需要對已有數據的表新增到鏈路中,則需要遵循如下步驟:(1)首先在目標端停止postsp_ctrl(10:2400)>stoppostsp_ctrl(10:2400)>show>>確認post已經停止(2)在源端修改config,新增復制表sp_ctrl(11rac1:2400)>copyconfighr_scotttohr_scott_01>>復制一份正在使用的configsp_ctrl(11rac1:2400)>editconfighr_scott_01>>編輯復制的config,新增復制表datasource:o.source#sourcetablestargettablesrouting10:jobs01o.tarsphr.regionsscott.regions10:regions01o.tarsp>>需要在host之后自定義隊列名稱sp_ctrl(11rac1:2400)>verifyconfighr_scott_01>>驗證configsp_ctrl(11rac1:2400)>activateconfighr_scott_01>>激活config注:在激活配置文件之后,目標端除新增表之外的其他復制隊列已經可以激活。(3)查看v$transaction中start_timeSQL>selectstart_timefromv$transaction;查看數據庫事務開始時間,確認是否所有事務都在activateconfig時間之后,以保證所有事務都已捕獲。(4)expdp導出源端需要新增的表數據[oracle11rac1expdp]$expdpsystem/111111directory=expdpdumpfile=regions.dmptables=hr.regionsflashback_scn=5597451(5)impdp在目標端導入新增的表數據,并禁用表上的約束以及觸發器[oracle11rac1expdp]$impdpsystem/111111directory=expdpdumpfile=regions.dmpremap_schema=hr:scott>>如果用戶相同,則不需要使用remap_schema參數(6)reconcile隊列數據到之前選取的scnsp_ctrl(10:2400)>qstatusQueuesStatisticsfor10Name:regions01(o.source-o.tarsp)(Postqueue)Numberofmessages:9(Age7404min;Size1mb)Backlog(messages):9(Age7404min)Name:jobs01(o.source-o.tarsp)(Postqueue)Numberofmessages:0(Age0min;Size1mb)Backlog(messages):0(Age0min)sp_ctrl(10:2400)>reconcilequeueregions01foro.source-o.tarspscn5597452>>一般expdp導出的需要在reconcile時加1,使用RMAN基于scn恢復的則不需要加1(7)啟動新增加的表對應的post隊列sp_ctrl(10:2400)>startpostqueueregions01(8)查看數據同步情況以及鏈路情況。2.9刪除復制表如果將要被刪除的表在當前處在激活狀態的SharePlex配置文件中,則需要遵循以下步驟:(盡量在業務少的時候進行)(1)通過源系統的SharePlex控制臺sp_ctrl運行copyconfig命令將當前配置文件復制并生成一個新的配置文件。例如,當前處在激活狀態的配置文件名為filename,則建立一個文件名為newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(2)通過源系統的SharePlex控制臺sp_ctrl下運行editconfig命令編輯配置新建的配置文件sp_ctrl(sysA)>editconfignewname(3)在文件中將該含有該表的信息行刪除。(4)保存并退出配置文件;(5)通過源系統的SharePlex控制臺sp_ctrl運行activateconfig命令激活修改后的新的配置文件,在激活的過程中原先處于激活狀態的舊的配置文件會自動解除激活狀態;sp_ctrl(sysA)>activateconfignewnamelive(6)維護工作完成。2.10重命名表如果被重命名的表在當前處在激活狀態的SharePlex配置文件中,則需要遵循以下步驟:(盡量在業務少的時候進行)(1)停止用戶對該表的任何操作,包括select,update,insert和delete等操作;(2)在源系統和目標系統數據庫中上重命名該表;(3)通過源系統的SharePlex控制臺sp_ctrl運行copyconfig命令將當前配置文件復制并生成一個新的配置文件。例如,當前處在激活狀態的配置文件名為filename,則建立一個文件名為newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(4)通過源系統的SharePlex控制臺sp_ctrl運行editconfig命令編輯配置新建的配置文件sp_ctrl(sysA)>editconfignewname(5)在文件里修改被重命名表所在的行信息,將該表在源系統中的表名、該表在目標服務其中的表名該為重命名后的表名。例如,在源和目標服務器的APP模式下的表a被重命名為表b,則該表所在的行信息應該改為:APP.bAPP.bsysBo.TargetSID(6)保存并退出配置文件;(7)通過源系統的SharePlex控制臺sp_ctrl運行activateconfig命令激活修改后的新的配置文件newname,在激活的過程中原先處于激活狀態的舊的配置文件會自動解除激活狀態;sp_ctrl(sysA)>activateconfignewnamelive(8)維護工作完成,用戶可以對重命名之后的表進行訪問和操作。2.11新增LOB列或者重命名列對于altertableaddaLOBcolumn操作,如果被執行該操作的表在當前處在激活狀態的SharePlex配置文件中,則必須遵循以下步驟保證復制環境兩套數據庫系統的一致性。(盡量在業務少的時候進行)(1)停止用戶對該表的任何操作,包括select,update,insert和delete等操作;(2)通過源系統的SharePlex控制臺sp_ctrl下運行copyconfig命令將當前配置文件復制并生成一個新的配置文件。例如,當前處在激活狀態的配置文件名為filename,則建立一個文件名為newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(3)通過源系統的SharePlex控制臺sp_ctrl下運行editconfig命令編輯配置新建的配置文件;sp_ctrl(sysA)>editconfignewname(4)在文件中將要增加LOB字段(或重命名字段)的表的信息行刪除。(5)保存并退出配置文件;(6)通過源系統的SharePlex控制臺sp_ctrl運行activateconfig命令激活修改后的新的配置文件,在激活的過程中原先處于激活狀態的舊的配置文件會自動解除激活狀態;sp_ctrl(sysA)>activateconfignewnamelive(7)在源系統和目標系統數據庫中對該表增加LOB字段(或重命名字段);(8)通過源系統的SharePlex控制臺sp_ctrl運行activateconfig命令激活原先的配置文件filename,在激活的過程中剛剛處于激活狀態的配置文件newname會自動解除激活狀態;sp_ctrl(sysA)>activateconfigfilenamelive(9)維護工作完成,用戶可以對該表進行訪問和操作。2.12Altertablemoveanewtablespace對于altertablemovetablespace操作,如果被執行該操作的表在當前處在激活狀態的SharePlex配置文件中,則必須遵循以下步驟保證復制環境兩套數據庫系統的一致性。(盡量在業務少的時候進行)(1)停止用戶對該表的任何操作,包括select,update,insert和delete等操作;(2)通過源系統的SharePlex控制臺sp_ctrl下運行copyconfig命令將當前配置文件復制并生成一個新的配置文件。例如,當前處在激活狀態的配置文件名為filename,則建立一個文件名為newname的配置文件;sp_ctrl(sysA)>copyconfigfilenametonewname(3)通過源系統的SharePlex控制臺sp_ctrl下運行editconfig命令編輯配置新建的配置文件;sp_ctrl(sysA)>editconfignewname(4)在文件中將要轉移表空間的表的信息行刪除。(5)保存并退出配置文件;(6)通過源系統的SharePlex控制臺sp_ctrl運行activateconfig命令激活修改后的新的配置文件,在激活的過程中原先處于激活狀態的舊的配置文件會自動解除激活狀態;sp_ctrl(sysA)>activateconfignewnamelive(7)在源系統和目標系統數據庫中對移動該表到新的表空間;(8)通過源系統的SharePlex控制臺sp_ctrl運行activateconfig命令激活原先的配置文件filename,在激活的過程中剛剛處于激活狀態的配置文件newname會自動解除激活狀態;sp_ctrl(sysA)>activateconfigfilenamelive(9)維護工作完成,用戶可以對該表進行訪問和操作。2.13一個軟件啟動多個SP實例(1)分配端口號需要給每一個sp_cop分配一個唯一的端口號(2)創建variable-data目錄為每一個sp_cop實例創建一個variable-data目錄。按照SharePlexInstanllationGuide安裝SharePlex,在安裝最后,你需要一個product目錄以及一個variable-data目錄關聯一個端口以及一個數據庫賬戶,這是你的基礎實例。關閉正在運行的sp_cop實例。為每一個實例復制一個vardir目錄。cp-p-r/splex/vardir/splex2100/splex/vardir/splex2101cp-p-r/splex/vardir/splex2100/splex/vardir/splex2102(3)定義端口號在SharePlex環境中a.定義環境variable-data環境變量kshshell:exportSP_SYS_VARDIR=/full_path_of_variable-data_directorycshshell:setenvSP_SYS_VARDIR/full_path_of_variable-data_directoryb.定義環境變量SP_COP_TPORTandSP_COP_UPORTkshshell:exportSP_COP_TPORT=portexportSP_COP_UPORT=portcshshell:setenvSP_COP_TPORTportsetenvSP_COP_UPORTportc.啟動sp_cop實例使用-u選項$/productdir/bin/sp_cop-uport&d.使用如下參數為環境變量中variable-data設置端口sp_ctrl>setparamSP_COP_TPORTportsp_ctrl>setparamSP_COP_UPORTporte.關閉實例Shutdownsp_cop.f.在variable-data目錄中的rim子目錄中,刪除shstinfo.ipc以及shmaddr.loc文件(如果之前安裝的SharePlex從未啟動過sp_cop這兩個文件可能不存在)h.重復上述步驟為每一個實例如果是為同一個數據庫啟動不同實例,則下面步驟可以省略。(4)如果針對不同數據庫,則需要在完成上述步驟之后,為每一個數據庫運行ora_setupa.定義環境variable-data環境變量kshshell:exportSP_SYS_VARDIR=/full_path_of_variable-data_directorycshshell:setenvSP_SYS_VARDIR/full_path_of_variable-data_directoryb.定義環境變量SP_COP_TPORTandSP_COP_UPORTkshshell:exportSP_COP_TPORT=portexportSP_COP_UPORT=portcshshell:setenvSP_COP_TPORTportsetenvSP_COP_UPORTportc./ora_setup,根據交互界面提示,為每個sp_cop實例配置不同數據庫設置。3.SharePlexAA復制實施3.1前言AA復制即源端為oracle,目標端也為oracle。實施之前一定要備份源庫,并保證備份的可用性,并制定完備的回退方案。SharePlex可以用作容災,報表分離,數據分發,數據遷移。使用SharePlex進行數據遷移一般具有數據量大,源端與目標段為異構平臺,停機時間短等特點,遷移完成之后,可以再次配置目標段到源端的復制,防止試運行階段出現問題以便回切。使用SharePlex進行異構容災實施步驟大致與異構遷移相同,主要區別在于最后數據遷移完成之后目標段FK,job,trigger的處理。3.2環境準備源庫空間準備,中間庫準備,目標端相關軟件安裝,RAC安裝時需要安裝在共享磁盤上,并且將SharePlex啟動在可浮動的一個serviceIP上。在源庫與目標庫安裝同版本的ShanrePlex,可以不同平臺,但一定要保證版本一致。在源端編寫config文件,并在源端與目標端都停止Post進程,然后verify并analyzeconfig,然后再根據分析結果,修改優化config文件。3.3數據初始化a.有中間庫時,可以使用DG搭建與源庫同平臺的中間庫環境,并配置好DG,然后在源端激活上一步配置好的config文件,開始capture捕獲,在v$transaction視圖中事務開始時間都晚于捕獲時間之后,查詢selectto_char(current_scn)fromv$database;選取一個SCN,然后在確保SCN之前所有的數據都同步到中間庫之后,可以將DG斷開。如果是10g之前的版本,如果數據量較大,則可以使用RMAN在中間庫不完全恢復到選取的SCN,然后使用exp人為分割大表啟動多個exp進程,啟用并發加快導出數據速度。10g以后的版本使用expdp配合FLASHBACK_SCN=<SCN_NUMBER>將數據導出。b.沒有中間庫時,在源端先開啟捕獲,保證v$transaction視圖中所有事務開始時間都在捕獲時間之后,然后選取scn,使用exp/expdp進行基于該scn導出,在目標端導入。注:目標數據庫FK、job、trigger的處理,正常的job與schedulejob必須都禁用掉,使用如下語句生成批量禁用語句,然后執行。SQL>select'altertable"'||owner||'".'||table_name||'disableconstraint"'||constraint_name||'";'fromdba_constraintswhereconstraint_typein('R')andownerin('HR')orderbystatus,owner;SQL>select'altertrigger"'||owner||'"."'||trigger_name||'"disable;'fromdba_triggerswhereownerin('HR')orderbystatus,owner;禁用目標端job:SQL>altersystemsetjob_processes=0scope=bothsid=’*’;3.4reconcile隊列數據在目標端,使用sp_ctrl控制臺,reconcile目標端post隊列中激活源端config開啟capture到選取的SCN之間的數據,以保證開啟post之后,SharePlex可以將之后數據對接,保證數據一致性。sp_ctrl(cluster1vip:2100)>qstatussp_ctrl(cluster1vip:2100)>helpreconcilesp_ctrl(cluster1vip:2100)>reconcilequeuedatamoveforo.wahaha-o.honor1scn698767sp_ctrl(cluster1vip:2100)>qstatus注:數據泵導入導出的時候,reconcile時scn一般需要加1,rmanuntilscn方式恢復的不需要加1.3.5開啟目標端postsp_ctrl(cluster1vip:2100)>startpostsp_ctrl(cluster1vip:2100)>qstatussp_ctrl(cluster1vip:2100)>showsync使用sqlplus查看數據同步情況,同步完成之后,查看源端與目標端數據是否一致。3.6目標端FK,job,trigger處理如果使用SharePlex做容災鏡像復制,目標端FK,job,trigger則禁止,直到需要切換到災備庫時啟用。如果使用SharePlex做數據遷移,則需要在遷移完成之后啟用FK,job,trigger。4.SharePlex其他復制說明4.1DDL復制在級聯復制中,DDL復制只從源端到中間端,不包含中間段到目標段。默認SharePlex開啟TruncateTABLE與ALTERTABLEtoADDCOLUMNSorDROPCOLUMNS的DDL復制。注:默認DDL配置受參數SP_OCT_REPLICATE_DDL參數影響,1為ALTERTABLE,2為TRUNCATETABLE,3為ALTERTABLE與TRUNCATETABLE,默認為3默認SharePlex的AUTO_ADD特性會自動捕獲在激活配置文件(前提是新建的對象在配置文件中使用通配符等方式匹配)之后創建的表與索引,并自動復制到目標端,將對象加入復制列表,維護對象以后的DDL與DML。注:默認AUTO_ADD受SP_OCT_AUTOADD_ENABLE參數影響,默認為1,即ENABLE如果需要開啟TRIGGER,SYNONYM,GRANT的復制,需要設置以下參數為1DDLcommandSetthisparameterto1CREATE/DROPTRIGGERSP_OCT_REPLICATE_TRIGGERCREATE/DROPSYNONYMSP_OCT_REPLICATE_SYNONYMGRANTSP_OCT_REPLICATE_GRANT如果需要開啟SEQUENCE,MATERIALIZEDVIEW復制,需要設置一下參數為1前提:1.保證SP_OCT_AUTOADD_ENABLE參數設置為1.DDLtoauto-addParametertosetto1AdditionalrequirementsCREATE/DROPSEQUENCESP_OCT_AUTOADD_SEQSettheSP_OCT_TARGET_COMPATIBILITYparametertoatleast8.6.3CREATE/DROPMATERIALIZEDVIEW*SP_OCT_AUTOADD_MVSettheSP_OCT_TARGET_COMPATIBILITYparametertoatleast8.6.3SharePlex可以復制不包含在激活的配置文件的對象的DDL,但是不會復制任何數據,因為沒有激活的配置文件包含對象。SP_OCT_REPLICATE_ALL_DDL設置為1。4.2異構復制mapcolumns環境:RedHat6OracleSharePlex9.0注意事項:1.源庫的所有列必須映射給目標端的列,名稱可以不同,目標表的列數量可以多于源庫表的列數量。2.在配置了列映射的表中使用ALTERTABLE增加列是不被支持的。樣例配置文件:sp_ctrl(11rac1:2300)>viewconfighr_20170708datasource:o.source#sourcetablestargettablesroutingmap#splex.demo_srcsplex.demo_desttarget_systemo.target_sidhr.employeeshr.employees12o.targethr.test(id,name)hr.coltest(nu,last_name)12o.target4.3級聯復制級聯復制情境1.源庫允許有超過1024個復制路由,則可以通過發送到中間系統,通過廣播的方式,分發給目標系統。2.源庫由于防火墻限制或者其他因素導致無法直接建立與目標端的連接,則可以使用級聯復制。注:使用級聯復制,即使源庫無法連接目標端,源端也要能解析目標端的主機。級聯復制要求在所有系統中創建相同SharePlex用戶名用戶。在目標端禁用影響DML操作的觸發器。排除SharePlex用戶的DML與DDL復制,配置文件中對象以外的表可以有DML與DDL操作,但不能影響復制隊列。如果序列在目標端是不需要的,則不要復制序列,復制序列會造成復制遲緩。因為序列用來在插入操作時產生列的鍵值,而值會復制到目標端,所以序列可以不復制。4.3.1中間系統為數據庫,有post情況下級聯復制配置注意事項:在所有系統的數據庫中,必須有相同名稱的SharePlex的用戶。觸發器必須在在中間庫與目標庫中禁用。SharePlex不支持從中間庫到目標庫的DDL復制,只支持源庫到中間庫的DDl復制,所以在中間庫需要禁用掉SP_OCT_REPLICATE_DDL與SP_OCT_REPLICATE_ALL_DDL兩個參數。需要在源庫與中間庫創建兩個配置文件。源庫與中間庫開啟歸檔,防止在捕獲完成之前聯機重做日志被清除。配置樣例:ExampleonsourcesystemDatasource:o.oraAhr.emphr.emp2hostBo.oraBhr.salhr.sal2hostBo.oraBcust.%cust.%hostBo.oraBExampleonintermediarysystemDatasource:o.oraBhr.emphr.emp2hostCo.oraChr.salhr.sal2hostDo.oraD+hostEr.mssEcust.%cust.%!cust_partitions需要配置參數如果中間庫是Oracle,需要設置參數SP_OCT_REPLICATE_POSTER為1,默認為0,參數設置為0時,SharePlex的capture將忽略post進程的活動。4.3.2中間系統為pass-through配置前提Oracle數據庫下,創建Oracle實例以及在/etc/oratab或者windows注冊表中指定對應ORACLE_SID,數據庫可以為空。不支持DDL復制只需要在源端創建一個配置文件即可。4.4SharePlex高可用復制配置雙向復制,停止備機端的export進程。4.5配置Change-History復制4.5.1Change-History創建Change-History配置文件確保系統符合SharePlex要求以及已經按照規安裝了SharePlex軟件。在目標段創建與需要記錄改變歷史的源端表相同結構及表名的表,省略掉所有列上的所有約束。注:目標記錄改變歷史表不能有主鍵約束,外鍵約束,唯一鍵,非空,檢查約束,也不能在列上定義默認值。因為這個表記錄的是改變歷史,一行的值有可能有與其他行相同的鍵值。Post在記錄改變歷史的目標端不能參照完整性約束。在目標端禁用觸發器trigger。在目標表禁止除了SharePlex用戶外所有用戶的DML與DDL操作。在源端,使用如下語法創建config文件。Datasource:o.SID是源端Oracle實例的ORACLE_SIDSrc_owner.table是一個完整合法的源端對象(owner.object)或者使用通配符指定的對象。!cdc:指定目標端表為change-history表tgt.owner.table是一個在目標段完整合法的change-history表或者使用通配符指定的表。host是指目標系統c.SID指定目標端的Oracle實例(可選步驟)在目標端運行product_dir/util/add_change_tracking_columns.sql腳本,添加默認名稱的列定義。Post可以自動填入默認定義的列而不需要任何額外的配置,你也可以自定義腳本去匹配自己的要求。注:上述腳本只添加默認名稱的列。如果添加可選擇的列或者改變列的名稱,使用target命令添加自定義的列名稱到Post配置。查看target命令默認以及可選的列定義,可以參考SharePlexReferenceGuide在一個change-history配置中,配置文件中捕捉到的添加新表DDL將自動添加默認change-history列。4.5.2其他的change-history配置選項這部分容描述如何自定義配置SharePlex記錄改變歷史。a)使用自定義列明記錄改變歷史在目標端可以使用target命令自定義任何目標定義的列,target詳細用法可以參考SharePlexReferenceGuide。b)源端每一行改變都在目標端記錄前鏡像可以通過在目標端設置SP_OPO_TRACK_PREIMAGE參數為U來在記錄改變歷史時記錄改變的值同時新增一行記錄前鏡像值。這個參數將會使Post在源端表每行發生改變時在目標端記錄改變歷史表中插入兩行:一行是改變后的鏡像另一行為改變前的鏡像。前鏡像由改變后的值與改變量構成,除非源端啟用了SP_OCT_USE_SUPP_KEYS參數。當前鏡像值被設置為保留,則默認列名為SHAREPLEX_SOURCE_OPERATION的列值將會有兩條記錄:1.更新前的值2.更新后的值注:保留前鏡像的行不包含任何類型為log的字段,因為redolog不會記錄log的前鏡像。可以取消設置SP_OPO_TRACK_PREIMAGE參數,然后通過使用target命令setcdcpreimage選項將全局設定改為表級別。c)在記錄歷史表中包含操作行的所有列值在目標端記錄改變歷史的表中記錄源端修改的行的所有列的值,而不僅僅包含修改的列值,需要進行如下操作:打開源端表基于所有列的最小附加日志。示例語句:ALTERTABLEEMPADDSUPPLEMENTALLOGDATA(ALL)COLUMNS;在源端設置參數SP_OCT_USE_SUPP_KEYS為1.在源端設置參數SP_OCT_INCLUDE_UNCHANGED_COL為1.注:當同時啟用SP_OCT_USE_SUPP_KEYS與SP_OPO_TRACK_PREIMAGE參數時,前鏡像行將包含改變前行所有列值。d)在記錄改變歷史的復制中屏蔽掉操作類型在目標端屏蔽掉源端DML操作類型,設置SP_OPO_TRACK_OPERATIONS參數為合適的值,使用斜杠/分開多個值。例如,維護改變歷史表只記錄insert與update,改變參數值為I/U。默認值為I/U/D,將記錄所有的DML操作。e)設置規則與過濾器可以通過使用target命令的setrule選項去設置應用條件控制改變是否應用到目標記錄改變歷史表中。例如,你可以指定一個加入第一列與第三列改變了,然后應用操作并且丟棄在其他行上的任何改變,可以參考SharePlexReferenceGuide。f)包含提交操作默認的,提交記錄不包含在記錄改變歷史表中。可以通過配置Post去插入每一次提交記錄,設置SP_OPO_TRACK_COMMITS參數為1.4.6Oracle到Kafka復制4.6.1概述SharePlex的Post進程可以連接并寫入到Kafka的broker中。數據被以XML記錄并包含數據定義、操作類型以及被修改的列值寫入。數據被以在源端發生的操作的連續系列寫入,這些數據可以被以連續的順序發送到目標數據庫或者被外部程序消費。4.6.2發送到Kafka說明SharePlex的Post進程扮演一個Kafkaproducer角色。一個SharePlexPost進程只能寫一個broker的默認partition0的單一topic。想支持多個topics或者多個broker,需要使用命名Post隊列的方式配置多個SharePlexPost進程。SharePlex的Post進程不會創建topics,必須在Kafka平臺創建topic。出于考慮性能的原因,Post在發送到Kafkabroker之前將消息集合到一批。優化參數可用來控制批消息的大小。這可以用來平衡性能與延遲。注:SharePlex到Kafka平臺支持的平臺,數據類型以及操作類型可以參考SharePlex的ReleaseNotes文檔。4.6.3源端SharePlex配置當復制數據到Kafka平臺時,使用一下步驟配置源端數據庫以及SharePlex。4.6.4開啟supplementallogging在源端系統oracle數據庫中,啟用PK/UK最小附加日志。SharePlex必須有Oracle鍵信息在目標端創建合適鍵。SQL>ALTERDATABASEADDSUPPLEMENTALLOGDATA(PRIMARYKEY,UNIQUE)COLUMNS;4.6.5設置SP_OCT_USE_SUPP_KEYS參數在源端系統,設置SP_OCT_USE_SUPP_KEYS參數為1,。這個參數指導SharePlex使用Oracle最小附加日志列作為關鍵鍵值列當update或者delete一行數據時。當數據庫supplementallogging以及該參數都被設置之后,這保證了SharePlex可以總是構建鍵以及SharePlex鍵匹配Oracle的鍵。注:可以通過查看ReferenceGuide官方文檔查看更多關于SP_OCT_USE_SUPP_KEYS參數的信息。4.6.6配置復制在源端,創建SharePlex配置文件指定Capture的路由信息。配置文件的變化,需要根據定制的復制策略,以下顯示為路由數據到Kafka的語法要求。說明:SID為源端Oracle數據庫ORACLE_SIDSrc_owner.table為源端表的擁有者以及表名:tgt_owner.table為可選項以及指定目標端表的擁有者以及名字。Useifeithercomponentisdifferentfromthatofthesourcetable.允許!kafka與:tgt_owner.table之間沒有空格。正確的關鍵字以及雙引號中是大小寫敏感,”MySchema”.”MyTable”host是目標系統的名字。4.6.7目標端SharePlex配置以下部分介紹配置SharePlexPost進程連接Kafka,你必須有一個正在運行的Kafkabroker。配置Post到Kafka:1)創建Kafkatopic2)啟動sp_cop(不要已經激活源端配置文件)3)運行sp_ctrl4)使用target命令配置posting到Kafkabroker的topic。示例如下:sp_ctrl>targetx.kafkasetkafkabroker=localhost:9092sp_ctrl>targetx.kafkasetkafkatopic=shareplexSeeViewandchangeKafkasettingsforcommandexplanationsandoptions.4.6.8查看并且修改Kafka設置查看當前輸出到Kafka的設置,使用如下命令。sp_ctrl>targetx.kafkashow修改設置,使用如下命令。sp_ctrl>targetx.kafka[queuequeuename]setkafkaproperty=value說明:隊列queuename為post隊列的名字,如果需要多個post進程,使用此選項下表中有屬性以及取值4.6.9設置恢復選項如果Kafka進程突然意外中止,或者機器意外中止,行變化有可能會在kafka的topic中寫兩次。消費者必須通過檢測以及丟棄重復來管理這種情況。在一個事務中對每一個行操作的記錄都有相同的事務ID并且通常使用sequenceID標記。這個屬性在XML輸出關鍵詞txn元素下分別使用關鍵詞id與關鍵詞msgldx。事務ID是事務提交時間的SCN,sequenceID是在事務中行變化的index。在重寫Kafkatopic的恢復情境中必須保證這兩個值相同。如果想要,可以使用target命令配置Post使每一個行改變記錄包含附加的metadata信息。targetx.kafka[queuequeuename]setmetadataproperty[,property]Exampletargetx.kafkasetmetadatatime,userid,trans,sizeToresetthemetadatatargetx.kafka[queuequeuename]resetmetadataToviewthemetadatatargetx.kafka[queuequeuename]showmetadata5.日常監控5.1啟動/關閉SharePlex啟動SharePlex:以oracle用戶登錄$sp_cop&$ps-ef|grepsp_

溫馨提示

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

評論

0/150

提交評論