当前位置:  数据库>oracle

使用AWR生成一条SQL的执行统计报告

    来源: 互联网  发布时间:2017-06-27

    本文导语: 我们都知道Oracle的AWR报告是一个很强大的功能通过分析AWR报告可以打出Oracle数据运行过程中出现的问题和可能存在的隐患。但是AWR报告中没有关于单个SQL执行计划、统计信息的详细描述,但不代表AWR不能提供这种功能。 本文介...

我们都知道Oracle的AWR报告是一个很强大的功能通过分析AWR报告可以打出Oracle数据运行过程中出现的问题和可能存在的隐患。但是AWR报告中没有关于单个SQL执行计划、统计信息的详细描述,但不代表AWR不能提供这种功能。

本文介绍的是如何使用AWR报告生成一条sql的详细执行统计报告。

实验环境11.2.0.4

1、调整AWR关于SQL收集的设置,调整的目的是因为默认情况下AWR并非捕获所有的sql语句,此调整是为了让AWR可以收集实验过程中的SQL语句

zx@ORCL>select * from dba_hist_wr_control;
 
      DBID SNAP_INTERVAL                                RETENTION                                TOPNSQL
---------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ------------------------------
1444351641 +00000 01:00:00.0                                +00008 00:00:00.0                              DEFAULT
 
zx@ORCL>exec dbms_workload_repository.modify_snapshot_settingS(topnsql=>'MAXIMUM');
 
PL/SQL procedure successfully completed.
 
zx@ORCL>select * from dba_hist_wr_control;
 
      DBID SNAP_INTERVAL                                RETENTION                                TOPNSQL
---------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ------------------------------
1444351641 +00000 01:00:00.0                                +00008 00:00:00.0                              MAXIMUM

2、手工创建一个AWR快照

zx@ORCL>exec dbms_workload_repository.create_snapshot;
 
PL/SQL procedure successfully completed.

3、创建测试表并在不同情况下执行测试sql,并找到测试sql的sql_id

zx@ORCL>create table t as select * from dba_objects;
 
Table created.
 
zx@ORCL>create unique index idx_unique_t on t(object_id);
 
Index created.
 
zx@ORCL>exec dbms_stats.gather_table_stats(USER,'T',CASCADE=>TRUE);
 
PL/SQL procedure successfully completed.
 
zx@ORCL>select object_name from t where object_id=123;
 
OBJECT_NAME
------------------------------
ECOL$
 
zx@ORCL>select sql_id,sql_text from v$sql where sql_text='select object_name from t where object_id=123';
 
SQL_ID                  SQL_TEXT
-------------------                    -----------------------------------------------
2dymmcx3kf7h1              select object_name from t where object_id=123

4、再次手工生成AWR快照

zx@ORCL>exec dbms_workload_repository.create_snapshot;
 
PL/SQL procedure successfully completed.

5、使用awrsqrpt.sql脚本生成对于sql_id=2dymmcx3kf7h1的sql的详细统计信息。过程与生成awrrpt类似,不同的是需要指定要生成报告的sql_id

zx@ORCL>@?/rdbms/admin/awrsqrpt
 
Current Instance
~~~~~~~~~~~~~~~~
 
  DB Id    DB Name    Inst Num Instance
----------- ------------ -------- ------------
 1444351641 ORCL      1 orcl
 
 
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type: text
 
Type Specified:                text
 
 
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
  DB Id    Inst Num DB Name      Instance  Host
------------ -------- ------------ ------------ ------------
* 1444351641      1 ORCL    orcl    rhel6
 
Using 1444351641 for database Id
Using          1 for instance number
 
 
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed.  Pressing without
specifying a number lists all completed snapshots.
 
 
Enter value for num_days: 1
 
Listing the last day's Completed Snapshots
 
                            Snap
Instance    DB Name      Snap Id    Snap Started    Level
------------ ------------ --------- ------------------ -----
orcl        ORCL      826 15 Feb 2017 09:25      1
                827 15 Feb 2017 10:00      1
                828 15 Feb 2017 10:00      1
                829 15 Feb 2017 10:04      1
                830 15 Feb 2017 10:09      1
                831 15 Feb 2017 11:00      1
                832 15 Feb 2017 11:02      1
                833 15 Feb 2017 11:07      1
 
 
 
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 832
Begin Snapshot Id specified: 832
 
