Oracle recommends to use DBMS_STATS instead of ANALYZE since 8i. Sometimes, we might get confused by the two similar tools. So I took some times to read several documents and summarize the key differences as below:
Features | DBMS_STATS | ANALYZE |
---|---|---|
Can gather statistics for CBO | ![]() | ![]() |
Can validate the structure of a segment | ![]() | ![]() |
Can list the chained rows | ![]() | ![]() |
Can collect freelist blocks | ![]() | ![]() |
Can gather statistics in parallel | ![]() | ![]() |
Can gather global statistics for partitions | ![]() | ![]() |
Can be export/import | ![]() | ![]() |
Can analyze external tables | ![]() | ![]() |
Can analyze system objects | ![]() | ![]() |
Command type | Stored procedure | SQL Command |
Accuracy | More accurate | Less accurate |
Granularity level | Multiple levels | The lowest level |
Collect Range | Broader | Narrower |
System privileges required | ANALYZE ANY and ANALYZE ANY DICTIONARY | ANALYZE ANY |