1. 程式人生 > 其它 >小白入門(九):Oracle資料庫打補丁操作過程

小白入門(九):Oracle資料庫打補丁操作過程

技術標籤:小白入門資料庫oraclelinux

文章目錄


前言

大部分使用者oracle資料庫還停留在10g、11g或者12c的版本上,出現的一些bug也需要通過oracle官方的補丁進行升級,升級過程需要有停止資料庫等操作,對於超大量級且重要的資料庫不太建議進行打補丁操作,詳細評估需要有專業DBA人員進行評估。
下面就簡單寫一個打補丁的操作案例,以供參考!


提示:以下是本篇文章正文內容,下面案例可供參考

簡要介紹:

關鍵補丁更新(CPU)現在指的是每個季度安全補丁的整體釋出,而不是每個季度的資料庫安全補丁的累計釋出。將CPU看作是一個整體的季度釋出,而不是一個單獨的補丁。

補丁集更新(PSU)是包含安全補丁和優先順序補丁的相同累積補丁。PSUs的關鍵在於它們是次要的版本升級(例如,11.2.0.1.1到11.2.0.1.2)。一旦應用了PSU,在資料庫升級到新的基礎版本之前,在未來的季度中只能應用PSU。

安全補丁更新(SPU)術語在2012年10月的關鍵補丁更新中被引入,作為季度安全補丁的術語。SPU補丁與以前的CPU補丁相同,只是換了個名字。對於資料庫,一旦應用了psu, spu就不能應用,直到資料庫升級到新的基本版本。

補丁包下載需要登入MOS下載:opatch升級包、資料庫補丁

一.OPatch 更新:

1、檢查目前補丁包版本($ORACLE_HOME下):

[[email protected] ~]$ cd /data/oracle/app/product/11.2.0/db_1/Opatch
[[email protected] OPatch]$ ./opatch version
OPatch Version:
11.2.0.3.4 OPatch succeeded.

2、建立目錄備份當前Opatch工具:

$ORACLE_HOME下建立目錄

[[email protected] db_1]$ pwd
/data/oracle/app/product/11.2.0/db_1
[[email protected] db_1]$ mkdir Opatch_bak

[[email protected] db_1]$ mv OPatch/ Opatch_bak/

3、傳輸壓縮包並解壓Opatch工具至$ORACLE_HOME下:

[[email protected] db_1]$ unzip /usr/local/src/patchfile/p6880880_112000_Linux-x86-64.zip
解壓篇幅省略…

[[email protected] db_1]$ cd OPatch/
[[email protected] OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.20

OPatch succeeded.

二、應用PSU補丁:

1、Oraclehome下建立目錄解壓PSU補丁:

(oraInventory同級目錄下)
[[email protected] data]# mkdir patch
[[email protected] data]# chown -R oracle:oinstall /data/patch/

[[email protected] data]$ cd patch/
[[email protected] patch]$ unzip /usr/local/src/patchfile/p28729262_112040_Linux-x86-64.zip
解壓篇幅省略…

[[email protected] patch]$ ls -lh
總用量 108K
drwxr-xr-x 23 oracle oinstall 4.0K 1220 2018 28729262
-rw-rw-r--  1 oracle oinstall 102K 117 2019 PatchSearch.xml
[[email protected] patch]$ cd 28729262/
[[email protected] 28729262]$ ls
17478514  18522509  19769489  20760982  21948347  23054359  24732075  26392168  26925576  27734982  28729262     README.html
18031668  19121551  20299013  21352635  22502456  24006111  25869727  26609445  27338049  28204707  patchmd.xml  README.txt
[[email protected] 28729262]$ pwd
/data/patch/28729262

2、執行oracle 中間補丁安裝程式:

[[email protected] ~]$ /data/oracle/app/product/11.2.0/db_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./

在這裡插入圖片描述

3、停止監聽以及資料庫:

[oracle@tdcxl ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Oct 15 15:10:47 2019

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> !lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-OCT-2019 15:11:14

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit

4、應用補丁:

[[email protected] ~]$ cd /data/patch/28729262
[[email protected]xl 28729262]$ /data/oracle/app/product/11.2.0/db_1/OPatch/opatch apply

在這裡插入圖片描述

三、資料庫應用補丁:

1、升級資料庫資料字典、編譯無效物件 :

資料庫啟動,並載入修改SQL Files到資料庫

[[email protected] 28729262]$ cd /data/oracle/app/product/11.2.0/db_1/rdbms/admin/
[[email protected] admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Tue Oct 15 15:36:36 2019
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

SQL> conn /as sysdba
Connected to an idle instance.

SQL> @catbundle.sql psu apply
省略…
SQL> @?/rdbms/admin/utlrp.sql
省略…

2、檢視 PSU 更新資訊

SQL> set line 150
col ACTION_TIME for a30
col ACTION for a8
col NAMESPACE for a8
col VERSION for a10
col BUNDLE_SERIES for a5
col COMMENTS for a20

SQL> select * from dba_registry_history;

ACTION_TIME                    ACTION   NAMESPAC VERSION            ID BUNDL COMMENTS
------------------------------ -------- -------- ---------- ---------- ----- --------------------
24-AUG-13 12.03.45.119862 PM   APPLY    SERVER   11.2.0.4            0 PSU   Patchset 11.2.0.2.0
14-OCT-19 04.53.21.469466 PM   APPLY    SERVER   11.2.0.4            0 PSU   Patchset 11.2.0.2.0
15-OCT-19 03.39.16.871249 PM   APPLY    SERVER   11.2.0.4       190115 PSU   PSU 11.2.0.4.190115

3 rows selected.

--檢視無效物件
SQL> select count(*) from dba_objects where status<>'VALID';

  COUNT(*)
----------
         0
1 row selected.
-- 檢視監聽是否正常
[[email protected] ~]$ lsnrctl status

3、opatch 檢查:

$ORACLE_HOME/OPatch/opatch lspatches;
$ORACLE_HOME/OPatch/opatch lsinventory;

測試補丁相容性:

1、升級前檢查是否有衝突

[[email protected] db_1]$ cd /tmp/psu/27734982/
[[email protected] 27734982]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./

1.1測試相容性, 如果之前沒有打過,這步也可以忽略。

[[email protected]11g opatch]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/oracle/opatch/21352635 -oh $ORACLE_HOME 
Oracle Interim Patch Installer version 11.2.0.3.10
Copyright (c) 2015, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /home/oracle/app/oracle/product/11.2.0.4/dbhome_1
Central Inventory : /home/oracle/oraInventory
from : /home/oracle/app/oracle/product/11.2.0.4/dbhome_1/oraInst.loc
OPatch version : 11.2.0.3.10
OUI version : 11.2.0.4.0
Log file location : /home/oracle/app/oracle/product/11.2.0.4/dbhome_1/cfgtoollogs/opatch/opatch2015-02-16_13-09-28PM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.