暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

获取sql_id的方法

原创 让世界为你转身 2024-11-20
55

语句的SQL_ID可以在AWR或ASH报告中找到,或者使用V$SQL视图从数据库数据字典中找到。
1.如果SQL可以用一个特定的可识别的字符串或某种独特的注释来识别,如:/* TARGET SQL */,那么这将使其更容易被找到。

SELECT /* TARGET SQL */ * FROM dual; SELECT sql_id, plan_hash_value, substr(sql_text,1,40) sql_text FROM v$sql WHERE sql_text like 'SELECT /* TARGET SQL */%'; SQL_ID PLAN_HASH_VALUE SQL_TEXT ------------- --------------- ---------------------------------------- 0xzhrtn5gkpjs 272002086 SELECT /* TARGET SQL */ * FROM dual --替换变量的方式查询 SELECT sql_id, plan_hash_value, SUBSTR(sql_text,1,40) Text FROM v$sql WHERE sql_text LIKE '%&An_Identifiable_String%';

2.如果在v$sql中找不到这个SQL,你可以在AWR历史视图中找到它: DBA_HIST_SQLTEXT 和 DBA_HIST_SQLSTAT

SELECT s.sql_id, s.plan_hash_value, t.sql_text, s.snap_id FROM dba_hist_sqlstat s, dba_hist_sqltext t WHERE s.dbid = t.dbid AND s.sql_id = t.sql_id AND sql_text LIKE 'SELECT /* TARGET SQL */%' ORDER BY s.sql_id;
  1. 从sqlarea和sql_his联合查询,快速获取
SET LINESIZE 250 PAGESIZE 600 COL sql_text FORMAT a150 TRUNC COL sql_id FORMAT a14 SELECT * FROM (SELECT 'sqlarea' AS sql_loc, sql_id, TO_CHAR (SUBSTR (sql_text, 1, 200)) AS sql_text FROM gv$sqlarea WHERE UPPER (sql_text) LIKE UPPER ('%查询的sql%') AND sql_text NOT LIKE '%SQL_TEXT%' UNION SELECT 'sql_his', sql_id, TO_CHAR (SUBSTR (sql_text, 1, 200)) FROM dba_hist_sqltext WHERE UPPER (sql_text) LIKE UPPER ('%查询的sql%')) WHERE ROWNUM <= 100;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论