【RAC】11gR2 rac 上滾動安裝/回退補丁

lwitpub發表於2014-10-17
在RAC環境上安裝小補丁時,可以使用滾動安裝的方式(Rolling)以提供無間斷的業務應用!在安裝補丁的時候,先停止一個資料庫例項,在此節點安裝補丁,然後啟動這個例項,再停止另一個例項並安裝這個補丁,這樣能夠保證一直有可用的資料庫例項,業務能夠無間斷提供服務!
   使用滾動安裝的前提是這個補丁是可以Rolling安裝的,對於如何判斷一個補丁是Rolling的,下面的文章中會提到。
一般來說,大體的Rolling安裝的方式如下:
1. 下載補丁。
2. 打補丁之前,最好做一下資料庫的備份。
3. 檢查這次安裝的補丁是否和以往的補丁衝突。
4. 如果有測試庫,最好先在測試庫測試一下這個補丁。
5. 務必仔細閱讀補丁的Readme並按照其中的步驟來打補丁:
   1). 用oracle使用者將這個補丁上傳到伺服器上的一個目錄.
   2). 解壓這個檔案:
   3). 停止節點1這個ORACLE_HOME下所有的資料庫例項+ASM例項(如果有,11g rac 可以不用,10g需要);
   4). 在節點1打補丁:
        $cd $ORACLE_HOME/OPatch/9711859 (目錄可以根據實際情況更改)
        $opatch apply
    5). 然後opatch會問您是否要打下一個節點2,這時候執行下面的操作:
    6). 啟動節點1 的ORACLE_HOME下所有的資料庫例項+ASM例項(如果有);
    7). 停止節點2這個ORACLE_HOME下所有的資料庫例項+ASM例項(如果有);
    8). 在之前打補丁的那個提示符中,確認繼續打下一個節點;
    9). 啟動節點2 這個ORACLE_HOME下所有的資料庫例項+ASM例項(如果有);
   10).如果有多個節點,依次執行。
一 下載 opatch 和補丁~!
a)檢查 opatch 的版本
oracle@rac1:/home/oracle/software>opatch version   
Invoking OPatch 11.1.0.6.6
OPatch Version: 11.1.0.6.6
OPatch succeeded.
b)下載最新的版本
我的是以p9711859_112010_Linux-x86-64.zip 為例!
備份 老的opatch ,解壓新的optach
oracle@rac1:/home/oracle/software>cd $ORACLE_HOME
oracle@rac1:/opt/rac/oracle/11.2.0/rac> tar zcvf OPatch_`date +%Y%m%d`.tar.gz OPatch
OPatch/
oracle@rac1:/home/oracle/software>unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME
Archive:  p6880880_112000_Linux-x86-64.zip
replace /opt/rac/oracle/11.2.0/rac/OPatch/docs/Users_Guide.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
..........
 inflating: /opt/rac/oracle/11.2.0/rac/OPatch/crs/s_crsconfig_lib.pm 
檢視opatch 的版本!
oracle@rac1:/home/oracle/software>opatch version
OPatch Version: 11.2.0.3.0
OPatch succeeded.
oracle@rac1:/home/oracle/software>
c)下載要安裝的補丁並且檢查是否滿足rolling apply
oracle@rac1:/home/oracle>opatch query -all /home/oracle/software/9711859 | grep rolling
Patch is a rolling patch: true
二 停止節點1 rac1 的監聽
oracle@rac1:/home/oracle>srvctl stop listener -l LISTENER -n rac1
oracle@rac1:/home/oracle>
oracle@rac1:/home/oracle>srvctl status listener -l LISTENER
監聽程式 LISTENER 已啟用
監聽程式 LISTENER 正在節點上執行: rac2
停止節點1 上的資料庫例項 (對於10版本還要停止asm 例項) 
oracle@rac1:/home/oracle>srvctl status instance -d rac -i rac1
例項 rac1 正在節點 rac1 上執行
oracle@rac1:/home/oracle>srvctl stop instance -d rac -i rac1
三 開始rolling方式應用補丁:
oracle@rac1:/home/oracle/software/9711859>opatch apply
Oracle 中間補丁程式安裝程式版本 11.2.0.3.0
版權所有 (c) 2012, Oracle Corporation。保留所有權利。
Oracle Home       : /opt/rac/oracle/11.2.0/rac
Central Inventory : /opt/rac/oraInventory
   from           : /opt/rac/oracle/11.2.0/rac/oraInst.loc
