ORACLE升級PSU&OJVM遇到問題

來源:互聯網
上載者:User

標籤:root使用者   site   完成後   port   exec   佔用   bug   agent   資料   

【環境介紹】

系統內容:Solaris + Oracle 11R2 + OGG + 指令碼定時任務統計資訊收集

 

【背景描述】

基於集團的安全檢查,需要對資料庫版本進行漏洞掃描,漏洞掃描中存在RBDMS和JVM類型的漏洞,需要通過升級小版本的PSU和OJVM來修複漏洞。下面大概說明一下升級的注意部分和出現問題的解決。

 

【問題處理】

升級時一般在晚上操作,在升級資料庫前注意的問題(由於指令碼較多,這裡貼指令碼,如果有需要指令碼可以留言):

提前進行資料庫軟體備份(可排除aud小檔案,備份小檔案多導致備份時間很長,建議可以提前一天備份),資料備份(資料庫全備);

資料庫參數備份,工程完成後參數對比(曆史原因導致啟動資料庫pfile檔案參數不同導致主機資源耗盡或者其他問題);

停止涉及資料庫定時任務(防止大事務導致資料庫停止有問題);

停止資料庫自動統計資訊或者手動指令碼的統計資訊收集(導致升級後編譯時間不能進行);

停止其他軟體對資料庫的操作(OGG等,OGG進程卡主);

作業系統空間需要大於35G(如果空間不足可能觸發BUG:

10131946 GRID PATCHES REQUIRE 22GB OF FREE SPACE
12791141 PATCH 12311357: WITH 35GB FREE SPACE : ERROR: REQUIRED AMOUNT OF SPACE
1088455.1 opatch CheckSystemSpace Fails With Error Code 73 While Applying GI PSU);

作業系統LANG字元問題(可觸發BUG,導致升級報錯),建議預設使用英文字元;

補丁衝突(DB,有些針對one of patch衝突需要在升級前回退,GI),平台檢測。

 

操作資料庫升級前,再次進行檢查資料庫補丁衝突,平台檢測,但是補丁需要特殊.so檔案驗證是在停止資料庫執行個體後進行檢查,也是經常出現的檔案佔用的問題。

檢查資訊:

[email protected]:/opt/oracle/app/oracle_base/patch/26636028$ $ORACLE_HOME/OPatch/opatch prereq CheckActiveFilesAndExecutables -phBaseDir ./26635745
Oracle Interim Patch Installer version 11.2.0.3.18
Copyright (c) 2018, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /opt/oracle/app/grid_home
Central Inventory : /opt/oracle/app/oraInventory
   from           : /opt/oracle/app/grid_home/oraInst.loc
OPatch version    : 11.2.0.3.18
OUI version       : 11.2.0.4.0
Log file location : /opt/oracle/app/grid_home/cfgtoollogs/opatch/opatch2018-04-27_01-50-50AM_1.log

Invoking prereq "checkactivefilesandexecutables"

......

Prereq "checkActiveFilesAndExecutables" for patch 17478514 failed.

The details are:


Following executables are active :
/opt/oracle/app/grid_home/bin/oracle
/opt/oracle/app/grid_home/lib/libclntsh.so.11.1

Prereq "checkActiveFilesAndExecutables" for patch 18031668 passed.

.......

Prereq "checkActiveFilesAndExecutables" for patch 26392168 passed.

OPatch succeeded.

省略部分內容,可以看到對特殊檔案檢查時發現被佔用。查看是哪個進程佔用:

[email protected]:/opt/oracle/app/oracle_base/patch/26636028$ fuser /opt/oracle/app/grid_home/lib/libclntsh.so.11.1
/opt/oracle/app/grid_home/lib/libclntsh.so.11.1:     9465m    9447m    9331m    9210m    8889m    8750m    8578m    8498m    8496m    8494m    8417m    8416m    8395m    21708m    8361m    8286m    8164m   14225m   14198m   14186m

 

但是存在一個進程,且是root使用者佔用,叢集不能停止該進程:

 

[email protected]:/opt/oracle/app/oracle_base/patch/26636028# ps -ef |grep /opt/oracle/app/grid_home/jdk/bin/sparcv9/java
    root 21708  4111   0 02:37:17 pts/1       0:00 grep /opt/oracle/app/grid_home/jdk/bin/sparcv9/java

 

 

正常情況下,佔用該檔案的位grid使用者,在升級資料庫時會停止這些進程。

[[email protected] ~]$ fuser /u01/app/11.2.0/grid/lib/libclntsh.so.11.1
/u01/app/11.2.0/grid/lib/libclntsh.so.11.1:  2400m  2411m  2422m  2432m  2491m  2623m  2837m  2885m  2887m  2984m  2985m  3029m  3046m

[[email protected] ~]$ ps -ef |egrep ‘2400|2411|2422|2432|2491|2623|2837|2885|2887|2984|2985|3029|3046‘
grid      2400     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/oraagent.bin
grid      2411     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/mdnsd.bin
grid      2422     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/gpnpd.bin
grid      2432     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/gipcd.bin
grid      2491     1  0 10:48 ?        00:00:00 /u01/app/11.2.0/grid/bin/ocssd.bin
grid      2623     1  0 10:49 ?        00:00:00 /u01/app/11.2.0/grid/bin/evmd.bin
grid      2837  2623  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/evmlogger.bin -o /u01/app/11.2.0/grid/evm/log/evmlogger.info -l /u01/app/11.2.0/grid/evm/log/evmlogger.log
grid      2885     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/scriptagent.bin
grid      2887     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/oraagent.bin
grid      2984     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/opmn/bin/ons -d
grid      2985  2984  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/opmn/bin/ons -d
grid      3029     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid      3046     1  0 10:50 ?        00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit

 

【解決辦法】

關於特殊.so檔案驗證發現檔案被佔用時,使用以下方法確認:

若有檔案被佔用,把佔用進程殺掉:

opatch error code 73: Prerequisite check "CheckActiveFilesAndExecutables" failed. (文檔 ID 1942237.1)

 

通過核查為OC4J資源online導致特殊檔案被該進程佔用,使用crsctl stat res -t查看OC4J資源狀態,該資源會導致8888漏洞,建議停止該資源,關於修改OC4J可查看官方文檔

Security Vulnerability Scan detects Exposed Port on ora.oc4j Resource (文檔 ID 1922349.1)

Oracle Containers for J2EE連接埠8888,Oracle Remote Method Invocation連接埠23792,23943,是ora.oc4j Resource產生的漏洞。該漏洞在Grid PSU 11.2.0.3.4及更高版本中得到解決。建議修複方法:一:停止OC4J資源:srvctl stop oc4j,禁用OC4J服務:srvctl disable oc4j。二:修改OC4J資源的設定檔禁止該連接埠如果停止資源後還存在該進程,可以使用kill方式殺掉該進程。 升級PSU完成之後該版本觸發BUG 22730454修改檔案$ORACLE_HOME/lib/libsqlplus.so許可權640為644。Permission Of $OH/LIB/LIBSQLPLUS.SO changes from 644 TO 640 on applying 11.2.0.4/12.1.0.2 DBPSU (文檔 ID 2201729.1)

 

【總結】

在工程中,一定確保工程前環境已經檢查完成,這樣才能使過程中遇到更多的問題。

在升級中遇到問題,仔細查看升級日誌中的報錯資訊,才能準確判斷產生問題的原因。

方案準備一定要充分,方案審核一定要仔細,遇到問題後一定要在方案中新增內容,防止下次工程遇到同樣的問題。

ORACLE升級PSU&OJVM遇到問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.