oracle查看和更新統計表的信息


 

在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') )

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM