Home > database >  The trigger can't delete
The trigger can't delete

Time:03-27

The trigger

The create or replace the TRIGGER RS. T_RS_WORD BEFORE INSERT ON RS. RS_WORD1
For each row
The begin
The SELECT S_RS_WORD1 INTO: NEW id from dual;
end;

Prompt S_RS_WORD1 identifier is invalid, modified into S_RS_WORD1. Nextval it directly to the following ora - 00600 error,



Sequence

The CREATE SEQUENCE "RS". "S_RS_WORD1 MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE;

There are several T_RS_WORD files in the recycle bin, the file OBJECT_NAME and original_name T_RS_WORD, delete the error ORA - 38302: invalid PURGE options



If delete table, the trigger, the correct sequence is

ORA - 00603: ORACLE server session terminated by fatal error
ORA - 00600: internal error code, the arguments: [KQD - objerror $], [U], [0], [94], [T_RS_WORD], [], [], [], [], [], [], []
00603. In 00000 - "ORACLE server session terminated by fatal error"
* Cause: An Oracle server session was in An unrecoverable state.
* Action: Log in to the Oracle again so a new server session will be created
Automatically. Examine the session trace file for more
Information.
Supplier code: 603


Thanks for your bosses!

CodePudding user response:

"Cause: The problem is under caused by a dictionary inconsistency.
The When compiling invalid PL/SQL objects a corresponding row for invalid object must exist in OBJERROR $. The ORA - 600 error are that this row could not be updated (the "U" parameter) because the row didn 't exist.

Solution: the 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 value into OBJERROR OBJECT_ID $.
Next is to perform a 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
  • Related