隨筆-13  評論-28  文章-63  trackbacks-0

          我們在分析應用程序性能問題的時候,更多地需要關注其中SQL語句的執行情況,因為通常應用程序的性能瓶頸會在數據庫這邊,因此數據庫的sql語句是我們優化的重點。利用Oracle的10046事件,可以跟蹤應用程序所執行的SQL語句,并且得到其解析次數.執行次數,CPU使用時間等信息。這對我們分析、定位數據庫性能問題是非常有用的。

          具體的方法如下:

          1、首先獲得spid、sid、serial#,machine為連接oracle的機器名

          SQL> select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr =

          b.addr and a.machine='SYS_F85';
           
          SPID                SID    SERIAL#   MACHINE
          ----------------------------------------------------------------
          24722                15        196 SYS_F85


          2、利用10046事件開始跟蹤

          SQL>execute sys.dbms_system.set_ev(15,196,10046,1,'');
          PL/SQL procedure successfully completed.

          參數說明:
          15:SID
          196:SERIAL#

          注意這里必須以sysdba登錄。

          3、在應用程序中執行對數據庫的操作,比如性能較差的一些查詢、插入、刪除操作等。

          4、關閉事件結束跟蹤
          SQL>execute sys.dbms_system.set_ev(15,196,10046,0,'');

          PL/SQL procedure successfully completed.

          5、獲得產生的跟蹤文件所在的目錄
          SQL> select value from v$parameter where name = 'user_dump_dest';

          VALUE

          --------------------------------------------------------------------------------
          /oracle/admin/ora9i/udump

          轉到該目錄下可以看到生成了一個ora9i_ora_24722.trc文件,此處的24722即SPID的值。

          6、在命令行下執行oracle的tkprof命令,將ora9i_ora_24722.trc轉化為文本文件。如:
          $ tkprof  ora9i_ora_24722.trc ora9i_ora_24722.sql

          此時在ora9i_ora_24722.sql文件中,就可以看到剛才執行應用程序時所執行的sql語句的執行次數、

          CPU使用時間等數據。

          引用:http://www.aygfsteel.com/xingcyx/archive/2007/01/09/92638.html

          posted on 2008-12-25 19:59 七匹狼 閱讀(416) 評論(0)  編輯  收藏 所屬分類: oracle
          主站蜘蛛池模板: 宜春市| 英超| 土默特左旗| 蕉岭县| 嘉黎县| 宝坻区| 巴彦淖尔市| 邵东县| 盖州市| 兴海县| 赣榆县| 淅川县| 商南县| 昌吉市| 紫云| 巴马| 弥勒县| 三亚市| 桃江县| 峨眉山市| 鲁甸县| 新密市| 龙海市| 亳州市| 陆川县| 开封市| 昭苏县| 安仁县| 成安县| 泸水县| 万年县| 丹棱县| 无极县| 嘉禾县| 治多县| 托克逊县| 孝感市| 江油市| 米林县| 龙里县| 清水县|