Oracle 統計資訊收集常用儲存過程
--收集資料庫統計資訊
BEGIN
SYS.DBMS_STATS.GATHER_DATABASE_STATS (
Granularity => 'ALL'
,Options => 'GATHER'
,Gather_Sys => TRUE
,Estimate_Percent => 40
,Method_Opt => 'FOR ALL COLUMNS SIZE 1'
,Degree => 20
,Cascade => TRUE
,No_Invalidate => FALSE);
END;
/
--收集schema統計資訊
BEGIN
SYS.DBMS_STATS.GATHER_SCHEMA_STATS (
OwnName => '&SCHEMA_NAME'
,Granularity => 'ALL'
,Options => 'GATHER AUTO'
,Estimate_Percent => 30
,Method_Opt => 'FOR ALL COLUMNS SIZE 1'
,Degree => 8
,Cascade => TRUE
,No_Invalidate => FALSE);
END;
/
--收集表以及表上索引統計資訊
BEGIN
DBMS_STATS.GATHER_TABLE_STATS (
OwnName => '&SCHEMA_NAME',
TabName => '&TABLE_NAME',
Estimate_Percent => 10,
Method_Opt => 'FOR ALL COLUMNS SIZE 1',
Degree => 4,
Cascade => TRUE,
No_Invalidate => FALSE) ;
end;
/
--收集表分割槽以及分割槽上索引統計資訊
BEGIN
DBMS_STATS.GATHER_TABLE_STATS (
OwnName => '&SCHEMA_NAME',
TabName => '&TABLE_NAME',
PartName => ‘&PARTITION_NAME’,
granularity => 'SUBPARTITION'
Estimate_Percent => 10,
Method_Opt => 'FOR ALL COLUMNS SIZE 1'
Degree => 4,
Cascade => TRUE,
No_Invalidate => FALSE) ;
--收集資料字典、fixed table、system統計資訊
BEGIN
SYS.DBMS_STATS.GATHER_DICTIONARY_STATS (
Granularity => 'AUTO'
,Options => 'GATHER STALE'
,Estimate_Percent => SYS.DBMS_STATS.AUTO_SAMPLE_SIZE
,Method_Opt => 'FOR ALL COLUMNS SIZE AUTO '
,Degree => NULL
,Cascade => DBMS_STATS.AUTO_CASCADE
,No_Invalidate => DBMS_STATS.AUTO_INVALIDATE);
END;
/
BEGIN
SYS.DBMS_STATS.GATHER_FIXED_OBJECTS_STATS (
No_Invalidate => DBMS_STATS.AUTO_INVALIDATE);
END;
/
BEGIN
SYS.DBMS_STATS.GATHER_SYSTEM_STATS (
gathering_mode => 'NOWORKLOAD');
END;
/