大家好,我在一个项目中,客户将大型生产数据库从 11g 升级到 19c。升级过程的第 0 阶段花费了将近 4 个小时,负责所有时间的 DDL 都与 AWR 表(WRH$ 表)上的新列相关。
我正在与Rodrigo Jorge(升级和迁移的 PM)交谈,他向我指出了这个补丁: 30387640
alter table WRH$_SQLSTAT add (obsolete_count number default 0);
alter table WRH$_SEG_STAT add (im_membytes number default 0);
我记得自从 11g 以来,Oracle 应该 只在添加具有默认值的新列时更新数据字典,但我不记得它只适用于NOT NULL 列。
我在做了一些研究后发现了这一点,在这里你有一篇很棒的博客文章:
https://chandlerdba.com/2014/10/30/adding-not-null-columns-with-default-values/
还有一件好事,这个限制在 12c+ 中不再存在。
https://chandlerdba.com/2014/12/01/adding-a-default-column-in-12c/
如果您要从 11g 升级到 19c,并且您有一个大型 AWR 存储库,请考虑在升级之前应用补丁 30387640 (https://support.oracle.com/epmos/faces/PatchSearchResults?_adf.ctrl-state=13qownr7cu_4&_afrLoop=54596033914810)。
原文标题:Upgrade From 11.2.0.4: Slow Performance Adding Nullable Columns With Default Values To AWR Tables
原文作者:Alex Zaballa
原文链接:http://alexzaballa.blogspot.com/2022/09/upgrade-from-11204-slow-performance.html