当前位置: 首页 > article >正文

Oracle获取SQL执行日志

在Oracle中,可以通过查询数据库的系统视图来获取已执行的 SQL 语句的日志,示例如下:

– 获取最近执行的 10 条 SQL 语句
SELECT SQL_ID, SQL_TEXT FROM V$SQL WHERE ROWNUM <= 10;

– 通过 SQL_ID 获取完整 SQL 文本
SELECT SQL_TEXT FROM V$SQLTEXT WHERE SQL_ID = ‘your_sql_id’;

– 根据 SQL 文本查找相关信息
SELECT SQL_TEXT, EXECUTIONS, ELAPSED_TIME FROM V$SQLAREA WHERE SQL_TEXT LIKE ‘%your_query%’;

每个视图的作用有所不同,针对每个视图做单独分析。
V$SQL

数据库中当前正在执行或已执行过的 SQL 语句的信息。

可以从中获得 SQL 语句的文本、执行计划、执行次数等信息。

对于了解当前会话中的 SQL 活动非常有用。

SELECT SQL_ID, SQL_TEXT, EXECUTIONS, ELAPSED_TIME
FROM V$SQL
WHERE ROWNUM <= 10;

Untitled.png
V$SQLTEXT

包含了已编译 SQL 语句的文本。

可以从中获取 SQL 语句的详细文本,用于分析和诊断 SQL 查询。

SELECT SQL_ID, SQL_TEXT
FROM V$SQLTEXT
WHERE SQL_ID = ‘your_sql_id’;

Untitled 1.png

由于内存管理和性能考虑,Oracle 可能只保留一部分 SQL 语句文本,而不是全部文本。

因此,查询可能会返回部分或全部 NULL 值。
V$SQLAREA

包含正在执行或已执行过的 SQL 语句的聚合信息,如执行次数、总执行时间等。

对于查看 SQL 语句在整个数据库中的性能表现很有帮助。

SELECT LAST_ACTIVE_TIME,PARSING_SCHEMA_NAME,SQL_TEXT,SQL_FULLTEXT
FROM v$sql
WHERE ROWNUM <= 10
and SQL_TEXT like ‘SELECT%’
ORDER BY LAST_ACTIVE_TIME DESC

Untitled 2.png
V$SQL_PLAN

包含了已编译的 SQL 语句的执行计划信息。

可以从中获得 SQL 语句的执行计划,以便分析查询优化和性能。

SELECT SQL_ID, PLAN_HASH_VALUE, OPERATION, OBJECT_NAME, OPTIONS
FROM V$SQL_PLAN
WHERE SQL_ID = ‘0kvg9h5gs0000’;

Untitled 3.png
常见问题

针对部分常见的问题,尝试提出解决方案
查不到数据

如果刚执行的SQL在视图中查不到,那应该考虑以下几方面问题:

查询已经从共享池中移除: Oracle 数据库会维护共享池,用于存储已编译的 SQL 语句。如果一个 SQL 语句在执行后很长时间没有被使用,可能会从共享池中移除,从而导致在 V$SQLAREA 中无法找到对应的记录。
语句文本过长: V$SQLAREA 视图中的 SQL_TEXT 列有一定的长度限制。如果您的查询语句非常长,可能会被截断,从而无法在此视图中完整显示。
查询的 SQL_ID 不正确: 确保您查询的是正确的 SQL_ID。在执行查询后,您可以在 Navicat 或其他工具中查看查询的详细信息,其中通常会显示 SQL_ID。
查询未被提交: 如果您在 Navicat 中执行了一个事务,并且查询还没有被提交,那么查询的信息可能还没有被完全记录到 V$SQLAREA 视图中。
权限问题: 某些情况下,用户可能没有足够的权限来访问 V$SQLAREA 视图,这可能导致查询不到相应的记录。
数据库版本问题: 不同版本的 Oracle 数据库可能在监视 SQL 语句方面有一些变化,可能会影响查询的显示。

针对这几点问题,在下面做单独的处理。
语句过长被截断

如果SQL语句过长,会被ORACLE进行截断。

如果出现截断,应当获取SQL_ID,再去V$SQLTEXT视图中进行查询
没有权限

管理员执行以下SQL赋予用户权限

GRANT SELECT ON V$SQL TO your_user;

原文地址:https://blog.csdn.net/qq_22201881/article/details/146239066
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/584567.html

相关文章:

  • 深度学习基础-onnxruntime推理模型
  • 如何通过自动化测试提升DevOps效率?
  • Axure PR 9 中继器 04 条件查询
  • MySQL与Redis的缓存一致性问题
  • 【linux】文件与目录命令 - stat
  • 使用Python在Word中生成多种不同类型的图表
  • JVM类加载机制和双亲委派
  • 江科大51单片机笔记【16】AD/DA转换(下)
  • Arbitrum之智能合约
  • Java 虚拟机优化指南:CMS垃圾回收器参数调优与性能监控工具详解
  • 【数据结构】初识集合框架及背后的数据结构(简单了解)
  • uniapp移动端图片比较器组件,仿英伟达官网rtx光追图片比较器功能
  • Java --- 根据身份证号计算年龄
  • 《基于大数据的营养果蔬推荐系统的设计与实现》开题报告
  • makefile详解
  • Discuz建站教程之论坛头部logo跳转链接怎么修改?
  • HCIA复习实验拓扑详细版
  • mysql下载与安装、关系数据库和表的创建
  • DeepSeek-R1:开源大模型的技术革命与行业影响分析
  • Python第二十课:生成对抗网络 | AI创造力觉醒