国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Oracle補丁就該這么打

IT那活兒 / 3384人閱讀
Oracle補丁就該這么打
[
補丁集下載
]


oracle打補丁最常見原因為bug修復或安全迎檢漏洞修復需要打到最新的補丁版本。下文的經驗之談是基于rac環境,19c版本的最新補丁集的過程分享。

可以參考《Assistant:Download Reference for Oracle Database/GI Update, Revision, PSU,SPU(CPU), Bundle Patches, Patchsets and Base Releases (Doc ID2118136.2)》來下載補丁集,打開的頁面中,我們可以選擇下載db的基礎版本,db補丁集和ojvm的補丁集等。



下圖是基于19c版本今年7月份發布的19.8的補丁集。DatabaseUpdate只包含db補丁包,GIUpdate則既包含GI的補丁包也包含db的補丁包,具體的可以按需來進行下載。


[
關于備份
]


軟件的備份:備份重于一切,這是我們做變更的基礎,一定要給自己留后路。在做補丁更新前,我們必須需對oracle軟件進行備份(GI和DB)。


以下給出命令示例:

--關閉集群CRS,各個節點依次關閉

su – oracle

srvctl stop database -d xxxx ==>手工停所有節點實例

su - root

crsctl stop crs

crsctl start crs ==》該步驟選做,驗證crs能否正常啟動

crsctl stop crs

ps -ef | grep grid ==> 有進程kill掉

ps -ef | grep oracle ==> 有進程kill掉


--備份各節點軟件目錄

su - root

