原文鏈接:https://dohdatabase.com/2021/01/07/how-to-upgrade-a-single-pdb/
AutoUpgrade 現(xiàn)在支持拔插升級。你從較低版本的 CDB 中拔出 PDB,然后將其插入到較高版本的 CDB 中。插入升級后,PDB最終可以以正常的READ WRITE模式打開。
AutoUpgrade升級概念,支持自動升級21.1.1版本
當涉及到多租戶的升級時,我非常喜歡unplug-plug的升級。 這個概念有很多好處:
- 與僅包含一個 PDB 的 CDB 相比,使用unplug-plug升級單個 PDB 的速度要快得多。當您進行unplug-plug升級時,數(shù)據(jù)庫只需要升級 PDB。相比之下,CDB首先升級CDBROOT,然后升級PDBSEED和任何用戶的PDB。
- 不必為 CDB 中的所有 PDB 安排停機時間,只有你要升級的 PDB 需要停機時間。
- 將它與可刷新的 PDB結合起來,你仍然可以擁有一個非常好的備用選項。你可以查看之前的博客文章,了解如何使用可刷新的 PDB。
自動升級和拔插升級
從版本 21開始,AutoUpgrade 可以執(zhí)行拔插升級。較新版本的 AutoUpgrade 也可以升級到較舊的數(shù)據(jù)庫版本,因此如果 AutoUpgrade 版本與您要升級到的 Oracle 數(shù)據(jù)庫版本不匹配,請不要擔心。
為了執(zhí)行拔出升級必須滿足一些要求,因此我建議您查看文檔。
您必須自己創(chuàng)建目標 CDB。AutoUpgrade 不會為您執(zhí)行此操作,這是設計使然。首先,創(chuàng)建一個CDB需要很多信息,可以通過多種不同方式完成(ASM?哪些組件?RAC?)。您需要一個很長的配置文件來提供所有這些信息。此外,創(chuàng)建 CDB 需要時間,如果 AutoUpgrade 必須在維護窗口內(nèi)執(zhí)行此操作,則會大大延長。
在拔插升級過程中,AutoUpgrade還允許您更改pdb的名稱,您可以決定是否要重用拔插的數(shù)據(jù)文件或復制數(shù)據(jù)文件。
如何升級
想象一下以下 AutoUpgrade 配置文件:
upg1.sid=CDB1
upg1.target_cdb=CDB2
upg1.pdbs=hr,logistics
upg1.source_home=/u01/app/oracle/product/12.2.0.1
upg1.target_home=/u01/app/oracle/product/19
upg1.target_pdb_name.hr=people
AutoUpgrade將從CDB1中拔下 PDB hr和logistics并將它們插入CDB2。此外,它在插入CDB2時會將hr的名稱更改為people。最后,您必須指定兩個 CDB 的 Oracle Home,以便 AutoUpgrade 可以正確設置環(huán)境并連接到數(shù)據(jù)庫。
如果你使用lsj命令來查看進度,它實際上看起來就像只升級了一個pdb:
upg> lsj
+----+-------+---------+---------+-------+--------------+--------+------------------+
|Job#|DB_NAME| STAGE|OPERATION| STATUS| START_TIME| UPDATED| MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+------------------+
| 100| CDB1|DBUPGRADE|EXECUTING|RUNNING|20/12/22 15:25|15:29:03|13%Upgraded PEOPLE|
+----+-------+---------+---------+-------+--------------+--------+------------------+
Total jobs 1
但是如果你查看status -job 100的細節(jié),你會發(fā)現(xiàn)兩個pdb是并行升級的:
upg> status -job 100
... (removed a lot of information)
Details:
[Upgrading] is [0%] completed for [cdb1-people]
+---------+-------------+
|CONTAINER| PERCENTAGE|
+---------+-------------+
| PEOPLE|UPGRADE [13%]|
|LOGISTICS|UPGRADE [13%]|
+---------+-------------+
升級完成后,就可以使用pdb了。 我建議您檢查數(shù)據(jù)庫是否以READ WRITE模式打開,而不是以restricted模式。 最后,保存狀態(tài),這樣pdb和CDB一起自動啟動:
SQL> select name, open_mode, restricted from v$pdbs where name in ('PEOPLE', 'LOGISTICS');
SQL> --Verify open_mode=read write and restricted=no
SQL> alter pluggable database people save state;
SQL> alter pluggable database logistics save state;
提醒
通過拔插升級,您不能使用閃回數(shù)據(jù)庫作為您的后備計劃。它不能跨插件操作工作。您必須:
- 指示 AutoUpgrade 在插入更高版本的 CDB 之前復制未插入的數(shù)據(jù)文件。這樣,你仍然擁有未插入的舊數(shù)據(jù)文件,只需在較低版本的 CDB 中重新創(chuàng)建 PDB。但是你要有額外的停機時間,因為您需要復制數(shù)據(jù)文件。
- 使用可刷新 PDB 在更高版本的目標 CDB 中構建 PDB 的副本。當需要升級時,請執(zhí)行最后一次刷新并升級可刷新的 PDB。
以上兩個選項都需要額外的磁盤空間來保存數(shù)據(jù)庫的副本。
當然,你也可以使用常規(guī)備份作為后備。
如果是有以下情況:
- 你的目標 CDB 有Standby Database?
目前,如果目標 CDB 有Standby Database,請不要使用 AutoUpgrade 進行拔插升級。使用Standby Database進行插件操作是一項棘手的操作,至少在你想要重用數(shù)據(jù)文件時是這樣。我們?nèi)栽谠噲D弄清楚如何在自動升級中實現(xiàn)它。
話雖如此,這絕對是可行的。您可以在以下 MOS 說明中了解更多信息:
- Reusing the Source Standby Database Files When Plugging a PDB into the Primary
- Database of a Data Guard Configuration (Doc ID 2273829.1)
aking Use Deferred PDB Recovery and the STANDBYS=NONE Feature with Oracle Multitenant (Doc ID 1916648.1)
- 您正在使用TDE表空間加密?
目前,如果PDB中的任何表空間使用了TDE tablespace Encryption加密,不要使用AutoUpgrade執(zhí)行unplug-plug升級。 我們正在努力使AutoUpgrade能夠更好地與TDE密鑰庫交互,所以請留意即將推出的版本
如果目標CDB中啟用了“TDE Tablespace Encryption”,仍然可以使用“AutoUpgrade”。 PDB將作為未加密的PDB插入。
結論
自版本 21 起,AutoUpgrade 支持進行拔插升級。它包括用于重命名 PDB 和使用拔出數(shù)據(jù)文件副本的有用功能。
延伸閱讀
- Understanding Unplug-Plug Upgrades with AutoUpgrade – Oracle Database 21c Upgrade Guide
- About Refreshable Clone PDBs – Oracle Database 19c Administrator’s Guide
- Upgrading in the cloud – VM DB Systems – 12.2.0.1 PDB to 19c – blog post
- New Version of AutoUpgrade – blog post
- AutoUpgrade Tool (Doc ID 2485457.1) – My Oracle Support




