1. 程式人生 > 實用技巧 >轉載:19.6.2 DBCA建庫後,PDB處於受限模式

轉載:19.6.2 DBCA建庫後,PDB處於受限模式

注意:本篇文件是轉載自微信公眾號:ANBOB手記weejar

1.1問題現象

LINUX REDHAT 6.9,2節點RAC

安裝19.3 GI,ORACLE軟體後,打19.6.2 RUR補丁 GI,ORACLE軟體後。

DBCA建庫,需要3個小時,並且DBCA成功完成後,觀察到種子庫及PDB均處於受限模式。

Version 19.6.2.0.0
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2
PDB$SEED READ ONLY YES 3 PDB1 READ WRITE YES

之前檢索很多文件沒有找到答案,直到公眾號分享的一篇文章,找到了答案,如下擷取資訊。

1.2問題場景

Alert: Orace 19c DBCA花4小時完成,如何避免?
原創 weejar  ANBOB手記  4月11日

上週同事在安裝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. 接下來可能就出現這個問題,安裝的進度條長時間在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

1.3問題處理

安裝並應用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 Database,不會觸發這個問題!!!

1.3為什麼會出現這個問題???

為什麼建立CUSTOM資料庫不會發生這種情況?
建立CUSTOM資料庫時,因為不包含datafiles,將執行所有用於構建詞典的指令碼。因此,您將獲得一個全新的乾淨字典,而選擇預構建的DW和OLTP資料庫已經帶來了它的SYSTEM表空間datafile,
可能存在一些不相容的問題,這個問題是有些奇怪,相信以後會是常見現象。 經驗總結 在安裝19c資料庫 在安裝了DBRU後,記的安裝對應的OJVM patch。 如果有注意DBRU中也有升級 JDK。另外在DBUA中儘可能選擇Custom database根據自己的需要選擇安裝對應的元件,
減少不必要的升級時間。 –enjoy it


如下,使用單例項環境進行測試,安裝19.6.2 PSU補丁+ OJVM19.6 DB補丁後,DBCA建庫!!! 正常的理解是沒有問題(使用
Custom database沒問題,就是慢一點),
使用General Purpose or Transaction processing方式建立,還是報錯!!!


executing command: SET NEWNAME
Starting restore at 31-OCT-20
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=430 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u02/app/oracle/oradata/ORCL3/system01.dbf
channel ORA_DISK_1: reading from backup piece /u02/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/Seed_Database.dfb
channel ORA_DISK_1: ORA-19870: error while restoring backup piece /u02/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/Seed_Database.dfb
ORA-19599: block number 12069 is corrupt in backup piece /u02/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/Seed_Database.dfb
failover to previous backup
creating datafile file number=1 name=/u02/app/oracle/oradata/ORCL3/system01.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 10/31/2020 06:42:04
ORA-01180: can not create datafile 1
ORA-01110: data file 1: '/u02/app/oracle/oradata/ORCL3/system01.dbf'
RMAN>

報錯的內容很有意思ORA-19870ORA-19599,我有理由相信是Oracle的模板的檔案自身就存在問題,因此選擇非Custom database方式,需要使用Oracle的模板檔案進行restore快速還原檔案進行DBCA快速搭建。 但是模板檔案就有問題,因此生產環境19.6.2 DBCA之後,PDB及種子庫都處於受限模式,進一步查詢都是ODU元件失效!!!

實測:19.8.2、19.6.2 DBCA打PSU後,無安裝OJVM補丁,DBCA使用Custom database方式,檢查PDB無異常!!!


這篇文件的作用是進行警示,建議Oracle沒解決這個問題之前,建議>19.6的版本DBCA建庫,選擇Custom database方式。
19.5.2建庫多套,沒有發現必須使用Custom database方式,19.6.2就遇到了。
遇到了也不要慌,按照OJVM補丁修復或者刪庫重建即可。