gpt4 book ai didi

oracle - 在 Oracle 11g2 XE 中编译 PL/SQL 函数有时会导致 ORA-00600 : internal error

转载 作者:行者123 更新时间:2023-12-02 07:06:12 25 4
gpt4 key购买 nike

我正在使用一个 PL/SQL 函数,有时可以正常编译,但有时会出现此错误。

ORA-00600: internal error code, arguments: [17285], [0x318FDE2C], [1], [0x273F1C60], [], [], [], [], [], [], [], []
00600. 00000 - "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
*Cause: This is the generic internal error number for Oracle program
exceptions. This indicates that a process has encountered an
exceptional condition.
*Action: Report as a bug - the first argument is the internal error number

断开并重新连接到 Oracle,函数编译正常,这感觉很疯狂......

谷歌搜索错误代码和参数给了我这个

ERROR:
ORA-600 [17285] [a] [b] [c]

VERSIONS:
versions 7.0 to 10.1
DESCRIPTION:
Oracle is in the process of deleting an instantiation object when it
discovers that the object is currently on the call stack.
This should not occur and so ORA-600 [17285] is reported.
ARGUMENTS:
Arg [a] Instantiation object
Arg [b] Call stack nesting level
Arg [c] Library Cache Object Handle
FUNCTIONALITY:
Kernel Generic Instantiation manager

IMPACT:
PROCESS FAILURE
NON CORRUPTIVE - no corruption to underlying data.
SUGGESTIONS:
This error is usually accompanied by another error. Please check for this.

我的函数返回一个自定义表类型管道。大多数功能代码都被遗漏了......

CREATE TYPE t_solexp_row AS OBJECT (
obj VARCHAR(30),
dt DATE,
param VARCHAR(30),
param_id NUMBER,
val NUMBER,
change_time TIMESTAMP
);
/

CREATE TYPE t_solexp_tab IS TABLE OF t_solexp_row;
/

CREATE OR REPLACE FUNCTION get_solexp_tab(p_start_date IN DATE, p_end_date IN DATE) RETURN t_solexp_tab PIPELINED AS
BEGIN
...
LOOP
PIPE ROW(t_solexp_row(...,...,...,...,...,...);
END LOOP;
...
RETURN;
END;
/

知道什么可能会导致这种行为吗?

最佳答案

这并不是一个 self 回答的问题,但我在写它时有了一个想法,谢谢 Stackoverflow! :)

我正在 SQL Developer 中开发和测试该函数。结果集中的行数从几行到几千行不等,具体取决于参数。

我注意到只有当最后一个结果集包含超过 50 条记录时才会出现该问题。

问题似乎是 SQL Developer 最初仅从 Oracle 获取前 50 行,使用仍在管道中的数据重新编译函数会导致 ORA-00600。看起来合理并且符合错误描述

Oracle is in the process of deleting an instantiation object when it
discovers that the object is currently on the call stack.
This should not occur and so ORA-600 [17285] is reported.

唷,很高兴它现在可以工作了!来自数据库引擎的内部错误足以让我不寒而栗。

关于oracle - 在 Oracle 11g2 XE 中编译 PL/SQL 函数有时会导致 ORA-00600 : internal error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28236460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com