上周同事在安装Oracle 19c RAC环境时,全新的软件在安装了当前最新的19.6 RU后,DBCA创建数据库居然花了4个小时左右,环境RHEL 7.5 , 本地全SSD 硬盘,共享存储是”菊厂”的高端全闪阵列,这样的速度不能忍。 目前在MOS没有相关记录的BUG, 不过最终找到的原因,这里记录分享一下这个问题。
这个有问题有一定的场景,能否遇到取决于安装方法的选择,养成好习惯受益终身。
场景1, 安装步骤
- 1, 安装全新的Oracle 19.3 GI 和DB 环境, DB 选择只安装软件
- 2, 安装应用19.6 RU到当前环境中GI 和DB
- 3, 使用DBCA 创建新的数据库, 在OUI 图形的Deployment Type选项卡,如果是习惯性的选择“Custom Database”
然后接下的安装会非常顺利,不会存在任何问题。
场景2, 安装步骤
- 1, 安装全新的Oracle 19.3 GI 和DB 环境, DB 选择只安装软件
- 2, 安装应用19.6 RU到当前环境中GI 和DB
- 3, 使用DBCA 创建新的数据库, 在OUI 图形的Deployment Type选项卡,选择任何现有include datafiles=Yes的库模板如DW\OLTP.
借用Mike Dietrich’s的图片。
接下来可能就出现这个问题,安装的进度条在50%多,然后到安装完成可能需要等待3-4个小时。在安装完成后会发现数据库存在SDO组件处理INVALID,所有PDBS处于RESTRICTED限制访问模式,同时数据库中包含大量的Invalid 无效对象。
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Feb 16 20:40:31 2020 Version 19.6.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.6.0.0.0 SQL> select count(*) from dba_objects where status='INVALID'; COUNT(*) ---------- 256
复制
后来Google发现Mike Dietrich也在他的BLOG记录了他们客户向他反映相同的问题,解决方法是应用 OJVM 19.6 patch.
MOS 2118136.2
19.0.0.0
Description OJVM Update OJVM + DB Update OJVM + GI Update
JAN2020 (19.6.0.0.200114) 30484981 30463595 30463609
OCT2019 (19.5.0.0.191015) 30128191 30133124 30133178
JUL2019 (19.4.0.0.190716) 29774421 29699079 29699097
APR2019 (19.3.0.0.190416) 29548437 29621253 29621299
安装并应用DB OJVM patch 30484981.
su - oracle -- Shutdown DB and Listener sqlplus / as sysdba shutdown immediate exit lsnrctl stop -- Run: opatch apply cd $ORACLE_HOME/OPatch ./opatch apply /u01/orasw/patches/30463595/30484981 -oh $ORACLE_HOME -- Startup DB and Listener sqlplus / as sysdba startup exit lsnrctl start -- Run: datapatch cd $ORACLE_HOME/OPatch ./datapatch -verbose Check dba_registry COL version FORMAT a10 COL action FORMAT a10 COL status FORMAT a10 COL action_time FORMAT a30 COL description FORMAT a65 SELECT patch_id,patch_type,action,status,action_time,description FROM dba_registry_sqlpatch; 重新编译 $ cd $ORACLE_HOME/rdbms/admin oracle@anbob:/u01/app/oracle/product/19JVM/rdbms/admin $ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl --n 1 --e --b utlrp --d '''.''' utlrp.sql SQL> select count(*) from cdb_objects where status='INVALID'; COUNT(*) ---------- 0
复制
或删库重新DBCA 该问题已消失.
为什么创建CUSTOM数据库不会发生这种情况?
选择创建CUSTOM数据库时,因为该模板不包含datafiles,将运行所有用于构建词典的脚本。因此,您将获得一个全新的干净字典,而预构建的DW和OLTP数据库已经带来了它的SYSTEM表空间datafile。
经验总结
在安装19c数据库 在安装了DBRU后,记的安装对应的OJVM patch。 记的DBRU中也有升级 JDK。 另外在DBUA中尽可能选择Custom database根据自己的需要选择安装对应的组件,减少不必要的升级时间。
–enjoy it