熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

性能調優:ORACLE性能初步調整

2013-11-13 15:46:53  來源: Oracle 

  在User Schema 上 用人工指定方式指定 Tmp 的tablespace 換句話說要人工定義一個tmp 的tablespace 給user schema——為colmv這個user單獨開一個臨時表空間 個人認為調整之後效果不會有很明顯的變化臨時表空間的作用是當sql語句中出現order by group by(也就是需要排序的時候)如果排序的數據比較少就會在內存中排序排序的數據量很大時oracle會把排序的任務放在臨時表空間中完成 內存中排序(邏輯排序)比在磁盤上排序(物理排序)理論上快倍!所以臨時表空間很大並不是一件好事情說明sql中存在大量排序的動作sql語句需要優化!    所以深圳那裡需要看一下臨時表空間的大小!

  當然johanna的意見也會有一定的作用臨時表空間獨立出來之後就不會和syssystem等一系列oracle 內部使用臨時表空間的操作產生資源競爭!

   請檢查SQL 使用到的where 條件是否均有定index  除此以外 檢查使用到的where 條件最好以index 之順序來寫——這部分比較復雜也是性能最關鍵的地方幾乎所有的oracle專家都認為%以上的性能調整都和sql語句優化有關需要check所有的sql語句where後面的條件是否有用到index的必要  工程量比較浩大!需要一個個小心謹慎的check!

   把index 做一次 dbms_stats dbmsstats 是oracle內部的api 可以對indextable進行分析收集統計信息這樣oracle優化器就會有一個最佳的選擇使性能達到最佳方法如下


SQL>select tttable_namettnum_rowsttblocksttempty_blocksttavg_row_len from dba_tables tt
where ttowner=COLMTEST;

SQL>select tttindex_nametttnum_rowstttdistinct_keystttavg_leaf_blocks_per_keytttclustering_factor
from dba_indexes ttt where tttowner=COLMTEST;

  執行上述兩條命令之後會發現除了table_name和index_name其余列的統計信息都是不完全的

  SQL>execute dbms_statsgather_schema_stats(ownname =>COLMTESTcascade=>true) 

  執行完dbms_stats再調用上述兩句語句會發現所有的列基本上都已經被填充!

  PS執行統計比較慢相當於所有tableindex都掃描一遍的時間COLMTEST改一下另外對單個表執行統計分析的語句如下


EXECUTE dbms_statsgather_table_stats (ownname=>citic tabname=>col_cust_idestimate_percent=>cascade=>true)

   做過以上處理之後 再看情形  再依情況放參數

  ——參數暫時不用調整!

  建議做一個STATSPACK通過Statspack我們可以很容易的確定Oracle數據庫的瓶頸所在記錄數據庫性能狀態迅速了解數據庫運行狀況

  方法如下

        安裝Statspack安裝Statspack擁有SYSDBA(connect / as sysdba)權限的用戶登陸需要在本地安裝或者通過telnet登陸到服務器——客戶端登錄不可以

  必要條件先創建名稱為perfstat的表空間至少M

  在那台oracle數據庫上用colmv登錄SQL*PLUS 然後輸入SQL> connect sys/sys@(你們那裡的sid) as sysdbaSQL> alter system set timed_statistics = trueSystem altered——使用statspack收集統計信息時建議將該值設置為 TRUE否則收集的統計信息大約只能起到%的作用

  SQL> @C\oracle\ora\rdbms\admin\spcreatesql輸入 perfstat_password 的值  perfstat輸入default_tablespace的值  perfstat輸入temporary_tablespace 的值  temp

  NOTESPCPKG complete Please check spcpkglis for any errors——需要出現上述語句才算成功否則請查看lis文件並執行進行重建SQL> @C\oracle\ora\rdbms\admin\spdropsql SQL> @C\oracle\ora\rdbms\admin\spcreatesql

  查看文件夾會產生三個文件C\oracle\ora\bin spcpkglis spctablis spcusrlis

  ——從下面開始都可以在客戶端SQL_PLUS進行操作手動執行STATSPACK收集統計信息SQL> show user USER為PERFSTAT SQL> execute statspacksnap     ——快照

   然後需要經過個小時(跑批需要包含在裡面)再執行SQL> execute statspacksnap     ——快照

  最後生成STATSPACK調整報告

  SQL> @C:\oracle\ora\rdbms\admin\spreportsql;


Current Instance
~~~~~~~~~~~~~~~~
 
   DB Id    DB Name      Inst Num Instance

  COLM                colm
 
Instances in this Statspack schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   DB Id    Inst Num DB Name      Instance     Host

          COLM         colm         STEVENHUANG
 
Using  for database Id
Using          for instance number
 
Completed Snapshots
 
                           Snap                    Snap
Instance     DB Name         Id   Snap Started    Level Comment

colm         COLM           :    
                                
                                         :    
                               
   
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
輸入 begin_snap 的值: 
輸入 end_snap 的值: 
End   Snapshot Id specified:
 
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is sp__  To use this name
press <return> to continue otherwise enter an alternative
輸入 report_name 的值:  reporttxt
 
End of Report

  查看產生的report文檔C\oracle\ora\bin\reporttxt

  Trackback x?PostId=


From:http://tw.wingwit.com/Article/program/Oracle/201311/17298.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.