AUD$ insert işlemlerindeki “gc buffer busy acquire” bekleme olayı

13 May by Ahmet Duruöz

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.

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir