我在 Oracle 中不断收到 PL/SQL 的致命 Error/Reset 连接
I keep receiving Fatal Error/Reset Connection for PL/SQL in Oracle
我正在为学校项目编写脚本,它需要使用触发器来维护历史记录 table。我之前成功创建了这个触发器,但是我不得不删除 tables 并稍微修改一下。现在我已经完成了数据库的修改,当我再次尝试创建触发器时,我不断收到以下消息。
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 命令开始,这样我就可以更改和重新 运行 脚本。该脚本在所有 table 和索引创建过程中完美运行,然后在遇到触发器创建时崩溃。正如我提到的,它之前没有这样做(触发器成功编译 w/o 错误),所以也许我只需要给它一些时间,因为它可能是 Oracle 的服务器问题?
此外,我还收到一个弹出窗口 window,其中包含以下消息:
您的数据库连接已重置。任何挂起的事务或会话状态都已丢失。
我关闭了开发人员只是为了像它建议的那样重新连接,并且不断发生同样的事情。对于为什么会发生这种情况的任何建议或解释,我们将不胜感激。我的项目在星期四早上到期,所以这给了我很多不必要的焦虑。
ORA-00600
从来都不是好消息;这意味着 Oracle 错误,除了搜索 My Oracle Support 或提出服务请求之外,您无能为力。
显然,如果你运行下面的语句,你可能会解决问题:
ALTER SESSION SET PLSCOPE_SETTINGS = 'IDENTIFIERS:NONE';
此外,这可能会有所帮助:
ORA-00001: unique constraint (SYS.I_PLSCOPE_SIG_IDENTIFIER$) violated
尝试简单地重命名触发器并再次 运行 脚本。
我正在为学校项目编写脚本,它需要使用触发器来维护历史记录 table。我之前成功创建了这个触发器,但是我不得不删除 tables 并稍微修改一下。现在我已经完成了数据库的修改,当我再次尝试创建触发器时,我不断收到以下消息。
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 命令开始,这样我就可以更改和重新 运行 脚本。该脚本在所有 table 和索引创建过程中完美运行,然后在遇到触发器创建时崩溃。正如我提到的,它之前没有这样做(触发器成功编译 w/o 错误),所以也许我只需要给它一些时间,因为它可能是 Oracle 的服务器问题?
此外,我还收到一个弹出窗口 window,其中包含以下消息:
您的数据库连接已重置。任何挂起的事务或会话状态都已丢失。
我关闭了开发人员只是为了像它建议的那样重新连接,并且不断发生同样的事情。对于为什么会发生这种情况的任何建议或解释,我们将不胜感激。我的项目在星期四早上到期,所以这给了我很多不必要的焦虑。
ORA-00600
从来都不是好消息;这意味着 Oracle 错误,除了搜索 My Oracle Support 或提出服务请求之外,您无能为力。
显然,如果你运行下面的语句,你可能会解决问题:
ALTER SESSION SET PLSCOPE_SETTINGS = 'IDENTIFIERS:NONE';
此外,这可能会有所帮助:
ORA-00001: unique constraint (SYS.I_PLSCOPE_SIG_IDENTIFIER$) violated
尝试简单地重命名触发器并再次 运行 脚本。