Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytania Oracle wykonywane przez sesję

Prawdopodobnie nie uzyskasz danych, których szukasz, jeśli nie wykonasz dalszej konfiguracji (takiej jak włączenie inspekcji) lub poczynisz pewne kompromisy. Jaki problem biznesowy próbujesz rozwiązać? W zależności od problemu możemy być w stanie pomóc Ci określić najłatwiejsze podejście do konfiguracji bazy danych, aby móc rejestrować poszukiwane informacje.

Oracle nie próbuje nigdzie przechowywać informacji o tym, ile razy dany użytkownik (a zwłaszcza ile razy dany użytkownik systemu operacyjnego) wykonał dane zapytanie. SQL_ID w V$SESSION wskazuje tylko SQL_ID sesja jest aktualnie wykonywana. Jeśli, jak się domyślam, jest to aplikacja klient-serwer, to jest całkiem prawdopodobne, że w 99% przypadków jest to NULL, ponieważ w zdecydowanej większości sesja nie wykonuje żadnego SQL-a, czeka na użytkownika zrobić coś. PREV_SQL_ID w V$SESSION jest poprzednią instrukcją SQL, która została wykonana -- przynajmniej generalnie nie będzie NULL . Ale będzie miał tylko jedną wartość, nie będzie miał historii instrukcji SQL wykonanych przez tę sesję.

V$SQL widok jest reprezentacją tego, co znajduje się w puli współużytkowanej SQL. Gdy instrukcja SQL przedawni się poza współużytkowaną pulą, nie będzie już znajdować się w V$SQL pogląd. Szybkość, z jaką to się dzieje, zależy od wielu czynników — jak często ktoś wykonuje instrukcję, jak często analizowane są nowe instrukcje (co generalnie w dużej mierze zależy od tego, czy aplikacje poprawnie używają zmiennych wiązania), jak duża jest pula współdzielona itp. Ogólnie rzecz biorąc, będzie to trwało od kilku minut do zamknięcia bazy danych.

Jeśli masz licencję na używanie tabel AWR i interesują Cię przybliżenia, a nie idealnie poprawne odpowiedzi, możesz uzyskać informacje, których szukasz, patrząc na niektóre tabele AWR. Na przykład V$ACTIVE_SESSION_HISTORY przechwyci instrukcję SQL, którą każda sesja aktywnie wykonywała w każdej sekundzie. Ponieważ jest to aplikacja typu klient-serwer, oznacza to jednak, że przez większość czasu sesja będzie nieaktywna, więc nic nie zostanie przechwycone. Jednak instrukcje SQL, które zdarzają się przechwytywane podczas sesji, dają pewne pojęcie o względnej częstotliwości różnych instrukcji SQL. Oczywiście istnieje większe prawdopodobieństwo przechwycenia dłuższych instrukcji SQL, ponieważ jest bardziej prawdopodobne, że będą aktywne w danym momencie. Jeśli zapytania A i B wykonują się dokładnie w tym samym czasie, a sesja została przechwycona wykonując A 5 razy, a B 10 razy w ciągu ostatniej godziny, możesz wywnioskować, że B jest wykonywane mniej więcej dwa razy częściej niż A. A jeśli wiesz średni czas wykonania zapytania, średnie prawdopodobieństwo, że zapytanie zostało przechwycone, będzie równa liczbie sekund, które zapytanie wykonuje (zapytanie, które wykonuje się w 0,5 sekundy, ma 50% szans na przechwycenie, takie, które wykonuje się w 0,25 sekund ma 25% szans na przechwycenie), dzięki czemu można oszacować, jak często dana sesja wykonywała dane zapytanie. Jest to dalekie od dokładnej liczby, szczególnie w krótszych ramach czasowych i w przypadku zapytań, których rzeczywiste czasy wykonania są bardziej zmienne.

Dane w V$ACTIVE_SESSION_HISTORY widok jest ogólnie dostępny przez kilka godzin. Następnie jest próbkowany w DBA_HIST_ACTIVE_SESS_HISTORY tabela, która zmniejsza ilość dostępnych danych o rząd wielkości, czyniąc wszelkie szacunki znacznie mniej dokładnymi. Ale te dane są przechowywane niezależnie od interwału przechowywania AWR (domyślnie jest to tydzień, chociaż wiele witryn zwiększa go do 30 lub 60 dni).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskiwanie dostępu do tabeli innego użytkownika w ramach procedury składowanej Oracle

  2. Optymalizator Oracle 10 od REGUŁY do KOSZTÓW:dlaczego?

  3. Ścieżki audytu Oracle DB

  4. MERGE tabeli, nie rób nic po dopasowaniu

  5. Jak pogrupować według specjalnego warunku