觸發器
create or replace TRIGGER RS.T_RS_WORD BEFORE INSERT ON RS.RS_WORD1
for each row
begin
SELECT S_RS_WORD1 INTO :NEW.id from dual;
end;
提示S_RS_WORD1識別符號無效,修改成S_RS_WORD1.nextval就直接報下面ora-00600的錯誤。
序列
CREATE SEQUENCE "RS"."S_RS_WORD1" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
回收站中有好幾個T_RS_WORD的檔案,檔案的OBJECT_NAME和original_name都是T_RS_WORD,洗掉報錯ORA-38302:PURGE 選項無效
如果洗掉表、觸發器、序列就報錯
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [kqd-objerror$], [U], [0], [94], [T_RS_WORD], [], [], [], [], [], [], []
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.
供應商代碼 603
謝謝各位大佬了!
uj5u.com熱心網友回復:
"Cause: The problem is caused by a dictionary inconsistency.When compiling invalid PL/SQL objects a corresponding row for the invalid object must exist in OBJERROR$. The ORA-600 error indicates that this row could not be updated (the "U" parameter) because the row didn't exist.
Solution: Solution is to add the missing row by querying the OBJECT_ID from DBA_OBJECTS for the object to be compiled.
Then perform an INSERT of this OBJECT_ID value into OBJERROR$.
Next is to perform COMMIT followed by a SHUTDOWN ABORT. Note that this MUST be ABORT to prevent the rowcache from being flushed to the data dictionary.
After that, the database can be started using STARTUP NORMAL and the trigger can be compiled."
INSERT INTO SYS.OBJERROR$ VALUES(SELECT OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME='nombre_objeto');
COMMIT;
SHUTDOWN ABORT
STARTUP
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/269805.html
標籤:基礎和管理
上一篇:本人從事SQL Server資料庫優化多年,想收集一些比較好的問題,若有疑難問題可以一起討論
下一篇:這個SQL如何寫?