Szukam zapytania, które zwróci listę instrukcji SQL wysokiego obciążenia. Nie chcę używać żadnych narzędzi Oracle, takich jak ADDM lub AWR. Potrzebuję instrukcji zapytania, która zwróci instrukcje SQL wysokiego obciążenia.Jak rozpoznać SQL o dużym obciążeniu w Oracle, korzystając z widoków Oracle?
Odpowiedz
Można bezpośrednio wyszukiwać tabele AWR, co może być najprostszym sposobem.
Inną prostą techniką, którą stosowałem w Oracle 8i bez włączonych statystyk, było wybranie SQL z najwyższym stosunkiem buforowania do wykonania z v $ sql. Można grać z tego zapytania, aby wyszukać tylko wysoki wykonania kwerend zliczania, lub tych, robi dużą fizycznej IO itp
AWR i popiół tabel daje lepszy dostęp do informacji, ale może to być prosty Pierwszy krok:
select a.sql_id, a.ratio, a.executions
from
(
select sql_id, buffer_gets/executions ratio, executions
from v$sql
where executions > 10
order by 2 desc
) a
where rownum <= 10
Aby szybko znaleźć, jeśli masz długie procesy zachodzące swoje zasoby działa spojrzeć na v $ sesson_long_ops:
SELECT * FROM v$session_longops
patrz: http://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_2092.htm
Radziłbym Ci spojrzeć na to zbyt: http://docs.oracle.com/cd/B28359_01/server.111/b28274/instance_tune.htm
Następnie można wziąć SID znaleźć sql, który jest uruchomiony:
SELECT sql_text FROM v$session s
LEFT JOIN v$sqlarea sa ON s.sql_hash_value=sa.hash_value AND s.sql_address=sa.address
WHERE sid=&sid
Jeśli używasz systemu UNIX Można również spojrzeć pod komendą top
(top10
lub topas
na różnych smakach unixowych) można następnie użyć identyfikatorów procesowych zapytań zużywających najwięcej cpu, a następnie użyć następującego polecenia, aby uzyskać szkodliwy sql.
SELECT
s.username,
sa.sql_text
FROM v$process p
INNER JOIN v$session s ON p.addr=s.paddr
LEFT JOIN v$sqlarea sa ON s.sql_hash_value=sa.hash_value AND s.sql_address=sa.address
WHERE s.username IS NOT NULL AND p.spid=&SPID
- 1. Serwer Java NIO o dużym obciążeniu TCP
- 2. Oracle SQL vs Oracle PL/SQL
- 3. Nazwa kolumny listy widoków użytkownika w oracle
- 4. Obsługa Bool Oracle SQL
- 5. Jak zmienić strefę czasową Oracle SQL Developer/Oracle Data Modeler?
- 6. Dynamiczny pivot w Oracle SQL
- 7. Oracle SQL jak usunąć razem z datą
- 8. Dla pętli w Oracle SQL
- 9. MAX (data) - SQL ORACLE
- 10. Importować plik .sql w Oracle?
- 11. Oracle SQL select odrębny
- 12. Wyświetl ekspansję w Oracle
- 13. `pokaż utwórz odpowiednik tabeli` w Oracle Oracle
- 14. Dodawanie dni Oracle SQL
- 15. Oracle Sortowanie SQL 10g VARCHAR2
- 16. Oracle SQL Zapytanie o listowanie wszystkich schematów w DB
- 17. Ręczne przekazywanie sekwencji - sql oracle
- 18. Oracle pivot z podzapytania
- 19. Zakres dat w języku PL/SQL (Oracle)
- 20. C# oracle sql przygotowane oświadczenie
- 21. ORACLE SQL Koniec zakresu dat
- 22. Migracja z Oracle do Sql Server
- 23. Testowanie jednostek Oracle PL/SQL
- 24. Oracle SQL: Pierwsze kolumny z filtrami
- 25. Odpowiednik MySQL \ G w Oracle SQL * Plus
- 26. Oracle SQL: Przecięcie literałów tptle
- 27. Oracle Sql Przechowywanie połączeń programisty
- 28. oracle pl/sql DBMS_LOCK error
- 29. Jak zapytać o uprawnienia do katalogu Oracle?
- 30. Oracle SQL - częściowe usunięcie duplikat z ciągiem
Thx do powtórki. Czy możesz mi pokazać, jakie zapytanie muszę użyć, aby uzyskać dane z AWR? Najdroższe instrukcje sql .. Jak na tym obrazku: http://docs.oracle.com/cd/B19306_01/server.102/b28051/tdppt_sqlid.htm#BABECDJG? BTW. Co powiesz na widok v $ sqlarea? – Marshall
Wiele z tych statystyk w czasie rzeczywistym pochodzi z tabel ASH. Jeśli chcesz uruchomić menedżera przedsiębiorstwa, możesz wyśledzić jego sesję i sprawdzić, jakie SQL'y wykonują, aby wygenerować te wykresy. Zajrzyj do v $ active_session_history i zobacz, co możesz wymyślić. –