Мне нужно увидеть запросы, отправляемые в Oracle для их выполнения. Может ли кто-нибудь дать мне конкретные подробные инструкции о том, как это сделать?
Как я могу просмотреть запросы, которые выполняются против Oracle?
Ответ 1
Если вы хотите видеть запросы от определенного пользователя, вы можете использовать это (если у вас есть привилегии для запроса v$session
и v$sqlarea
(обычно через SELECT_CATALOG_ROLE
)
SELECT sess.sid,
sess.username,
sqla.optimizer_mode,
sqla.hash_value,
sqla.address,
sqla.cpu_time,
sqla.elapsed_time,
sqla.sql_text
FROM v$sqlarea sqla, v$session sess
WHERE sess.sql_hash_value = sqla.hash_value
AND sess.sql_address = sqla.address
AND sess.username = 'SCOTT'
Замените SCOTT соответствующим именем пользователя в вашей системе
Вывод:
544 SCOTT ALL_ROWS 2004330732 07000001064088E8 89391 131836 SELECT sess.sid, sess.username,
sqla.optimizer_mode, sqla.h
ash_value, sqla.address, s
qla.cpu_time, sqla.elapsed_time,
sqla.sql_text FROM v$sqlarea sq
la, v$session sess WHERE sess.sql_hash_
value = sqla.hash_value AND sess.sql_
address = sqla.address AND sess.usern
ame = 'SCOTT'
Ответ 2
В этом запросе будут отображаться запросы, которые в настоящее время выполняются:
select sql_text from v$sqlarea where users_executing > 0;
Смотрите документацию по V $SQLAREA