ORACLE數(shù)據(jù)表分析
一、性能數(shù)據(jù)的存儲過程:
性能數(shù)據(jù)的收集包含這樣幾個(gè)存儲過程:
GATHER_INDEX_STATS:分析索引信息
GATHER_TABLE_STATS:分析表信息,當(dāng)cascade為true時(shí),分析表、列(索引)信息
GATHER_SCHEMA_STATS:分析方案信息
GATHER_DATABASE_STATS:分析數(shù)據(jù)庫信息
GATHER_SYSTEM_STATS:分析系統(tǒng)信息
二、GATHER_TABLE_STATS: 分析表、字段和索引:
我們分析時(shí)最常用到的就是GATHER_TABLE_STATS,dbms_stats能良好地估計(jì)統(tǒng)計(jì)數(shù)據(jù)(尤其是針對較大的分區(qū)表),并能獲得更好的統(tǒng)計(jì)結(jié)果,最終制定出速度更快的SQL執(zhí)行計(jì)劃。
procedure gather_table_stats
(ownname varchar2, tabname varchar2, partname varchar2 default null,
estimate_percent number default DEFAULT_ESTIMATE_PERCENT,
block_sample boolean default FALSE,
method_opt varchar2 default DEFAULT_METHOD_OPT,
degree number default to_degree_type(get_param('DEGREE')),
granularity varchar2 default DEFAULT_GRANULARITY,
cascade boolean default DEFAULT_CASCADE,
stattab varchar2 default null, statid varchar2 default null,
statown varchar2 default null,
no_invalidate boolean default
to_no_invalidate_type(get_param('NO_INVALIDATE')),
stattype varchar2 default 'DATA',
force boolean default FALSE,
-- the context is intended for internal use only.
context dbms_stats.CContext default null);method_opt:決定histograms直方圖信息是怎樣被統(tǒng)計(jì)的。method_opt的取值如下(默認(rèn)值為FOR ALL COLUMNS SIZE AUTO):
- FOR ALL COLUMNS:統(tǒng)計(jì)所有列的HISTOGRAMS.
- FOR ALL INDEXED COLUMNS:統(tǒng)計(jì)所有INDEXED列的HISTOGRAMS.
- FOR ALL HIDDEN COLUMNS:統(tǒng)計(jì)你看不到列的HISTOGRAMS
- FOR COLUMNS <LIST> SIZE <INTEGER> | REPEAT | AUTO |
- INTEGER指的直方圖的BUCKETS數(shù)量,取值范圍為[1,254]。
- REPEAT上次統(tǒng)計(jì)過的HISTOGRAMS。
- AUTO:ORACLE根據(jù)列數(shù)據(jù)的分布及相關(guān)列的訪問量來決定收集直方圖的列。
- SKEWONLY:ORACLE 根據(jù)列的數(shù)據(jù)分布來決定哪些列收集直方圖
在 gather_table_stats 存儲過程的所有參數(shù)中,除了 ownname 和 tabname,其他的參數(shù)都有默認(rèn)值。
dbms_stats.gather_table_stats(ownname=>'TEST',tabname=>'T1');
三、DBMS_STATS 包管理功能
1、查找表最后執(zhí)行分析的日期
select table_name,num_rows,blocks,last_analyzed from all_tables where table_name='WORK_LIST';
2、其他存儲過程
- CREATE_STAT_TABLE :創(chuàng)建分析數(shù)據(jù)表
- DROP_STAT_TABLE: 刪除分析數(shù)據(jù)表
- GATHER_TABLE_STATS:執(zhí)行分析表
- GET_TABLE_STATS :獲取分析數(shù)據(jù)
- SET_TABLE_STATS : 設(shè)置分析數(shù)據(jù)
- EXPORT_TABLE_STATS: 導(dǎo)出分析數(shù)據(jù)
- IMPORT_TABLE_STATS: 導(dǎo)入分析數(shù)據(jù)
- LOCK_TABLE_STATS :鎖定分析數(shù)據(jù)
- UNLOCK_TABLE_STATS :解鎖分析數(shù)據(jù)
- RESTORE_TABLE_STATS: 恢復(fù)分析數(shù)據(jù)
- delete_table_stats :刪除表統(tǒng)計(jì)信息
四、自動收集CBO的統(tǒng)計(jì)信息
從Oracle Database 10g開始,Oracle在建庫后就默認(rèn)創(chuàng)建了一個(gè)名為GATHER_STATS_JOB的定時(shí)任務(wù),用于自動收集CBO的統(tǒng)計(jì)信息。
這個(gè)自動任務(wù)默認(rèn)情況下在工作日晚上10:00-6:00和周末全天開啟。調(diào)用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集統(tǒng)計(jì)信息。
該過程首先檢測統(tǒng)計(jì)信息缺失和陳舊的對象。然后確定優(yōu)先級,再開始進(jìn)行統(tǒng)計(jì)信息。
可以通過以下查詢這個(gè)JOB的運(yùn)行情況:
select * from Dba_Scheduler_Jobs where JOB_NAME ='GATHER_STATS_JOB'
其實(shí)同在10點(diǎn)運(yùn)行的Job還有一個(gè)AUTO_SPACE_ADVISOR_JOB,然而這個(gè)自動化功能已經(jīng)影響了很多系統(tǒng)的正常運(yùn)行,晚上10點(diǎn)對于大部分生產(chǎn)系統(tǒng)也并非空閑時(shí)段。
而自動分析可能導(dǎo)致極為嚴(yán)重的閂鎖競爭,進(jìn)而可能導(dǎo)致數(shù)據(jù)庫Hang或者Crash。
所以建議最好關(guān)閉這個(gè)自動統(tǒng)計(jì)信息收集功能
方法之一:
exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');
--恢復(fù)自動分析:
exec dbms_scheduler.enable('SYS.GATHER_STATS_JOB');方法二:
alter system set "_optimizer_autostats_job"=false scope=spfile; alter system set "_optimizer_autostats_job"=true scope=spfile;
Pfile可以直接修改初始化參數(shù)文件,重新啟動數(shù)據(jù)庫。
到此這篇關(guān)于ORACLE數(shù)據(jù)表分析的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle數(shù)據(jù)庫優(yōu)化策略總結(jié)篇
本文介紹了一些很實(shí)用但卻不是很常見的Oracle數(shù)據(jù)庫的優(yōu)化策略,包括批量FETCH、SQL預(yù)解析等,需要的朋友可以參考下2015-08-08
Oracle11g r2 卸載干凈重裝的詳細(xì)教程(親測有效已重裝過)
Oracle 的安裝和卸載相較于其他 mysql 要麻煩些,小編特此分享一篇教程關(guān)于Oracle11g 徹底卸載干凈并重新安裝,有需要的朋友可以參考下本文2021-06-06
Oracle移動數(shù)據(jù)文件不停機(jī)和停機(jī)兩種方式詳解
這篇文章主要為大家介紹了Oracle移動數(shù)據(jù)文件不停機(jī)和停機(jī)兩種方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
oracle不能使用EM怎么辦 oracle11g如何正確安裝配置EM
這篇文章主要為大家詳細(xì)介紹了oracle不能使用EM的解決方法,oracle11g如何正確安裝配置EM,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
有關(guān)Oracle數(shù)據(jù)庫的備份情況
有關(guān)Oracle數(shù)據(jù)庫的備份情況...2007-03-03
將Oracle數(shù)據(jù)庫中的數(shù)據(jù)寫入Excel
本文主要分享了將Oracle數(shù)據(jù)庫中的數(shù)據(jù)寫入Excel的關(guān)鍵代碼。具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12

