系统性能问题通常是一个综合性的问题,用户对系统的反馈,通常是一个“慢”字。对调优人员,要从网络、应用服务器、数据库服务器等多个层面进行定位,发现瓶颈。如果落实到数据库层面,执行SQL速度慢就是开发运维DBA所需要关注的范畴。
对系统SQL的调优,一般而言不是“一锤子”买卖。而且,性能问题SQL也都遵循“二八原则”,即百分之八十的性能问题,是由百分之二十的SQL语句引起的。所以,每次集中处理两到三个SQL,之后看效果再决定下一步处理的方式,是比较合适的做法。
特定SQL语句调优,是我们进行调优的重点。一个SQL语句,从执行计划、统计量、实际消耗情况、历史执行情况到CBO计算,都需要综合进行考量。如何“一键式”进行相关信息收集,是本篇要解决的问题。sqld360是一个开源数据收集软件,在不安装任何组件的情况下,可以针对一个特定SQL语句进行数据收集,提供进一步分析处理。
1、软件下载安装
sqld360是一个完全开源软件,可以从官方网站https://github.com/mauropagano/sqld360进行下载。下载介质是一个单独的zip文件。
上传到服务器上,进行解压。
[root@localhost ~]# cd /
[root@localhost /]# mkdir sql360d
[root@localhost /]# cd sql360d/
[root@localhost sql360d]# ls -l
total 188
-rw-r--r--. 1 root root 189858 Jun 17 14:13 sqld360-master.zip
使用unzip进行解压,之后更改权限。
[root@localhost sql360d]# unzip sqld360-master.zip
Archive: sqld360-master.zip
9c19c022a6439ed729335d156a2a332eb129c5a1
creating: sqld360-master/
inflating: sqld360-master/README.txt
creating: sqld360-master/js/
inflating: sqld360-master/js/SQLd360_img.jpg
(篇幅原因,有省略……)
inflating: sqld360-master/sql/sqld360_9h_one_org_chart.sql
inflating: sqld360-master/sqld360.sql
[root@localhost sql360d]#
[root@localhost sql360d]# cd ..
[root@localhost /]# chown -R oracle:oinstall sql360d/
[root@localhost /]# ls -l | grep sql360d/
[root@localhost /]# ls -l | grep sql360d
drwxr-xr-x. 3 oracle oinstall 4096 Jun 17 14:13 sql360d
2、执行脚本生成报告包
进入sqld360文件夹,执行sqlplus脚本。
[oracle@localhost ~]$ cd /sql360d/sqld360-master
[oracle@localhost sqld360-master]$ ls -l
total 48
drwxr-xr-x. 2 oracle oinstall 4096 Jun 8 09:14 js
-rwxr-xr-x. 1 oracle oinstall 28942 Jun 8 09:14 license.txt
-rw-r--r--. 1 oracle oinstall 2223 Jun 8 09:14 README.txt
drwxr-xr-x. 2 oracle oinstall 4096 Jun 8 09:14 sql
-rw-r--r--. 1 oracle oinstall 3361 Jun 8 09:14 sqld360.sql
如果需要分析一个sql语句,首先需要从v$sqlarea或者AWR报告中找到sql_id标示,之后以这个ID作为标示进行报告生成。
[oracle@localhost sqld360-master]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Wed Jun 17 14:21:27 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> @sqld360.sql 41hkr3jy35zn6 T
(若干输出)
6579 06-17-2015 14:25 00287_sqld360_sicsdb_41hkr3jy35zn6_5_sql_monitor_reports_sqlmon.zip
38246 06-17-2015 14:25 00288_sqld360_sicsdb_41hkr3jy35zn6_5_tcb_testcase_tcb.zip
22621 06-17-2015 14:25 00289_sqld360_sicsdb_41hkr3jy35zn6_5_raw_data.html
87420 06-17-2015 14:25 00290_sqld360_sicsdb_41hkr3jy35zn6_5_raw_data.txt
75786 06-17-2015 14:25 00291_sqld360_sicsdb_41hkr3jy35zn6_5_raw_data.csv
10240 06-17-2015 14:25 00292_sqld360_sicsdb_41hkr3jy35zn6_5_eadam_ash.tar
7096 06-17-2015 14:25 99999_sqld360_41hkr3jy35zn6_drivers.zip
1244946 06-17-2015 14:25 00005_sqld360_sicsdb_41hkr3jy35zn6_alert_sicsdb.log
2519140 06-17-2015 14:25 00003_sqld360_sicsdb_41hkr3jy35zn6_tkprof_sort.txt
139 06-17-2015 14:25 00000_readme_first.txt
--------- -------
27165029 296 files
在目录中,会生成压缩包文件。
[oracle@localhost sqld360-master]$ ls -l
total 1420
drwxr-xr-x. 2 oracle oinstall 4096 Jun 8 09:14 js
-rwxr-xr-x. 1 oracle oinstall 28942 Jun 8 09:14 license.txt
-rw-r--r--. 1 oracle oinstall 2223 Jun 8 09:14 README.txt
drwxr-xr-x. 2 oracle oinstall 4096 Jun 8 09:14 sql
-rw-r--r--. 1 oracle oinstall 1402369 Jun 17 14:25 sqld360_sicsdb_41hkr3jy35zn6_localhost_20150617_1424.zip
-rw-r--r--. 1 oracle oinstall 3361 Jun 8 09:14 sqld360.sql
3、结果显示
加压之后,会发现是一系列html、txt和cvs文件构成的文件包。从其中的readme.txt,可以发现初始文件。
1. Unzip sqld360_sicsdb_41hkr3jy35zn6_localhost_20150617_1424.zip into a directory
2. Review 00001_sqld360_sicsdb_41hkr3jy35zn6_index.html
打开index.html文件,可以发现所有分析项目。
从上面项目中,可以发现对sqld360对SQL语句的分析维度:
ü 数据库配置和SQL语句信息;
ü 执行计划和过程统计量,包括时间历史信息;
ü 对象统计量,基于CBO优化器基础;
ü SQL性能信息;
ü 各种其他组件工具;
下面根据几个主要功能模块截图:
数据库信息:
SQL子游标执行计划:
执行计划分项统计:
数据历史统计量信息:
4、结论
SQLD360是第三方提供的SQL性能调优小工具,在进行复杂SQL处理或者求助第三方时,是一个不错的选择。