<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-13  評論-28  文章-63  trackbacks-0
    在診斷數(shù)據(jù)庫系統(tǒng)性能的過程中,總會涉及到跟蹤效率低下的sql語句,現(xiàn)在就如何跟蹤sql語句來做一個簡單的總結(jié)。權(quán)做拋磚引玉之用。   如果我們可以修改應(yīng)用系統(tǒng)的源代碼,則可以直接在程序中加入如下的語句:

    1)alter session set timed_statistics=true; /*適用于Oracle 7.3以后的版本*/
    2)alter session set max_dump_file_size=unlimited ; /*適用于Oracle 7.3以后的版本*/
    3)alter session set tracefile_identifier='POX20031031a'; /*適用于Oracle 8.1.7以后的版本*/
    4)alter session set events '10046 trace name context forever, level 8'; /*在這里編寫應(yīng)用程序的代碼*/
    5)alter session set events '10046 trace name context off';   

    在上述語句中,
    語句1)是把該會話的時間統(tǒng)計(jì)打開,該參數(shù)默認(rèn)為false.在Oracle 7.3之前的版本中,不能在會話級設(shè)置該參數(shù),只能修改初始化文件然后重新啟動數(shù)據(jù)庫,這樣將在實(shí)例級打開時間統(tǒng)計(jì)。
      
    語句2)是把跟蹤文件的大小設(shè)置成操作系統(tǒng)所允許的最大尺寸,這樣可以防止跟蹤文件在完成所需要的跟蹤之前被填充滿,此外需要注意的是確保存放跟蹤文件的目錄要有足夠的空間,否則將會收到“文件系統(tǒng)已滿”錯誤。  

    語句3)的作用是使生成的跟蹤文件名稱中包含'POX20031031a'字符串,這樣可以使你很容易的找到所需的跟蹤文件,該參數(shù)在Oracle 8.1.7之后可用。  語句4)和語句5)的作用分別是打開和關(guān)閉跟sql跟蹤,你可以在這兩個語句之間寫入應(yīng)用程序的代碼,這些代碼的執(zhí)行情況都將被跟蹤。需要注意的是語句4)的level關(guān)鍵字,它用來指定跟蹤級別,一共有0,1,2,4,8,12六個級別可以設(shè)置,0相當(dāng)于關(guān)閉跟蹤;1是輸出一般的跟蹤信息,不包括綁定變量和等待信息;2和1相同;4是在級別1的基礎(chǔ)上增加綁定變量信息;8是在級別1的基礎(chǔ)上增加等待信息;級別12是輸出包含級別1,4,8的所有信息。
    ?  如果應(yīng)用程序的代碼無法修改或者是不想去修改,則可以在其他會話中打開對特定會話的跟蹤,方法如下:  
    1)sys.dbms_system.set_bool_param_in_session(:sid, :serial,'timed_statistics', true); 
     
    2)sys.dbms_system.set_int_param_in_session( :sid, :serial,'max_dump_file_size', 2147483647);  打開和關(guān)閉跟蹤的第一種方法(oracle推薦):
     
    3.1)sys.dbms_support.start_trace_in_session(:sid, :serial,waits=>true, binds=>false);  /* 在此期間運(yùn)行要跟蹤的應(yīng)用程序*/   

    4.1)sys.dbms_support.stop_trace_in_session(:sid, :serial);  
    打開和關(guān)閉跟蹤的第二種方法:  
    3.2)sys.dbms_system.set_ev(:sid, :serial, 10046, 8, '');  /*在此期間運(yùn)行要跟蹤的應(yīng)用程序*/   
    3.2)sys.dbms_system.set_ev(:sid, :serial, 10046, 0, '');  
     
    以上語句中的:sid和:serial分別代表所要跟蹤的會話的ID和序列號,這些信息可以從V$SESSION視圖的SID和SERIAL#列獲得。打開關(guān)閉跟蹤中第一種方法的好處是你不用自己寫10046這個事件號,這樣可以減少錯誤,但是dbms_support程序包在你的數(shù)據(jù)庫中可能會不存在,這樣就只有用第二種方法了。   到現(xiàn)在為止,我們已經(jīng)生成了所需要的跟蹤文件,然后我們需要找到該文件來進(jìn)行分析。跟蹤文件的存放位置只有兩種可能,Oracle參數(shù)USER_DUMP_DEST 或者BACKGROUND_DUMP_DEST或者是oracle_home\udump指定的目錄;文件名稱根據(jù)不同的平臺會有所不同,但是在文件名中都會包含會話所對應(yīng)的操作系統(tǒng)進(jìn)程(線程)號,也就是V$PROCESS的SPID列(V$PROCESS.SPID) ,該信息可以通過 v$process.addr和v$session.paddr做表連接查詢得到。例如:select spid from v$process p,v$session s where p.addr=s.paddr and s.sid=:sid and s.serial#=:serial.   本文只對Oracle在使用專用服務(wù)器進(jìn)程(Dedicated Server)模式做了總結(jié),至于的共享服務(wù)器(Shared Server)模式和在應(yīng)用級使用連接池的情況下,收集sql跟蹤信息的方法會比較復(fù)雜,希望有相關(guān)經(jīng)驗(yàn)的高手來總結(jié)。
    posted on 2006-08-28 00:19 七匹狼 閱讀(439) 評論(0)  編輯  收藏 所屬分類: oracle
    主站蜘蛛池模板: 亚洲国产精品成人网址天堂 | 9277手机在线视频观看免费| 亚洲av日韩av激情亚洲| 日韩午夜理论免费TV影院| 久久精品国产亚洲αv忘忧草| 国产香蕉九九久久精品免费| 男男黄GAY片免费网站WWW | 亚洲无人区码一二三码区别图片 | 亚洲一卡二卡三卡| 国产精品免费一级在线观看| 91免费在线视频| 亚洲三级视频在线观看| 亚洲精品tv久久久久久久久久| 亚洲免费视频网站| 亚洲精品精华液一区二区| 91麻豆精品国产自产在线观看亚洲 | 亚洲毛片基地日韩毛片基地 | 亚洲午夜精品国产电影在线观看| 免费国产在线观看| 一级毛片在线免费观看| 女bbbbxxxx另类亚洲| 久久国产精品亚洲一区二区| 日本高清免费网站| 99在线在线视频免费视频观看| 亚洲AV无码之国产精品| 亚洲天堂久久精品| 亚洲午夜福利精品久久| 很黄很色很刺激的视频免费| 99re8这里有精品热视频免费| 亚洲女子高潮不断爆白浆| 99亚洲精品高清一二区| 久久久久亚洲AV综合波多野结衣 | 免费一级毛片清高播放| 91香蕉在线观看免费高清| 国产精品无码永久免费888| 91丁香亚洲综合社区| 亚洲大片在线观看| 亚洲区小说区图片区| 国产成人精品免费视频大全五级 | 在线观看免费视频网站色| 亚洲AV永久无码精品一福利|