[20231115]如何快速獲取AWR中涉及到的表.txt
[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$我的指令碼是抽取不到的.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2995777/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20201106]奇怪的awr報表.txt
- [20231114]如何知道一條sql語句涉及到那些表.txtSQL
- 【MSSQL】SSMS快速獲取表結構SQLSSM
- [20231115]建立enable novalidate約束2.txt
- 獲取AWR的指令碼,可以在crontab裡面部署指令碼
- Java如何快速獲取類附帶的註解Java
- [20230303]生成相關備庫的awr報表(補充說明).txt
- 如何獲取 jenkins 中的憑證Jenkins
- [20181203]drop table後如何獲得表結構.txt
- Java 獲取Excel中的表單控制元件JavaExcel控制元件
- SOLIDWORKS如何獲取模型中的引數Solid模型
- 如何獲取 Linux 中的目錄大小Linux
- 如何在 Janus 中獲取 WebRTC 的流Web
- 智慧名片CRM系統是如何快速獲取客戶的?
- Vue入門指南-08 Vue中的標籤/如何獲取DOM元素(快速上手vue)Vue
- [20230921]為什麼執行計劃不再awr中.txt
- python中獲取如何Series值Python
- 在MySQL中,如何獲取資料庫下所有表的資料行數?MySql資料庫
- JDBC獲取表的列數JDBC
- [20230203]完善awr.sql指令碼.txtSQL指令碼
- [20200115]重新建立awr report.txt
- Rust中如何獲取最大字串?Rust字串
- MySQL 如何獲取執行中的Queries資訊?MySql
- 在Linux中,如何獲取CPU的總核心數?Linux
- 如何用jquery獲取DIV中的TR和TDjQuery
- 如何優雅獲的獲取不同系統版本中的程式資訊
- [20181024]修改awr收集資訊設定.txt
- 快速獲取昨天的日期(time模組使用)
- 獲取表空間DDL
- [20210312]如何取整月日期.txt
- keycloak~RequiredActionProvider中獲取表單認證前URL的引數UIIDE
- MySQL如何快速獲取binlog的開始時間和結束時間MySql
- android開發中如何動態獲取listview中的item的值AndroidView
- BIRT 如何用 rest api 介面獲取 json 做報表RESTAPIJSON
- 如何獲取java類中的欄位修飾符?Java
- 如何獲取安全獲取蘋果udid,imei蘋果
- Mac進階必看:如何利用Automator快速獲取檔案路徑Mac
- Oracle獲取所有表名資訊和獲取指定表名欄位資訊Oracle