ORA-21779: duration not active hatası
Oracle veritabanında bazı type nesnelerinin oluşması sırasında oluşan sorundan dolayı ilgili type oluşmuyor ama metadata bilgisi kayır ediliyor. Bu tarz durumlar oluştuğunda alert log dosyasına aşağıdaki gibi hatalar yazılmaktadır.
*** 2023-07-24 15:20:35.389
Drop transient type: SYSTPATfvkWzGUIngZAIIIK+oYw==fq°
*** 2023-07-24 15:20:35.389
SMON: following errors trapped and ignored:
ORA-21779: duration not active
Bu durumda yapılması gereken ilgili type nesnesini tespit etmek ve drop etmektir.
Aşağıdaki sorgu ile ilgili nesneyi ve sahibini tespit edebilirsiniz. Komutları sqlplus ile sysdba olarak bağlanıp çalıştırın.
sqlplus / as sysdba
SQL> alter session set nls_date_format='DD-MON-YYYY HH24:MI:SS';
SQL> set pagesize 1000
SQL> select o.* from obj$ o, type$ t where o.oid$ = t.tvoid and bitand(t.properties,8388608) = 8388608 and (sysdate-o.ctime) > 0.0007;
Örnek sonuç aşağıdaki gibi olacaktır.
SQL> SQL> 2 3
OBJ# DATAOBJ# OWNER# NAME NAMESPACE
---------- ---------- ---------- ------------------------------ ----------
SUBNAME TYPE# CTIME
------------------------------ ---------- --------------------
MTIME STIME STATUS
-------------------- -------------------- ----------
REMOTEOWNER
------------------------------
LINKNAME
--------------------------------------------------------------------------------
FLAGS OID$ SPARE1 SPARE2 SPARE3
---------- -------------------------------- ---------- ---------- ----------
SPARE4
--------------------------------------------------------------------------------
SPARE5
--------------------------------------------------------------------------------
SPARE6
--------------------
401594 101 SYSTPATfvkWzGUIngZAIIIK+oYw== 1
13 24-JUL-2023 10:55:19
24-JUL-2023 10:55:19 24-JUL-2023 10:55:19 1
0 0137EF916CC75089E064020820AFA863 0 65535 101
Sonuçtaki OWNER# bilgisinden aşağıdaki gibi bir sorgu ile nesnenin kime ait olduğunu tespit edebilirsiniz.
SQL> select * from dba_users where user_id=<OWNER#>;
Sonrasında aşağıdaki gibi ilgili type nesnesini drop etmeniz gerekmektedir.
SQL> DROP TYPE "SYSTPATfvkWzGUIngZAIIIK+oYw==" force;
Eğer bu başarısız olursa aynı komutu nesnenin sahibi kullanıcı ile çalıştırın.
Nesne drop edildikten sonra alert log dosyasında hata gelmeyecektir.