环境:Oracle 11.2.0.4
采用并行的方式,快速收集全库统计信息,多用于跨版本升级之后,对全库的统计信息重新进行快速收集:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
--开启计时
set
timing
on
--设置并行收集
exec
dbms_stats
.set_global_prefs
(
'CONCURRENT'
,
'TRUE'
)
;
--开始收集全库统计信息
begin
dbms_stats
.gather_database_stats
(
ESTIMATE_PERCENT=
>
DBMS_STATS
.AUTO_SAMPLE_SIZE
,
method_opt
=
>
'for all indexed columns'
,
cascade=
>
true
,
degree=
>
120
)
;
end
;
/
--关闭并行收集
exec
dbms_stats
.set_global_prefs
(
'CONCURRENT'
,
'FALSE'
)
;
|
注意degree的值并不是设置越高就越快,同时要根据实际CPU具体情况来设置。
本文来自同事的经验分享,这里主要用到dbms_stats包的set_global_prefs和gather_database_stats过程。详见官档描述:
https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_stats.htm