tar -zcvf /u01/oracle20200813.tar /u01/app/* -p -P ==>可以多帶帶對GI和DB的軟件目錄進行備份。這里為了方便操作對整個目錄進行備份。備份前注意清理小文件(audit,trace等)


--還原

--停掉crs服務

--解tar

cd /u01

mv app appbak

tar -xvf  /u01/oracle20200813.tar -C /u01/


DB信息的備份

>>>>使用grid用戶檢查當前GI的補丁情況,監聽狀態

crsctl status res -t > /home/grid/crs.txt

$ORACLE_HOME/OPatch/opatch lsinventory >> /home/grid/grid_patch.txt

$ORACLE_HOME/OPatch/opatch lsinv -detail -oh $ORACLE_HOME >> /home/grid/grid_patch.txt

$ORACLE_HOME/OPatch/opatch lspatches >> /home/grid/grid_patch.txt

lsnrctl status >> /home/grid/crs.txt



>>>>使用oracle用戶檢查當前oracle的補丁情況

su - oracle

$ORACLE_HOME/OPatch/opatch lsinventory > /home/oracle/oracle_patch.txt

$ORACLE_HOME/OPatch/opatch lsinv -detail -oh $ORACLE_HOME >> /home/oracle/oracle_patch.txt

$ORACLE_HOME/OPatch/opatch lspatches >> /home/oracle/oracle_patch.txt


>>>>使用oracle用戶,在其中一個節點登錄到所有實例當中進行查詢,記錄補丁、無效對象相關信息

sqlplus / as sysdba

spool /home/oracle/db0813.txt

set lines 200 pages 2000;

show parameter name;

col comp_id for a20;

col version for a20;

col status for a30;

select comp_id,version,status from dba_registry;

select owner,object_type,object_name from dba_objects where status<>VALID;

select patch_id,patch_uid,status,action_time from dba_registry_sqlpatch;

spool off


[
關于OPtach工具
]


主要調用該工具OPatchAuto和Datapatch這2個命令。簡單的可以理解為OPatchAuto更新軟件相關文件,Datapatch用于更新數據庫字典(dba_registry_sqlpatch)。


詳細的信息我們可以參考如下文章:

Datapatch:Database 12c or later Post Patch SQL Automation (Doc ID 1585822.1)

DatapatchUser Guide (Doc ID 2680521.1)


[
關于readme
]


該文件為補丁說明書,必讀項。可以在下載補丁包或者在下載頁面的ReadMe的按鈕(如下圖)里找到。



下面提取今年7月份發布的19.8的GI補丁集的readme中的關鍵主題來分析下:


ADG是否可以先更打

readme中會有明確的字眼提示adg是否可以先更打,如下圖:



補丁集信息

下圖中有4個patchnumber,其中GI_HOME都要更打,DB_HOME只要更打2個。從這里大致應該就能估算出打GI補丁的時間要比DB補丁多一半,可以估算出要停機的時間。


OPatch 工具信息

Readme中會有明確的字眼要求OPatch的最低版本,如下圖:

參考該文章來下載需要的opatch工具:MasterNote For OPatch (Doc ID 293369.1)


補丁沖突檢測

Readme中給出具體命令,如下圖,我們補全拿到環境中執行就行。


我們主要關注跑出來的結果,如果提示成功沒報錯,那這一環節就可以不做處理。如果有報錯,那就需要提前準備解決方案,比如下面這個示例:

注:運行該命令對現有環境不影響,需要提前執行,以便有報錯提前準備解決方案,避免和維護窗口時間沖突。


空間檢測

提前檢查空間是否足夠,如下圖,我們補全拿到環境中執行就行。


沖突檢查解決方案

這里的沖突可以是小補丁和小補丁之間的沖突,也可以是小補丁和補丁集之間的沖突。有2個解決思路,一個是提SR申請沖突小補丁的merge補丁,這個等待時間可能比較久。另外一個思路,就是更打較新的補丁集,一般最新發布的補丁集都會包含之前小補丁,那這塊就需要拿補丁集去確認了。


小補丁和補丁集之間的沖突:這塊處理起來比較方便,比如說當前安裝的是4月份補丁集,我們現在要更打到7月份的補丁集。那現在可以將4月份補丁集上的小補丁先回滾掉,待7月份的補丁集更打完成后,再更打基于7月份補丁集的這個小補丁。


Opatchauto

使用opatchauto命令去更打補丁,一般GI和DB都分開更打。可以根據readme中提供命令進行補全(如下圖),整合出適合自己環境的命令。


以下給出命令示例:

>>>GI各個節點依次執行打補丁命令

# /u01/app/19.0.3/grid/OPatch/opatchauto apply /u01/software/patch2020/31305339 -oh /u01/app/19.0.3/grid

>>>DB各個節點依次執行打補丁命令

#/u01/app/oracle/product/19.0.3/dbhome_1/OPatch/opatchauto apply /u01/software/patch2020/31305339  -oh /u01/app/oracle/product/19.0.3/dbhome_1


Loading Modified SQL Files into the Database

關于數據字典更新操作,根據補丁的readme中提供的命令補全即可:


下圖是補丁集更打后的操作:


下圖是OJVM補丁更打后的操作:


以下命令是補丁集+OJVM的數據字典更新(也是說只跑一次datapatch)的示例(adg端不跑),更參考:

####Loading Modified SQL Files Into the Database

sqlplus /nolog

SQL> CONNECT / AS SYSDBA

SQL> STARTUP nomount

SQL> alter system set cluster_database=false scope=spfile;

SQL> shutdown immediate


sqlplus /nolog

SQL> CONNECT / AS SYSDBA

SQL> STARTUP UPGRADE

SQL> exit


$ cd $ORACLE_HOME/OPatch

$ ./datapatch -verbose


sqlplus /nolog

SQL> CONNECT / AS SYSDBA

SQL> alter system set cluster_database=true scope=spfile;

SQL> SHUTDOWN immedite


$srvctl start database -db xxx


[
關于troubleshotting
]


其實做好前期準備工作,基本是成功的幾率就很高了,如果還有報錯,可能就是遇到bug或者其他問題了。那就只能臨時去找解決方案了,如果最終拖的時間比較長,維護窗口時間有限,最后也就只能回退了。分享2個簡單報錯示例:下圖是一個進程占用報錯的示例,可以通過fuser命令來確認占用進程,kill掉就行:


下圖是一個節點間互信問題的報錯示例:


[
總結
]


做好打補丁前準備工作,工作量就已完成了大半。這里粗略做以下總結:

  • 備份重于一切,一定要對軟件進行備份。

  • 集群間通信檢查,確認命令為:crsctl check cluster -all

  • grid、oracle節點間互信檢查

  • 補丁包權限檢查、opatch版本檢查、補丁沖突檢查

  • 臨時問題解決要依托第一案場“證據”順藤摸瓜

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130146.html

相關文章

  • 集成安裝之Oracle12C補丁升級數據字典更新報錯處理

    集成安裝之Oracle12C補丁升級數據字典更新報錯處理 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活兒 評論0 收藏795
  • RAC補丁日常更新成功反遇異常處理

    RAC補丁日常更新成功反遇異常處理 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; m...

    IT那活兒 評論0 收藏2488
  • 除了Oracle JDK,我們還有哪些選擇?

    摘要:就在昨天,發布了新版的我相信很多開發人員沉溺在編碼的樂趣中,還沒注意到相關消息。 就在昨天,Oracle發布了新版的JDK 11,我相信很多Java開發人員沉溺在編碼的樂趣中,還沒注意到相關消息。 在2017年9月份,Oracle官網發布了一則博客https://blogs.oracle.com/java... 總結來說,主要內容涉及到: 調整JAVA SE的版本發布計劃節奏;從JAV...

    李世贊 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<