Alert: Orace 19c DBCA花4小时完成,如何避免?

     上周同事在安装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的图片。

接下来可能就出现这个问题,安装的进度条长时间在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;

1,重新编译

$ 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

2, 或删库重新DBCA 该问题已消失.

为什么创建CUSTOM数据库不会发生这种情况?

创建CUSTOM数据库时,因为不包含datafiles,将运行所有用于构建词典的脚本。因此,您将获得一个全新的干净字典,而选择预构建的DW和OLTP数据库已经带来了它的SYSTEM表空间datafile,可能存在一些不兼容的问题,这个问题是有些奇怪,相信以后会是常见现象。

经验总结

在安装19c数据库 在安装了DBRU后,记的安装对应的OJVM patch。 如果有注意DBRU中也有升级 JDK。另外在DBUA中尽可能选择Custom database根据自己的需要选择安装对应的组件,减少不必要的升级时间。

–enjoy it


请使用浏览器的分享功能分享到微信等