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


    假设有这么一个场景:
     
        表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的时候,就可以避免这个问题了。

  • 相关阅读:
    手工测试
    测试理论
    MySQL常用语法
    Linux设置静态ip
    设计模式
    Shiro
    TreeSet和TreeMap
    UDP和反射
    Linux归纳
    Spring+SpringMVC+Mybatis整合
  • 原文地址:https://www.cnblogs.com/volnet/p/2310787.html
Copyright © 2020-2023  润新知