Sql dbms_hs_并行失败并出现错误

Sql dbms_hs_并行失败并出现错误,sql,oracle,plsql,heterogeneous-services,Sql,Oracle,Plsql,Heterogeneous Services,我想使用dblink和dbms_hs_并行包将并行数据从oracle加载到oracle。为了做到这一点,我在下面列出了plsql: declare lInserted number; begin dbms_hs_parallel.LOAD_TABLE('SIEBEL.S_LOY_CARD','SIEBEL', 'BRED_SIEBEL_CARDS', true, 16, lInserted); dbms_output.put_line(lInserted); end; 所有DB对象

我想使用dblink和dbms_hs_并行包将并行数据从oracle加载到oracle。为了做到这一点,我在下面列出了plsql:

declare
  lInserted number;
begin
  dbms_hs_parallel.LOAD_TABLE('SIEBEL.S_LOY_CARD','SIEBEL', 'BRED_SIEBEL_CARDS', true, 16, lInserted);
  dbms_output.put_line(lInserted);
end;
所有DB对象都有效,但我得到一个错误

“ORA-00904:“DBMS\u HS\u直通”。“代理\u类\u名称”:无效标识符

ORA-06512:第1097行“SYS.DBMS_HS_PARALLEL”

ORA-06512:在第4行”


我敢肯定它在尝试插入时失败了。因为如果我的DB中没有繁殖的SIEBEL卡,包就会创建它。这意味着该软件包会执行预期的操作,但不幸的是不会插入数据。

我相信Oracle数据库文档会解释您出现错误的原因:

远程数据库链接名称。该调用只能应用于异构服务数据库链接

资料来源:

Oracle DB-Oracle DB是一个同构连接,它不使用异构服务代理,因为不需要任何代理


如果您不想使用常规的CTAS/INSERT/MERGE语句,请查看。

从哪个DBMS加载数据?是内特扎吗?错误的一个可能来源是ODBC驱动程序实现中的不一致性…正如我在第一句中提到的,我将数据从一台Oracle服务器加载到另一台。dblink速度不够,因为它是单线程的。Ok。抱歉,我错过了这个介绍短语。最糟糕的是Tom Kyte有一个待办事项,所以我不能使用AskTom:(我认为这行不通。根据“DBMS_HS_PASSTHROUGH包是一个虚拟包。从概念上讲,它驻留在非Oracle系统中。但实际上,对该包的调用被异构服务拦截…”您需要创建一个异构服务代理(?)对于这个连接。但是我认为你不能对Oracle到Oracle的连接这样做。也许这个问题应该改为“我如何在数据库链接上执行并行DML”?我明白你的观点,但为什么它会创建数据表?我尝试用MsSQL检查它,但它也不起作用(原因不同,但没关系,因此我认为该软件包根本不起作用)。您在不正确的上下文中使用了此过程,因此其行为是未定义的-在随机位置中断。Oracle可能使用了数据库链接上的普通选择来获取字典数据,在一个位置识别它从另一个Oracle数据库读取数据,然后在尝试显式使用HS代理读取数据时失败(但这只是我的猜测)。