Minimizing System Contention (2- En Fazla Bekleyen SQL ifadelerini Belirleme)

 - Veritabanınızdaki en çok bekleme yaşanan SQL deyimlerini bulmak için aşağıdaki sorguyu çalıştırın:
  SQL> select ash.user_id,
   u.username,
   s.sql_text,
   sum(ash.wait_time +
   ash.time_waited) ttl_wait_time
   from v$active_session_history ash,
   v$sqlarea s,
   dba_users u
   where ash.sample_time between sysdate - 60/2880 and sysdate
   and ash.sql_id = s.sql_id
   and ash.user_id = u.user_id
   group by ash.user_id,s.sql_text, u.username
   order by ttl_wait_time

 - Bu sorgu son 30 dk boyunca her sorgu tarafından beklenen toplam süreye göre çalışan sorguları sıralar.

 Nasıl Çalışır:
 - Performans problemi yaşıyorsanız, hangi SQL ifadelerinin beklediğini görmek iyi bir fikirdir. Bunlar, veritabanının kaynaklarının çoğunu kullanan ifadelerdir. En çok bekleyen sorguları bulmak için belirli bir SQL deyimi için wait_time ve time_waited sütunlarındaki V$ACTIVE_SESSION_HISTORY değerlerini toplamalısınız.
 Bunu yapmak için V$SQLAREA viewını V$ACTIVE_SESSION_HISTORY viewıyla joinlememiz ve SQL_ID'yi join sütunu olarak kullanmanız gerekir.
 - SQL deyimlerinin SQL_ID yanında, V$ACTIVE_SESSION_HISTORY viewında, SQL deyimleri tarafından kullanılan yürütme planları hakkında bilgi de bulunur. Bu bilgileri, bir SQL deyiminin neden çok fazla bekleme süresi yaşadığını belirlemek için kullanabilirsiniz.
 Örneklenen oturum etkinliğindeki top SQL ifadeleri hakkında bilgi edinmek için bir SQL komut dosyası kullanarak veya Oracle Enterprise Manager aracılığıyla bir Aktif Oturum Geçmişi (ASH) raporu çalıştırabilirsiniz.
 Bir ASH raporunun En Üstteki SQL bölümü, performans sorunlarından sorumlu yüksek yüklü SQL ifadelerini belirlemenize yardımcı olur.
 Top SQL raporunu incelemek, örneğin, veritabanı etkinliğinin çoğundan kötü sorgunun sorumlusu olduğunu gösterebilir.


Constraint Disable-Enable

Disable Constraint BEGIN   FOR c IN   (SELECT c.owner, c.table_name, c.constraint_name    FROM user_constraints c, user_tables t    WHERE...