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

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

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

    beauty_beast

    上善若水 厚德載物

    oracle調優三步驟之一:查找性能隱患

    Posted on 2006-02-07 17:04 柳隨風 閱讀(1114) 評論(0)  編輯  收藏 所屬分類: oracle調優

            oracle調優工作是非常復雜的,涉及到的方方面面也比較多,但從實際做的項目來看,往往都是應用程序編寫的sql存在性能問題,個人認為如果沒有用到oracle比較復雜的特性功能,一般的調優還是有章可循的。基本就是三步: 查找、分析、優化,我總結了在項目中一些經驗,和大家一起分享,有不對的地方請大家多多指正。
           一個新系統剛上線的時候,用戶量、數據量都不是很多,性能問題一般不會很快體現出來,當用戶反映系統開始慢、http請求長時間沒有響應(嚴重的時候導致整個應用down機)時,我們就要密切關注了。
    查找的方法實際上oracle已經提供了相關工具-statspack。
    該工具的安裝、使用比較簡單,日常主要用到的是腳本:
            腳本路徑${oracle_home}/rdbms/admin目錄下:
            --spdrop.sql   刪除腳本,丟棄統計分析的相關包、視圖、表、同義詞等對象(首次創建無須執行)
            --spcreate.sql 創建腳本,生成統計分析的相關包、視圖、表、同義詞等對象(首次執行前先創建一個表空間)
            --統計時生成兩次快照,一般在30-40分鐘左右
            --執行方法
                 用sys登陸sqlplus后間隔對應時間執行兩次 exec statspack.snap;

            --spreport.sql 生成報告記錄sql ,生成的報告文件在系統當前路徑下,文件名默認為:
                   sp_開始快照號_結束快照號.lst 
            --sprepsql.sql  分析相關快照中的sql執行計劃,
            --sppurge.sql  刪除在兩個快照號之間包括本身的所有統計分析數據。
            --sptrunc.sql  截取statspack統計分析的相關數據  在統計分析的對應用戶perfstat下執行
     每次執行快照生成的統計數據都在perfstat用戶中相關的表中,
     常用的:
             --查詢快照相關信息
                select snap_id,snap_time from stats$snapshot;
            --根據hash_value,快照查詢對應的統計sql(statspack報告中sql過長會被截掉)
                select sql_text  from stats$sqltext where hash_value=查詢值 and last_snap_id=begin_snap_id;
             如果使用statspack工具,建議將timed_statistics 設置為true,否則無法查看到準確的統計信息(9i版本后的設置為true對系統性能影響較?。?。
                 alter system set timed_statistics=true;

    如果需要實時的查找性能隱患的相關sql,通過v$session_wait,v$session,v$sqltext_with_newlines三張動態視圖就可以基本查找到相關的sql,腳本如下:
            

    select sql_text ,sw.event
    from v$sqltext_with_newlines st,v$session se,v$session_wait sw
    where st.address=se.sql_address and st.hash_value=se.sql_hash_value
    and se.sid =sw.sid and  
    (sw.event 
    = 'buffer busy waits' or
      sw.event 
    = 'enqueue' or
      sw.event 
    = 'free buffer waits' or
      sw.event 
    = 'global cache freelist wait' or
      sw.event 
    = 'latch free' or
      sw.event 
    = 'log buffer space' or
      sw.event 
    = 'parallel query qref latch' or
      sw.event 
    = 'pipe put' or
      sw.event 
    = 'write complete waits' or
      sw.event 
    like 'library cache%' or
      sw.event 
    like 'log file switch%' 
    )  
    order by st.hash_value,st.piece; 

     
    這是我目前工作中常用的兩種方法,如果有其他方法,希望大家也共享出來。





     

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 久久亚洲中文字幕精品有坂深雪| 亚洲国产精品午夜电影| 老司机69精品成免费视频| 亚洲成在人线中文字幕| 波多野结衣视频在线免费观看| 久久免费视频观看| 亚洲成AV人片高潮喷水| 情人伊人久久综合亚洲| 四虎在线视频免费观看| a级毛片免费在线观看| 亚洲一线产品二线产品| 亚洲va无码专区国产乱码| 美女被免费视频网站a国产| 免费精品99久久国产综合精品| 亚洲欧美不卡高清在线| 久久久久亚洲精品成人网小说 | 五月婷婷综合免费| 一区二区三区免费视频观看| 亚洲人成在线播放| 亚洲午夜国产精品无码老牛影视| 无限动漫网在线观看免费| 国产猛男猛女超爽免费视频| 色婷婷亚洲一区二区三区| 亚洲日本香蕉视频| 亚洲精品乱码久久久久久 | 国产在线观看免费完整版中文版| 无码国产精品一区二区免费模式| 国产成人亚洲精品播放器下载| 亚洲成AV人片久久| 亚洲av无码一区二区乱子伦as| 国产在线观看免费完整版中文版 | 好看的电影网站亚洲一区| 国产又粗又猛又爽又黄的免费视频| 亚欧免费一级毛片| 黄色视频在线免费观看| 激情小说亚洲图片| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲成aⅴ人片在线影院八| 亚洲国产精品无码久久久蜜芽| 亚洲成a人在线看天堂无码| 永久在线毛片免费观看|