【UP_ORACLE】Oracle 19c之從19.3升級到19.9

Attack_on_Jager發表於2021-01-20

前言

和Oracle 11g以及之前的遠古版本不同,從Oracle 12c開始,升級Oracle RDBMS只能透過類似於打PSU補丁的方式。

Oracle 19c的第一個免費版本是19.3(可以就認為是12c的12.2.0.3這個版本),建議用zip包一步一步安裝。

19.3官方下載地址:

對於19.9或者其他老版本(包括12c,11g等)可透過MOS的文件找到: ID 1454618.1

注:2020年19c目前最新的補丁是Patch 31750108 (補丁裡同時包括Grid Home和DB Home)

 

補丁資訊

Patch 31750108裡面的補丁包資訊如下:

補丁編號

補丁說明

使用條件

31771877

Database Release Update 19.9.0.0.201020

可以單獨在非RAC或者ASM單例項環境的DB Home上使用

31772784

OCW Release Update 19.9.0.0.201020

適用於DB Home和Grid Home

31773437

ACFS Release Update 19.9.0.0.201020 

僅用於Grid Home

31780966

Tomcat Release Update 19.0.0.0.0

僅用於 Grid Home

注:ACFS,DBWLM和TOMCAT子修補程式不適用於HP-UX Itanium和Linux on IBM System z platforms


補丁的安裝和解除安裝

1. 補丁安裝

(1) DB Home 和Grid Home下面的OPatch這個資料夾裡檔案的版本必須 不低於12.2.0.1.19,可透過Patch 下載,解壓後直接替換OPatch這個資料夾即可:

$ unzip Patch6880880.zip -d $ORACLE_HOME
驗證:
$ $ORACLE_HOME/OPatch/opatch version


(2)檢查DB Home和Grid Home的補丁列表裡補丁的一致性

$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

注:如果此命令成功,將會列出安裝在主目錄中的Oracle元件。

 

(3)檢查新補丁版本是否和當前已安裝補丁版本衝突

  • Grid Home:

$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31771877
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31772784
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31773437
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31780966

  • DB Home:

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31771877
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31772784


(4)檢查OS剩餘空間是否能容納補丁

先把補丁路徑放到一個自定義文字檔案中 

  • Grid Home:

 $ cat grid_patch.txt

/oracle/soft/31750108/31771877
/oracle/soft/31750108/31772784
/oracle/soft/31750108/31773437
/oracle/soft/31750108/
/oracle/soft/31750108/31780966

檢查命令:
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /home/grid/grid_patch.txt


  • DB Home:

$ cat db_patch.txt
/oracle/soft/31750108/31771877
/oracle/soft/31750108/31772784

檢查命令:
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /home/oracle/db_patch.txt


(5)執行升級安裝

此部分分三種情況:

1)適用於Oracle RAC或者使用ASM的單例項資料庫,並且Grid Home和DB Home都不是共享的,同時ACFS也沒有配置

停環境後,直接用root執行:

$ $ORACLE_HOME/bin/srvctl stop database –d db-unique-name

2)適用於Oracle RAC或者使用ASM的單例項資料庫,並且DB Home是共享的,Grid Home沒有共享出去,同時ACFS有可能已經配置:

  • 確保所有節點的庫都停了

$ $ORACLE_HOME/bin/srvctl stop database -d db-unique-name

  • 在第一個節點上如有ACFS,必須解除安裝

 

  • 在第一個節點的Grid Home 上應用補丁, root 執行 以下命令

# $GI_HOME/OPatch/opatchauto apply /oracle/soft/31750108 -oh $GI_HOME


 

  • 在第一個節點上重新掛載ACFS

 

  • 在第一個節點上,以root 使用者身份執行以下命令:

# $GI_HOME/OPatch/opatchauto apply /oracle/soft/31750108 -oh $ORACLE_HOME


注:由於資料庫主目錄是共享的, 因此此操作將跨叢集修補資料庫主目錄 但是USM 補丁無法應用於資料庫主目錄。

 

  • 僅啟動第一個節點的資料庫

$ $ORACLE_HOME/bin/srvctl start instance -d db-unique-name -n nodename


 

  • 解除安裝第二個節點的ACFS

  • 在第二個節點的Grid Home 上應用補丁, root 執行 以下命令

# $GI_HOME/OPatch/opatchauto apply /oracle/soft/31750108 -oh $GI_HOME


 

  • 在第二個節點上重新執行上一步 opatchauto 命令,將會重啟 stack

  • 在第二個節點上重新掛載ACFS

  • 僅啟動第二個節點上的資料庫

  • 其他節點重複第二個節點的操作即可

 

3 )非RAC 和不使用ASM 的單節點資料庫

  • 停庫

  • 使用db 使用者執行補丁安裝:

$ cd /oracle/soft/31750108/31771877

$ opatch apply (解除安裝命令:opatch rollback -id 31771877)


注:如果啟用了 DG ,則 DG 端也需要安裝


(6)解除安裝補丁

也是和第(5)一樣的三個步驟,只需要把“apply”改成“rollback”


後續步驟

安裝或解除安裝補丁後都需要:

(1)對於曾打過補丁的 Oracle home 上執行的每個單獨的資料庫(包括多租戶和非多租戶),   按照 下表 執行 datapatch 命令該實用程式。如果是 Oracle RAC ,則僅在一個例項上執行 datapatch

 

Steps

Standalone DB

Steps

Single/Multitenant    (CDB/PDB) DB

1

% sqlplus /nolog

1

% sqlplus /nolog

2

SQL> Connect / as sysdba

2

SQL> Connect / as sysdba

3

SQL> startup

3

SQL> startup

4

SQL> quit

4

SQL> alter pluggable database all   open;

5

% cd $ORACLE_HOME/OPatch

5

SQL> quit

6

% ./datapatch -verbose

6

% cd $ORACLE_HOME/OPatch



7

% ./datapatch -verbose

注:在dba_registry_sqlpatch檢視中,確認APPLY的狀態為“ SUCCESS”。  


(2)檢查$ORACLE_HOME/sqlpatch/31771877/中的以下日誌檔案是否存在錯誤:

31771877_rollback_dbSID_CDBname_timestamp.log


(3)編譯無效物件

cd $ORACLE_HOME/rdbms/admin

sqlplus /nolog

SQL> CONNECT / AS SYSDBA

SQL> @utlrp.sql


(4)升級catalog

$ rman catalog sys/sys@test_db

RMAN> UPGRADE CATALOG;    ##執行兩遍

RMAN> UPGRADE CATALOG;

RMAN> EXIT;



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2751275/,如需轉載,請註明出處,否則將追究法律責任。

相關文章