程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle打印trace文件以及分析trace文件方法(使用tkprof工具)

oracle打印trace文件以及分析trace文件方法(使用tkprof工具)

編輯:Oracle數據庫基礎

我們性能測試工程師一般在執行性能測試過程中,難免要監控後台數據庫等,比如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


      timed_statistics=true  允許sql trace 和其他的一些動態性能視圖收集與時間有關的參數、
      SQL>alter session set titimed_statistics=true
      max_dump_file_size=500 指定跟蹤文件的大小
      SQL> alter system set max_dump_file_size=500;
      user_dump_dest  指定跟蹤文件的路徑
      SQL> alter system set user_dump_dest=/oracle/Oracle/diag/rdbms/orcl/orcl/trace;
 
啟動sql trace 之後收集的信息包括
 
      1.解析、執行、返回數據的次數
      2.cpu和執行命令的時間
      3.物理讀和邏輯讀的次數
      4.系統處理的記錄數
      5.庫緩沖區錯誤
 
sql trace 的輸出結果
 
         count:提供OCI過程的執行次數
         CPU:  提供執行CPU所花的時間單位是秒
         Elapsed:提供了執行時所花的時間。單位是秒。這個參數值等於用戶響應時間
         Disk:提供緩存區從磁盤讀取的次數
         Query:以一致性模式從緩存區獲得數據的次數
         Current:以當前模式從緩存區獲得數據的次數
         ROWs: 返回調用或執行調用時,處理的數據行的數量。
 
TKPROF的使用
 
     tkprof 的目的是將sql trace 生成的跟蹤文件轉換成用戶可以理解的格式
    格式
      tkprof inputfile outputfile [optional | parameters ]
    參數和選項:
     explain=user/passWord 執行explain命令將結果放在SQL trace的輸出文件中
     table=schema.table 指定tkprof處理sql trace文件時臨時表的模式名和表名
     insert=scriptfile 創建一個文件名為scriptfile的文件,包含了tkprof存放的輸出sql語句
     sys=[yes/no] 確定系統是否列出由sys用戶產生或重調的sql語句
     print=number 將僅生成排序後的第一條sql語句的輸出結果
     record=recordfile 這個選項創建一個名為recorderfile的文件,包含了所有重調用的sql語句
     sort=sort_option 按照指定的方法對sql trace的輸出文件進行降序排序
             sort_option 選項
                prscnt  按解析次數排序
                prscpu  按解析所花cpu時間排序
                prsela  按解析所經歷的時間排序
                prsdsk  按解析時物理的讀操作的次數排序
                prsqry  按解析時以一致模式讀取數據塊的次數排序
                prscu   按解析時以當前讀取數據塊的次數進行排序
                execnt  按執行次數排序
                execpu  按執行時花的cpu時間排序
                exeela  按執行所經歷的時間排序
                exedsk  按執行時物理讀操作的次數排序
                exeqry  按執行時以一致模式讀取數據塊的次數排序
                execu   按執行時以當前模式讀取數據塊的次數排序
                exerow  按執行時處理的記錄的次數進行排序
                exemis  按執行時庫緩沖區的錯誤排序
                fchcnt  按返回數據的次數進行排序
                fchcpu  按返回數據cpu所花時間排序
                fchela  按返回數據所經歷的時間排序
                fchdsk  按返回數據時的物理讀操作的次數排序
                fchqry  按返回數據時一致模式讀取數據塊的次數排序
                fchcu   按返回數據時當前模式讀取數據塊的次數排序
                fchrow  按返回數據時處理的數據數量排序
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved