Как проанализировать, чем в настоящий момент занят сервер Oracle, «что делают» сессии пользователей, почему долго выполняются запросы?
Запрос для мониторинга состояния текущих сессий: ожидания, блокировки, исполняемые SQL, long operations и т.д. (Oracle 10+) – session_waits.sql. Тот же скрипт – для Oracle 8/9.
Ожидания подключённой сессии
select event, wait_class, total_waits, total_timeouts, time_waited, average_wait from V$session_event where sid = &SID order by time_waited desc;
Суммарные ожидания/использования CPU подключённых пользовательских сессий
! Краткосрочная динамика ожиданий сессий в скрипте Steve Adams’а waiters.sql
!! Run-time скрипты от Tanel Poder’а: waitprof.sql, snapper, latchprof.sql,… – «…to sample V$SESSION_WAIT for a session up to 100 000 times per second!» – удивительные возможности Oracle SQL !!
Пакет Тома Кайта RUNSTATS для сравнительного анализа статистик сессии, latch activity при выполнении разных версий процедур/запросов. Развитие идеи на сайте http://www.oracle-developer.net/.
Как найти и удалить процессы в Unix системе, оставшиеся после выполнения команды ALTER SYSTEM KILL SESSION ’sid,serial#’
SELECT USERNAME, terminal, program, 'kill '||spid FROM v$process WHERE NOT EXISTS ( SELECT 1 FROM v$session WHERE paddr = addr) and UPPER(program) not like '%PSEUDO%' and UPPER(program) not like '%D00%' and UPPER(program) not like '%S00%';