oracle檢視和更新統計表的資訊

darren__chan發表於2014-12-10



在OEM中檢視資料庫的會話時,發現有一個會話的SQL要10多秒

在PL SQL中執行 SQL按F5檢視這個SQL的計劃,發現別的地方有 呼叫索引,

oracle統計值檢視

select * from dba_tables where table_name = TABLE

檢查一下欄位last_analyzed 的值,其值就是最後一次統計更新的日期

更新檢視

全表分析   完全計演算法:   analyze   table   abc   compute   statistics;   抽樣估演算法(抽樣20%):   analyze   table   abc   estimate   statistics   sample   20   percent;   對錶作完全計算所花的時間相當於做全表掃描,抽樣估演算法由於採用抽樣,比完全計演算法的生成統計速度要快,如果不是要求要有精確資料的話,儘量採用抽樣分析法。建議對錶分析採用抽樣估算,對索引分析可以採用完全計算。 

使用dbms_stats

 

exec dbms_stats.gather_table_stats(OWNNAME=>'tccs',tabname=>'emp',cascade=>true);

在我們經常做表的分析時會看到使用dbms_stats和analyze在這個方面也會有點不同。 就是當使用dbms_stats來分析表的時候global_stats是YES,而用analyze來分析表的時候就是NO. 而且num_rows結果也會有些不同

 

 

select dt.last_analyzed ,'dbms_stats.gather_table_stats(OWNNAME=>'''|| dt.owner ||''',tabname=>'''|| dt.table_name ||''',cascade=>true); ' ,dt.* from dba_tables dt where table_name IN ( upper('wsh_delivery_details') ,upper('wsh_delivery_assignments'),upper('MTL_TXN_REQUEST_LINES'),upper('MTL_TXN_REQUEST_HEADERS'),upper('OE_ORDER_HEADERS_ALL'),upper('OE_ORDER_LINES_ALL'),upper('RA_CUSTOMERS'),upper('MTL_SYSTEM_ITEMS_B'),upper('RA_ADDRESSES_ALL'),upper('RA_SITE_USES_ALL'),upper('MTL_PARAMETERS'),upper('HZ_CUST_SITE_USES_ALL'),upper('HZ_PARTY_SITES'),upper('HZ_LOCATIONS'),upper('HZ_CUST_ACCT_SITES_ALL'),upper('HZ_CUST_SITE_USES_ALL'),upper('AR_CONTACTS_V'),upper('ORG_ORGANIZATION_DEFINITIONS'),upper('MTL_MATERIAL_TRANSACTIONS'),upper('OE_TRANSACTION_TYPES_TL') )

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29863023/viewspace-1363795/,如需轉載,請註明出處,否則將追究法律責任。

相關文章