AUD$ insert işlemlerindeki “gc buffer busy acquire” bekleme olayı
AUD$ ve FGA_LOG$ tablolarının tablo alanının segment space yönetimi otomatik olmadığı ya da çok fazla kayıt oluştuğunda , veritabanı bağlantıları sırasında “gc buffer busy acquire” bekleme olayı görülmekte ve bağlantı işlemi başarılı sonuçlanmamaktadır.
Bu durumda AUD$ ve FGA_LOG$ tablolarının otomatik segment space yönetimi olan bir tablo alanına taşıması ya da AUD$ tablosunun truncate ile boşaltılması gerekmektedir.
Bekleme olayına sebep olan işlemi aşağıdaki sorgu ile tespit edebilirsiniz.
SQL> SELECT instance_number, sql_opname,event, p1, p2, p3, current_obj#, COUNT (*) cnt
FROM dba_hist_active_sess_history
WHERE sample_time BETWEEN TIMESTAMP '2019-05-13 00:00:00'
AND TIMESTAMP '2019-05-13 10:30:00'
AND wait_class = 'Cluster'
GROUP BY instance_number, event, sql_opname,p1, p2, p3, current_obj#
ORDER BY cnt DESC;
INSTANCE_NUMBER SQL_OPNAME EVENT P1 P2 P3 CURRENT_OBJ# CNT
--------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------- ---------- ---------- ------------ ----------
2 INSERT gc buffer busy acquire 1 12878 1 384 268395
1 INSERT gc buffer busy acquire 1 12878 1 384 262336
2 SELECT gc buffer busy acquire 1 12878 1 384 2460
2 SELECT gc current request 1 12878 33554433 384 2460
1 INSERT gc current request 1 12878 33554433 384 2423
2 SELECT gc buffer busy acquire 94 2 13 -1 123
2 SELECT gc current request 94 2 16777229 -1 105
Sorgudan dönen kayıtlardan count değeri en yüksek olan nesne kontrol edildiğinde AUD$ olduğu görülmektedir.
SQL> select OWNER,OBJECT_NAME from dba_objects where object_id=384;
OWNER OBJECT_NAME
-------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
SYS AUD$
Bu durumda çözüm için AUD$ ve FGA_LOG$ tablolarının tablo alanlarının değişimi gerekmektedir.
AUD$ ve FGA_LOG$ tablolarının tablo alanlarının değişimi için aşağıdaki makaleden faydalanabilirsiniz.
AUD$ tablosunun boşaltılmasını aşağıdaki gibi yapabilirsiniz.
[oracle@orcldb ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon May 13 11:11:22 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> truncate table sys.aud$;
Table truncated.
Sonrasında bağlantılar başarılı şekilde sonuçlanacaktır.