You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle数据库中是否存在存储用户执行的历史SQL查询的表?

Oracle中存储用户历史SQL查询的相关对象
  • v$sql和v$sqlstats属于内存级视图,仅保留当前在共享池中的SQL语句。一旦SQL因内存压力被置换出共享池,就无法在这两个视图中查询到——这大概率是你没找到有效信息的原因。

  • 若需长期存储的历史SQL记录,依赖AWR(自动工作负载库)相关视图:

    • DBA_HIST_SQLTEXT:存储AWR快照捕获的SQL文本,默认每小时生成一次快照,数据保留8天(可通过修改AWR配置调整周期)。查询示例:
      SELECT sql_id, sql_text
      FROM dba_hist_sqltext
      WHERE parsing_schema_name = '目标用户名'
      ORDER BY snap_id DESC;
      
    • DBA_HIST_SQLSTAT:关联DBA_HIST_SQLTEXT的sql_id,可获取对应SQL的历史执行统计数据。
  • ASH(活动会话历史)相关视图也能记录会话级SQL活动:

    • V$ACTIVE_SESSION_HISTORY:内存级视图,记录最近的会话活动(默认保留约1小时);
    • DBA_HIST_ACTIVE_SESS_HISTORY:AWR持久化的ASH数据,保留周期和AWR一致,适合查看近期会话的SQL执行情况。
  • 若需更细粒度或自定义的长期SQL记录,可通过以下方式实现:

    • 开启Fine-Grained Auditing(FGA),使用DBMS_FGA包创建审计策略,捕获特定用户、表或操作的SQL;
    • 自定义触发器或使用DBMS_MONITOR包,将SQL记录到自定义表中。
  • 补充:查询上述视图需要SELECT_CATALOG_ROLE权限,若权限不足也会导致无法获取有效数据。

内容的提问来源于stack exchange,提问作者user1929905

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 01:30:57