在Oracle中,我一直收到PLSQL的Fatal ErrorReset连接。

问题描述 投票:0回答:1

我正在为一个学校项目编写脚本,它需要使用一个触发器来维护一个历史表。我之前成功地创建了这个触发器,但是我不得不删除表格并修改了一下。现在我已经完成了对数据库的修改,当我再次尝试创建触发器时,我一直收到以下消息。

Error starting at line : 189 in command -
CREATE OR REPLACE TRIGGER WeightChangeTrigger
BEFORE UPDATE OF Current_weight_lbs ON Account
FOR EACH ROW
BEGIN
    INSERT INTO WeightChange (WeightChange_id, Account_id, OldWeight, NewWeight, ChangeDate)
    VALUES (NVL((SELECT MAX(WeightChange_id)+1 FROM WeightChange), 1),
    :NEW.Account_id,
    :OLD.Current_weight_lbs,
    :NEW.Current_weight_lbs,
    TRUNC(SYSDATE));
END;
Error report -
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [kqlidchg0], [], [], [], [], [], [], [], [], [], [], []
ORA-00604: error occurred at recursive SQL level 1
ORA-00001: unique constraint (SYS.I_PLSCOPE_SIG_IDENTIFIER$) violated
00603. 00000 -  "ORACLE server session terminated by fatal error"
*Cause:    An Oracle server session was in an unrecoverable state.
*Action:   Log in to Oracle again so a new server session will be created
           automatically.  Examine the session trace file for more
           information.

我的脚本开始使用DROP TABLE命令,这样我就可以修改并重新运行脚本。脚本在创建表和索引的整个过程中都运行得很完美,然后在遇到创建触发器时就崩溃了。正如我所提到的,它之前没有这样做(触发器成功编译wo错误),所以也许我只是需要给它一些时间,因为这可能是Oracle的服务器问题?

此外,我收到一个弹出窗口,上面有以下信息。

你的数据库连接已被重置。 任何悬而未决的事务或会话状态已经丢失。

我已经关闭了开发人员,只是像它建议的那样重新连接,并不断发生同样的事情。如果有任何建议或解释为什么会发生这种情况,我将非常感激。我的项目周四早上就要完成了,所以这给我带来了很多不必要的焦虑。

oracle plsql triggers oracle-sqldeveloper fatal-error
1个回答
0
投票

ORA-00600 从来都不是什么好消息,这意味着 甲骨文错误 而你也无能为力,只能搜索My Oracle Support或提出服务请求。

显然,如果你运行下面的语句,你可能会摆脱这个问题。

ALTER SESSION SET PLSCOPE_SETTINGS = 'IDENTIFIERS:NONE';

另外,这个可能会有帮助

ORA-00001: 违反了唯一约束(SYS.I_PLSCOPE_SIG_IDENTIFIER$)

试着简单地重命名触发器,然后再运行脚本。

© www.soinside.com 2019 - 2024. All rights reserved.