为啥 Oracle 会在导入后锁定我的模式的统计信息?

Posted

技术标签:

【中文标题】为啥 Oracle 会在导入后锁定我的模式的统计信息?【英文标题】:Why is Oracle is locking the statistics of my schema after import?为什么 Oracle 会在导入后锁定我的模式的统计信息? 【发布时间】:2015-05-06 15:01:54 【问题描述】:

我的问题是我有一个所有表的统计信息都被锁定的架构。

我在互联网上发现可以使用DBMS_STATS.UNLOCK_TABLE_STATS (SCHEMA_NAME) 程序解锁。

我需要知道的是 Oracle 如何确定何时锁定统计信息以及何时不锁定,以避免此类情况。

【问题讨论】:

您确定有人没有故意手动锁定统计信息吗? @AlexPoole 当我在暂存区导入架构时,所有表统计信息都被锁定,但在原始架构中它们不是。 您是否导入了架构with no data?似乎同时影响 imp 和 imdp,但可能有助于了解您使用了哪个以及哪些参数。 请注意,如果表统计信息被锁定,索引统计信息也会被锁定。 【参考方案1】:

来自original import command 的文档:

如果ROWS=n,则在导入操作完成后,所有导入表的统计信息都会被锁定。

对于data pump import:

请注意,如果您指定CONTENT=METADATA_ONLY,则从转储文件导入的任何索引或表统计信息在导入操作完成后都会被锁定。

如果您不想要数据,那么作为解锁所有导入对象的统计信息的替代方法,您可以将CONTENT 保留为ALL,并将查询过滤器应用于导出而不是排除所有行,例如QUERY=("WHERE 0=1").

【讨论】:

是的@Alex,看来你解决了我的问题。我使用CONTENT=METADATA_ONLYimpdp 因为我不需要数据,下次我会尝试使用QUERY 参数。谢谢:)

以上是关于为啥 Oracle 会在导入后锁定我的模式的统计信息?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中,为啥同样的SELECT查询语句,加了CREATE TABLE AS后速度更快了?

为啥我的调用会在网格加载时间上增加 10 秒?

为啥 long packageName 会在作为量词导入之前导致换行?

为啥我的微信无法打开小程序了呢?

ORACLE索引失效,更新统计信息

dbms_stats包更新导出导入锁定统计信息