[英]How can I see queries that are executed against Oracle?
I need to see the queries that are being sent to Oracle to execute them.我需要查看发送到 Oracle 的查询以执行它们。 Can someone give me specific detailed instructions on how to do this?有人可以给我有关如何执行此操作的具体详细说明吗?
If you want to see the queries from a specific user, you can use this (assuming you have privileges to query v$session
and v$sqlarea
(usually through SELECT_CATALOG_ROLE
) 如果要查看来自特定用户的查询,可以使用此(假设您有权查询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'
Replace SCOTT with the appropriate username in your system 用您系统中的相应用户名替换SCOTT
Output: 输出:
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'
This query will show queries that are currently running: 此查询将显示当前正在运行的查询:
select sql_text from v$sqlarea where users_executing > 0;
You can check and get the data if you have access to these two oracle tables/views (v$sqlarea & v$sqltext) , Also accoridng to your need you can also modify the query and add A.cpu_time, A.elapsed_time if required.如果您可以访问这两个 oracle 表/视图(v$sqlarea & v$sqltext) ,您可以检查并获取数据,也可以根据需要修改查询并添加A.cpu_time,A.elapsed_time如果需要.
Query -询问 -
SELECT A.SQL_ID,
A.FIRST_LOAD_TIME,
A.SQL_TEXT,
A.SQL_FULLTEXT
FROM v$sqlarea A, v$sqltext B
WHERE A.PARSING_SCHEMA_NAME = 'TESTUSER' --YOUR USERNAME
AND A.SQL_ID = B.SQL_ID
AND A.HASH_VALUE = B.HASH_VALUE
ORDER BY A.FIRST_LOAD_TIME DESC
Output - Output -
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.