OPatch version    : 11.2.0.3.0
OUI version       : 11.2.0.1.0
Log file location : /opt/rac/oracle/11.2.0/rac/cfgtoollogs/opatch/9711859_Jun_25_2012_16_16_42/apply2012-06-25_16-16-42下午_1.log
Applying interim patch '9711859' to OH '/opt/rac/oracle/11.2.0/rac'
Verifying environment and performing prerequisite checks...
All checks passed.
提供電子郵件地址以用於接收有關安全問題的通知, 安裝 Oracle Configuration Manager 並啟動它。如果您使用 My Oracle
Support 電子郵件地址/使用者名稱, 操作將更簡單。
有關詳細資訊, 請訪問 。
電子郵件地址/使用者名稱: qilong.yangql@gmail.com
請提供 My Oracle Support 口令以透過 My Oracle Support 帳戶接收安全更新。
口令口令 (可選):      
此節點是 Oracle Real Application Cluster 的一部分。
遠端節點: 'rac2'
本地節點: 'rac1'
請關閉本地系統上在此 ORACLE_HOME 之外執行的 Oracle 例項。
(Oracle 主目錄 = '/opt/rac/oracle/11.2.0/rac')

本地系統是否已準備打補丁? [y|n]y
User Responded with: Y
Backing up files...
正在為元件 oracle.rdbms, 11.2.0.1.0 打補丁...
Verifying the update...
本地系統已打補丁。您可以在本地系統上重新啟動 Oracle 例項。
在滾動模式下打補丁。
接下來將為節點 'rac2' 打補丁。
請關閉 'rac2' 上在此 ORACLE_HOME 之外執行的 Oracle 例項。
(Oracle 主目錄 = '/opt/rac/oracle/11.2.0/rac')
//在詢問你是否在另外一個節點安裝補丁的時候
四 在節點rac1上啟動資料庫和監聽操作
oracle@rac1:/home/oracle/software/9711859>srvctl start instance  -d rac -i rac1 -o open              
oracle@rac1:/home/oracle/software/9711859>srvctl status instance  -d rac -i rac1            
例項 rac1 正在節點 rac1 上執行
oracle@rac1:/home/oracle/software/9711859>srvctl start listener -l LISTENER -n rac1
PRCC-1015 : LISTENER 已在 rac1 上執行 <==監聽在啟動資料庫的時候啟動!
五 關閉節點rac2 的監聽和資料庫例項操作
oracle@rac1:/home/oracle/software/9711859>srvctl stop listener -l LISTENER -n rac2
oracle@rac1:/home/oracle/software/9711859>srvctl stop instance  -d rac -i rac2
該節點是否已準備打補丁? [y|n]  <========輸入y 之前必須將節點2上面的資料庫例項關閉,節點1的例項開啟!
y
User Responded with: Y
Updating nodes 'rac2'
   Apply-related files are:
     FP = "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_files.txt"
     DP = "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_dirs.txt"
     MP = "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/make_cmds.txt"
     RC = "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/remote_cmds.txt"

