要查看以普通用户身份执行的实际Oracle SQL语句,可以通过以下几种方法:
Oracle数据库提供了一个动态性能视图V$SQL
,可以用来查看当前正在执行的SQL语句及其相关信息。
SELECT sql_text, executions, rows_processed
FROM v$sql
WHERE username = 'YOUR_USER_NAME';
V$SESSION
视图包含了当前所有会话的信息,可以通过它来找到特定用户的会话,并进一步查看执行的SQL语句。
SELECT s.username, s.sid, s.serial#, sql_text
FROM v$session s
JOIN v$sqlarea a ON s.sql_address = a.address AND s.sql_hash_value = a.hash_value
WHERE s.username = 'YOUR_USER_NAME';
Oracle的审计功能可以记录用户的SQL操作。需要在数据库中启用审计功能,并指定要审计的操作。
AUDIT SELECT TABLE BY ACCESS;
AUDIT INSERT TABLE BY ACCESS;
AUDIT UPDATE TABLE BY ACCESS;
AUDIT DELETE TABLE BY ACCESS;
然后可以通过以下查询查看审计记录:
SELECT username, action_name, sql_text
FROM dba_audit_trail
WHERE username = 'YOUR_USER_NAME';
DBMS_MONITOR
包可以用来监控会话的SQL执行情况。
BEGIN
DBMS_MONITOR.SESSION_TRACE_ENABLE(session_id => &sid, serial_num => &serial#, waits => TRUE, binds => FALSE);
END;
/
之后可以通过查看跟踪文件来获取SQL语句。
如果你的环境中有Oracle Enterprise Manager,可以通过图形界面查看用户的SQL活动。
通过上述方法,你可以有效地监控和分析普通用户执行的SQL语句,这对于性能调优和安全审计都是非常有用的。
领取专属 10元无门槛券
手把手带您无忧上云