Enter value for end_snap: 833
End  Snapshot Id specified: 833
 
 
 
 
Specify the SQL Id
~~~~~~~~~~~~~~~~~~
Enter value for sql_id: 2dymmcx3kf7h1
SQL ID specified:  2dymmcx3kf7h1
 
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrsqlrpt_1_832_833.txt.  To use this name,
press to continue, otherwise enter an alternative.
 
Enter value for report_name:
 
Using the report name awrsqlrpt_1_832_833.txt
 
 
WORKLOAD REPOSITORY SQL Report
 
Snapshot Period Summary
 
DB Name  DB Id  Instance    Inst Num Startup Time    Release    RAC
------------ ----------- ------------ -------- --------------- ----------- ---
ORCL          1444351641 orcl            1 15-Feb-17 09:14 11.2.0.4.0  NO
 
          Snap Id      Snap Time      Sessions Curs/Sess
        --------- ------------------- -------- ---------
Begin Snap:      832 15-Feb-17 11:02:01    27  1.3
  End Snap:    833 15-Feb-17 11:07:24    29  1.5
  Elapsed:        5.38 (mins)
  DB Time:        0.06 (mins)
 
SQL Summary                    DB/Inst: ORCL/orcl Snaps: 832-833
 
        Elapsed
  SQL Id      Time (ms)
------------- ----------
2dymmcx3kf7h1          1
Module: SQL*Plus
select object_name from t where object_id=123
 
      -------------------------------------------------------------
 
SQL ID: 2dymmcx3kf7h1            DB/Inst: ORCL/orcl Snaps: 832-833
-> 1st Capture and Last Capture Snap IDs
  refer to Snapshot IDs witin the snapshot range
-> select object_name from t where object_id=123
 
    Plan Hash      Total Elapsed            1st Capture  Last Capture
#  Value            Time(ms)  Executions      Snap ID    Snap ID
--- ---------------- ---------------- ------------- ------------- --------------
1  3476657867              1        1        833      833
      -------------------------------------------------------------
 
 
Plan 1(PHV: 3476657867)
-----------------------
 
Plan Statistics              DB/Inst: ORCL/orcl Snaps: 832-833
-> % Total DB Time is the Elapsed Time of the SQL statement divided
  into the Total Database Time multiplied by 100
 
Stat Name              Statement  Per Execution % Snap
---------------------------------------- ---------- -------------- -------
Elapsed Time (ms)              1          0.8    0.0
CPU Time (ms)                  0          0.0    0.0
Executions                    1          N/A    N/A
Buffer Gets                      3          3.0    0.0
Disk Reads                  0          0.0    0.0
Parse Calls                      1          1.0    0.1
Rows                          1          1.0    N/A
User I/O Wait Time (ms)              0          N/A    N/A
Cluster Wait Time (ms)                0          N/A    N/A
Application Wait Time (ms)            0          N/A    N/A
Concurrency Wait Time (ms)            0          N/A    N/A
Invalidations                    0          N/A    N/A
Version Count                    1          N/A    N/A
Sharable Mem(KB)                15          N/A    N/A
      -------------------------------------------------------------
 
Execution Plan
--------------------------------------------------------------------------------------------
| Id  | Operation          | Name    | Rows  | Bytes | Cost (%CPU)| Time      |
--------------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT      |          |    |    |  2 (100)|    |
|  1 |  TABLE ACCESS BY INDEX ROWID| T        |  1 |  30 |    2  (0)| 00:00:01 |
|  2 |  INDEX UNIQUE SCAN        | IDX_UNIQUE_T |  1 |    |  1  (0)| 00:00:01 |
--------------------------------------------------------------------------------------------
 
 
 
Full SQL Text
 
SQL ID      SQL Text
------------ -----------------------------------------------------------------
2dymmcx3kf7h select object_name from t where object_id=123
 
 
Report written to awrsqlrpt_1_832_833.txt

