我們性能測試工程師一般在執行性能測試過程中,難免要監控後台數據庫等,比如Oracle數據庫。不會監控的性能測試工程師不是一個稱職的測試工程師,很多性能問題都是在監控後台應用以及後台數據庫過程中發現的,一部分是在業務邏輯上發現的。其中大部分問題都出在後台應用和後台數據庫方面。所以掌握好正確的有效的監控方法是有必要的。
當我們在通過quest公司的spotlight on oracle工具監控到某個sql語句執行的比較慢或者其他這樣那樣的問題時,我們就可以查看這個sql的trace文件來分析這個sql語句。當然Oracle中sql trace設置的開關默認是FALSE的,這需要我們手動打開(TRUE)。
1、登陸sqlplus /nolog,然後conn /as sysdba;
2、show parameter sql_trace;查看sql_trace參數是否為true(檢查是否有人打開過)
3、如果sql_trace=false,則執行alter session set sql_trace=true; 打開sql trace設置
4、然後執行相應的有問題的SQL語句
5、show parameter user_dump_dest;查看新生成的trace文件位置
6、alter session set sql_trace=false;然後關閉sql trace設置,如果不關閉的話,會對Oracle性能有響應,具體多大影響我沒有研究過,想想就知道啦。
7、exit;退出sqlplus
6、cd 新生成的trace文件位置,找到這個trc文件,但是這個trc文件中有很多二進制的東西,我們根本看不懂,除非天才測試人員。所以我使用tkprof工具編譯這個新生成的trc文件。具體語法如下:
[Oracle@localhost udump]$tkprof qctest_ora_6242.trc wangyong3.txt
TKPROF: Release 10.2.0.1.0 - Production on Wed Dec 8 02:28:06 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
[Oracle@localhost udump]$ ls -lrt
total 724
-rw-r--r-- 1 Oracle oinstall 1113 Dec 7 02:59 1.prf
-rw-r--r-- 1 Oracle oinstall 1113 Dec 7 03:02 wangyong.txt
-rw-r--r-- 1 Oracle oinstall 1113 Dec 7 03:04 wangyong1.txt
-rw-r----- 1 Oracle oinstall 656 Dec 7 05:06 qctest_ora_6216.trc
-rw-r----- 1 Oracle oinstall 685 Dec 7 05:06 qctest_ora_6243.trc
-rw-r----- 1 Oracle oinstall 1880 Dec 7 05:06 qctest_ora_6244.trc
-rw-r----- 1 Oracle oinstall 656 Dec 7 09:33 qctest_ora_6357.trc
-rw-r----- 1 Oracle oinstall 685 Dec 7 09:33 qctest_ora_6384.trc
-rw-r----- 1 Oracle oinstall 1898 Dec 7 09:33 qctest_ora_6385.trc
-rw-r--r-- 1 Oracle oinstall 36867 Dec 7 09:36 wangyong2.txt
-rw-r----- 1 Oracle oinstall 190542 Dec 7 09:38 qctest_ora_6404.trc
-rw-r----- 1 Oracle oinstall 628 Dec 8 01:57 qctest_ora_6182.trc
-rw-r----- 1 Oracle oinstall 685 Dec 8 01:57 qctest_ora_6209.trc
-rw-r----- 1 Oracle oinstall 1886 Dec 8 01:57 qctest_ora_6210.trc
-rw-r----- 1 Oracle oinstall 306871 Dec 8 02:27 qctest_ora_6242.trc
-rw-r--r-- 1 Oracle oinstall 71240 Dec 8 02:28wangyong3.txt
[Oracle@localhost udump]$
然後FTP這個wangyong3.txt文件到我的本地,使用UE打開,查看這個sql語句的執行效率等等。
額外補充知識要點(可要可不要):
初始化sql trace