Krzysztof Miklaszewski

Krzysztof Miklaszewski IT Manager at Summit
Group Poland

Temat: Podgląd historii zapytań

Witam wszystkich,

Niestety nie mam doświadczenia z Oracle DB. Chciałbym podejrzeć zapytania które aplikacja wysyła do bazy danych. Dłubię już w necie od dłuższego czasu i bez skutku. Wyczytałem o redo logs - wymaga enterpise Managera, którego nie chcę instalować do jednaj operacji. Znalazłem coś o dba_hist_sqlstats ale tabela jest u mnie pusta. Próbowałem w SQL Developer - bez sukcesu. Możliwe że jestem blisko, ale nie mogę się nigdzie zahaczyć.

Może brak licencji?

to co posiadam:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
"CORE 12.2.0.1.0 Production"
TNS for 64-bit Windows: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production

Proszę o pomoc.
Rafał G.

Rafał G. Oracle DBA OCM
10g/11g

Temat: Podgląd historii zapytań

Cześć, Krzysztof

Na pewno dostaniesz się do zapytań które są przechowywane w pamięci (widok v$sql)
pierwszy z brzega przykład:

SELECT inst_id,sid FROM gv$session WHERE username='<ENTER-USERNAME>';

SELECT
s.sid
,s.CLIENT_INFO
,s.MACHINE
,s.PROGRAM
,s.TYPE
,s.logon_time
,s.osuser
,sq.sorts
,sq.DISK_READS
,sq.BUFFER_GETS
,sq.ROWS_PROCESSED
,sq.SQLTYPE
,sq.SQL_TEXT
FROM gv$session s
, gv$sql sq
WHERE s.SQL_HASH_VALUE = sq.HASH_VALUE
AND s.inst_id = :inst_id -- replace with instID from above
AND s.sid = :sid -- replace with ID from above
AND sq.inst_id = s.inst_id

dba_hist_sqlstats - to już jest częścią AWR i wymaga diagnostic packa (a to wymaga Enterprise Edition).

Ale możesz zainstalować alternatywnego Staspack'a i wtedy historyczne zapytanie będą w stats$sqlstat . Standardowo trafiają tam topowe zapytania, ale jak ustawisz parametr w bazie danych statistics_level = all to powinny tam trafiać wszystkie (przynajmniej, większość)

Pozdrawiam,
RG
Grzegorz Ludwiczek

Grzegorz Ludwiczek Specjalista d/s baz
danych i systemów
operacyjnych,
KAMSO...

Temat: Podgląd historii zapytań

Krzysztof M.:
Witam wszystkich,

Niestety nie mam doświadczenia z Oracle DB. Chciałbym podejrzeć zapytania które aplikacja wysyła do bazy danych. Dłubię już w necie od dłuższego czasu i bez skutku. Wyczytałem o redo logs - wymaga enterpise Managera, którego nie chcę instalować do jednaj operacji. Znalazłem coś o dba_hist_sqlstats ale tabela jest u mnie pusta. Próbowałem w SQL Developer - bez sukcesu. Możliwe że jestem blisko, ale nie mogę się nigdzie zahaczyć.

Proszę o pomoc.

Pytanie co dokładnie chcesz wyciągnąć? Wszystkie zapytania? Z konkretnej sesji?
Jeśli tak, to wystarczy włączyć trace do pliku i dostaniesz wszystkie zapytania z danej sesji.
Możesz trace włączyć na swojej sesji, albo, z poziomu dba - na dowolnej sesji.

Jeśli wystarczą dwa ostatnie zapytania, to
- kolumna sql_id i prev_sql_id z widoku gv$session.
- następnie po tych id szukasz sql_fulltext w gv$sql

P.S. Redologs nie wymagają Enterprise Managera, ale ZTCP wymagają włączenia opcji, żeby do redologów i archivelogów leciała faktycznie treść zapytania a nie tylko informacje o zmienianych blokach. I jak wynika z założeń - miałbyś tam tylko zapytania, które coś zmieniają, czyli nie miałbyś zwykłych selectów.

Następna dyskusja:

Optymalizacja 11g pod jeden...




Wyślij zaproszenie do