Sql &引用;并行发出错误信号;函数索引
我在oracle表中使用函数索引,同时运行合并查询-记录更新正常,但插入记录时显示以下错误:Sql &引用;并行发出错误信号;函数索引,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我在oracle表中使用函数索引,同时运行合并查询-记录更新正常,但插入记录时显示以下错误: ORA-00600: internal error code, arguments: [rwoirw: check ret val], [], [], [], [], [], [], [], [], [], [], [] 12801. 00000 - "error signaled in parallel query server %s" *Cause: A parall
ORA-00600: internal error code, arguments: [rwoirw: check ret val],
[], [], [], [], [], [], [], [], [], [], []
12801. 00000 - "error signaled in parallel query server %s"
*Cause: A parallel query server reached an exception condition.
*Action: Check the following error message for the cause, and consult your error manual
for the appropriate action.
*Comment: This error can be turned off with event 10397, in which case the server's
actual error is signaled instead.
使用的功能索引:(SUBSTR(“票据生产凭证号”),0,INSTR(“票据生产凭证号”),1)-1) )
经过分析,我发现这是由于我的查询中的/*+并行(APP\u PRODUCT\u SERVICE,4)*/
散列标记造成的,因为我是通过四节点配置插入的
记录计数太高,因此我无法避免/*+并行(应用程序产品服务,4)*/
选择我正在使用的查询太长。所以我刚才提到了简短的:
MERGE /*+ APPEND */ INTO PRODUCT_SERVICE PS
USING (
SELECT /*+ PARALLEL (APP_PRODUCT_SERVICE,4) */ BILL_PROD_SOT_ID,
INSTANCE_ID, ...
) ...
WHEN MATCHED THEN UPDATE
SET PS.BILL_SERV_SOT_ID = UPD.BILL_SERV_SOT_ID,
PS.INSTANCE_TYPE = UPD.INSTANCE_TYPE,
PS.CATALOG_PROD_ID = UPD.CATALOG_PROD_ID
WHEN NOT MATCHED THEN INSERT (INSTANCE_ID ,BILL_SERV_SOT_ID);
如果我删除函数索引,它可以正常工作
有人能建议如何解决这个问题吗?给我们看一下索引定义和select语句。@WernfriedDomscheit这个子字符串的索引
(SUBSTR(“BILL\u PROD\u SOT\u ID”,0,INSTR(“BILL\u PROD\u SOT\u ID”,“',-1)-1))
选择查询太长了,刚才我提到的简短:MERGE/*+APPEND*/到产品服务中使用PS(匹配时选择/*+并行(应用程序产品服务,4)*/BILL\u PROD\u SOT\u ID,实例ID,然后更新集PS.BILL\u SERV\u SOT\u ID=UPD.BILL\u SERV\u SOT\u ID,PS.INSTANCE\u TYPE=UPD.INSTANCE\u TYPE,PS.CATALOG\u PROD\u ID=UPD.CATALOG\u PROD\u ID,如果不匹配,则插入(实例ID,BILL\u SERV\u SOT\u ID);
编辑您的问题,而不是将其作为注释。@WernfriedDomscheit editedora-0600是一个内部错误,可能表示存在错误。您需要向Oracle支持部门提出一个问题。