⑴ oracle 用opatch查看PSU版本跟查dba_registry_history結果不一樣,請問以哪個為准
dba_registry_history
取決於你是否運行過對應PSU的upgrade script,
opatch顯示的取決於你是否打過對應的PSU 補丁,一般以opatch為准
⑵ 怎麼檢查oracle都安裝了哪些patch
我們在windows上安裝了測試環境oracle10g,路徑E:\oracle\proct\10.2.0\db_1\OPatch,點擊執行opatch.bat,報錯「Oracle Home is not set. OPatch cannot proceed!」。在環境變數裡面配置ORACLE_HOME路徑E:\oracle\proct\10.2.0\db_1\,再次執行opatch.bat lsinventory,輸出:
Invoking OPatch 10.2.0.1.0
Oracle 中間補丁程序安裝程序版本 10.2.0.1.0
版權所有 (c) 2005, Oracle Corporation。保留所有權利。。
Oracle 主目錄 : E:\oracle\proct\10.2.0\db_1
主產品清單: n/a
從 : C:\Program Files\Oracle\Inventory
OPatch 版本 : 10.2.0.1.0
OUI 版本 : 10.2.0.1.0
OUI 位置 : E:\oracle\proct\10.2.0\db_1\oui
日誌文件位置 : E:\oracle\proct\10.2.0\db_1\cfgtoollogs\opatch\opatch-2007_Jul_
09_10-42-17-CST_Mon.log
Lsinventory Output file location : E:\oracle\proct\10.2.0\db_1\cfgtoollogs\opa
tch\lsinv\lsinventory-2007_Jul_09_10-42-17-CST_Mon.txt
--------------------------------------------------------------------------------
已安裝的頂級產品 (1):
Oracle Database 10g 10.2.0.1.0
此 Oracle 主目錄中已安裝 1 個產品。
此 Oracle 主目錄中未安裝任何中間補丁程序。
⑶ 打完補丁oracle會更新bin的oracle嗎
電梯直達
1#
發表於 2014-6-28 00:23 | 只看該作者 |倒序瀏覽 |閱讀模式
本帖最後由 suyuanwu 於 2014-6-28 18:10 編輯
1.更新Opatch;
2.打補丁;
3.grid 打補丁;
1.更新Opatch(實驗版本: oracle:11.2.0.3.0):
默認安裝資料庫後,在ORACLE_HOME 下會有個OPatch 文件夾,更新前先檢查當前Opatch 版本:
[oracle@sywu2 OPatch]$ ./opatch lsinventory
Invoking OPatch 11.2.0.1.7
Oracle 中間補丁程序安裝程序版本 11.2.0.1.7
版權所有 (c) 2011, Oracle Corporation。保留所有權利。
Oracle Home : /s01/app/oracle/proct/11.2.0/dbhome_1
Central Inventory : /g01/oraInventory
from : /etc/oraInst.loc
OPatch version : 11.2.0.1.7
OUI version : 11.2.0.3.0
Log file location : /s01/app/oracle/proct/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2014-06-27_23-03-26下午.log
注:有些時候產品清單載入失敗,會導致打補丁時出錯
[sywu@sywu OPatch]$ ./opatch lsinventory
Invoking OPatch 11.1.0.6.6
Oracle 中間補丁程序安裝程序版本 11.1.0.6.6
版權所有 (c) 2009, Oracle Corporation。保留所有權利。
Oracle 主目錄 : /u01/app/proct/11.2.0/db_1
主產品清單: /g01/oraInventory
從 : /etc/oraInst.loc
OPatch 版本 : 11.1.0.6.6
OUI 版本 : 11.2.0.1.0
OUI 位置 : /u01/app/proct/11.2.0/db_1/oui
日誌文件位置 : /u01/app/proct/11.2.0/db_1/cfgtoollogs/opatch/opatch2014-06-27_21-51-13下午.log
Patch history file: /u01/app/proct/11.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt
List of Homes on this system:
Home name= Ora11g_gridinfrahome1, Location= "/g01/11ggrid/11.2.0/grid"
Home name= OraDb11g_home1, Location= "/s01/app/oracle/proct/11.2.0/dbhome_1"
產品清單載入失敗... OPatch cannot load inventory for the given Oracle Home.
Possible causes are:
Oracle Home dir. path does not exist in Central Inventory
Oracle Home is a symbolic link
Oracle Home inventory is corrupted
LsInventorySession 失敗: OracleHomeInventory gets null oracleHomeInfo
OPatch failed with error code 73
解決方法:
1)找到產品清單文件,默認安裝成功後會在 /etc/oraInst.loc 和oracle 根目錄 oraInventory 文件夾下 ,如果/etc/下沒有就到ORACLE 安裝根目錄找到文件夾: oraInventory,裡面有oraInst.loc;復制一個到 /etc下
2)到$ORACLE_HOME/oui/bin/ 執行如下腳本載入清單:
./runInstaller -silent -attachHome \
ORACLE_HOME=$ORACLE_HOME \
ORACLE_HOME_NAME="ORACLE_HOME"
3) 載入成功後再次到OPatch目錄下執行 ./opatch lsinventory 確認產品清單載入是否成功;
有些時候你打過補丁,然後刪除過$ORACLE_HOME/.patch_storage 下的文件,下次重新再打補丁是可能會報:" OracleHomeInventory 無法創建鎖文件",怎麼處理都不行,也並不是操作許可權問題:
[grid@sywu2 shared]$ opatch lsinventory
Oracle 中間補丁程序安裝程序版本 11.2.0.3.3
版權所有 (c) 2012, Oracle Corporation。保留所有權利。
Oracle Home : /g01/11ggrid/11.2.0/grid
Central Inventory : /g01/oraInventory
from : /g01/11ggrid/11.2.0/grid/oraInst.loc
OPatch version : 11.2.0.3.3
OUI version : 11.2.0.3.0
Log file location : /g01/11ggrid/11.2.0/grid/cfgtoollogs/opatch/opatch2014-06-28_16-51-09下午_1.log
OracleHomeInventory 無法創建鎖文件, 可能是由於 OPatch 會話失敗。載入的產品清單可能無法正確顯示 Oracle 主目錄中的內容。
Lsinventory Output file location : /g01/11ggrid/11.2.0/grid/cfgtoollogs/opatch/lsinv/lsinventory2014-06-28_16-51-09下午.txt
解決方法:
1)首先查看 $ORACLE_HOME/.patch_storage 目錄下是否有patch_locked 文件:
[grid@sywu2 shared]$ ls -las $ORACLE_HOME/.patch_storage
總用量 32
4 drwxr-x--- 4 grid oinstall 4096 6月 28 16:55 .
4 drwxr-xr-x 68 grid oinstall 4096 6月 28 16:55 ..
4 drwxr-xr-x 5 grid oinstall 4096 6月 28 11:18 15876003_Jan_11_2013_06_19_07
4 -rw-r--r-- 1 grid oinstall 1949 6月 28 11:18 interim_inventory.txt
4 -rw-r--r-- 1 grid oinstall 93 6月 28 11:18 LatestOPatchSession.properties
4 drwxr-xr-x 3 grid oinstall 4096 6月 28 11:17 NApply
4 -rw-r--r-- 1 grid oinstall 56 6月 28 11:18 patch_locked
4 -rw-r--r-- 1 grid oinstall 52 6月 28 11:18 record_inventory.txt
2)如果有,將patch_locked 文件命名為其它名或移走,然後再次嘗試 opatch lsinventory:
[grid@sywu2 shared]$ mv /g01/11ggrid/11.2.0/grid/.patch_storage/patch_locked /g01/11ggrid/11.2.0/grid/.patch_storage/patch_locked_bkp
[grid@sywu2 shared]$ opatch lsinventory
Oracle 中間補丁程序安裝程序版本 11.2.0.3.3
版權所有 (c) 2012, Oracle Corporation。保留所有權利。
Oracle Home : /g01/11ggrid/11.2.0/grid
Central Inventory : /g01/oraInventory
from : /g01/11ggrid/11.2.0/grid/oraInst.loc
OPatch version : 11.2.0.3.3
OUI version : 11.2.0.3.0
Log file location : /g01/11ggrid/11.2.0/grid/cfgtoollogs/opatch/opatch2014-06-28_17-01-51下午_1.log
Lsinventory Output file location : /g01/11ggrid/11.2.0/grid/cfgtoollogs/opatch/lsinv/lsinventory2014-06-28_17-01-51下午.txt
這是因為 patch_locked 文件中記錄了相關補丁號,當載入時出錯或找不到它:
[grid@sywu2 shared]$ cat /g01/11ggrid/11.2.0/grid/.patch_storage/patch_locked_bkp
Locked for patch : 15876003
Locked by class : apply
1.1 更新前先備份原來的Opatch:
[oracle@sywu2 dbhome_1]$ tar -cvf Opatch_20140627.tar OPatch
1.2 解壓新版Opatch 文件到$ORACLE_HOME 目錄下:
[oracle@sywu2 dbhome_1]$ /tmp/unzip p6880880_112000_linux-x86-64.zip -d $ORACLE_HOME
Archive: p6880880_112000_Linux-x86-64.zip
creating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/README.html
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/README.txt
creating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/oplan.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/oracle.oplan.classpath.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/automation.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/OsysModel.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/EMrepoDrivers.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/Validation.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/ValidationRules.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/osysmodel-utils.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/CRSProctDriver.jar
creating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/apache-commons/
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/apache-commons/commons-cli-1.0.jar
creating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/activation.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/jaxb-api.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/jaxb-impl.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/jsr173_1.0_api.jar
inflating: /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/oplan/oplan
replace /s01/app/oracle/proct/11.2.0/dbhome_1/OPatch/docs/FAQ? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
.............
1.3 確認OPatch 更新是否成功:
[oracle@sywu2 OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.3
OPatch succeeded.
可能會有未知錯誤,如版本問題,操作前一定記得備份原來的OPatch;
2.打補丁:
打補丁前要關閉資料庫實例、監聽程序,補丁要與更新的OPatch對應:
2.1 解壓補丁文件到$ORACLE_HOME 目錄下:
[oracle@sywu2 OPatch]$ unzip /tmp/p14727310_112030_Linux-x86-64.zip -d $ORACLE_HOME
[oracle@sywu2 dbhome_1]$ cd 14727310/
[oracle@sywu2 14727310]$ ls
13343438 13696216 13923374 14275605 14727310 patchmd.xml README.html README.txt
README.html 文件上有介紹打補丁方法,打補丁前先查看一下;
開始打補丁:
[oracle@sywu2 14727310]$ $ORACLE_HOME/OPatch/opatch apply
2.2 將變更的 SQL Files 導入資料庫:
[oracle@sywu2 ~]$ cd $ORACLE_HOME/rdbms/admin
[oracle@sywu2 admin]$ sqlplus / as sysdba
SQL> @catbundle.sql psu apply
打補丁信息在 V$version 視圖中是查詢不到的,要通過 dba_registry_history 視圖查詢:
SQL> select action_time,action,namespace,version,bundle_series,comments from dba_registry_history;
ACTION_TIME ACTION NAMESPACE VERSION
--------------------------------------------------------------------------- ---------- ---------- ------------------------------
BUNDLE_SERIES COMMENTS
--------------------
⑷ 如何安裝/升級Opatch
1、 環境介紹
我們選擇11gR2作為實驗環境。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Proction
PL/SQL Release 11.2.0.1.0 - Proction
CORE 11.2.0.1.0 Proction
在安裝目錄$ORACLE_HOME下,是自帶一個OPatch工具包的。一般小版本的升級,都是通過OPatch來完成。
[oracle@bsplinux ~]$ cd $ORACLE_HOME
[oracle@bsplinux oracle]$ ls -l | grep OPatch
drwxr-xr-x 8 oracle oinstall 4096 Oct 23 20:00 OPatch
不過,同Oracle自帶的Uninstall一樣,11.2.0.1自帶的OPatch的版本是不能提供升級功能的。所以,我們通常需要首先升級OPatch,之後才能進行打補丁。
2、OPatch升級
首先,我們需要確定當前的OPatch版本。進入OPatch目錄之後,可以通過版本首先確認。
[oracle@bsplinux OPatch]$ ls -l
total 92
drwxr-xr-x 2 oracle oinstall 4096 May 22 16:16 docs
-rw-r--r-- 1 oracle oinstall 21576 May 6 2009 emdpatch.pl
drwxr-xr-x 2 oracle oinstall 4096 May 22 16:16 jlib
drwxr-xr-x 5 oracle oinstall 4096 May 22 16:16 ocm
-rwxr-xr-x 1 oracle oinstall 8709 May 6 2009 opatch
-rw-r--r-- 1 oracle oinstall 49 May 22 16:22 opatch.ini
-rw-r--r-- 1 oracle oinstall 2576 May 6 2009 opatch.pl
drwxr-xr-x 4 oracle oinstall 4096 May 22 16:16 opatchprereqs
[oracle@bsplinux OPatch]$ ./opatch version
Invoking OPatch 11.1.0.6.6
OPatch Version: 11.1.0.6.6
OPatch succeeded.
11.2.0.1自帶的OPatch版本為11.1.0.6.6,我們需要首先升級OPatch。第一步是進行原有OPatch備份。
[oracle@bsplinux oracle]$ tar zcvf opatch_bk.tar OPatch
OPatch/
OPatch/opatchprereqs/
OPatch/opatchprereqs/prerequisite.properties
(篇幅原因,省略部分內容)
OPatch/jlib/opatchprereq.jar
OPatch/opatch
OPatch/opatch.ini
[oracle@bsplinux oracle]$ ls -l | grep opatch
-rw-r--r-- 1 oracle oinstall 1187195 Oct 23 19:06 opatch_bk.tar
最新版本的OPatch可以從MOS上面下載到,補丁文件名稱為:p6880880_112000_LINUX.zip(For Linux 32)。
[oracle@bsplinux upload]$ ls -l | grep p688
-rw-r--r-- 1 root root 32510812 Oct 23 19:58 p6880880_112000_LINUX.zip
--解壓到ORACLE_HOME目錄上
[oracle@bsplinux upload]$ unzip p6880880_112000_LINUX.zip -d $ORACLE_HOME
Archive: p6880880_112000_LINUX.zip
creating: /u01/app/oracle/OPatch/oplan/
(篇幅原因,省略部分……)
inflating: /u01/app/oracle/OPatch/crs/s_crsconfig_defs
inflating: /u01/app/oracle/OPatch/crs/s_crsconfig_lib.pm
之後,驗證OPatch安裝成功。
[oracle@bsplinux OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.0
OPatch succeeded.
[oracle@bsplinux OPatch]$
3、補丁安裝
如果OPatch不是最新的版本,直接安裝PSU可能會有各種的問題。更新OPatch之後,我們就可以下載對應的PSU進行更新。
[oracle@bsplinux upload]$ ls -l | grep p12
-rw-r--r-- 1 root root 18510829 Oct 23 19:35 p12419378_112010_LINUX.zip
[oracle@bsplinux upload]$ unzip p12419378_112010_LINUX.zip -d $ORACLE_HOME
(省略)
[oracle@bsplinux oracle]$ cd 12419378/
[oracle@bsplinux 12419378]$ ls -l
total 60
drwxr-xr-x 3 oracle oinstall 4096 Jul 8 2011 custom
drwxr-xr-x 4 oracle oinstall 4096 Jul 8 2011 etc
drwxr-xr-x 12 oracle oinstall 4096 Jul 8 2011 files
-rwxr-xr-x 1 oracle oinstall 2871 Jul 8 2011 patchmd.xml
-rw-rw-r-- 1 oracle oinstall 40790 Jul 18 2011 README.html
-rw-r--r-- 1 oracle oinstall 21 Jul 8 2011 README.txt
將資料庫和監聽程序關閉。
[oracle@bsplinux OPatch]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Proction on Tue Oct 23 19:26:11 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Proction
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@bsplinux OPatch]$ lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.1.0 - Proction on 23-OCT-2012 19:26:55
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully