首页 > 其他分享 >[20231115]如何快速获取AWR中涉及到的表.txt

[20231115]如何快速获取AWR中涉及到的表.txt

时间:2023-11-17 20:56:26浏览次数:36  
标签:20231115 name AWR inst sql owner table txt id

[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,name,AWR,inst,sql,owner,table,txt,id
From: https://www.cnblogs.com/lfree/p/17839644.html

相关文章

  • pip生成与安装项目依赖包---提示:No such file or directory: 'requirement.txt'
    错误的原因:安装项目依赖包的文件命令: pipinstall-rrequirement.txt问题:ERROR:Couldnotopenrequirementsfile:[Errno2]Nosuchfileordirectory:'requirement.txt'解决:第一步,检查项目中是否存在文件“requirement.txt”,如果存在,则检查文件名与执行的文件名不一致......
  • [20231114]如何知道一条sql语句涉及到那些表.txt
    [20231114]如何知道一条sql语句涉及到那些表.txt--//别人问的问题,开始想看执行计划不就可以吗?当然一些计划可能仅仅涉及到索引。还有joinelimination可能仅仅看到1个表。--//对方的目的就是获取这条sql语句相关表,重新分析表看看。--//我想起查询表获得对应sql_id的脚本,脚本如下,参......
  • Python的txt文本操作-读、写
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 《文件篇》读写txt
    stdio.hfopen(),打开文件fopen(constchar*filename,constchar*mode)其中mode:"r",read:为输入操作打开文件,文件必须存在。"w",write:为输出操作创建一个空文件,如果文件已存在,则将已有文件内容舍弃,按照空文件对待。"a",append:为输出打开文件,输出操作总是再文件末尾追......
  • Python读取pdf、word、excel、ppt、csv和txt文件提取所有文本
    前言本文对使用python读取pdf、word、excel、ppt、csv、txt等常用文件,并提取所有文本的方法进行分享和使用总结。可以读取不同文件的库和方法当然不止下面分享的这些,本文的代码主要目标都是:方便提取文件中所有文本的实现方式。这些库的更多使用方法,请到官方文档中查阅。读取PD......
  • 秋月自语 20231115
    我今天想把自己的内心清理一下,做个断舍离。这个举动是来源于刘震云说的话。他说断舍离不是清理物品,最准确的解释是把内心的垃圾情绪释放掉。我的内心垃圾比较多,从小父母老是吵架的事要丢掉,你没什么事不要再想了,一切都过去了,现在都39岁了,时间太长了让他,让它过去吧。还有就是担心父......
  • JavaScript - js生成 txt 文件
    JavaScript-js生成txt文件/***方法定义*/functiondownload(filename,text){varelement=document.createElement('a');element.style.display='none';varcontent=encodeURIComponent(text);element.setAttribute('href&#......
  • Python requirements.txt安装用法介绍
    一、什么是requirements.txt文件在Python项目开发中,通常需要安装多个Python包。当我们在新的项目中启动一个虚拟环境,并且想要在新的虚拟环境中安装之前的依赖包时,就可以使用requirements.txt文件来完成。这个文件包含了所有需要安装的依赖包和其版本号。requirements.txt文件可以在......
  • cmake编译介绍--cmakelist.txt
    1.cmake编译简介 单个文件编译C/C++时:gccmain.c/g++main.cpp 多代码文件时:MakeFile,解决多文件编译难问题,运行make命令编译自动完成 cmake编译引入:根据一定的规则自动生成MakeFile的,也是有语法(cmake还是依赖make编译)。自动管理makefile文件,写起来也更方便、没有makefile......
  • 快速生成项目依赖包requirement.txt
    方式一#这个方法会导出所有的包不管项目用没用上pipinstallrequests#在虚拟环境中安装完所有项目依赖库后使用freeze命令将项目所依赖的所有第三方库导出到一个文件中可使用以下命令将依赖库导出到一个名为requirements.txt的文件中pipfreeze>requirements.txt#......