首页 » ORACLE [C]系列, ORACLE 9i-23c » Alert:Oracle19c DBCA take many hours after apply 19.6 DBRU without OJVM patch (DBCA超级慢)

Alert:Oracle19c DBCA take many hours after apply 19.6 DBRU without OJVM patch (DBCA超级慢)

上周同事在安装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

打赏

,

对不起,这篇文章暂时关闭评论。