Oracle-11g-R2(11.2.0.3.x)RAC Oracle Grid & Database 零當機方式更新 PSU(自動模式)
更新環境:
1.源庫版本:
Grid Infrastructure:11.2.0.3.13
Database:11.2.0.3.13
2.目标庫版本:
Grid Infrastructure:11.2.0.3.15
Database:11.2.0.3.15
執行步驟:
1.備份源庫(root & grid & oracle,每個節點)
在待更新的節點執行備份,以防止更新失敗後導緻軟體故障。
a.備份 ASM 執行個體參數檔案(grid)
以 / as sysasm 身份進入 sqlplus 環境,執行語句 create pfile='/home/grid/init_asm.ora' from spfile;
b.備份 ASM 執行個體參數檔案(oracle)
以 / as sysdba 身份進入 sqlplus 環境,執行語句 create pfile='/home/oracle/init_db.ora' from spfile;
c.備份叢集資訊(root):
進入 gird 使用者的 $ORACLE_HOME/bin 目錄下(例如:/u01/app/11.2.0/grid/bin)
./crsctl query css votedisk
./ocrcheck
./ocrconfig -manualbackup
d.備份資料庫(oracle):
以 / as sysdba 身份進入 sqlplus 環境,執行語句 alter system archive log current;
随後調用資料庫全備份腳本備份資料庫。
e.關閉待更新節點(oracle $ root)
參見《Oracle-10g&11g 關閉 RAC 叢集的單個節點》
f.備份 Grid Infrastructure 的 OPatch(root)
進入 gird 使用者的 $ORACLE_HOME/OPatch 目錄下(例如:/u01/app/11.2.0/grid/OPatch)
執行 tar -cpf ../gridOPatch.tar.20161014 ./
g.備份 Database 的 OPatch(root)
進入 oracle 使用者的 $ORACLE_HOME/OPatch 目錄下(例如:/u01/app/oracle/product/11.2.0/db_1/OPatch
執行 tar -cpf ../oracleOPatch.tar.20161014 ./
h.備份 Grid Infrastructure 及 Database 軟體(root)
進入 Grid Infrastructure 及 Database 安裝根目錄下(例如:/u01/app)
執行 tar -cpf ../u01.tar.20161014 ./ 備份軟體。
e.重新開機待復原節點 CRS(root)
以 root 使用者登入欲節點,進入 Grid Infrastructure 的 BIN 目錄下,輸入 ./crsctl start crs
2.更新 OPatch(grid & oracle,每個節點)
下載下傳最新的 OPatch 工具,例如更新至 11.2.0.3.6 其 OPatch 版本應高于 11.2.0.3.4。
分别以 grid 及 oracle 進入已下載下傳的 OPatch 工具壓縮包的目錄下,執行 unzip <OPATCH-ZIP> -d <ORACLE_HOME>
注意:ORACLE_HOME 應分别為 Grid Infrastructure 及 Database 的 ORACLE_HOME。
更新 OPatch 後,分别在 Grid Infrastructure 及 Database 的 OPatch 目錄下執行 ./opatch version 進行驗證。
3.建立 OCM response 檔案(grid $ oracle,每個節點)
分别以 grid 及 oracle 進入Grid Infrastructure 及 Database 的 $ORACLE_HOME/OPatch/ocm/bin 目錄下。
執行 ./emocmrsp -no_banner -output <specify_the_location>/file.rsp 例如:./emocmrsp -no_banner -output ~/grid.rsp
生成 response 檔案的導航界面如下:
注意:要求輸入 Email 時可為空,并在随後的不告知安全事件中輸入 Yes。
4.檢查 Oracle 目錄的相容性(grid $ oracle,每個節點)
分别以 grid 及 oracle 進入 Grid Infrastructure 及 Database 的 $ORACLE_HOME/OPatch 目錄下。
執行 ./opatch lsinventory -detail -oh <ORACLE_HOME>
如果執行成功,将列出 Grid Infrastructure 及 Database 的 $ORACLE_HOME 目錄下安裝的所有元件。
5.關閉 EM 代理程序(oracle,每個節點)
在為 Grid Infrastructure 及 Database 打更新檔之前,需要關閉 EM 代理程序。
需要以 oracle 使用者進入 Database 的 $ORACLE_HOME/bin 目錄下,執行 ./emctl stop dbconsole
6.安裝更新檔(root & oracle,每個節點)
a.切換服務(oracle)
注意:采用逐一更新的方式,實作零當機更新。是以更新一個節點時,應将該節點的所有服務切換到其他節點上。其中,切換服務指令類似如下。
srvctl relocate service -d <db_name> -s <service_name> -i <orig_instance_name> -t <target_instance_name>
b.關閉資料庫執行個體(oracle)
以 oracle 使用者登入節點,在 sqlplus 環境下使用以下指令關閉資料庫執行個體。
alter system checkpoint; 更新檢查點。
alter system archive log current; 更新歸檔日志。
shutdown immediate 關閉節點資料庫。
c.解壓縮更新檔包(grid)
以 grid 使用者解壓縮更新檔包。
d.為 Grid Infrastructure 打更新檔(root)
以 root 使用者進入 Grid Infrastructure 的 $ORACLE_HOME/OPatch 目錄下。
執行 ./opatch auto <UNZIPPED_PATCH_LOCATION> -oh <GI_HOME> -ocmrf <ocm response file>
例如:./opatch auto /u01/setup -oh /u01/app/11.2.0/grid -ocmrf /home/grid/grid.rsp
e.為 Database 打更新檔(root)
以 root 使用者進入 Database 的 $ORACLE_HOME/OPatch 目錄下。
執行 ./opatch auto <UNZIPPED_PATCH_LOCATION> -oh <DATABASE_HOME> -ocmrf <ocm response file>
例如:./opatch auto /u01/setup -oh /u01/app/oracle/product/11.2.0/db_1/ -ocmrf /home/oracle/oracle.rsp
f.為其餘節點打更新檔
當單個節點更新完畢後,選擇更新下一個節點,重複執行 a~e 步驟操作,直至所有節點更新完畢。
7.更新 SQL 檔案至資料庫(oracle,單個節點)
待 RAC 更新檔安裝完畢後,運作 catbundle.sql 腳本,以更新 SQL 檔案至資料庫。
SQL> @?/rdbms/admin/catbundle.sql psu apply
8.更新 Oracle RMAN 目錄庫(oracle,單個節點)
對于有使用 RMAN 目錄庫的情況,需更新目錄庫資訊。
# rman catalog username/password@alias
RMAN> UPGRADE CATALOG;
參考文檔:
《Patch Installation and Deinstallation For 11.2.0.3.x GI PSU (文檔 ID 1494646.1)》
更新環境:
1.源庫版本:
Grid Infrastructure:11.2.0.3.13
Database:11.2.0.3.13
2.目标庫版本:
Grid Infrastructure:11.2.0.3.15
Database:11.2.0.3.15
執行步驟:
1.備份源庫(root & grid & oracle,每個節點)
在待更新的節點執行備份,以防止更新失敗後導緻軟體故障。
a.備份 ASM 執行個體參數檔案(grid)
以 / as sysasm 身份進入 sqlplus 環境,執行語句 create pfile='/home/grid/init_asm.ora' from spfile;
b.備份 ASM 執行個體參數檔案(oracle)
以 / as sysdba 身份進入 sqlplus 環境,執行語句 create pfile='/home/oracle/init_db.ora' from spfile;
c.備份叢集資訊(root):
進入 gird 使用者的 $ORACLE_HOME/bin 目錄下(例如:/u01/app/11.2.0/grid/bin)
./crsctl query css votedisk
./ocrcheck
./ocrconfig -manualbackup
d.備份資料庫(oracle):
以 / as sysdba 身份進入 sqlplus 環境,執行語句 alter system archive log current;
随後調用資料庫全備份腳本備份資料庫。
e.關閉待更新節點(oracle $ root)
參見《Oracle-10g&11g 關閉 RAC 叢集的單個節點》
f.備份 Grid Infrastructure 的 OPatch(root)
進入 gird 使用者的 $ORACLE_HOME/OPatch 目錄下(例如:/u01/app/11.2.0/grid/OPatch)
執行 tar -cpf ../gridOPatch.tar.20161014 ./
g.備份 Database 的 OPatch(root)
進入 oracle 使用者的 $ORACLE_HOME/OPatch 目錄下(例如:/u01/app/oracle/product/11.2.0/db_1/OPatch
執行 tar -cpf ../oracleOPatch.tar.20161014 ./
h.備份 Grid Infrastructure 及 Database 軟體(root)
進入 Grid Infrastructure 及 Database 安裝根目錄下(例如:/u01/app)
執行 tar -cpf ../u01.tar.20161014 ./ 備份軟體。
e.重新開機待復原節點 CRS(root)
以 root 使用者登入欲節點,進入 Grid Infrastructure 的 BIN 目錄下,輸入 ./crsctl start crs
2.更新 OPatch(grid & oracle,每個節點)
下載下傳最新的 OPatch 工具,例如更新至 11.2.0.3.6 其 OPatch 版本應高于 11.2.0.3.4。
分别以 grid 及 oracle 進入已下載下傳的 OPatch 工具壓縮包的目錄下,執行 unzip <OPATCH-ZIP> -d <ORACLE_HOME>
注意:ORACLE_HOME 應分别為 Grid Infrastructure 及 Database 的 ORACLE_HOME。
更新 OPatch 後,分别在 Grid Infrastructure 及 Database 的 OPatch 目錄下執行 ./opatch version 進行驗證。
3.建立 OCM response 檔案(grid $ oracle,每個節點)
分别以 grid 及 oracle 進入Grid Infrastructure 及 Database 的 $ORACLE_HOME/OPatch/ocm/bin 目錄下。
執行 ./emocmrsp -no_banner -output <specify_the_location>/file.rsp 例如:./emocmrsp -no_banner -output ~/grid.rsp
生成 response 檔案的導航界面如下:
注意:要求輸入 Email 時可為空,并在随後的不告知安全事件中輸入 Yes。
4.檢查 Oracle 目錄的相容性(grid $ oracle,每個節點)
分别以 grid 及 oracle 進入 Grid Infrastructure 及 Database 的 $ORACLE_HOME/OPatch 目錄下。
執行 ./opatch lsinventory -detail -oh <ORACLE_HOME>
如果執行成功,将列出 Grid Infrastructure 及 Database 的 $ORACLE_HOME 目錄下安裝的所有元件。
5.關閉 EM 代理程序(oracle,每個節點)
在為 Grid Infrastructure 及 Database 打更新檔之前,需要關閉 EM 代理程序。
需要以 oracle 使用者進入 Database 的 $ORACLE_HOME/bin 目錄下,執行 ./emctl stop dbconsole
6.安裝更新檔(root & oracle,每個節點)
a.切換服務(oracle)
注意:采用逐一更新的方式,實作零當機更新。是以更新一個節點時,應将該節點的所有服務切換到其他節點上。其中,切換服務指令類似如下。
srvctl relocate service -d <db_name> -s <service_name> -i <orig_instance_name> -t <target_instance_name>
b.關閉資料庫執行個體(oracle)
以 oracle 使用者登入節點,在 sqlplus 環境下使用以下指令關閉資料庫執行個體。
alter system checkpoint; 更新檢查點。
alter system archive log current; 更新歸檔日志。
shutdown immediate 關閉節點資料庫。
c.解壓縮更新檔包(grid)
以 grid 使用者解壓縮更新檔包。
d.為 Grid Infrastructure 打更新檔(root)
以 root 使用者進入 Grid Infrastructure 的 $ORACLE_HOME/OPatch 目錄下。
執行 ./opatch auto <UNZIPPED_PATCH_LOCATION> -oh <GI_HOME> -ocmrf <ocm response file>
例如:./opatch auto /u01/setup -oh /u01/app/11.2.0/grid -ocmrf /home/grid/grid.rsp
e.為 Database 打更新檔(root)
以 root 使用者進入 Database 的 $ORACLE_HOME/OPatch 目錄下。
執行 ./opatch auto <UNZIPPED_PATCH_LOCATION> -oh <DATABASE_HOME> -ocmrf <ocm response file>
例如:./opatch auto /u01/setup -oh /u01/app/oracle/product/11.2.0/db_1/ -ocmrf /home/oracle/oracle.rsp
f.為其餘節點打更新檔
當單個節點更新完畢後,選擇更新下一個節點,重複執行 a~e 步驟操作,直至所有節點更新完畢。
7.更新 SQL 檔案至資料庫(oracle,單個節點)
待 RAC 更新檔安裝完畢後,運作 catbundle.sql 腳本,以更新 SQL 檔案至資料庫。
SQL> @?/rdbms/admin/catbundle.sql psu apply
8.更新 Oracle RMAN 目錄庫(oracle,單個節點)
對于有使用 RMAN 目錄庫的情況,需更新目錄庫資訊。
# rman catalog username/password@alias
RMAN> UPGRADE CATALOG;
參考文檔:
《Patch Installation and Deinstallation For 11.2.0.3.x GI PSU (文檔 ID 1494646.1)》