数据同步软件SharePlex For Oracle搭建手册
2021/6/15 19:22:20
本文主要是介绍数据同步软件SharePlex For Oracle搭建手册,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
作者简介:
作者:LuciferLiu
中国DBA联盟(ACDU)成员。目前从事Oracle DBA工作,曾从事 Oracle 数据库开发工作,主要服务于生产制造,汽车金融等行业。现拥有Oracle OCP,OceanBase OBCA认证,擅长Oracle数据库运维开发,备份恢复,安装迁移,Linux自动化运维脚本编写等。
前言
什么是SharePlex?
SharePlex是一种基于分析oracle的redo log文件,把数据改变从一个Oracle数据库复制到另外一个或多个oracle数据库的逻辑数据复制软件。
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架构图:
本次实施用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软件
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
/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、数据初始化
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 值
##进入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
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力,谢谢
墨天轮:Lucifer三思而后行
CSDN:Lucifer三思而后行
微信公众号:Lucifer三思而后行
这篇关于数据同步软件SharePlex For Oracle搭建手册的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享