SharePlex实施文档以及常见故障Word文档下载推荐.docx
《SharePlex实施文档以及常见故障Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SharePlex实施文档以及常见故障Word文档下载推荐.docx(36页珍藏版)》请在冰豆网上搜索。
prodir>
/bin/sp_ctrl,一般启动之后首先进入控制台执行sp_ctrl>
stoppost,停止。
1.5config配置文件
Config配置文件为复制链路需要复制对象以及链路映射文件。
sp_ctrl>
listconfig
verifyconfig
activateconfig<
file_name>
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.test192.168.204.151:
scott_tabo.honor1--IP或主机名后加冒号,可以为该表复制单独起一个队列。
mary.cust2!
key(c1,c2)mary.cust2prodao.sid--自定义pk
1.6analyzeconfig<
config_name>
--可以分析config,生成报表,分析数据库表操作频繁记录等。
2.SharePlex常用操作
2.1copy命令
命令说明:
会将目标先truncate掉,然后再利用expdp加constraint=y参数导出再导入,如果你不想truncate目标端的原有同步数据则你需要使用另一个命令append
copy命令可实现单表或表分区的同步,不适合大批量表的同步。
使用要求:
目标端启动launcher:
sp_ctrl>
startlauncher――默认端口是2501
同步的表出现在已激活的配置文件中。
目标端的复制表所属用户需先建立,copy可以创建表结构,但要求表空间不变,所以建议先建好表结构再复制。
语法如下:
copyowner.tablename[attarget_host]
如果相同的对象复制到不同的主机,需加attarget_host选项,源端和目标端的用户名或者表名不一致的话还需加入目标端的owner.tablename。
检查源端的copy状态:
copystatusall
copystatus<
jobid>
查看job细节
cancel<
可以取消job,一般针对长时间waitfor的job
当日志积累多了不方便查看时,可清除日志:
源端清除日志:
clearhistoryall
目标端清除:
cdvardir/log;
rmsync_clt*log
2.2compare与repair
如果发现或怀疑源端和目标端的表数据不一致,可以通过compare命令查看和修复。
但由于compare需要把比较的数据排序,然后逐条比较,大量数据的比较可能会导致资源的过量使用,所以不建议对大量数据的比较。
comparetableowner.tabletoowner.tabletargettarget_hosto.targetsid[repair]
比较表分区:
comparetableowner.tablep1toowner.tablep1targettarget_hosto.targetsid[repair]
直接修复在后面加上repair,不加repair参数则将可用于修复的SQL语句生成在日志文件中。
查看比较进度:
showcompare[detail]
取消比较:
comparecancelid<
id>
清除比较日志:
removelogcompareid<
或者removelogcompareall
可以指定compare使用其他端口,不指定则随机选端口:
comparetableowner.tablep1toowner.tablep1targettarget_hosto.targetsid[repair]port2500
2.3param设置参数
listparamall--列出所有参数。
setparam--设置参数
listparammodified--查看被修改的参数
shareplex安装目录说明:
/bin包含可执行程序的符号连接
/.app_modules包含可执行程序
/data默认参数文件,包含默认的参数设置
/doc空目录
/installSharePlex安装、license管理等相关的脚本
/libSharePlex应用到的库文件
/utilSharePlex工具,SQL脚本,监控脚本等
2.4清除当前复制
shutdown
$env|grepSP_SYS_VARDIR--一定要在清除之前确认清理的实例正确。
执行下条语句之前一定确认上述参数正确,防止清理掉正在使用的实例。
$ora_cleanupsplex/splex
2.5SharePlex实用参数命令
exportSP_SYS_VARDIR=/splex/vardir--类似ORACLE_SID,指定splex使用指定的队列配置文件等等。
exportSP_SYS_HOST_NAME–在启动sp_cop之前设置,指定SharePlex启动在指定的IP上,在RAC安装时需要注意此选项。
setparamSP_OPO_DISABLE_OBJECT_NUM<
源端object_ID>
--在目标端设置。
抛弃指定表。
r202--执行上条命令20次,两秒一次。
helptarget
targeto.orclsetmetadatatime:
sp_time.op:
sp_op--可以在目标端增加列,写入时间戳与DML语句行为。
helptargetsetmetadatatime
2.6忽略大事务的操作
过大的事务复制可能会遇到问题,所以建议所有大于1000万数据DML操作事务,分成多批次commit,并建议不要对相同表做并行的大事物操作。
在有的场景下可能不希望源端的某些修改复制到目标端,比如源端清除历史数据而目标端需要保留等。
具体步骤如下:
源端,在数据库中以shareplex用户执行util目录下的create_ignore.sql,该脚本创建了SHAREPLEX_IGNORE_TRANSprocedure;
只需执行一次。
在执行大的事务前先执行这个procedure,即可忽略对该事务(从这个存储过程至下一个commit之间的所有DML操作)的复制,如:
SQL>
conntest/test
execsplex.shareplex_ignore_trans;
insertintotb1values(100,'
aaa'
);
commit;
2.7修改SharePlex的数据库用户密码
SharePlex数据库用户的密码还存在于SharePlex参数文件中,不能简单的在数据库中更改,需要执行SharePlex提供的脚本进行,具体步骤如下。
对每个环境都单独列出了详细步骤。
a.源端stopcapture进程,观察SharePlex队列中数据都已应用到目标端;
b.shutdown源端和目标端的SharePlex;
c.执行prod/bin目录下的ora_chpwd命令来自动改变存储在数据库中和paramdb文件中的密码。
●生产环境:
dcdb02:
/oracle$ora_chpwd
Thisprogramallowsyoutochangethepasswordofthe
SharePlexuseraccountneededtorunOraclereplication.
Inresponsetoprompts,acarriagereturnwillchoosethe
defaultgiveninbrackets.Ifthereisnodefault,areplymustbeentered.
PleaseentertheSIDwhereSharePlexisinstalled[dl2]:
emptyresponse--tryagain:
splex
注意:
在此处不要使用本地的实例名,要输入TNS别名,然后回车;
InordertochangethepasswordfortheSharePlexuseraccount,
wemustconnecttothedatabaseasSYSTEM.
EnterpasswordfortheSYSTEMaccount,whichwillnotecho[MANAGER]:
此处输入oracle数据库system的口令,但应当在口令的后面加上TNS_ALIAS,然后回车;
connecting--Thismaytakeafewseconds.
EnterthecurrentusernameforSharePlexuser:
EnternewpasswordforSharePlexuser:
Re-enterpasswordforSharePlexuser:
此处输入SharePlex用户的口令,但应当在口令的后面加上TNS_ALIAS,然后回车。
ChangingSharePlexparameterdatabase...
SharePlexpasswordchangecompletedsuccessfully.
●管理环境:
dcadm:
PleaseentertheSIDwhereSharePlexisinstalled[adm]:
adm
此处输入oracle数据库system的口令,不需要后面加上TNS_ALIAS,然后回车;
此处输入SharePlex用户的口令,不需要在口令的后面加上TNS_ALIAS,然后回车。
d.启动源端和目标端的SharePlex;
e.源端startcapture进程,观察SharePlex是否复制正常。
2.8新增复制表
◆如果需要对新建的表进行复制,则需要遵循以下步骤:
(尽量在业务少的时候进行)
(1)在目标系统数据库建立相同的表,然后在源系统的SharePlex控制台sp_ctrl下运行copyconfig命令将当前配置文件复制并生成一个新的配置文件。
例如,当前处在激活状态的配置文件名为filename,则建立一个文件名为newname的配置文件;
sp_ctrl(sysA)>
copyconfigfilenametonewname
(2)通过源系统的SharePlex控制台sp_ctrl运行editconfig命令编辑新建的配置文件newname
editconfignewname
(3)在文件里为新建的表增加一行信息,这行信息包括该表在源系统中的表名、该表在目标服务其中的表名和路由信息。
例如,在源和目标服务器的APP模式下新建了名为a的表,则应该在文件里增加如下的信息:
APP.aAPP.asysBo.TargetSID
(4)保存并退出配置文件;
(5)停止用户对新建表的任何操作,包括select,update,insert和delete等操作;
(6)在源系统的SharePlex控制台sp_ctrl下运行activateconfig命令激活修改后的新的配置文件,在激活的过程中原先处于激活状态的旧的配置文件会自动解除激活状态;
activateconfignewnamelive
(7)此时,维护工作完成,用户可以对新建的表进行访问和操作。
◆如果需要对已有数据的表新增到链路中,则需要遵循如下步骤:
(1)首先在目标端停止post
sp_ctrl(192.168.204.110:
2400)>
stoppost
show>
>
确认post已经停止
(2)在源端修改config,新增复制表
sp_ctrl(11rac1:
copyconfighr_scotttohr_scott_01>
复制一份正在使用的config
editconfighr_scott_01>
编辑复制的config,新增复制表
o.source
#sourcetablestargettablesroutingmap
hr.jobsscott.jobs192.168.204.110:
jobs01o.tarsp
hr.regionsscott.regions192.168.204.110:
regions01o.tarsp>
需要在host之后自定义队列名称
verifyconfighr_scott_01>
验证config
activateconfighr_scott_01>
激活config
注:
在激活配置文件之后,目标端除新增表之外的其他复制队列已经可以激活。
(3)查看v$transaction中start_time
SQL>
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队列数据到之前选取的scn
qstatus
QueuesStatisticsfor192.168.204.110
Name:
regions01(o.source-o.tarsp)(Postqueue)
Numberofmessages:
9(Age7404min;
Size1mb)
Backlog(messages):
9(Age7404min)
jobs01(o.source-o.tarsp)(Postqueue)
0(Age0min;
0(Age0min)
reconcilequeueregions01foro.source-o.tarspscn5597452>
一般expdp导出的需要在reconcile时加1,使用RMAN基于scn恢复的则不需要加1
(7)启动新增加的表对应的post队列
startpostqueueregions01
(8)查看数据同步情况以及链路情况。
2.9删除复制表
如果将要被删除的表在当前处在激活状态的SharePlex配置文件中,则需要遵循以下步骤:
(1)通过源系统的SharePlex控制台sp_ctrl运行copyconfig命令将当前配置文件复制并生成一个新的配置文件。
(2)通过源系统的SharePlex控制台sp_ctrl下运行editconfig命令编辑配置新建的配置文件
(3)在文件中将该含有该表的信息行删除。
(5)通过源系统的SharePlex控制台sp_ctrl运行activateconfig命令激活修改后的新的配置文件,在激活的过程中原先处于激活状态的旧的配置文件会自动解除激活状态;
(6)维护工作完成。
2.10重命名表
如果被重命名的表在当前处在激活状态的SharePlex配置文件中,则需要遵循以下步骤:
(1)停止用户对该表的任何操作,包括select,update,insert和delete等操作;
(2)在源系统和目标系统数据库中上重命名该表;
(3)通过源系统的SharePlex控制台sp_ctrl运行copyconfig命令将当前配置文件复制并生成一个新的配置文件。
例如,当前处