ODI 12c 智能导入到 SDK 的执行存储库的行为类似于导入到开发人员存储库



我尝试通过ODI客户端将执行存储库生成的XML文件智能导入到具有SDK的另一个执行存储库。我正在使用 ODI 12.2.1.4。 我已经有一个在 11g (11.1.1.9( 中运行良好的 java 程序,但是自从我升级到 12 以来,我遇到了错误(由于新版本,我对代码进行了一些更改(。 使用 ODI 工作室将 xml 文件智能导入执行存储库工作正常,因此文件看起来没问题。

程序给出的错误是:oracle.odi.impexp.smartie.OdiSmartImportException: com.sunopsis.dwg.SQLWorkReposException: ORA-00942: Table ou vue inexistante

由以下原因引起:错误:942,位置:14,SQL = 从I_PROJECT为空且VAR_NAME = 'CONN_DEC_USER'的SNP_VAR中选择 1,OriginalSql = 从SNP_VAR中选择 1,其中I_PROJECT为 NULL,VAR_NAME = 'CONN_DEC_USER',错误消息 = ORA-00942:表 ou vue inexistante

根据 Oracle 的支持,我的 Exec 存储库没有表SNP_VAR是完全正常的,它只在 Dev 存储库中。 奇怪的是,智能导入在其上发出此请求。在我看来,智能导入就像使用开发人员存储库一样(只是猜测(

我的代码 :

private String TargetUrl = "jdbc:oracle:thin:@";
private String TargetDriver="oracle.jdbc.OracleDriver";
private String TargetMaster_User;
private String TargetMaster_Pass;
private String WorkRep_Execution="WORK1";
private String TargetOdi_User="USER";
private String TargetOdi_Pass="PASS";
private String ExportFile;
private MasterRepositoryDbInfo targetmasterInfo;
private WorkRepositoryDbInfo workInfo_exec;
private OdiInstance odiInstance_exec;
private Authentication auth_exec;
private SmartImportServiceImpl smartImport;
private ITransactionManager Tm;
ITransactionStatus TStatus;
SmartImport(String Url, String File, String targetMasterUser, String targetMasterPwd) throws IOException{
TargetUrl = TargetUrl+Url;
ExportFile = File;
TargetMaster_User = targetMasterUser;
TargetMaster_Pass = targetMasterPwd;
targetmasterInfo = new MasterRepositoryDbInfo(TargetUrl, TargetDriver, TargetMaster_User,TargetMaster_Pass.toCharArray(), new PoolingAttributes());
workInfo_exec = new WorkRepositoryDbInfo(WorkRep_Execution, new PoolingAttributes());
odiInstance_exec=OdiInstance.createInstance(new OdiInstanceConfig(targetmasterInfo,workInfo_exec));
auth_exec = odiInstance_exec.getSecurityManager().createAuthentication(TargetOdi_User,TargetOdi_Pass.toCharArray());
odiInstance_exec.getSecurityManager().setCurrentThreadAuthentication(auth_exec);
smartImport = new SmartImportServiceImpl(odiInstance_exec);
Tm = odiInstance_exec.getTransactionManager();
TStatus = odiInstance_exec.getTransactionManager().getTransaction( new DefaultTransactionDefinition());
}
smartImport.importObjectsFromXml(ExportFile, "MyPassword".toCharArray(), false);

我正在处理的主资料库只有一个工作资料库(称为"WORK1"(,它是一个执行资料库。 有什么问题的任何线索吗?

谢谢 PEB

感谢 JeromeFR 的建议,我找到了使用部署存档而不是智能导出/导入来解决我的问题的解决方法。 从我的开发存储库(通过 ODI 客户端(导出我的存档并通过 java skd 导入到我的 Exec 存储库(我有几个执行环境(工作正常 导入存档以替换智能导入的代码:

DeploymentService.applyFullDeploymentArchive(odiInstance_exec, "EXEC_Init.zip", true, "Password".toCharArray(), true);

感谢 PEB

最新更新