Сессии к базе данных Oracle
Список:
- Посмотреть текущие сессии к базе данных
- Найти блокирующую сессию
- Убить сессию
- Убийство всех сессий к одной схеме
- Отследить, какой запрос выполняет приложение
Посмотреть текущие сессии к базе данных
SELECT t.SID, t.SERIAL#, t.osuser as "User", t.MACHINE as "PC", t.PROGRAM as "Program"
FROM v$session t
--WHERE (NLS_LOWER(t.PROGRAM) = 'cash.exe') -- посмотреть сессии от программы cash.exe
--WHERE status='ACTIVE' and osuser!='SYSTEM' -- посмотреть пользовательские сессии
--WHERE username = 'схема' -- посмотреть сессии к схеме (пользователь)
ORDER BY 4 ASC;
Найти блокирующую сессию
SELECT status, SECONDS_IN_WAIT, BLOCKING_SESSION, SEQ#
FROM v$session
WHERE username=upper('scott');
Убить сессию
ALTER SYSTEM KILL SESSION 'SID,Serial#' IMMEDIATE;
Заменить ‘SID’ и ‘Serial#’ на текущие значения сессии.
Убийство всех сессий к определенной схеме
define USERNAME = "USER_NAME"
begin
for i in (select SID, SERIAL# from V$SESSION where USERNAME = upper('&&USERNAME')) loop
execute immediate 'alter system kill session '''||i.SID||','||i.SERIAL#||''' immediate';
end loop;
end;
/
Отследить, какой запрос выполняет приложение
SELECT PROCESS pid, sess.process, sess.status, sess.username, sess.schemaname, sql.sql_text
FROM v$session sess, v$sql sql
WHERE sql.sql_id(+) = sess.sql_id AND sess.type = 'USER';