oracle uzun bir sql ifadesinde erişilen tablo listesi

Oracle’da çok uzun sql ifadelerinde hangi tablolara erişildiğini bulmak için,

1) $ORACLE_HOME/RDBMS/ADMIN/UTLXPLAN.SQL da yer alan dosyanın içindeki sql ifadeleri çalıştırılarak PLAN_TABLE tablosu oluşturulur. Bu dosya oracle’ın oluşturduğu execution plan’ın tablo yapısını içerir.

2) Aşağıdaki sql ile plan tablomuza çok uzun sql ifadesinin execution planı insert edilir.

EXPLAIN PLAN
INTO PLAN_TABLE
FOR
SELECT kolon1, kolon2 FROM tablo1; -- burada çok uzun sql ifade(leri)miz yer alacak

3) Aşağıdaki sql ifadesi ile yukarıdaki sql ifadesinde erişilen tabloların listesi elde edilir.

SELECT DISTINCT OBJECT_OWNER, OBJECT_NAME
FROM PLAN_TABLE
WHERE OPERATION = 'TABLE ACCESS'
ORDER BY 1,2

kaynak: docs.oracle.com/cd/B10500_01/server.920/a96533/ex_plan.htm

Bir cevap yazın