+ -
当前位置:首页 → 问答吧 → 给大家推荐一个sql 调优工具--mytun

给大家推荐一个sql 调优工具--mytun

时间:2010-08-10

来源:互联网

本帖最后由 dbhelper 于 2010-08-10 13:12 编辑

给大家推荐一个sql 调优工具


软件下载地址 http://dbhelper.itpub.net/get/26969/mytun.zip

评论:
http://www.itpub.net/viewthread.php?tid=1333917&pid=16220636&page=1&extra=page%3D1

写这个工具的原因: 看到用户发来的statspack/awr报告时, 发现sql报告只采集现象和结果, 但并未采集问题的原因相关信息, 还需dba去现场采集很多数据才能定位问题, 即延长了排除故障的时间, 又耗费了人力和财力。 于是写了这个工具来方便自己用, 这样后,自己团队的工作效率大大提高。


mytun区别于awr

oracle的awr只能看的plan变化,确没采集相关对象(表、列、index)的统计信息 ,及其变化, 所以使plan变化的本质原因并不清晰。

mytun 可采集相关对象统计信息的变化,可发现plan变化的原因。mytun是对awr的一个补充, 侧重对sql情况,执行原因的相关数据信息的收集, 为远程的问题诊断提供帮助。


-----------------------mytun生成报表内容-----------------

sql %            :  某sql在各类别的排名
sql total        :  某sql耗用资源量。
sql per execs    :  某sql一次执行的平均消耗

sql的原始文本
sql窥视绑定变量后的sql文本
sql在v$sqlarea的情况---sql的执行情况
sql在v$sqlarea_plan_hash(一个sql可能多种计划)---sql在不同计划下的执行情况
sql在dba_hist_sql_plan   ----sql的历史计划(一般是 7-30天内的)
sql在wrh$_sqlstat        -----在历史时间各时段的执行情况(频次, 计划hash, 效率等)
sql在v$sql_bind_capture  ------带入的绑定变量
sql在dba_hist_sqlbind   -------历史时段的绑定变量
sql 涉及的对象 :
       1. dba_tables --表的分析
       2. dba_segments  --段的大小,
       3. 对象的产生, 修改时间等
       4. sql所涉及对象:
           4.1 表的index 统计分析情况
           4.2 表的index 的中包含的列
           4.3 table的定义
           4.4 table的当前统计值, 历史统计值
           4.5 table的列的当前统计值, 历史统计值
           4.6 列的柱状图, 历史柱状图。




mytun使用说明
http://dbhelper.itpub.net/

mytun2.0简介: 是一款sql调优工具, 它可快速采集(或远程)sql优化所需的信息, 定位产生错误执行计划的原因,
为远程问题诊断提供新的途径。采集信息包括: plan, 变量值, 分析信息(表/列/索引), 柱状图,
段信息(表/分区/索引),历史执行情况等。

适用范围 : 只适用于Oracle10g的各版本及平台。

目录

一. mytun.zip把上传至数据库服务器, 解压后会生成mytun目录和几个文件。
二. 安装软件包(第一次使用前需要安装, 以后使用就不需要了) 。
三. 使用mytun
附件1: 运行mytunrpt.sql提示过程
附件2: 运行mytunrpt.sql报告结果

四. 卸载mytun

一. mytun.zip把上传至数据库服务器, unzip解压后会生成mytun目录和几个文件。

$ unzip mytun.zip
Archive: mytun.zip
creating: mytun/
inflating: mytun/awrinpnm.sql
inflating: mytun/awrinput.sql
inflating: mytun/awrrpti.sql
inflating: mytun/checkmytun.sql
inflating: mytun/mytun.sql
inflating: mytun/mytunrpt.sql
inflating: mytun/p_mytun1.plb
inflating: mytun/p_mytun2.plb
inflating: mytun/running_sql.sql

二. 安装软件包(第一次使用时需要安装, 以后使用就不需要了)

方法1
$cd mytun
$sqlplus "/ as sysdba"

SQL> @p_mytun1.plb
Package created.

SQL> @p_mytun2.plb
Package body created.

方法2
sqlplus "/ as sysdba" @p_mytun1.plb
sqlplus "/ as sysdba" @p_mytun2.plb


三.使用mytun


使用mytun的方式有3种:
方式1: 采集历史时段的数据库性能sql报告
sqlplus "/ as sysdba"
SQL> @mytunrpt.sql;
《下面的附件1显示在运行mytunrpt.sql提示过程》
注意: 如果没有 执行(二. 安装软件包 ), 运行mytunrpt.sql时会提醒安装。
note: please first install p_mytun1.plb in another session, method: sqlplus "sys/change_on_install as sysdba" @p_mytun1.plb
note: please second install p_mytun2.plb in another session, method: sqlplus "sys/change_on_install as sysdba" @p_mytun2.plb

方式2: 采集正在运行的sql报告
sqlplus "/ as sysdba"
SQL> @running_sql.sql;


方式3:根据sql_id直接查询。 会生成一个clob的报告。

3.1 在工具(PL/SQL Developer等工具)中, 查询会生成一个clob的报告。
select mytun.mysql( (select dbid from v$database),
(select instance_number from v$instance),
'056j4snsvphk5' , --sql_id
100)
from dual;

100: 每个查询子集返回的行数, 建议值100

3.2 在工具(sqlplus 环境中)中, 把结果输出到文件中。
sqlplus "/ as sysdba"
set long 999999999
set heading off
set pages 40000
set feedback off
set echo off
SET LONGCHUNKSIZE 500
set linesize 500
SET LOBOFFSET 1
spool /xxx/xxx/a.txt;
select mytun.mysql( (select dbid from v$database),
(select instance_number from v$instance),
'056j4snsvphk5' , --sql_id
100)
from dual;
spool off;


四. 卸载mytun

$ sqlplus "/ as sysdba"

SQL>  drop package mytun;

Package dropped.

[ 本帖最后由 dbhelper 于 2010-8-10 10:51 编辑 ]

作者: dbhelper   发布时间: 2010-08-10

顶  不错  支持

作者: duolanshizhe   发布时间: 2010-08-10

楼主自己写的吗?不错。有发展前途。

作者: renxiao2003   发布时间: 2010-08-10

是楼主写的工具, 谢谢版主的夸奖, 我想让大家提提改进意见,谢谢

作者: dbhelper   发布时间: 2010-08-10