ODI11g调用DBLink时报ORA-28267: Invalid NameSpace Value错误

来源:互联网 发布:ios10.2.1网络验证失败 编辑:程序博客网 时间:2024/05/29 02:38

 环境:ODI 11.1.1.5.0

在用odi111150调用Oracle 11g数据库中的DBlink时,报如下错误:

ODI-1228: 目标ORACLE连接ETL_UAT上的任务SJQY_PRODUCT_IMPORT_PKG.REFRESH_MV (Procedure) 失败。
Caused By: java.sql.SQLSyntaxErrorException: ORA-04052: 在查找远程对象 SOAU.SYS@EC_UAT 时出错
ORA-00604: 递归 SQL 级别 2 出现错误
ORA-28267: Invalid NameSpace Value
ORA-02063: 紧接着 line (起自 EC_UAT)
ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2558
ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2771
ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2740
ORA-06512: 在 line 3

 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:457)
 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:405)
 at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:889)
 at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:476)
 at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:204)
 at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:540)
 at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:217)
 at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1079)
 at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1466)
 at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3752)
 at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3937)
 at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1535)
 at oracle.odi.runtime.agent.execution.sql.SQLCommand.execute(SQLCommand.java:163)
 at oracle.odi.runtime.agent.execution.sql.SQLExecutor.execute(SQLExecutor.java:102)
 at oracle.odi.runtime.agent.execution.sql.SQLExecutor.execute(SQLExecutor.java:1)
 at oracle.odi.runtime.agent.execution.TaskExecutionHandler.handleTask(TaskExecutionHandler.java:50)
 at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2906)
 at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2609)
 at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:537)
 at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:453)
 at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1740)
 at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:338)
 at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:214)
 at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:272)
 at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:263)
 at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:822)
 at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:123)
 at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
 at java.lang.Thread.run(Thread.java:662)

×××××××××××××××××××××××××××××××××

执行代码:

BEGIN
--  SJQY_PRODUCT_IMPORT_PKG.REFRESH_MV;
DBMS_MVIEW.refresh('TEMP_CTGY_ITEM_MV', atomic_refresh => false);
  END;

经过测试在ODI11.1.1.6.0上面也报这个错误。

 

经过最终用确认,造成该错误的原因是Oracle 11g DB的bug,如果该procedure建在Oracle10g DB上则不会出现问题。

oracle给出的解释是:JDBC在调用Oracle 11g中的DBLink时有bug,解决方式就是给Database 打Patch

 

注意:导致该问题不是DBlink的问题,是通过JDBC调用DBlink有问题。

原创粉丝点击