Home Database Mysql Tutorial 通过Shell脚本抓取AWR报告中的问题SQL

通过Shell脚本抓取AWR报告中的问题SQL

Jun 07, 2016 pm 02:54 PM

awr报告中的sql明细部分基本必看的部分,尤其是SQL Order by Elapsed time这个部分,能够很清晰的看到哪些sql语句占用了较多的DB

awr报告中的sql明细部分基本必看的部分,尤其是SQL Order by Elapsed time这个部分,能够很清晰的看到哪些sql语句占用了较多的DB time,所占的比例。这个可以作为调优时的一个重要参考,可以有针对性的来看哪些sql需要格外关注。

比如说我们得到了一个awr报告,Elapsed time这个部分的内容如下。可以很明显看出sql_id为dfb15m5s2uwmc的sql需要格外关注,因为它占用了近一半的DB time.

Elapsed Time (s)Executionsper Exec (s)%Total%CPU%IOSQL IdSQL ModuleSQL Text

3,601.90 0   48.52 99.77 0.16 dfb15m5s2uwmc JDBC Thin Client SELECT :1, machinecode, cn, co...

1,612.04 21 76.76 21.71 99.97 0.00 8tmf11fvxy09j JDBC Thin Client SELECT ROUND(AVG(SUM(END_TIME...

1,593.80 20 79.69 21.47 99.97 0.00 cy55p6nrd31db JDBC Thin Client SELECT MAX(USER_CLASS) FROM S...

298.34 20 14.92 4.02 99.96 0.00 29tdwfv5d9s4f JDBC Thin Client SELECT NVL(SUM(OTAL), ...

awr提供的功能集很完整,如果我们能够更快的定位出来哪些sql占用了较多的DB time而不用每次都去生成一个awr报告,其实也是可以实现的,我们可以定制。

部分日志如下:
. . exported "SYS"."WRH$_SQL_PLAN"                      432.1 KB    1089 rows
 . . exported "SYS"."WRH$_LATCH":"WRH$_LATCH_3645037571_0"  198.6 KB    3871 rows
 . . exported "SYS"."WRH$_SYSMETRIC_HISTORY"              180.1 KB    3600 rows

可以看到awr的基表是wrh$开头的,这个和我们常用的数据字典表息息相关。
 比如sqlstat,数据字典里的历史数据就把wrh$换位dba_hist即可。
 我们查看dba_hist_sqlstat的基表,其实发现就是wrh$这样的基表。
$ ksh showdict.sh DBA_HIST_SQLSTAT
 object_details
 OWNER                          OBJECT_ID DATA_OBJECT_ID OBJECT_NAME                    OBJECT_TYPE
 ------------------------------ ---------- -------------- ------------------------------ -------------------
 SYS                                  9409                DBA_HIST_SQLSTAT              VIEW
 PUBLIC                              9410                DBA_HIST_SQLSTAT              SYNONYM
 synonym_details
 OWNER                          SYNONYM_NAME
 ------------------------------ ------------------------------
 PUBLIC                        DBA_HIST_SQLSTAT

view_details
 VIEW_NAME                      TEXT
 ------------------------------ --------------------------------------------------------------------------------
 DBA_HIST_SQLSTAT              select sql.snap_id, sql.dbid, sql.instance_number,
                                xxxx  from WRM$_SNAPSHOT sn, WRH$_SQLSTAT sql
                                  where    sn.snap_id        = sql.snap_id
                                        and sn.dbid            = sql.dbid
                                        and sn.instance_number = sql.instance_number
                                        and sn.status          = 0

那么我们就可以直接从这些数据字典历史表里去查看所需要的信息而不用每次都重新生成一个awr报告。
 当然实现的过程也略微费了一些周折,把脚本稍一加工,就成了shell版本。
sqlplus -s $DB_CONN_STR@$SH_DB_SID  break on db_name
 set pages 50
 set linesize 100
 col elapsed_time format a10
 col per_total format a10
 prompt
 prompt Current Instance
 prompt ~~~~~~~~~~~~~~~~
 select d.dbid            dbid
      , d.name            db_name
      , i.instance_number inst_num
      , i.instance_name  inst_name
  from v\$database d,
        v\$instance i;
 select snap_id,sql_id,EXECUTIONS_DELTA,max_elapsed elapsed_time,per_total||'%' per_total from
 (select distinct snap_id,sql_id,EXECUTIONS_DELTA,trunc(max(ELAPSED_TIME_DELTA) OVER (PARTITION BY snap_id,sql_id )/1000000,0)||'s' max_elapsed,
  trunc((max(ELAPSED_TIME_DELTA) OVER (PARTITION BY snap_id,sql_id))/(SUM(ELAPSED_TIME_DELTA) OVER (PARTITION BY snap_id )),2)*100 per_total
  from dba_hist_sqlstat where snap_id=$1
  order by 5 desc
 ) where rownum

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Reduce the use of MySQL memory in Docker Reduce the use of MySQL memory in Docker Mar 04, 2025 pm 03:52 PM

This article explores optimizing MySQL memory usage in Docker. It discusses monitoring techniques (Docker stats, Performance Schema, external tools) and configuration strategies. These include Docker memory limits, swapping, and cgroups, alongside

How to solve the problem of mysql cannot open shared library How to solve the problem of mysql cannot open shared library Mar 04, 2025 pm 04:01 PM

This article addresses MySQL's "unable to open shared library" error. The issue stems from MySQL's inability to locate necessary shared libraries (.so/.dll files). Solutions involve verifying library installation via the system's package m

How do you alter a table in MySQL using the ALTER TABLE statement? How do you alter a table in MySQL using the ALTER TABLE statement? Mar 19, 2025 pm 03:51 PM

The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

Run MySQl in Linux (with/without podman container with phpmyadmin) Run MySQl in Linux (with/without podman container with phpmyadmin) Mar 04, 2025 pm 03:54 PM

This article compares installing MySQL on Linux directly versus using Podman containers, with/without phpMyAdmin. It details installation steps for each method, emphasizing Podman's advantages in isolation, portability, and reproducibility, but also

What is SQLite? Comprehensive overview What is SQLite? Comprehensive overview Mar 04, 2025 pm 03:55 PM

This article provides a comprehensive overview of SQLite, a self-contained, serverless relational database. It details SQLite's advantages (simplicity, portability, ease of use) and disadvantages (concurrency limitations, scalability challenges). C

How do I configure SSL/TLS encryption for MySQL connections? How do I configure SSL/TLS encryption for MySQL connections? Mar 18, 2025 pm 12:01 PM

Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

Running multiple MySQL versions on MacOS: A step-by-step guide Running multiple MySQL versions on MacOS: A step-by-step guide Mar 04, 2025 pm 03:49 PM

This guide demonstrates installing and managing multiple MySQL versions on macOS using Homebrew. It emphasizes using Homebrew to isolate installations, preventing conflicts. The article details installation, starting/stopping services, and best pra

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? Mar 21, 2025 pm 06:28 PM

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

See all articles