- 在infa元数据库中创建新用户infa_repo1,作为新存储库的容器
create user repo1 identified by repo1; grant connect, resource,create session,dba to repo1;
- 创建存储库服务repo1,connection string填写ip:port/service name,code page为utf-8,单选项处选择创建新内容(No content exists under specified connection string. Create new content),不要选下面的两项复选。创建完成后将服务修改为normal模式
- 创建集成服务ins1,用户名密码填写web console的密码,data movement mode选unicode,在下一个弹出的对话框中设置code page,注意要与系统的字符集相同(如果在windows中就选ms gb2312),创建完成后启动服务
- 导出文件夹为xml(在infa服务器上执行)
cd $INFA_HOME/server/bin 使用pmrep进入命令行,使用web console用户名密码连接到存储库 connect -r etl_win -d Domain_etl -n Administrator -x etl23 导出文件夹 objectexport -f From_TA -u /from_ta.xml
- 打开Power Center Workflow Manager,连接到域,创建原文件夹中用到的数据库连接!
- 处理xml
1、在xml中搜索 Partition #1 ,将"Partition #1"替换为"分区编号1" (有时可能要反向操作) 2、在xml中搜索 PRECISION ="0" ,将类型为字符串或long的地方替换为 PRECISION ="4000" ,类型为clob、text、blob的替换为 PRECISION ="8000" 3、数据源名称包含"."时导入也会报错:"正在验证 Source Definition zhym.dlzt... <错误>:名称中不允许有字符 '.'。** 无法导入 zhym.dlzt",需在xml中将类似"zhym.dlzt"的内容替换为"zhym_dlzt",注意替换前先查看内容位置,替换时带上双引号
- 打开Power Center Repository Manager,连接到域,repository-import object,在导入向导中新建文件夹,冲突的default_session_config选replace,导入
- 检查导入xml的日志,搜索<警告>、<错误>、无效、失败、缺少的字样,确定问题并解决。
- 在workflow manager中分配集成服务给任务流即可
问题整理
1、迁移后部分任务insert时报unique constraint 错误,可能是原任务使用了mapping variable来标记增量抽取,通常查看任务source的select语句可以看到使用了变量做筛选,在Designer中可以看到映射变量的定义,映射中可以看到类似SETMAXVARIABLE($$expo_obj,Objid)这样的语句,这是设置变量的语句,查看运行日志的第二行可以看到变量实际运行时使用了什么值,比对迁移前的运行日志,如果不一样则就是这个问题导致的。解决方法:在老ETL上运行一次,确定最新的变量值是多少,在新ETL中修改Designer的映射,设置变量默认值为上述最新的变量值,保存后重新执行一遍即可刷新存储库中保存的映射变量(有可能还需要在workflow manager中的任务上右键-查看永久值-重置值),后续还需要对该表做全同步,防止数据断档。