19c打補丁簡易步驟

1. 環境檢查

操作過程做好記錄,所有節點均檢查

1.1 當前補丁情況檢查

opatch version

opatch lspatches

1.2 集羣狀態檢查

crsctl stat res -t

 

 

2.OPatch

替換oraclehome和gridhome的OPatch(OPatch版本高於12.2.0.1.17 or later.)

mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch.bak

unzip p6880880_xxxxxx_Linux-x86-64.zip -d $ORACLE_HOME

 

確認OPatch版本,所有節點的oracle和grid用戶都需要確認

$ORACLE_HOME/OPatch/opatch version

 

3.備份軟件

root用戶tar /oracle/app即可 (grid和oracle軟件不在同一目錄下都需要備份)

cd /oracle/

tar -zcf app.tar.gz app

 

4.軟件解壓和權限

解壓psu包並更改權限,包放在單獨的目錄下

4.1 gi補丁

grid解壓補丁

cd <UNZIPPED_PATCH_LOCATION>

unzip p30116789_xxxxx_Linux-x86-64.zip

chmod 777 30116789

chmod -R 777 <UNZIPPED_PATCH_LOCATION>

 

4.2 jvm

oracle解壓ojvm補丁

cd <UNZIPPED_PATCH_LOCATION>

unzip p30116789_xxxxx_Linux-x86-64.zip

 

5.補丁衝突檢測

5.1 grid空間檢查

grid執行:

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/30116789/30125133

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/30116789/30122149

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/30116789/30122167

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/30116789/

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/30116789/29401763

5.2 oracle空間檢查

oracle用戶執行:

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/30116789/30125133

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/30116789/30122149

 

5.3 如果有衝突,執行回滾

 

$ORACLE_HOME/OPatch/opatch rollback -id <補丁號>

 

 

6.檢測空間是否充足

6.1 grid用戶執行,創建txt文件並寫入patch路徑

 

 cat /tmp/patch_list_gihome.txt

 

<UNZIPPED_PATCH_LOCATION>/30116789/30125133

<UNZIPPED_PATCH_LOCATION>/30116789/30122149

<UNZIPPED_PATCH_LOCATION>/30116789/30122167

<UNZIPPED_PATCH_LOCATION>/30116789/

<UNZIPPED_PATCH_LOCATION>/30116789/29401763

 

6.2 grid用戶執行,空間檢查命令

 $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt

 

6.3 oracle用戶執行,創建txt文件並寫入patch路徑

 

cat /tmp/patch_list_dbhome.txt

<UNZIPPED_PATCH_LOCATION>/30116789/30125133

<UNZIPPED_PATCH_LOCATION>/30116789/30122149

6.4 oracle用戶執行,空間檢查命令

 $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt

 

 

7.關閉數據庫和監聽

srvctl stop database -d xxx

srvctl stop listener

srvctl stop scan_listener

 

8.打gi補丁

1個節點打完才能打另一個節點

root用戶執行:

<GRIDHOME_DIR>/opatchauto apply <UNZIPPED_PATCH_LOCATION>/30116789

 

 

9.打jvm補丁

1個節點打完才能打另一個

oracle用戶執行:

cd <SOFT_DIR>/xxx

opatch prereq CheckConflictAgainstOHWithDetail -ph ./

$ORACLE_HOME/OPatch/opatch apply

 

 

10.運行jvm腳本

跑jvm腳本,數據庫打開到update狀態

sqlplus / as sysdba

SQL> startup upgrade

SQL> alter pluggable database all open upgrade;

SQL> quit

cd $ORACLE_HOME/OPatch

./datapatch -verbose

sqlplus / as sysdba

SQL> shutdown immediate

 

 

 

11.運行gi腳本

srvctl start database -d xxx

sqlplus / as sysdba

SQL> alter pluggable database all open;

SQL> exit

cd $ORACLE_HOME/OPatch

./datapatch -verbose

 

編譯無效存儲對象

sqlplus / as sysdba

@?/rdbms/admin/utlrp.sql

 

12.檢查

集羣狀態檢查

crsctl stat res -t

 

檢查大頁

檢查監聽、服務

 

 

軟件補丁版本

opatch lsinv

opatch lspatches

 

數據庫裏補丁註冊版本

set lin 200

col action_time for a30

col namespace for a10

col BUNDLE_SERIES for a10

col action for a10

col version for a25

col comments for a40

select * from dba_registry_history;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章