I got ” ORA-21780: Maximum number of object durations exceeded. ” error in Oracle database.
ORA-21780: Maximum number of object durations exceeded
Details of error are as follows.
2022-03-27 20:21:25 ERROR OGG-00664 OCI Error ORA (status = 21780-ORA-21780: Maximum number of object durations exceeded. ORA-06512: at "SYS.DBMS_APPLY_ERROR", line 168 ORA-06512: at "SYS.DBMS_APPLY_ERROR", line 237 ORA-06512: at "SYS.DBMS_APPLY_ADM", line 612 ORA-06512: at line 1 ). The following error appears repeatedly in the alert log: ORA-21780: Maximum number of object durations exceeded. Alert.log: Mon Apr 12 17:51:45 2010 Errors in file /oracle_binaries/app/diag/rdbms/prod/PROD1/trace/PROD1_smon_13729.trc: ORA-21780: Maximum number of object durations exceeded. Errors in file /oracle_binaries/app/diag/rdbms/prod/PROD1/trace/PROD1_smon_13729.trc: ORA-21780: Maximum number of object durations exceeded. Mon Apr 12 17:51:56 2010 Errors in file /oracle_binaries/app/diag/rdbms/prod/PROD1/trace/PROD1_smon_13729.trc: ORA-21780: Maximum number of object durations exceeded. Errors in file /oracle_binaries/app/diag/rdbms/prod/PROD1/trace/PROD1_smon_13729.trc: ORA-21780: Maximum number of object durations exceeded. SMON trace contains: *** 2010-04-12 17:52:36.012 Drop transient type: SYSTPg9CboAG5QgLgQKjA3AEn5Q== *** 2010-04-12 17:52:36.012 SMON: following errors trapped and ignored: ORA-21780: Maximum number of object durations exceeded. *** 2010-04-12 17:52:41.014 Drop transient type: SYSTPg9CboAG5QgLgQKjA3AEn5Q== *** 2010-04-12 17:52:41.014 SMON: following errors trapped and ignored: ORA-21780: Maximum number of object durations exceeded. *** 2010-04-12 17:52:46.010 Drop transient type: SYSTPg9CboAG5QgLgQKjA3AEn5Q==
A number of bugs have been filed against the same situation but the root cause as to why SMON has problems cleaning up these objects has not been determined. Of the bugs filed, all have been closed by development as non reproducible issues or the bug was abandoned.
The solution provided is from Bug 7485772, closed as “Could Not Reproduce”.
This issue only seems to occur in RAC environments.
There are two possible solutions.
Solution #1
————
Step 1
Make sure you have a good full backup.
Step 2 spool obj.lis alter session set nls_date_format='DD-MON-YYYY HH24:MI:SS'; set pagesize 1000 select o.* from obj$ o, type$ t where o.oid$ = t.tvoid and bitand(t.properties,8388608) = 8388608 and (sysdate-o.ctime) > 0.0007; spool off
Step 3
Find the object owner:
Step 4
Drop the objects.
DROP TYPE "SYSTPf/r2wN4keX7gQKjA3AFMSw==" FORCE;
Solution #2
————
You can prevent SMON to cleanup transient types by setting event 22834 like below.
However, this can cause transient types to increase.
SQL> alter system set events '22834 trace name context forever, level 1'; System altered. To turn off: SQL> alter system set events '22834 trace name context off' ; System altered.
Do you want to learn Oracle Database for Beginners, then read the following articles.
Oracle Tutorial | Oracle Database Tutorials for Beginners ( Junior Oracle DBA )