在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 tt
table_name
tt
num_rows
tt
blocks
tt
empty_blocks
tt
avg_row_len
from dba_tables tt
where tt
owner=
COLMTEST
;
SQL>select ttt
index_name
ttt
num_rows
ttt
distinct_keys
ttt
avg_leaf_blocks_per_key
ttt
clustering_factor
from dba_indexes ttt
where ttt
owner=
COLMTEST
;
執行上述兩條命令之後會發現除了table_name和index_name其余列的統計信息都是不完全的
SQL>execute dbms_statsgather_schema_stats(ownname =>COLMTESTcascade=>true)
執行完dbms_stats再調用上述兩句語句會發現所有的列基本上都已經被填充!
PS執行統計比較慢相當於所有tableindex都掃描一遍的時間COLMTEST改一下另外對單個表執行統計分析的語句如下
EXECUTE dbms_stats
gather_table_stats (ownname=>
citic
tabname=>
col_cust_id
estimate_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 的值: report
txt
End of Report
查看產生的report文檔C\oracle\ora\bin\reporttxt
Trackback x?PostId=
From:http://tw.wingwit.com/Article/program/Oracle/201311/17298.html