如何导出Oracle统计数据
题
我正在编写一些新的 SQL 查询,并希望检查 Oracle 查询优化器在生产中提出的查询计划。
我的开发数据库没有像生产数据库那样的数据量。
如何从生产数据库导出数据库统计信息并将其重新导入到开发数据库中?我无权访问生产数据库,因此我无法在不通过第三方托管组织的情况下简单地生成生产解释计划。这很痛苦。所以我想要一个本地数据库,它在某种程度上代表了生产,我可以在上面尝试不同的事情。
此外,这适用于遗留应用程序。我想通过添加适当的索引来“改进”架构。限制等
我需要首先在我的开发数据库中执行此操作,然后再进行测试和生产。
如果我在开发中添加索引并重新生成统计数据,那么统计数据将围绕开发数据量生成,这使得很难评估我的更改对生产的影响。
有人对如何处理这个问题有任何建议吗?或者这只是我们在生产中发现意外行为后修复它的情况?我确实有一个具有生产量的临时数据库,但我再次必须通过第三方来对此运行查询,这很痛苦。所以我正在寻找尽可能消除中间人的方法。
这一切都是使用Oracle 9i。
谢谢。
解决方案
请参阅 DBMS_STATS.EXPORT_SCHEMA_STATS 和 DBMS_STATS.IMPORT_SCHEMA_STATS 包的文档。如果您没有访问权限,则必须让具有必要权限的人员为您在生产数据库中进行导出。如果您的开发硬件与生产硬件显着不同,您还应该使用 EXPORT/IMPORT_SYSTEM_STATS 过程导出/导入系统统计信息。
请记住在执行此操作后关闭开发数据库中重新计算统计信息的所有作业。
不隶属于 StackOverflow