ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据同步软件SharePlex For Oracle搭建手册

2021-06-15 16:33:15  阅读:276  来源: 互联网

标签:scn database ## 手册 orcl SharePlex Oracle config 源端


作者简介:

作者:LuciferLiu
中国DBA联盟(ACDU)成员。目前从事Oracle DBA工作,曾从事 Oracle 数据库开发工作,主要服务于生产制造,汽车金融等行业。现拥有Oracle OCP,OceanBase OBCA认证,擅长Oracle数据库运维开发,备份恢复,安装迁移,Linux自动化运维脚本编写等。

前言

什么是SharePlex?

SharePlex是一种基于分析oracle的redo log文件,把数据改变从一个Oracle数据库复制到另外一个或多个oracle数据库的逻辑数据复制软件。
SharePlex简介

SharePlex特点:

1、可以复制表(全部内容、部分行、部分列)。

2、可以复制MV和sequence,以及DDL。

3、支持Blob,Clob,NClob,Long,Long RAW,udt,varray,nchar,nvarchar2,IOT,XML等不常用的数据类型。

4、支持redo文件存在文件系统,裸设备,ASM上。

5、准实时复制。

6、支持在不同的硬件,软件平台以及不同的Oracle版本之间的复制。

7、支持双向复制(包括DDL)。

8、复制过程中检验数据不一致问题。

9、在线比对,修复数据。

10、事务开始时即复制到目标端。

11、容灾切换简单,快速。

12、支持Email,SNMP等方式报警。

13、图形监控界面。

SharePlex架构图:

SharePlex架构图

本次实施用RMAN进行复制:rman/BCV

一、环境准备

环境准备

1、配置hosts文件

##源端
cat <<EOF>>/etc/hosts
10.211.55.110 orcl-rpt
EOF

##目标端
cat <<EOF>>/etc/hosts
10.211.55.100 orcl-rac01
EOF

2、环境变量添加

##源端
cat <EOF>/home/oracle/.bash_profile
export SP_SYS_HOST_NAME=orcl-rac01
export SP_SYS_VARDIR=/quest/vardir2300
export PATH=/quest/bin:$PATH
EOF

##目标端
cat <EOF>/home/oracle/.bash_profile
export SP_SYS_HOST_NAME=orcl-rpt
export SP_SYS_VARDIR=/quest/vardir2300
export PATH=/quest/bin:$PATH
EOF

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软件

安装SharePlex

1、准备安装介质和license

##源端&目标端:
mkdir /quest
chmod -R 755 /quest
chown -R oracle:oinstall /quest

##license

2、执行Share*.tpm安装

tpm安装

3、执行ora_setup初始化

ora_setup初始化

Notes:以上步骤,如若重建SharePlex,无需操作。

如果是重建splex,需要在启动splex前清理splex:

/quest/bin/ora_cleansp splex2300/splex2300

/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文件

编写config文件

激活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、数据初始化

数据初始化

1、有备份的话可以直接恢复,然后追归档即可。

2、如果是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<<EOF
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
crosscheck backup;
crosscheck archivelog all;
sql 'alter system archive log current';
delete noprompt expired backup;
delete noprompt obsolete device type disk;
backup database format '/dbbackup/backdata_%d_%T_%U';
backup current controlfile format '/dbbackup/cntrl_%s_%p_%s';
sql 'alter system archive log current';
backup archivelog all format '/dbbackup/archlog_%d_%T_%U';
crosscheck archivelog all;
crosscheck backup;
delete noprompt obsolete device type disk;
release channel c1;
release channel c2;
}
exit;
EOF

初始化方法

源端取一个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;

1.(如果是ASM存放归档文件,cp只能一个一个归档拷贝,可以直接用rman备份指定时间到当前时间的归档,然后恢复到目标端)源端:

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')";

2.如果是ocfs共享,可以把源端archivelog目录通过nfs挂载到目标端,在目标端catalog之后recover database,但是要注意nfs挂载需要注释掉源端/etc/hosts文件中的目标端ip解析,否则无法挂载)

catalog start with '/dbbackup/archlog_MESDB_';(可缺省定位多个归档文件)
recover database until scn 63839836480;(若缺归档copy归档,catalog之后再recover即可)

用RESETLOGS方式打开目标端数据库

alter database open resetlogs;

目标端运行 ora_setup 使用存在的 SPLEX 用户,不要创建新用户(如果 shareplex 重建的话,不需要执行这一步)

目标端运行 reconcile 指定的 scn 值是之前取的 scn 值

reconcile

##进入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和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

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力,谢谢
一键三连

墨天轮:Lucifer三思而后行
CSDN:Lucifer三思而后行
微信公众号:Lucifer三思而后行
公众号二维码

标签:scn,database,##,手册,orcl,SharePlex,Oracle,config,源端
来源: https://blog.csdn.net/m0_50546016/article/details/117821334

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有