DBMS_XPLAN, yürütme planları dahil olmak üzere SQL planlarını görüntülemek ve planları açıklamak için Oracle tarafından sağlanan bir pakettir; daha önce SQL yürütme planlarını görüntülerken doğrudan set autotrace komutunu kullandım, ancak DBMS_XPLAN paketi de daha basitleştirilmiş bir edinim sağlıyor Ve planın görüntülenme şekli.
Bu işlevler, planı görüntülemenin farklı yollarına karşılık gelir. DBMS_XPLAN paketi yalnızca açıklama planını almakla kalmaz, aynı zamanda AWR'de depolanan SQL imlecini, SQL hata ayıklama setini, önbelleğe alınan SQL imlecini ve SQL temelindeki ifade planını çıkarmak için de kullanılabilir. Uygulama yukarıdaki gibidir. Aşağıdaki yöntemler genellikle kullanılır:
1. EKRAN
2. DISPLAY_AWR
3. DISPLAY_CURSOR
4.DISPLAY_PLAN
5. DISPLAY_SQL_PLAN_BASELINE
6. DISPLAY_SQLSET
Belirli bir cümleyi görüntülemek için sık kullanılan bir açıklama planı örneğine bakalım:
SQL > scott.emp'den seçme * planını açıklayın; SQL > tablodan * seçin (dbms_xplan.display); - Otomatik izleme uygulamasına karşılık gelir SQL > autotrace izlemeyi ayarla sadece açıklaYukarıdaki örnekte, dbms_xplan.display yöntemi PLAN_TABLE'a kaydedilen açıklama planını görüntülemek için kullanılır. Yürütme planını görüntülemek istiyorsanız, DMBS_XPLAN.DISPLAY_CURSOR yöntemini kullanmanız gerekir. DMBS_XPLAN.DISPLAY_CURSOR çağrı imzası:
DBMS_XPLAN.DISPLAY_CURSOR ( sql_id IN VARCHAR2 VARSAYILAN NULL, child_number, NUMBER VARSAYILAN NULL, format IN VARCHAR2 DEFAULT'TYPICAL ');sql_id, imleç önbelleğinde depolanan SQL deyiminin kimliğini temsil eder, child_number, önbelleğe alınan sql deyim planının alt kimliğini belirtmek için kullanılır ve format parametresi, çıktıda yer alan bilgilerin türünü kontrol etmek için kullanılır.Resmi dosya parametreleri aşağıdaki gibidir:
1. TEMEL: Yalnızca işlem türü, kimlik adı ve seçenekleri içeren minimum bilgileri görüntüleyin. 2. TİPİK: Varsayılan değer, ilgili bilgileri görüntüleyin ve bölüm ve eşzamanlı kullanım gibi bazı ek görüntüleme seçenekleri. 3. SERİ: TİPİK tipe benzer şekilde, fark, paralel bir yürütme planı olsa bile eşzamanlı bilgi içermemesidir. 4.ALL: Tüm TİPİK ve diğer adlar ve uzak aramalar gibi daha fazla ek bilgi dahil olmak üzere en fazla bilgiyi görüntüleyin.Yukarıdaki dört temel çıktı biçimine ek olarak, biçim, çıktı davranışını özelleştirmek için bazı ek seçeneklere sahiptir. Birden çok anahtar sözcüğü virgül ve boşluklarla ayırarak bildirebilirsiniz. Ayrıca "+" ve "-" kullanabilirsiniz. Karşılık gelen ekran öğelerini dahil edecek veya hariç tutacak semboller, bu ek seçenekler de resmi dosyaya kaydedilir:
1.ROWS - optimize edici tarafından tahmin edilen kaydın satır numarasını gösterir 2. BYTES - optimize edici tarafından tahmin edilen bayt sayısını gösterir 3. MALİYET-Optimize edici tarafından hesaplanan maliyet bilgilerini görüntüleyin 4. BÖLÜM-Bölüm bilgilerini görüntüle 5.PARALEL-ekran paralel yürütme bilgisi 6. TAHMİN-görüntü koşulu 7. PROJE-görüntülü sütun projeksiyon bölümü (her satırın sütunları, üst sütununa ve bu sütunların boyutlarına aktarılır) 8.ALIAS-Sorgu bloğu adını ve nesne takma adını görüntüle 9. UZAKTAN-Dağıtılmış sorgu bilgilerini görüntüleme 10. NOT gösterme notları 11. IOSTATS-display IO istatistikleri imleç tarafından yürütülür 12. MEMSTATS, karma birleştirme, sıralama veya bazı bitmap işlemleri türleri gibi bellek yoğun işlemler için bellek yönetimi istatistiklerini görüntüler 13. ALLSTATS-eşdeğeri 'IOSTATS MEMSTATS' 14. SON - Yürütülen son yürütme planı istatistiklerini görüntüleyin, varsayılan ekran TÜMÜ tipidir ve toplanabilir.Yukarıdaki parametreler, açıklama planının gösterim yöntemi için de geçerlidir.
1. En son ifadenin yürütme planını görüntülemek için display_cursor yöntemini kullanın
SQL > scott.emp'den / * + collect_plan_statistics * / count (*) seçin; SQL > tablodan * seçin (dbms_xplan.display_cursor (null, null, 'ALLSTATS LAST'));Dbms_xplan.display_cursor (null, null, 'ALLSTATS LAST') kullanırken, sql_id ve child_number'ı null olarak ayarlayın; bu, son çalıştırılan ifadenin yürütme planını almak anlamına gelir; Yukarıdaki örnekte, collec_plan_statistics komut istemini belirtmeniz veya veritabanının STATISTICS_LEVEL parametresini manuel olarak ayarlamanız gerektiğini unutmayın. ALL'nin satır veri kaynağının yürütme istatistiklerini almasını sağlaması için, bu bilgiler satır sayısını, her zaman okuma sayısını, fiziksel okuma sayısını, fiziksel yazma sayısını ve bir veri satırı üzerinde işlemin çalışma süresini içerir. Bu komut belirtilmezse, Üç bilgi sütunu, A-Satırları, A-Zamanı ve Tamponlar olmayacaktır.
2. Belirtilen bir ifadenin yürütme planını alın
SQL > scott.emp'den / * + collect_plan_statistics * / count (*) seçin; burada sal (1250, 1300); - v $ sql görünümü aracılığıyla sql ifadesinin SQL_ID ve CHILD_NUMBER'ını sorgulayın SQL > v $ sql'den sql_id, child_number, sql_text seçin; burada sql_text '% select / * + collect_plan_statistics * / count (*)%' gibi; - İlgili yürütme planını alın SQL > tablodan * seçin (dbms_xplan.display_cursor ('5qxmkvh40yw0p', 0, 'ALLSTATS LAST'));3. Yürütme planı çıktı bilgilerini format parametresi aracılığıyla özelleştirin
- Açıklama planı hakkındaki tüm bilgileri görüntülemek için TÜMÜ kullanın SQL > emp e, bölüm d'den seçme * planını açıklayın; burada e.deptno = d.deptno ve e.ename = 'JONES'; SQL > tablodan * seçin (dbms_xplan.display (format = > 'HERŞEY')); - Yürütme planındaki bayt sayısını ve maliyet istatistiklerini kaldırın SQL > empno, ename from emp e, dept d seçin burada e.deptno = d.deptno ve e.ename = 'JONES'; SQL > tablodan * seçin (dbms_xplan.display_cursor (null, null, format = > 'TÜM İSTATLAR SON-MALİYET-BİTLER')); - Başka bir seçenek, bağlı değişkenin değerine göz atmak, çok uygun! ! SQL > değişken v_empno numarası SQL > exec: v_empno: = 7566; SQL > empno =: v_empno; SQL > tablodan * seçin (dbms_xplan.display_cursor (null, null, format = > '+ PEEKED_BINDS')); - Paralel sorgu bilgisi filtreleme SQL > scott.dept d'den / * + parallel (d, 4) parallel (e, 4) * / d.dname, ortalama (e.sal), max (e.sal), scott.emp e, burada d.deptno = max (e.sal), ortalama (e.sal) azalan d.dname sırasına göre e.deptno grubu; SQL > tablodan * seçin (dbms_xplan.display_cursor (null, null, 'TYPICAL -BYTES -COST'));Açıklama planı hakkındaki tüm bilgileri göster
Paralel sorgu bilgisi filtreleme
Uygulama planını görüntülemenin birçok yolu vardır. Bir veya ikisine odaklanmaya alıştığınızı görebilirsiniz. Daha sonra daha fazla DBA içeriği paylaşacağız ve ilgilenen arkadaşlar buna dikkat edebilir ~