[20231115]如何快速获取AWR中涉及到的表.txt --//昨天看了链接:如何快速获取AWR中涉及到的表=>https://www.cnblogs.com/jyzhao/p/how-to-get-tables-in-awr.html --//作者介绍的方法是直接从awr报表抽取from后面的信息,grep写法还很少用. grep -o -i '\bFROM\s\+\(\w\+\)' awr.html | sed -e 's/FROM //i' | sort -u -o 表示只输出匹配的部分 -i 表示不区分大小写 \b 表示单词边界 FROM 表示匹配 FROM 关键字 \s+ 表示一个或多个空白字符 (\w+) 表示一个或多个字母数字字符(表名或视图名) sort -u 表示排序并去重 --//这样抽取出来除了表名还有视图名等等.能否换一种方式如果知道sql_id抽取表名呢?很明显这样抽取还包含视图名. --//另外我测试一下: $ grep -o -i '\bfrom\s\+\(\w\+\)' awr.html --//根本抽取不到任何信息,不知道对方如何操作的. --//我想起查询表获得对应sql_id的脚本,脚本如下,参数5,6对应owner,table_namne. SELECT /*+ MATERIALIZE ordered use_hash(d) use_hash(c) */ DISTINCT c.kglobt03 sql_id FROM sys.x$kglob o ,sys.x$kgldp d ,sys.x$kglcursor c WHERE o.inst_id = USERENV ('Instance') AND d.inst_id = USERENV ('Instance') AND c.inst_id = USERENV ('Instance') AND o.kglnaown = upper(nvl('&5',user)) AND o.kglnaobj = upper('&6') AND d.kglrfhdl = o.kglhdadr AND c.kglhdadr = d.kglhdadr; --//按照该脚本修改一下就可以实现该功能。 $ cat sqlt.sql column owner format a20 column table_name format a30 column ot format a50 with sqla as ( SELECT /*+ MATERIALIZE leading(c d o ) use_nl(d) use_nl(o) */ DISTINCT o.kglnaown owner, o.kglnaobj table_name FROM sys.x$kglob o ,sys.x$kgldp d ,sys.x$kglcursor c WHERE o.inst_id = USERENV ('Instance') AND d.inst_id = USERENV ('Instance') AND c.inst_id = USERENV ('Instance') AND d.inst_id=o.inst_id AND c.inst_id=d.inst_id and c.kglobt03 = '&1' AND d.kglrfhdl = o.kglhdadr AND c.kglhdadr = d.kglhdadr) select owner,table_name,owner||'.'||table_name ot from dba_tables where (owner,table_name) in (select * from sqla); --//参数1 对应sql_id,脚本仅仅查询支持一个sql_id.仅仅需要建立一张表包含awr出现的sql_id就ok了. --//这很容易收集,DBA_HIST_SQLTEXT或者dba_hist_sqlstat基本包含全部出现的sql_id. and c.kglobt03 in (select sql_id from sqlb) --//提示给修改一下: $ cat sqltt.sql column owner format a20 column table_name format a30 column ot format a40 with sqlb as ( SELECT /*+ MATERIALIZE */ distinct sql_id from DBA_HIST_SQLTEXT), sqla as ( SELECT /*+ MATERIALIZE leading(c d o) use_hash(d) use_hash(c) */ DISTINCT o.kglnaown owner, o.kglnaobj table_name FROM sys.x$kglob o ,sys.x$kgldp d ,sys.x$kglcursor c WHERE o.inst_id = USERENV ('Instance') AND d.inst_id = USERENV ('Instance') AND c.inst_id = USERENV ('Instance') and c.kglobt03 in ( select sql_id from sqlb) AND d.kglrfhdl = o.kglhdadr AND c.kglhdadr = d.kglhdadr) select owner,table_name,owner||'.'||table_name ot from dba_tables where (owner,table_name) in (select * from sqla); --//当然这样抽取一定要在预热之后,sql语句已经在共享池的情况下.大部分表都能捕捉到.rac环境两边都需要执行1次. --//我在生产系统测试一下,运行也不是很慢. --//顺便说一下涉及到X$我的脚本是抽取不到的.
[20231115]如何快速获取AWR中涉及到的表.txt
来源:这里教程网
时间:2026-03-03 19:01:31
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 读懂搜狐财报里的“生长密码”
读懂搜狐财报里的“生长密码”
26-03-03 - oracle查询sql执行耗时、执行时间、sql_id
oracle查询sql执行耗时、执行时间、sql_id
26-03-03 - Oracle Exadata简介
Oracle Exadata简介
26-03-03 - PC产业岔路口:传统PC唱罢,AI PC登场
PC产业岔路口:传统PC唱罢,AI PC登场
26-03-03 - 甲骨文:AI驱动的复兴之路
甲骨文:AI驱动的复兴之路
26-03-03 - 优必选、小鹏、小米,人形机器人“奋勇争先”
优必选、小鹏、小米,人形机器人“奋勇争先”
26-03-03 - 阿里大文娱整合背后,行业产业化周期正式开启
阿里大文娱整合背后,行业产业化周期正式开启
26-03-03 - 记一次rac TNS-12541,ORA-12520,ORA-12521 错误处理
- ORA-02354 ORA-01555 ORA-22924
ORA-02354 ORA-01555 ORA-22924
26-03-03 - 修改主机时区对Oracle的影响分析
修改主机时区对Oracle的影响分析
26-03-03
