ORA-04098
Error solution
Database version:
8.1.5
Platform: Solaris 5.7
background:
Users set up a TRIGGER: create or replace trigger ddl_denybefore create or alter or drop on databasedeclarebegininsert into ddl_logs values (ora_dict_obj_owner, ora_dict_obj_name, sysdate); exceptionwhen no_data_found thennull; end; the purpose is probably to record all DDL operations, but TRIGGER establish an error ,Find:
11:30:08 SYSTEM @ ora250> ALTER TRIGGER DDL_DENY DISABLE; ALTER TRIGGER DDL_DENY DISABLE * Error is located in Chapter 1: ORA-04098: Trigger 'DDL_DENY' Invalid and Did not pass re-verification 11:31:45 System @ ORA250> DROP Trigger DDL_DENY; Drop Trigger DDL_DENY * Error is located in Chapter 1: ORA-04098: Trigger 'DDL_DENY' is invalid and does not pass re-authentication
At this time, the flip-flop cannot be compiled, and it cannot be deleted because the trigger defines the trigger of the DDL operation, generates ORA-04098: The trigger 'DDL_Deny' is invalid and does not reauthentic it.
Solution:
1. First look at whether the user's permissions are correct:
Select Owner, Object_name, Object_Type, Status from DBA_Objects Where Object_name = '
12:42:38 system @ ORA250> select owner, object_name, object_type, status from dba_objects where object_name = 'DDL_DENY'; OWNER OBJECT_NAME OBJECT_TYPE STATUS -------------------- ---------------- -------------- SYSTEM DDL_DENY TRIGGER INVALID
It is found that the user privilege is no problem.
2, then set the diagnostic event alter session set events = '4098 Trace Name Errorstack Level 3'; the content of the TRACE file is as follows:
Dump file /db1/app/oracle/admin/ora250/udump/ora250_ora_6834.trcoracle8i Enterprise Edition Release
8.1.5
.0.0 - ProductionWith the Partitioning and Java optionsPL / SQL Release 8.1.5.0.0 - ProductionORACLE_HOME = /db1/app/oracle/product/8.1.5System name: SunOSNode name: db250Release: 5.7Version: Generic_106541-08Machine: sun4uInstance name: ora250Redo Thread Mounted by this Instance: 1Oracle Process Number: 17Unix Process Pid: 6834, Image: Oracle @ DB250 (TNS V1-V3) *** Session ID 30.829) 2004.11.17.20.53.38.000 *** 2004.11.17.20.53.38 .000ksedmp: internal or fatal errorORA-04098: trigger 'dDL_DENY' invalid and was not verified by re Current SQL statement for this session: alter trigger ddl_deny disable ----- Call Stack Trace ----- calling call entry argument values In HEXLOCATION TYPE POINT (? Means Dubious Value) -------------------------------------------------------------------------------------- ---------------------------------- Ksedmp () 160 Call Ksedst () 0 508? 1 ? Ffbeb31c
? Ffbeadc0? Ffbeada4? 0? Ksddoa () 248 ptr_call 00000000 3? 0? 0? 16594fc? C0000025? 0? KSDPCG () 212 Call Ksddoa () 0 16eb
0ac
? 16e
4C
24? 3?
24939C
? 16eb
0ac
16eb090? Ksdpec () 236 Call KSDPCG () 0 1002? FFBEB8E4? 16E
4C
24? 0? 0? 0? KSFPEC () 136 Call Ksdpec () 0 1002?
165A
800?
165A
800?
7f
3? 1659995? 16594FC? Kgesev () 100 ptr_call 00000000 1659494? 1002?
262F
80? 1002? 1? 0? Ksesec1 () 48 Call Kgesev () 0 1659494? 16e8ca4? 1002? 1? Ffbeba60? 1? Kkttrex () 2112 Call KSESEC1 () 0 1002? 1? 8? 8E859D26? 2? 2? Kktexeevt () 616 Call Kkttrex () 0 8E
996A
20? 8e973b48? Ffbebae4? 1659000? 8e859d
6C
? 165E800? .....
Found is a serious incorrect error, others can't see too much error message, so I think that I use implied parameters _system_trigger_enabled = false, let all triggers do not work when the database starts, and then deletes. database
8.1.5
The prompt didn't have this parameter, so I queried:
14:28:32 System @ ORA815> SELECT KSPPINM From x $ ksppi where substr (ksppinm, 1, 1) = '_' and ksppinm like '% TRI%' Order by ksppinm; ksppinm --------- -------------------------------------------------- ---------------------_ cleanup_rollback_entries_distribute_lock_timeout_distribute_recovery_connection_hold_time_number_cached_attributes_system_trig_enabled discovery
8.1.5
The version of the parameter is _system_trig_enabled, so let the user set this parameter in the initialization parameter file to be false, then restart the database, delete TRIGGER, delete success.
To this problem is solved.