Я пытаюсь интеллектуально импортировать XML-файл, созданный из репозитория Exec через клиент ODI, в другой репозиторий Exec с SDK. Я использую ODI 12.2.1.4. У меня уже была программа java, которая нормально работала в 11g (11.1.1.9), но, поскольку я обновился до 12, у меня есть ошибки (я внес некоторые изменения в код из-за новой версии). Умный импорт xml-файла в репозиторий Exec с помощью ODI studio работает нормально, поэтому файл выглядит нормально.
Программа выдает ошибку: oracle.odi.impexp.smartie.OdiSmartImportException: com.sunopsis.dwg.SQLWorkReposException: ORA-00942: Table ou vue excistante
Причина: ошибка: 942, позиция: 14, Sql = SELECT 1 FROM SNP_VAR, ГДЕ I_PROJECT IS NULL И VAR_NAME = 'CONN_DEC_USER', OriginalSql = SELECT 1 FROM SNP_VAR, WHERE I_PROJECT IS NULL AND VAR_NAME = 'CONN_DEC Error MUSER', = ORA-00942: Table ou vue excistante
Согласно поддержке Oracle, совершенно нормально, что в моем репозитории Exec нет таблицы SNP_VAR, она есть только в репозитории Dev. Что странно, так это то, что этот запрос делает умный импорт. Мне кажется, что smartImport действует как работа с репозиторием 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
importFromXml
вместоimportObjectsFromXml
? Для меня термин «объекты» относится к базовым объектам только как к противопоставлению сценариям / планам нагрузки. Хотя еще не пробовал. Кроме того, вы смотрели архивы развертывания. Я использую это с ODI 12.2.1 для продвижения кода из среды в другую. Если нужно, могу поделиться отличным сценарием. - person JeromeFr   schedule 29.11.2019