Instantiating the file "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_files.txt.instantiated" by replacing $ORACLE_HOME in "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_files.txt" with actual path.
Propagating files to remote nodes...
Instantiating the file "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_dirs.txt.instantiated" by replacing $ORACLE_HOME in "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_dirs.txt" with actual path.
Propagating directories to remote nodes...
Instantiating the file "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/make_cmds.txt.instantiated" by replacing $ORACLE_HOME in "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/make_cmds.txt" with actual path.
Running command on remote node 'rac2':
cd /opt/rac/oracle/11.2.0/rac/rdbms/lib; /usr/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME=/opt/rac/oracle/11.2.0/rac || echo REMOTE_MAKE_FAILED::>&2
節點 'rac2' 已打補丁。您可以在該節點上重新啟動 Oracle 例項。
遠端節點上存在重連結。一定要檢查節點 'rac2'  上的二進位制檔案的大小和時間戳。
已在遠端節點上呼叫以下 make 命令:
'cd /opt/rac/oracle/11.2.0/rac/rdbms/lib; /usr/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME=/opt/rac/oracle/11.2.0/rac
'
Patch 9711859 successfully applied
Log file location: /opt/rac/oracle/11.2.0/rac/cfgtoollogs/opatch/9711859_Jun_25_2012_16_16_42/apply2012-06-25_16-16-42下午_1.log
OPatch succeeded.
六 在兩個節點分別執行下面的命令來確認補丁已經安裝成功。
oracle@rac1:/home/oracle/software/9711859>opatch lsinventory
Oracle 中間補丁程式安裝程式版本 11.2.0.3.0
版權所有 (c) 2012, Oracle Corporation。保留所有權利。
Oracle Home       : /opt/rac/oracle/11.2.0/rac
Central Inventory : /opt/rac/oraInventory
   from                : /opt/rac/oracle/11.2.0/rac/oraInst.loc
OPatch version    : 11.2.0.3.0
OUI version         : 11.2.0.1.0
Log file location   : /opt/rac/oracle/11.2.0/rac/cfgtoollogs/opatch/opatch2012-06-25_16-36-30下午_1.log
Lsinventory Output file location : /opt/rac/oracle/11.2.0/rac/cfgtoollogs/opatch/lsinv/lsinventory2012-06-25_16-36-30下午.txt
--------------------------------------------------------------------------------
已安裝的頂級產品 (1):
Oracle Database 11g                                                  11.2.0.1.0
此 Oracle 主目錄中已安裝 1 個產品。
中間補丁程式 (1) :
Patch  9711859      : applied on Mon Jun 25 16:22:36 CST 2012
Unique Patch ID:  12670211
   Created on 9 Jun 2010, 10:13:45 hrs PST8PDT
   Bugs fixed:
     9711859
包含多個節點的 RAC 系統
  Local node = rac1
  Remote node = rac2
--------------------------------------------------------------------------------
OPatch succeeded.
同樣在節點2上的確認 輸出略!

回退補丁9711859的過程~
一  將節點1 的資料庫例項關閉
  執行 
  srvctl stop instance -d rac -i rac1
  srvctl stop listener -l LISTENER -n rac1
二 執行回退補丁:
oracle@rac1:/home/oracle/software/9711859>opatch rollback -id 9711859
Oracle 中間補丁程式安裝程式版本 11.2.0.3.0
版權所有 (c) 2012, Oracle Corporation。保留所有權利。
Oracle Home       : /opt/rac/oracle/11.2.0/rac
Central Inventory : /opt/rac/oraInventory
   from           : /opt/rac/oracle/11.2.0/rac/oraInst.loc
OPatch version    : 11.2.0.3.0
OUI version       : 11.2.0.1.0
Log file location : /opt/rac/oracle/11.2.0/rac/cfgtoollogs/opatch/9711859_Jun_25_2012_17_30_32/rollback2012-06-25_17-30-32下午_1.log
RollbackSession 從 OH '/opt/rac/oracle/11.2.0/rac' 回退中間補丁程式 '9711859'
此節點是 Oracle Real Application Cluster 的一部分。
遠端節點: 'rac2'
本地節點: 'rac1'
請關閉所有節點上在此 ORACLE_HOME 之外執行的 Oracle 例項。
(Oracle 主目錄 = '/opt/rac/oracle/11.2.0/rac')
所有節點是否都已準備打補丁? [y|n]
y
User Responded with: Y
正在為元件 oracle.rdbms, 11.2.0.1.0 打補丁...
RollbackSession 從產品清單中刪除中間補丁程式 '9711859'
在滾動模式下打補丁。
接下來將為節點 'rac2' 打補丁。
請關閉 'rac2' 上在此 ORACLE_HOME 之外執行的 Oracle 例項。
(Oracle 主目錄 = '/opt/rac/oracle/11.2.0/rac')
三 在節點rac1上啟動資料庫和監聽操作
oracle@rac1:/home/oracle/software/9711859>srvctl start instance  -d rac -i rac1 -o open              
oracle@rac1:/home/oracle/software/9711859>srvctl status instance  -d rac -i rac1            
例項 rac1 正在節點 rac1 上執行
oracle@rac1:/home/oracle/software/9711859>srvctl start listener -l LISTENER -n rac1
PRCC-1015 : LISTENER 已在 rac1 上執行 <==監聽在啟動資料庫的時候啟動!
四 關閉節點rac2 的監聽和資料庫例項操作
oracle@rac1:/home/oracle/software/9711859>srvctl stop listener -l LISTENER -n rac2
oracle@rac1:/home/oracle/software/9711859>srvctl stop instance  -d rac -i rac2
五 選擇在節點rac2上解除安裝補丁! 
該節點是否已準備打補丁? [y|n]
y
User Responded with: Y
Updating nodes 'rac2'
   Rollback-related files are:
     FR = "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/remove_files.txt"
     DR = "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/remove_dirs.txt"
     FP = "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_files.txt"
     MP = "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/make_cmds.txt"
     RC = "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/remote_cmds.txt"

