Как вы показываете выполнение SQL в базе данных Oracle?


26

Как вы можете показать SQL, который в настоящее время выполняется на оракуле БД?

Дополнительная информация, которая будет полезна, будет включать пользователя, идентификатор сеанса и т. Д.

Ответы:


35

Большая часть информации доступна в v $ session ... и текст SQL можно получить из v $ sql или v $ sqltext_with_newlines ...

Вот запрос, который я часто использую, который форматирует In-flight SQL, самый длинный из которых работает сверху.

-- In Flight SQL 
SELECT nvl(ses.username,'ORACLE PROC')||' ('||ses.sid||')' USERNAME,
       SID,   
       MACHINE, 
       REPLACE(SQL.SQL_TEXT,CHR(10),'') STMT, 
      ltrim(to_char(floor(SES.LAST_CALL_ET/3600), '09')) || ':'
       || ltrim(to_char(floor(mod(SES.LAST_CALL_ET, 3600)/60), '09')) || ':'
       || ltrim(to_char(mod(SES.LAST_CALL_ET, 60), '09'))    RUNT 
  FROM V$SESSION SES,   
       V$SQLtext_with_newlines SQL 
 where SES.STATUS = 'ACTIVE'
   and SES.USERNAME is not null
   and SES.SQL_ADDRESS    = SQL.ADDRESS 
   and SES.SQL_HASH_VALUE = SQL.HASH_VALUE 
   and Ses.AUDSID <> userenv('SESSIONID') 
 order by runt desc, 1,sql.piece;

в чем смысл In Flight SQL?
Тоха

In-flight = в настоящее время выполняется в базе данных Oracle или в этом случае в настоящее время доступно в v $ session и status = 'ACTIVE'
Дэвид Манн

9

Хороший ответ найден здесь .

Выполните следующий sql:

select x.sid
      ,x.serial#
      ,x.username
      ,x.sql_id
      ,x.sql_child_number
      ,optimizer_mode
      ,hash_value
      ,address
      ,sql_text
from   v$sqlarea sqlarea
      ,v$session x
where  x.sql_hash_value = sqlarea.hash_value
and    x.sql_address    = sqlarea.address
and    x.username       is not null;

Если вывод не читается, измените LINESIZE (возьмите отсюда ):

SET LINESIZE 20000

Если sql выше не работает, вам может потребоваться войти в систему как sysdba:

sqlplus '/as sysdba'

Ваша ссылка на Хороший ответ умерла
Джеррат

@Gerrat Я обновил ссылку на кешированный архив.
Кларки
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.