更新資料庫
本文將說明使用主控台和 API 在資料庫系統中更新資料庫的程序。
必要的 IAM 原則
若要使用 Oracle Cloud Infrastructure,管理員必須透過原則授予您安全性存取權。不論您是使用主控台或 REST API 搭配 SDK、CLI 或其他工具,都必須具備此存取權。如果您收到一則訊息,指出您沒有權限或未經授權,請與您的管理員確認您所擁有的存取類型,以及應使用的區間。
針對管理員:讓資料庫管理員管理 Oracle Cloud 資料庫系統中的原則可讓指定的群組對資料庫和相關資料庫資源執行所有動作。
如果您不熟悉原則,請參閱原則入門和通用原則。如果您想要深入撰寫資料庫的原則,請參閱資料庫服務的詳細資訊。
關於更新資料庫
Oracle 建議先更新資料庫系統後,再更新該資料庫系統內的資料庫。
對於 Oracle Database,有四個最新版本可供更新 (N 到 N-3)。例如,如果執行處理使用 21c,且提供的最新 21c 版本為 21.10.0.0,則 21.10.0.0、21.9.0.0、21.8.0.0 和 21.7.0.0 可供 Oracle Database 更新使用。您可以使用上述任一更新,但 Oracle 建議使用最新版本。
您也可以使用自訂資料庫軟體映像檔來更新您的 Oracle Database。使用軟體映像進行更新時,Oracle 支援根據四個最新版本中的任一版本 (N 到 N-3) 使用任何映像進行更新。
從 2022 年 4 月開始,19c 的 12.1、12.2 和 2022 年 7 月更新,下列僅適用於 Oracle 更新。
如果您已安裝任何暫時更新 (之前稱為單次修正程式 ),則那些暫時更新將在安裝新更新之前自動倒回。如果新更新未包含暫時更新,則可以在完成安裝新更新後再次安裝暫時更新。
如果您的資料庫中已安裝任何暫時更新,則為了避免在新更新後安裝暫時更新,Oracle 建議您使用自訂資料庫軟體映像檔,並使用該映像檔更新您的資料庫。
執行前置檢查之後,您可以透過在 dbcli 中執行下列命令,識別是否已安裝任何額外的暫時更新。
dbcli describe-job -i <job id>
其中 job id
(dbcli list-jobs
) 是前置檢查執行的工作 ID。
「Oracle 本位目錄」中的所有變更將會複製到新更新和已安裝的資料庫。
附註:
- Oracle 不建議變更資料庫本位目錄內的任何檔案。
- 請務必確認已正確複製您對「資料庫本位目錄」所做的所有變更。如果您已經複製「資料庫本位目錄」中的任何檔案或資料夾,例如
tnsnames.ora
、listener.ora
等,您應該手動備份這些檔案。
資料庫系統應能夠存取 OCI 內的身分識別和物件儲存端點。如果在專用子網路上執行的資料庫系統只設定了服務閘道而沒有其他閘道 (例如 NAT 閘道),則應確保服務閘道設定為允許存取所有 Oracle 服務,而非僅允許存取物件儲存。如果可以透過其他方式連線識別端點和物件儲存端點,則不需要進行任何變更。
如需目前可用資料庫更新清單的詳細資訊,請參閱 Currently Available Updates 。
附註:
必須使用 OPATCH 工具手動套用 OJVM 更新。使用資料庫軟體映像檔套用暫時更新
我們不建議對資料庫系統套用暫時更新。因此,您應該建立和部署包含必要修正的資料庫軟體映像檔。只有在無法使用資料庫軟體映像檔的情況下 (例如將暫時更新套用至 GI 本位目錄),您才可以提出「服務要求 (SR)」並要求支援協助下載暫時更新。
如需資料庫軟體映像檔的詳細資訊,請參閱軟體映像檔。
套用資料庫更新
執行下列步驟,從較舊的更新版本更新資料庫。
- 開啟導覽功能表。選取 Oracle Database ,然後選取 Oracle Base Database Service 。
- 選取您的區間。隨即顯示資料庫系統清單。
- 在資料庫系統清單中,按一下包含您要更新之資料庫的資料庫系統名稱。
- 會顯示資料庫系統詳細資訊,後面接著資料庫清單。
- 在資料庫清單中,按一下要更新的資料庫名稱。
- 在資料庫資訊頁籤的版本下,按一下資料庫版本欄位旁的檢視連結。
- 在資料庫下,複查資料庫的可用更新清單。
- Oracle Database 軟體影像頁籤顯示您可以用來更新資料庫的一般可用 Oracle Database 軟體影像。
- 自訂資料庫軟體映像檔頁籤可讓您選取預先建立的資料庫軟體映像檔。
- 您可以使用選取區間選取器來指定包含軟體映像檔的區間。
- 使用區域篩選,存取在不同區域中建立的軟體映像檔。
- 針對您感興趣的更新,按一下動作功能表,然後按一下下列其中一個動作:
- 前置檢查:檢查是否有任何先決條件,以確保可順利套用更新。若要執行前置檢查,請按一下前置檢查,然後在確認前置檢查對話方塊中提供確認。
- 套用:套用選取的更新。Oracle 建議您在套用前先執行更新的前置檢查作業。若要套用更新,請按一下套用,然後在確認對話方塊中提供確認。
在清單中,狀態會顯示作業的狀態。套用更新時,「狀態」會顯示為更新。資料庫的狀態也會顯示為更新。資料庫與其資源的生命週期作業可能暫時無法使用。如果更新順利完成,「狀態」會變更為已套用,而資料庫的狀態會變更為可用。
檢視資料庫更新歷史記錄
執行下列步驟即可檢視資料庫的更新歷史記錄。
附註:
主控台中的更新歷程檢視不會顯示使用命令行工具 (例如 dbcli 或 Patch 公用程式) 套用的更新。- 開啟導覽功能表。選取 Oracle Database ,然後選取 Oracle Base Database Service 。
- 選取您的區間。隨即顯示資料庫系統清單。
- 在資料庫系統清單中,按一下包含要檢視更新詳細資訊之資料庫的資料庫系統名稱。
- 會顯示資料庫系統詳細資訊,後面接著資料庫清單。
- 在資料庫清單中,按一下您要檢視更新詳細資訊的資料庫名稱。
- 在資料庫資訊頁籤的版本下,按一下資料庫版本欄位旁的檢視連結。
- 在更新頁面上,按一下左側功能表上的更新歷史記錄。
- 會顯示該資料庫之更新和升級作業的歷史記錄。
套用過渡更新
附註:
本主題僅適用於單一節點和多節點 RAC 資料庫系統的資料庫本位目錄。若要套用暫時更新來修正特定瑕疵,請遵循本節中的程序。使用 Opatch
公用程式將暫時更新套用至資料庫本位目錄。
附註:
在程序範例中,「資料庫本位目錄」為 /u02/app/oracle/product/12.1.0.2/dbhome_1 ,更新編號為 26543344 。- 從 My Oracle Support 取得適用的暫時更新。
- 複查更新
README.txt
檔案中的資訊。此檔案可能包含附加和 / 或自訂指示,以便順利套用更新。 - 使用 SCP 或 SFTP 將更新放置在您的目標資料庫上。
- 關閉在「資料庫本位目錄」中執行的每個資料庫。
srvctl stop database -db <db name> -stopoption immediate -verbose
- 將「Oracle 本位目錄」環境變數設為指向目標「Oracle 本位目錄」。
sudo su - oracle export ORACLE_HOME=/u02/app/oracle/product/12.1.0.2/dbhome_1
- 變更至您放置更新的目錄,然後解壓縮更新。
cd <working directory where opatch is stored> unzip p26543344_122010_Linux-x86-64.zip
- 將解壓縮的更新變更為目錄,並檢查衝突。
cd 26543344 $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
- 套用更新。
$ORACLE_HOME/OPatch/opatch apply
- 驗證已成功套用更新。
$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
- 如果資料庫本位目錄包含資料庫,請重新啟動它們。
$ORACLE_HOME/bin/srvctl start database -db <db name>
否則,請以
root
使用者身分執行下列命令。# /u01/app/<db version>/grid/bin/setasmgidwrap o=/u01/app/oracle/product/<db version>/dbhome_1/bin/oracle
- 如果 Readme 指示更新含有
sqlpatch
元件,請針對每個資料庫執行datapatch
命令。執行
datapatch
之前,請先確定所有可插拔資料庫 (PDB) 都已開啟。如果要開啟 PDB,您可以使用 SQL*Plus 對 PDB 執行下列動作。ALTER PLUGGABLE DATABASE <pdb name> OPEN READ WRITE
$ORACLE_HOME/OPatch/datapatch
使用 API
如需有關使用 API 和簽署要求的資訊,請參閱 REST API 和安全證明資料。如需 SDK 的相關資訊,請參閱軟體開發套件與命令行介面。
使用下列 API 管理資料庫更新:
- ListDbHomePatches
- ListDbHomePatchHistoryEntries
- GetDbHomePatch
- GetDbHomePatchHistoryEntry
- UpdateDbHome
- UpdateDatabase
如需資料庫服務的完整 API 清單,請參閱資料庫服務 API 。