Instantiating the file "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/remove_files.txt.instantiated" by replacing $ORACLE_HOME in "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/remove_files.txt" with actual path.
Removing files on remote nodes...
Instantiating the file "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/remove_dirs.txt.instantiated" by replacing $ORACLE_HOME in "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/remove_dirs.txt" with actual path.
Removing directories on remote nodes...
Instantiating the file "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_files.txt.instantiated" by replacing $ORACLE_HOME in "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_files.txt" with actual path.
Propagating files to remote nodes...
Instantiating the file "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_dirs.txt.instantiated" by replacing $ORACLE_HOME in "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/copy_dirs.txt" with actual path.
Propagating directories to remote nodes...
Instantiating the file "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/make_cmds.txt.instantiated" by replacing $ORACLE_HOME in "/opt/rac/oracle/11.2.0/rac/.patch_storage/9711859_Jun_9_2010_10_13_45/rac/make_cmds.txt" with actual path.
Running command on remote node 'rac2':
cd /opt/rac/oracle/11.2.0/rac/rdbms/lib; /usr/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME=/opt/rac/oracle/11.2.0/rac || echo REMOTE_MAKE_FAILED::>&2


節點 'rac2' 已打補丁。您可以在該節點上重新啟動 Oracle 例項。
遠端節點上存在重連結。一定要檢查節點 'rac2'  上的二進位制檔案的大小和時間戳。
已在遠端節點上呼叫以下 make 命令:
'cd /opt/rac/oracle/11.2.0/rac/rdbms/lib; /usr/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME=/opt/rac/oracle/11.2.0/rac'
Log file location: /opt/rac/oracle/11.2.0/rac/cfgtoollogs/opatch/9711859_Jun_25_2012_17_30_32/rollback2012-06-25_17-30-32下午_1.log
OPatch succeeded.
六 在兩個節點檢查是否回滾成功!
oracle@rac1:/home/oracle/software/9711859>opatch lsinventory        
Oracle 中間補丁程式安裝程式版本 11.2.0.3.0
版權所有 (c) 2012, Oracle Corporation。保留所有權利。
Oracle Home       : /opt/rac/oracle/11.2.0/rac
Central Inventory : /opt/rac/oraInventory
   from           : /opt/rac/oracle/11.2.0/rac/oraInst.loc
OPatch version    : 11.2.0.3.0
OUI version       : 11.2.0.1.0
Log file location : /opt/rac/oracle/11.2.0/rac/cfgtoollogs/opatch/opatch2012-06-25_17-41-29下午_1.log
Lsinventory Output file location : /opt/rac/oracle/11.2.0/rac/cfgtoollogs/opatch/lsinv/lsinventory2012-06-25_17-41-29下午.txt
-------------------------------------------------------------------------------
已安裝的頂級產品 (1):
Oracle Database 11g                                                  11.2.0.1.0
此 Oracle 主目錄中已安裝 1 個產品。
此 Oracle 主目錄中未安裝任何中間補丁程式。
包含多個節點的 RAC 系統
  Local node = rac1
  Remote node = rac2
--------------------------------------------------------------------------------
OPatch succeeded.


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

相關文章