在使用DBMS_STATS分析表的时候我们经常要保存之前的分析以防分析后导致系统性能低下然后进行快速恢复
首先创建一个分析表该表是用来保存之前的分析值
SQL> begin
dbms_statscreate_stat_table(ownname => TESTstattab => STAT_TABLE);
end;
/
PL/SQL 过程已成功完成
分析表信息
SQL> BEGIN
DBMS_STATSdelete_table_stats(ownname => TESTtabname => A);
DBMS_STATSgather_table_stats(ownname => TESTtabname => A);
END;
/
PL/SQL 过程已成功完成
导出表分析信息到stat_table中
SQL> BEGIN
dbms_statsexport_table_stats(ownname => TESTtabname => Astattab => STAT_TABLE);
END;
/
PL/SQL 过程已成功完成
SQL>
同理也有
EXPORT_COLUMN_STATS导出列的分析信息
EXPORT_INDEX_STATS导出索引分析信息
EXPORT_SYSTEM_STATS导出系统分析信息
EXPORT_TABLE_STATS导出表分析信息
EXPORT_SCHEMA_STATS导出方案分析信息
EXPORT_DATABASE_STATS导出数据库分析信息
IMPORT_COLUMN_STATS导入列分析信息
IMPORT_INDEX_STATS导入索引分析信息
IMPORT_SYSTEM_STATS导入系统分析信息
IMPORT_TABLE_STATS导入表分析信息
IMPORT_SCHEMA_STATS导入方案分析信息
IMPORT_DATABASE_STATS导入数据库分析信息
GATHER_INDEX_STATS分析索引信息
GATHER_TABLE_STATS分析表信息当cascade为true时分析表列(索引)信息
GATHER_SCHEMA_STATS分析方案信息
GATHER_DATABASE_STATS分析数据库信息
GATHER_SYSTEM_STATS分析系统信息
SQL> select count(*) from stat_table;
COUNT(*)
删除分析信息
SQL> BEGIN
DBMS_STATSdelete_table_stats(ownname => TESTtabname => A);
END;
/
PL/SQL 过程已成功完成
导入分析信息
SQL> BEGIN
DBMS_STATSimport_table_stats(ownname => TESTtabname => Astattab => STAT_TABLE);
END;
/
PL/SQL 过程已成功完成
SQL>