我需要查看发送给Oracle的查询来执行它们。有人可以给我详细说明如何做到吗?
答案 0 :(得分:15)
如果您想查看来自特定用户的查询,可以使用此功能(假设您有权查询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'
答案 1 :(得分:3)
此查询将显示当前正在运行的查询:
select sql_text from v$sqlarea where users_executing > 0;