2013-01-23 23 views
5

Mam aplikację, która wykonuje kwerendy sql. Jak uzyskać plan wykonania aktualnie wykonywanego zapytania z sqlplus lub innego klienta Oracle? Mogę zmienić sesję Oracle, która jest używana w aplikacji, jeśli jest to konieczne.pobierz plan wykonania zapytania dla zapytania

Nie chcę używać explain plan i wykonywać tego zapytania ręcznie, potrzebuję uzyskać rzeczywisty plan wykonania, który jest używany do zapytania.

Odpowiedz

10

można uruchomić wyjaśnić zwykły na zapytaniami historycznych z SGA - examples

wystawianie B.

Przykład:

SELECT username, prev_sql_id 
FROM v$session 
WHERE username = 'RDEVALL' -- example user 

SQL ID wrócił zapytanie

RDEVALL a1d4z5ruduzrd 
RDEVALL avmbutuknvb6j 
RDEVALL 75g0tqd9x743y 
RDEVALL 5fnkh6c8mqqt3 
RDEVALL 75g0tqd9x743y 

Picka ID i użyj tutaj:

SELECT * 
    FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('a1d4z5ruduzrd')); -- replace with sql ID as needed 
+0

Możesz również zapytać o sesję w $ przy innych kryteriach wyszukiwania, takich jak nazwa komputera, nazwa programu itp., Jeśli ma to większy sens w określaniu instrukcji SQL do zlokalizowania. uruchom DESC V $ SESSION, aby zobaczyć wszystkie odpowiednie kolumny. – OldProgrammer

+0

Mam problem z DBMS_XPLAN.DISPLAY_CURSOR(). Mam dwóch użytkowników z tym samym kwerendy w dwóch różnych sesjach. Ponieważ zapytanie jest takie samo, klucz skrótu zapytania w obu sesjach jest taki sam. Podczas wywoływania DBMS_XPLAN.DISPLAY_CURSOR (), dlaczego nie określa się sesji? Sądzę, że funkcja ta zwraca plan wykonania, a nie faktyczny plan wykonania uruchomiony w określonej sesji. –

Powiązane problemy