數據同步軟件SharePlex For Oracle搭建手冊
目前從事Oracle DBA工作,曾從事 Oracle 數據庫開發工作,主要服務于生產制造,汽車金融等行業。

現擁有Oracle OCP,OceanBase OBCA認證,擅長oracle數據庫運維開發,備份恢復,安裝遷移,Linux自動化運維腳本編寫等。
前言
什么是SharePlex?
SharePlex是一種基于分析oracle的redo log文件,把數據改變從一個oracle數據庫復制到另外一個或多個oracle數據庫的邏輯數據復制軟件。
SharePlex特點:
可以復制表(全部內容、部分行、部分列)
可以復制MV和sequence,以及DDL
支持Blob,Clob,NClob,Long,Long RAW,udt,varray,nchar,nvarchar2,IOT,XML等不常用的數據類型
支持redo文件存在文件系統,裸設備,ASM上
準實時復制
支持在不同的硬件,軟件平臺以及不同的Oracle版本之間的復制
支持雙向復制(包括DDL)
復制過程中檢驗數據不一致問題
在線比對,修復數據
事務開始時即復制到目標端
容災切換簡單,快速
支持Email,SNMP等方式報警
圖形監控界面
SharePlex架構圖:
本次實施用RMAN進行復制:
rman/BCV
一、環境準備
1 配置hosts文件
##源端 cat <
2 環境變量添加
##源端 cat
3 源端啟動歸檔及補充日志
--開啟歸檔模式 shutdown immediate startup mount alter database archivelog; alter database open; --開啟補充日志 alter database add supplemental log data (primary key, unique index) columns; --查看補充日志 select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI from v$database;
4 創建splex用戶
--源端執行 create user SPLEX2300 identified by SPLEX2300; grant dba to SPLEX2300;
二、安裝SharePlex軟件
1 準備安裝介質和license
##源端&目標端: mkdir /quest chmod -R 755 /quest chown -R oracle:oinstall /quest ##license
2 執行Share*.tpm安裝
3 執行ora_setup初始化
Notes:以上步驟,如若重建SharePlex,無需操作。
如果是重建splex,需要在啟動splex前清理splex:
/quest/bin/ora_cleansp splex2300/splex2300
源端目標端均執行(前提是數據庫都要啟動)
4 啟動shareplex
sp_cop -u2300 &
5 源端參數修改
##進入sp控制臺 sp_ctrl ##設置參數 set param SP_OCT_REDUCED_KEY 2 set param SP_OPO_STOP_ON_DDL_ERR 0 set param SP_OPO_CONT_ON_ERR 1 set param SP_OCF_LOCK_WAIT_TIME 1 set param SP_OCF_THREAD_COUNT 30 set param SP_OCT_OLOG_USE_OCI 1
6 目標端停止post
##進入sp控制臺 sp_ctrl ##停止同步 stop post
7 源端配置并激活config文件
這里需要在源端主機配置/etc/hosts的orcl-rpt的解析,否則會激活失敗。
##進入sp控制臺 sp_ctrl ##查看config list config copy config ORA_config orcl_config edit config orcl_config ##以下為配置文件內容 datasource:o.mesdb2 #source tables target tables routing map expand TABLE_A.% LUCIFER.% orcl-rpt:q1@o.orcl expand TABLE_B.% TEST.% orcl-rpt:q2@o.orcl
Notes:如若是重建splex,直接激活config即可。
activate config orcl_config nolock
實際操作時,不建議這一步激活,一般是rman恢復到目標端之后recover database until scn 之前激活config。
8 大事務檢查
select start_time from gv$transaction;
9 數據初始化
有備份的話可以直接恢復,然后追歸檔即可
如果是rac恢復到單機,要注意目錄的變化set newname
如果沒有備份,可執行以下備份腳本:
#!/bin/sh source ~/.bash_profile backtime=`date +"20%y%m%d%H%M%S"` rman target / log=/dbbackup/logs/full_backup_$backtime.log< 源端取一個SCN col current_scn format 9999999999999999 select current_scn from v$database; 目標端恢復數據庫到指定的scn startup nomount; ##連接rman rman target / restore controlfile from '/dbbackup/cntrl_6428_1_6428.bak'; alter database mount; run { set newname for database to '/data/orcl/%b'; restore database; switch datafile all; }; recover database; (如果是ASM存放歸檔文件,cp只能一個一個歸檔拷貝,可以直接用rman備份指定時間到當前時間的歸檔,然后恢復到目標端)源端 如果是ocfs共享,可以把源端archivelog目錄通過nfs掛載到目標端,在目標端catalog之后recover database,但是要注意nfs掛載需要注釋掉源端/etc/hosts文件中的目標端ip解析,否則無法掛載) backup archivelog from time "to_date('2020-9-22 00:00:00','YYYY-MM-DD hh24:mi:ss')" until time "to_date('2020-9-22 22:00:00','YYYY-MM-DD hh24:mi:ss')"; catalog start with '/dbbackup/archlog_MESDB_'; recover database until scn 63839836480; 用RESETLOGS方式打開目標端數據庫 alter database open resetlogs; 目標端運行 ora_setup 使用存在的 SPLEX 用戶,不要創建新用戶(如果 shareplex 重建的話,不需要執行這一步) 目標端運行 reconcile 指定的 scn 值是之前取的 scn 值 ##進入sp控制臺 sp_ctrl reconcile queue q1 for o.orcl1-o.orcl scn 63839836480 reconcile queue q2 for o.orcl1-o.orcl scn 63839836480 reconcile queue q3 for o.orcl1-o.orcl scn 63839836480 reconcile queue q4 for o.orcl1-o.orcl scn 63839836480 reconcile queue q5 for o.orcl1-o.orcl scn 63839836480 Notes:如果reconcile hang住,可以在源端執行flush o.mesdb2來清洗隊列管道,源端執行幾次flush,目標端就要執行幾次start post加1次,也可以單獨對一個隊列管道flush:flush o.orcl1 to orcl-rpt queue q1。 目標端運行cleanup.sql來清空內部表信息 sqlplus splex2300/splex2300 @/quest/bin/cleanup.sql 10 目標端禁用trigger和FK、job --禁用trigger SELECT 'alter trigger ' || owner || '.' || trigger_name || ' disable;' from dba_triggers where owner in ('SAJET','SMT','ERP','WIQ','SJ'); --禁用約束 SELECT 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';' from dba_constraints where constraint_type='R' and owner in ('SAJET','SMT','ERP','WIQ','SJ'); --禁用job alter system set job_queue_processes=0; 11 目標端啟動post ##進入sp控制臺 sp_ctrl ##目標端開啟同步 start post ##查看隊列運行情況 show qstatus ##查看日志 show log reverse 至此,SharePlex已經搭建完成。 本次分享到此結束啦~ 如果覺得文章對你有幫助, 、、關注、評論 ,一鍵四連支持,你的支持就是我創作最大的動力。 Oracle 數據復制服務 DRS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。