DBMS_STATS常用方法(收集oracle信息)

联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

标题:DBMS_STATS常用方法(收集oracle信息)

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

–收集数据库信息
EXEC DBMS_STATS.gather_database_stats;
EXEC DBMS_STATS.gather_database_stats(estimate_percent => 15);

–收集schema信息
EXEC DBMS_STATS.gather_schema_stats(‘SCOTT’);
EXEC DBMS_STATS.gather_schema_stats(‘SCOTT’, estimate_percent => 15);

–收集表信息
EXEC DBMS_STATS.gather_table_stats(‘SCOTT’, ‘EMPLOYEES’);
EXEC DBMS_STATS.gather_table_stats(‘SCOTT’, ‘EMPLOYEES’, estimate_percent => 15);

–收集index信息
EXEC DBMS_STATS.gather_index_stats(‘SCOTT’, ‘EMPLOYEES_PK’);
EXEC DBMS_STATS.gather_index_stats(‘SCOTT’, ‘EMPLOYEES_PK’, estimate_percent => 15);

–删除收集信息
EXEC DBMS_STATS.delete_database_stats;
EXEC DBMS_STATS.delete_schema_stats(‘SCOTT’);
EXEC DBMS_STATS.delete_table_stats(‘SCOTT’, ‘EMPLOYEES’);
EXEC DBMS_STATS.delete_index_stats(‘SCOTT’, ‘EMPLOYEES_PK’);

–创建备份收集信息表
begin
dbms_stats.create_stat_table(USER,stattab => ‘STAT_TABLE’);
end;

–备份收集信息
BEGIN
dbms_stats.export_table_stats(USER,tabname => ‘FEI_T’,stattab => ‘STAT_TABLE’);
END;

–删除收集信息
BEGIN
DBMS_STATS.delete_table_stats(USER,tabname => ‘FEI_T’);
END;

–导入收集信息
BEGIN
dbms_stats.IMPORT_TABLE_STATS(USER,’FEI_T’,stattab => ‘STAT_TABLE’);
END;

–说明:
当前用户可以使用user代替用户名
分析表相关对象信息cascade => true

此条目发表在 Oracle性能优化 分类目录。将固定链接加入收藏夹。

DBMS_STATS常用方法(收集oracle信息)》有 1 条评论

  1. 惜 分飞 说:

    备份统计信息
    BEGIN
    DBMS_STATS.CREATE_STAT_TABLE (‘hr’, ‘savestats’);
    DBMS_STATS.GATHER_TABLE_STATS (‘hr’, ‘employees’, stattab => ‘savestats’);
    END;

    恢复统计信息
    BEGIN
    DBMS_STATS.DELETE_TABLE_STATS (‘hr’, ‘employees’);
    DBMS_STATS.IMPORT_TABLE_STATS (‘hr’, ‘employees’, stattab => ‘savestats’);
    END;

    Note:savestats表可以删除,可以考虑加上force=true,相关的index也做同样处理