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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Oracle中,我一直收到PLSQL的Fatal ErrorReset连接。相关的知识,希望对你有一定的参考价值。

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

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的服务器问题?

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

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

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

答案

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

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

ALTER SESSION SET PLSCOPE_SETTINGS = 'IDENTIFIERS:NONE';

另外,这个可能会有帮助

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

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

以上是关于在Oracle中,我一直收到PLSQL的Fatal ErrorReset连接。的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 12c PLSQL 合并错误

plsql连接本地数据库

plsql登录界面的database中一直存在之前的实例

有一台oracle 11g的监听莫名死掉,lsnrctl stop /status 一直处于等待,客户端plsql连不上

plsql oracle检查约束错误

Oracle执行计划