做用:用於蒐集,查看,修改數據庫對象的優化統計信息.數據庫
1)、get_column_stats
做用:用於取得列的統計信息
語法:dbms_stats.get_column_stats(ownname varchar2,tabname varchar2,colname varchar2,partname varchar2 default null,stattab varchar2 default null,
statid varchar2 default null,distcnt out number,density out number,nullcnt out number,srec out statrec,avgclen out number,statown varchar2 default null);
其中ownname指定方案名,tabname指定表名,colname指定列名,partname指定分區名,stattab指定用戶統計表名,statid指定與統計相關的標識符,distcnt返回不一樣值的個數,
density返回列的密度,nullcnt返回列的null個數,srec返回列的最大、最小和直方圖值,avgclen返回列的平均長度,statown指定包含stattab的方案名。
2)、get_index_stats
做用:用於取得索引的統計信息
語法:dbms_stats.get_index_stats(ownnane varchar2,indname varchar2,
partname varchar2 default null,stattab varchar2 default null,
statid varchar2 default null,numrows out number,
numlblks out number,numdist out number,
avglblk out number,avgdblk out number,clstfct out number,
indlevel out number,statown varchar2 default null);
其中ownnane指定索引全部者名,indname指定索引名,partname指定索引分區名,
stattab指定統計表名,statid指定統計表相關的標識符,numrows返回索引行數,
numlblks返回索引塊個數,numdist返回索引不一樣鍵值個數,
avglblk返回每一個鍵值佔用的平均葉塊個數,avgdblk返回每一個鍵值對應錶行所佔用的平均數據塊個數,
clstfct返回索引的聚簇因子,indlevel返回索引層數,statown指定統計表全部者。
3)、get_system_stats
做用:用於從統計表或數據字典中取得系通通計信息
語法:dbms_stats.get_system_stats(status out varchar2,dstart out date,dstop out date,
pname varchar2,pvalue out number,stattab in varchar2 default null,statid in varchar2 default null,statown in varchar2 default null);
其中status返回狀態信息(completed,autogathering,manualgathering),dstat返回起始蒐集日期,dstop返回結束蒐集日期,
pname指定要取得的參數名(sreadtim,mreadtim,cpuspeed,mbrc,maxthr,slavethr),pvalue返回參數值。
4)、get_table_stats
做用:用於取得表的統計信息
語法:dbms_stats.get_table_stats(owname varchar2,tabname varchar2,
partname varchar2 default null,stattab varchar2 default null,
statid varchar2 default null,numrows out number,numblks out number,
avgrlen out number,statown varchar2 default null);
其中avgrlen返回錶行的平均長度。
5)、delete_column_stats
做用:用於刪除列的統計信息。
語法:dbms_stats.delete_column_stats(ownname varchar2,tabname varchar2,colname varchar2,
partname varchar2 default null,stattab varchar2 default null,statid varchar2 default null,
cascade_parts boolean default true,statown varchar2 default null,no_invalidate boolean default false);
其中cascade_parts指定是否要級聯刪除分區統計,no_invalidate指定是否要使相關遊標無效。
例子:dbms_stats.delete_column_stats('scott','emp','ename');
6)、delete_index_stat
做用:用於刪除索引統計信息
語法:dbms_stats.delete_index_stats(ownname varchar2,indname varchar2,
partname varchar2 default null,stattab varchar2 default null,
statid varchar2 default null,cascade_parts boolean default true,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.delete_index_stats('scott','pk_emp');
7)、delete_system_stats
做用:用於刪除系通通計信息
語法:dbms_state.delete_system_stats(stattab varchar2 default null,
statid varchar2 default null,statown varchar2 default null);
8)、delete_table_stats
做用:用於刪除表的統計信息
語法:dbms_stats.delete_table_stats(ownname varchar2,tabname varchar2,
partname varchar2 default null,stattab varchar2 default null,
statid varchar2 default null,cascade_parts boolean default true,
cascade_columns boolean default true,cascade_indexes boolean default true,
statown varchar2 default null,no_invalidate boolean default false);
其中cascade_columns指定是否級聯刪除列統計,cascade_indexes指定是否級聯刪除索引統計。
例子:exec dbms_stats.delete_table_stats('scott','emp');
9)、delete_schema_stats
做用:用於刪除特定方案的統計信息
語法:dbms_stats.delete_schema_stats(ownname varchar2,stattab varchar2 default null,
statid varchar2 default null,statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.delete_schema_stats('scott');
10)、delete_database_stats
做用:用於刪除整個數據庫的統計信息
語法:dbms_stats.delete_database_stats(stattab varchar2 default null,statid varchar2 default null,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.delete_database_stats
11)、create_stat_table
做用:用於在特定方案創建統計表
語法:dbms_stats.create_stat_table(ownname varchar2,stattab varchar2,tblspace varchar2 default null);
其中tblspace指定統計表所在表空間。
例子:exec dbms_stats.create_stat_table('scott','stattab');
12)、drop_stat_table
做用:用於刪除特定方案的統計表
語法:dbms_stats.drop_stat_table(ownnanme varchar2,stattab varchar2);
例子:exec dbms_stats.drop_stat_table('scott','stattab');
13)、export_column_stats
做用:用於導出列統計並存儲到統計表中。
語法:dbms_stats.export_column_stats(ownname varchar2,tabname varchar2,colname varchar2,
partname varchar2 default null,stattab varchar2,
statid varchar2 default null,statown varchar2 default null);
例子:exec dbms_stats.export_column_stats('scott','emp','ename',stattab=>'stattab');
14)、export_index_stats
做用:導出索引統計信息,並存儲到統計表中
語法:dbms_stats.export_index_stats(owname varchar2,indname varchar2,
partname varchar2 default null,stattab varchar2,
statid varchar2 default null,statown varchar2 default null,
statown varchar2 default null);
例子:exec dbms_stats.export_index_stats('scott','pk_emp',stattab=>'stattab');
15)、export_system_stats
做用:用於導出系通通計信息,並存儲到統計表中。
語法:dbms_stats.export_system_stats(stattab varchar2,statid varchar2 default null,statown varchar2 default null);
16)、export_table_stats
做用:用於導出表的統計信息,並將其存儲到統計表中
語法:dbms_stats.export_table_stats(ownname varchar2,tabname varchar2,partname varchar2 default null,stattab varchar2,
statid varchar2 default null,cascade boolean default true,statown varchar2 default null);
例子:exec dbms_stats.export_table_stats('scott','emp',stattab=>'stattab');
17)、export_schema_stats
做用:用於導出方案的統計信息,並將其存儲到統計表中。
語法:dbms_stats.export_schema_stats(ownname varchar2,stattab varchar2,
statid varchar2 default null,statown varchar2 default null);
例子:exec dbms_stats.export_shcema_stats('scott',stattab=>'stattab');
18)、export_database_stats
做用:用於導出數據庫的全部統計信息,並存儲到統計表中。
語法:dbms_stats.export_database_stats(stattab varchar2,statid varchar2 default null,statown varchar2 default null);
例子:exec dbms_stats.export_database_stats(stattab=>'stattab',statown=>'scott');
19)、import_column_stats
做用:用於從統計表取得列統計,並將其存儲到數據字典中。
語法:dbms_stats.import_column_stats(ownname varchar2,tabname varchar2,colname varchar2,
partname varchar2 default null,stattab varchar2,statid varchar2 default null,statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.import_column_stats('scott','emp','ename',stattab=>'stattab',statown=>'scott');
20)、import_index_stats
做用:用於從統計表中取得索引統計,並將其存儲到數據字典中。
語法:dbms_stats.import_index_stats(ownname varchar2,indname varchar2,
partname varchar2 default null,stattab varchar2,statid varchar2 default null,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.import_index_stats('scott','pk_emp',stattab=>'stattab',statown=>'scott');
21)、import_system_stats
做用:用於從統計表中取得系通通計,並將其存儲到數據字典中。
語法:dbms_stats.import_system_stats(stattab varchar2,statid varchar2 default null,statown varchar2 default null);
22)、import_table_stats
做用:用於從統計表中取得表統計,並將去存儲到數據字段中。
語法:dbms_stats.import_table_stats(ownname varchar2,tabname varchar2,partname varchar2 default null,
stattab varchar2,statid varchar2 default null,cascade boolean default true,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.import_table_stats('scott','emp',stattab=>'stattab',statown=>'scott');
23)、import_schema_stats
做用:用於從統計表中取得方案統計,並將去存儲到數據字典中。
語法:dbms_stats.import_schema_stats(owname varchar2,stattab varchar2,
statid varchar2 default null,statown varchar2 default null,no_invalidate boolean default flase);
例子:exec dbms_stats.import_schema_stats('scott',stattab=>'stattab',statown=>'scott');
24)、import_database_stats
做用:用於從統計表中取得數據庫全部對象的統計,並將其存儲到數據字典中。
語法:dbms_stats.import_database_stats(stattab varchar2,statid varchar2 default null,
statown varchar2 default null,no_invalidate boolean default false);
例子:exec dbms_stats.import_database_stats(stattab=>'stattab',statown=>'scott');
25)、gather_index_stats
做用:用於蒐集索引統計
語法:dbms_stats.gather_index_stats(ownname varchar2,indname varchar2,
partname varchar2 default null,estimate_percent number default null,
stattab varchar2 default null,statid varchar2 default null,
statown varchar2 default null,degree number default null,
granularity varchar2 default 'default',no_invalidate boolean default false);
其中ownname指定方案名,indname指定索引名,partname指定分區名,estimate_percent指定要預估的行百分比,
stattab指定用戶統計表名,statid指定與統計相關的標識符,statown指定包含STATTAB的方案名,degree指定並行度,
granularity指定要蒐集索引的粒度(default,subpartition,partition,global,all),no_invalidate指定是否要使用相關遊標無效。
例子:exec dbms_stats.gather_index_stats('scott','pk_emp');
26)、gather_table_stats
做用:用於蒐集表統計
語法:dbms_stats.gather_table_stats(ownname varchar2,tabname varchar2,
partname varchar2 default null,estimate_percent number default null,
block_sample boolean default false,method_opt varchar2 default 'FOR ALL COLUMNS SIZE 1',
degree number default null,granularity varchar2 default 'default',cascade boolean default false,
stattab varchar2 default null,statid varchar2 default null,statown varchar2 default null,
no_invalidate boolean default false);
其中block_sample指定是否使用隨機採樣的塊個數取代行百分比,method_opt指定列統計的蒐集方法,cascade指定是否要級聯蒐集索引統計。
例子:exec dbms_stats.gather table_stats('scott','emp');
27)、gather_schema_stats
做用:用於蒐集特定方案全部對象的統計
語法:dbms_stats.gather_schema_stats(ownname varchar2,
estimate_percent number default null,block_sample boolean default false,
method_opt varchar2 default 'FOR ALL COLUMNS SIZE 1',
degree number default null,granularity varchar2 default 'default',
cascade boolean default false,stattab varchar2 default null,
statid varchar2 default null,option varchar2 default 'GATHER',
objlist out ObjectTab,statown varchar2 default null,
no_invalidate boolean default false,gather_temp boolean default false);
其中option指定統計蒐集選項(GATHER,GATHER AUTO,GATHER STALE,GATHER EMPTY,LIST AUTO,LIST STALE,LIST EMPTY);
objlist返回舊對象或空對象,gather_temp指定是否要蒐集臨時表統計。
例子:exec dbms_stats.gather_schema_stats('scott');
28)、gather_database_stats
做用:用於蒐集數據庫全部對象的統計。
語法:dbms_stats.gather_database_stats(
estimate_percnet number default null,block_sample boolean default false,
method_opt varchar2 default 'FOR ALL COLUMNS SIZE 1',
degree number default null,granularity varchar2 default 'default',
cascade boolean default false,stattab varchar2 default null,
statid varchar2 default null,options varchar2 default 'gather',
objlist out ObjectTab,statown varchar2 default null,
gather_sys boolean default false,no_invalidate boolean default false,
gather_temp boolean default false);
其中estimate_percent指定要預估的行百分比,block_sample指定是否使用隨機採樣的塊個數取代行百分比,
method_opt指定列統計的蒐集方法,degree指定並行度,
granularity指定要蒐集索引的粒度(default,subpartition,partition,global,all),
cascade指定是否要級聯蒐集索引統計,stattab指定用戶統計表名,statid指定與統計相關的標識符,
option指定統計蒐集選項(GATHER,GATHER AUTO,GATHER STALE,GATHER EMPTY,LIST AUTO,LIST STALE,LIST EMPTY),
objlist返回舊對象或空對象,statown指定包含STATTAB的方案名,garher_sys指定是否要蒐集sys用戶對象的統計,
no_invalidate指定是否要使用相關遊標無效,gather_temp指定是否要蒐集臨時表統計。
例子:exec dbms_stats.gather_database_stats.
29)、oather_system_stats
做用:用於蒐集系通通計
語法:dbms_stats.gather_system_stats(
gathering_mode varchar2 default 'NOWORKLOAD',
interval integer default null,stattab varchar2 default null,
statid varchar2 default null,statown varchar2 default null);
其中gathering_mode用於指定蒐集模式值(noworkload,interval,start|stop),
interval用於指定蒐集統計的時間間隔(只適用interval模式)
例子:exec dbms_stats.gather_system_stats.
30)、UNLOCK_TABLE_STATS
做用:專治ORA-38029,解鎖對象統計信息。
例子:DBMS_STATS.UNLOCK_TABLE_STATS('MID_SC','DM_OLD_FEATURE_VALUE')優化
declare dist_count number; density number; null_count number; srec dbms_stats.statrec; avg_col_len number; numrows number; numlblks number; numdist number; avglblk number; avgdblk number; clstfct number; indlevel number; avgrlen numer; begin --get_column_stats dbms_stats.get_column_stats('scott','emp','job',distcnt=>dist_count,density=>density,nullcnt=>null_count,srec=>srec,avgclen=>avg_col_len); dbms_output.put_line('不一樣列值個數'||dist_count); dbms_output.put_line('列平均長度'||avg_col_len); --get_index_stats dbmns_stats.get_index_stats('scott','PK_EMP',numrows=>numrows,numlblks=>numlblks, numdist=>numdist,avglblk=>avglblk,avgdblk=>avgdblk,clstfct=>clstfct,indlevel=>indlevel); dbms_output.put_line('葉塊個數'||numlblks); dbms_output.put_line('索引層次'||indlevel); --get_table_stats dbms_stats.get_table_stats('scott','emp',numrows=>numrows,numlblks=>numlblks,avgrlen=>avgrlen); dbms_output.put_line('表的總計行數'||numrows); dbms_output.put_line('表所佔有的塊個數'||numlblks); dbms_output.put_line('錶行的平均水平'||avgrlen); end;