[FIM]两张表结构相同完美同步,如何做?ObjectAlreadyExistsException

阐述了在数据同步场景中,如何通过MA、MV、Provisioning代码等技术手段,实现表1数据到表2的高效同步,并详细介绍了面对ObjectAlreadyExistsException异常时的解决策略,确保同步过程的平稳进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设有这么一个场景:
 
    表1和表2,假设结构相同(这不是重点),两张表都以userId作为Key。目标是从表1的数据同步到表2。
 
    实现:1、表1中有,表2中没有的数据,从表1同步到表2。
 
              2、表1中有,表2中也有的数据,以表1的各个字段为准。
 
              3、表1中没有,表2中有的数据,在表2中继续保留。
 
做法1:
 
    两个MA,分别以userId作为Anchor,DistinguishedName,并且字段分别映射。
 
    为MV编写Provisioning代码,并设置选项为启用MVExtension。
 
    同步顺序:表1 FullImport -> 表2 FullImport -> 表2 FullSync -> 表1 FullSync -> 表2 Export
 
    存在问题:
 
           当表2中原本存在数据,且该数据已经在表1中存在的时候,该条记录将引发ObjectAlreadyExistsException异常,该条记录没有处理,但正确的行为是不是应该是Join?遇到这个情况(异常)正确的解法是什么?
 
做法2:(改进做法1)
 
    考虑到有ObjectAlreadyExistsException异常,因此打算在Provisioning代码中将此异常抛弃,算作正常行为(因为此时对象确实存在),这样FIM应该按照自行逻辑进行Join操作?但是事实上,并非我所想(应该是理解有误),MV数据里面既有表1的数据,也有表2的数据,互不相干。

解决方案:

    当表1中的数据在表2种已经存在的时候(第一次同步)会抛出ObjectAlreadyExistException,应先关闭MV扩展(Tools->Options->清空第一个复选框),执行表2的FullImport->FullSync,然后再打开MV扩展,执行正常同步(表1的FullSync)。

    在实际操作过程中,其实通常并不需要先关闭MV扩展,只需要将表2先做一次FullSync,这样表1再做FullSync的时候,就可以避免这个问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值