报告中列出了AWR记录中sql执行的统计信息和执行计划。

参考:

http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_workload_repos.htm#ARPLS69140

《基于Oracle的SQL优化》 PDF下载见


    
 
 

您可能感兴趣的文章:

  • 如何使用arm-uclibc-gcc将.c文件编译生成.a,将.c文件编译生成.cgi?
  • 如何使用gcc生成dynamic objs
  • 在Linux下使用GCC如何编译生成Windows下使用的DLL?
  • vim生成的.cpp~是什么文件?我使用vim编辑的时候出现了好多.cpp~文件
  • 请教各位高手,怎么才能使用XML生成一个数型菜单
  • 不知为何?使用aclocal不能生成aclocal.m4文件?请问是什么原因?
  • 使用GetInvalidFileNameChars生成文件名
  • 欢迎使用、加入Arrow项目开发--一个自动化代码生成工具
  • 寻 懂的redhat linux 下 . 使用automake和autoconf 自动生成Makefile 的 达人。
  • 请问在linux下面用flex生成的c程序在windows下可以正确使用吗?
  • oracle使用sql脚本生成csv文件案例学习
  • 如何在使用nohup的时候不让它生成nohup.out
  • 哪位高手指点一下:使用libxml2是否可以动态生成xml文件?
  • 使用log4j生成的.log文件,前缀中是不是必须含有当日日期?
  • LINUX 交叉编译后 生成的库如何使用 ?
  • gvim下如何使用已经用Ctags生成好的C++标准库的Tags?
  • 我想在任何地方使用package aaa;都能使aaa目录生成在同一个地方,而不是当前目录?
  • 在使用TC编译由 lex 生成的.c文件时遇到的一些问题,请高手指教!!!
  • 生成so共享库和使用
  • c++生成dll使用python调用dll的方法
  • linux下不使用sudo命令执行docker的操作步骤
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • SUSE10下,如何使用perl语言执行一条语句:从一台机器telnet到远端另一台机器,在远端机器上执行命令,并能获取到执行结果。请高手指点,Very 谢谢~
  • 关于在QT环境下加载gif图片的问题(可以显示,但是只有使用终端启动可执行文件才能显示,双击执行却不显示)这是为什么?
  • 如何使用crontab来定时执行一个.php的程序
  • 使用Statement.java里的execute执行存储过程问题
  • 关于如何使用shell自动执行一个sybase的存储过程
  • 使用终端远程执行程序的问题!
  • 使用java执行定时任务示例
  • 为什么socket程序使用gdb调试执行就接受不到数据了呢?
  • 有谁使用过cgywin吗?它有文字编辑的执行文件吗?
  •  
    本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.169IT.COM)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 网络使用情况统计工具 AsItHappens
  • 磁盘使用统计工具 ncdu
  • 磁盘使用情况统计工具 KDirStat
  • 请问统计当前进程数应该使用什麽命令?
  • 如何统计局域网内计算机的使用情况?
  • 磁盘使用情况统计及清理 WinDirStat
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • Python开发的单词频率统计工具wordsworth使用方法
  • unix系统下如何统计“文件系统使用率”
  • linux进程(线程)运行过程中如何获取本进程当前的内存使用状况,统计信息?
  • php统计时间和内存使用情况示例分享
  • 性能测试中应该用top命令统计cpu使用情况还是ps命令?
  • MYSQL中有关SUM字段按条件统计使用IF函数(case)问题
  • 使用python统计文件行数示例分享
  • 能否使用shell统计已存在文件的行数并写入当前文件
  • 使用shell脚本分析网站日志统计PV、404、500等数据
  • php统计时间与内存使用情况
  • 统计 cpu 内存 使用率的shell脚本代码
  • 牛人来帮忙解析一个shell脚本(用于统计一个进程的内存使用情况)
  • 统计网卡流量的两段shell脚本(使用ifconfig)
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Python不使用print而直接输出二进制字符串
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • Office 2010 Module模式下使用VBA Addressof
  • c#中SAPI使用总结——SpVoice的使用方法
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号