统计最佳实践:如何备份恢复统计
适用版本8.1.7.4-11.1.0.6,此文档适用于任何平台。
本文可给DBA,Developers和技术支持人员。
如何备份一个最优的统计信息。
步骤清单:
1、 在一个schema中创建一个统计表
2、 将数据转移到这个表中
详细步骤:
1、 在一个schema中穿件一个统计表
SQL> connect /password
SQL> exec dbms_stats.create_stat_table(user,'STAT_TIMESTAMP');
PL/SQL procedure successfully completed.
2_1、将统计信息移到该表中
用dbms_stats.export_table_stats存储过程
转移统计的多张表,例如两张表:
SQL> exec dbms_stats.export_table_stats(user,'',NULL,'STAT_TIMESTAMP');
PL/SQL procedure successfully completed.
SQL> exec dbms_stats.export_table_stats(user,'',NULL,'STAT_TIMESTAMP');
PL/SQL procedure successfully completed.
转移一个角色:
SQL> exec dbms_stats.export_schema_stats(user,'STAT_TIMESTAMP');
PL/SQL procedure successfully completed.
2_2、将SYSTEM统计信息转移到这张表中。
转移SYSTEM统计:
如果你有系统统计请看:
select * from sys.aux_stats$;
SQL> exec dbms_stats.export_system_stats('STAT_TIMESTAMP');
PL/SQL procedure successfully completed.
收集新的统计:
检查iSR中的精确统计,通常技术支持工程师会要求删除存在的统计。如果没有在一个精确统计之前没有删除他们可以运行:
exec dbms_stats.delete_...
exec dbms_stats.gather_...
备份统计:
用你的统计表然后从新导入到你的统计中:
exec dbms_stats.import_table_stats(NULL,'', NULL,'STAT_TIMESTAMP');
exec dbms_stats.import_table_stats(NULL,'', NULL,'STAT_TIMESTAMP');
在STAT_TIMESTAMP 表中的统计表:
select distinct c1 from STAT_TIMESTAMP where type ='T';
从STAT_TIMESTAMP' table的所有表中恢复统计
exec dbms_stats.import_schema_stats(user,'STAT_TIMESTAMP');