复制优化程序统计信息 - Oracle 10g

时间:2012-10-15 14:11:14

标签: oracle oracle10g statistics

我正在尝试将统计信息从一个模式复制到另一个模式。我使用以下命令,但在all_tables视图上的目标模式num_rows保持不变。是否有任何视图可以检查验证统计信息移动的目标架构?

EXEC DBMS_STATS.create_stat_table('DBASCHEMA','STATS_TABLE');
EXEC DBMS_STATS.export_schema_stats('APPSCHEMA','STATS_TABLE',NULL,'DBASCHEMA');
EXEC DBMS_STATS.import_schema_stats('APPSCHEMA','STATS_TABLE',NULL,'DBASCHEMA');
EXEC DBMS_STATS.drop_stat_table('DBASCHEMA','STATS_TABLE');

谢谢。

1 个答案:

答案 0 :(得分:1)

您正在导出并导入到同一架构中。如果要将统计信息从APPSCHEMA复制到DBASCHEMA,这将起作用:

BEGIN
    DBMS_STATS.create_stat_table('DBASCHEMA','STATS_TABLE');
    DBMS_STATS.export_schema_stats('APPSCHEMA','STATS_TABLE',NULL,'DBASCHEMA');

    EXECUTE IMMEDIATE 'UPDATE DBASCHEMA.STATS_TABLE SET c5 = ''DBASCHEMA''';
    COMMIT;

    DBMS_STATS.import_schema_stats('DBASCHEMA','STATS_TABLE');
    DBMS_STATS.drop_stat_table('DBASCHEMA','STATS_TABLE');
end;
/

我更改了导入以使用DBASCHEMA。正如My Oracle Support文档1430225.1所解释的那样,中间的UPDATE是避免错误ORA-20000: no statistics are imported所必需的。