教你快速掌握如何使用“Opatch”打补丁

 
opatch是Oracle 9。2之后提供的补丁工具,基于Perl 5.6编写
存放目录在$ORACLE_HOME/OPatch
具体的使用格式
opatch < command > [< command_options >] [ -h[elp] ]
apply    安装
rollback 卸载
lsinventory 列表
query    信息
version  版本

使用的例子

1  从oracle下载需要的补丁之后,任意的解压到一个目录中
2 进入解压之后的这个以BUGID为文件夹的目录
3 在这个文件夹中执行$ORACLE_HOME/OPatch  apply 安装即可

在实际的工作和学习中,很多人都会发现有些Patch没有setup安装程序,本文中我们将详细的介绍如何使用Oracle的opatch工具来进行安装。

从9.2版开始,Oracle公司设计实现了个别补丁安装管理工具opatch.opatch使用一

个称为inventory的系统数据结构(严格说是与oui共享inventory),集中管理所有已安装的个别补丁;个别

补丁的安装和卸载都使用opatch命令完成,冲突检测也由opatch在安装时自动完成;提供列表命令可以很方

便得到已安装个别补丁的信息。

    10g(10.1和10.2)版本中,opatch作为一个标准工具,在软件安装时自动安装。(安装在

$ORACLE_HOME/OPatch下。)而对于9.2版,需要从metalink下载opatch.无论数据库是哪一个版本,系统中是

否已经安装opatch,在使用之前,应从metalink下载最新版本的opatch.很遗憾,由于系统实现的问题,10.2

使用的opatch与之前版本(10.1和9.2)使用的opatch不兼容,不能混用,这一点必须注意。

    opatch是使用perl编写的脚本程序(其中也使用JAVA API)。编程使用的perl版本是5.6版,虽然在5.6

之前的版本中也可运行,但应尽可能安装5.6或以上的版本的perl.对于DBA来说一个好消息是,如果安装9.2

版软件时保留了HTTP服务器,则在$ORACLE_HOME/Apache下会自动安装perl.(10g会自动安装配置perl和

opatch.)

    opatch命令格式为:

    opatch < command > [< command_options >] [ -h[elp] ]

    命令有:apply(安装个别补丁)、rollback(卸载个别补丁)、lsinventory(对inventory进行列表)

、query(显示某一个别补丁的详细信息)、version(显示opatch版本信息)。在opatch目录下,有用户使

用指南文件(Users_Guide.txt),其中有详细的命令格式和使用示例,读者可以参考。Opatch执行操作时,

除在屏幕输出结果外,还生成日志文件。日志文件的路径和文件名格式如下:

    $ORACLE_HOME/.patch_storage/< patch_id >/< action >-< patch_id >_< mm-dd-yyyy_hh-mi-ss

>.log

    其中“patch_id”是Oracle技术支持部门为个别补丁分配的编号。

     * 个别补丁安装实例

    沿用安装PSR实例中的环境。在安装PSR10.1.0.5后,检索metalink,发现若干在其之上的个别补丁。选

择其中之一安装。

    个别补丁Patch 4518443修复BUG4518443,这一BUG的主要问题是TNS LISTENER在注册ONS(Oracle

Notification Services)的同时如果创建子进程,那么LISTENER会挂起(HANGUP)。

    安装时,首先,从metalink下载补丁的压缩文件p4518443_10105_LINUX.zip.将此文件解压缩至某一目录

中。解压缩后,这一补丁的所有文件都在子目录4518443下,目录名就是个别补丁的补丁号,opatch依据目录

名获得信息,所以一定不要重命名子目录。

    然后,在终端窗口中,执行cd命令移动到4518443子目录中,执行以下命令:

    $ $ORACLE_HOME/OPatch/opatch apply

    对inventory列表,确认安装操作:

    $ $ORACLE_HOME/OPatch/opatch lsinventory

    执行卸载命令时,也必须使4518443子目录成为当前目录。其中,Rollback命令需要两个参数:-id给出

个别补丁号;-ph 给出个别补丁解压缩后的路径。

    $ $ORACLE_HOME/OPatch/opatch rollback -id 4518443 -ph /…/4518443

    随后再对inventory列表,则会看到这一个别补丁已经被移去。


* 使用opatch显示已安装的版本信息

    不需要启动数据库,执行加选项的对inventory的列表命令,可以得到已安装的软件的各个组件的详细版

本信息。

    $ $ORACLE_HOME/OPatch/opatch lsinventory -detail

    安全补丁CPU

    一个CPU内包含了对多个安全漏洞的修复,并且也包括相应必需的非安全漏洞的补丁。CPU是累积型的,

只要安装最新发布的CPU即可,其中包括之前发布的所有CPU的内容。事实上,在CPU之前的安全漏洞修改除去

个别例外也被包括在CPU中。Oracle公司只对处于标准技术支持和延长支持期间的产品提供CPU更新,对处于

维持支持范围的产品不提供新的CPU.(对于9.2以前的版本,只对处于ECS和EMS期间的版本提供CPU更新。)

一般对当前补丁发行版及前一个版本提供CPU,但也有只限于当前补丁发行版的例外情形。也就是说,一般需

要先安装最新PSR后才可能安装CPU.由于是累积型的定期发布,所以对于某一平台的某一版本,如果两次CPU

发布期间没有发现新的安全漏洞,则新发布的CPU与前一版本完全相同。

    在以下网址中可以找到CPU发布的信息,但是很遗憾,只有技术支持签约用户才可以从metalink下载补丁

文件。

   http://www.oracle.com/technology/deploy/security/alerts.htm

    Oracle公司制定的CPU的发布日期大约在一月、四月、七月和十月的最接近15的星期二。

    对于每一个CPU,附有相应的说明文档(Critical Patch Update Note),其中介绍安装过程和注意事项

,在安装之前应认真阅读此文档。同样也存在文档“Oracle Critical Patch Update MM YYYY Known Issues

for Oracle Database”,其中列出了说明文档中没有给出的新信息。

    在安装时,首先下载压缩文件p5225797_10105_LINUX.zip,解压缩到与其它个别补丁相同的目录下。检

查其发行说明时,发现要求opatch版本比现已安装版本要高,下载安装指定版本opatch.进入子目录5225797

(这是此安全补丁的补丁号),执行apply命令。

    $ $ORACLE_HOME/OPatch/opatch apply

    打开此次安装生成的日志文件,其中没有错误信息出现。执行inventory列表命令确认安装:

    $ $ORACLE_HOME/opatch lsinventory

 

1、下载

Opatch的最新版本可以从Metalink下载,参考 Note:224346.1

2、准备工作

# You must have Perl 5.00503 (or later)

# installed under the ORACLE_HOME, or elsewhere within the host

# environment. OPatch is no longer included in patches as of 9.2.0.2.

# Refer to the following link for details on Perl and OPatch:

# http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=189489.1

下载Optach后,上传到$ORACLE_HOME

[/app/oracle/product/9205/OPatch]$chmod 755 *

[/app/oracle/product/9205/OPatch]$ opatch version

Invoking OPatch 10.2.0.1.6

OPatch Version: 10.2.0.1.6

OPatch succeeded.

[/app/oracle/product/9205/OPatch]$ opatch lsinventory

Invoking OPatch 10.2.0.1.6

Oracle Interim Patch Installer version 10.2.0.1.6

Copyright (c) 2007, Oracle Corporation. All rights reserved.

Oracle Home : /app/oracle/product/9205

Central Inventory : /app/oracle/oraInventory

from : /var/opt/oracle/oraInst.loc

OPatch version : 10.2.0.1.6

OUI version : 10.1.0.5.0

OUI location : /app/oracle/product/9205/oui

Log file location : /app/oracle/product/9205/cfgtoollogs/opatch/opatch2008-02-20_15-27-23PM.log

LsInventorySession failed:

The Oracle Home does not meet OUI version requirement.

This OPatch (version 10.2.0.1.6) detects OUI version 10.1.0.5.0 in the home.

It requires OUI version 10.2 or above.

OPatch failed with error code 73

原因:Opatch的版本过高。

下载新的Opatch,重新执行opatch lsinventory

[/app/oracle/product/9205/OPatch]$ opatch lsinventory

Oracle Interim Patch Installer version 1.0.0.0.57

Copyright (c) 2007 Oracle Corporation. All Rights Reserved..

We recommend you refer to the OPatch documentation under

OPatch/docs for usage reference. We also recommend using

the latest OPatch version. For the latest OPatch version

and other support related issues, please refer to document

293369.1 which is viewable from metalink.oracle.com

Oracle Home : /app/oracle/product/9205

Oracle Home Inventory : /app/oracle/product/9205/inventory

Central Inventory : /app/oracle/oraInventory

from : /var/opt/oracle/oraInst.loc

OUI location : /app/oracle/product/9205/oui

OUI shared library : /app/oracle/product/9205/oui/lib/hpunix/liboraInstaller.sl

Java location : /app/oracle/product/9205/jre/1.4.2/bin/java

Log file location : /app/oracle/product/9205/.patch_storage//*.log

Creating log file "/app/oracle/product/9205/.patch_storage/LsInventory__02-20-2008_15-42-43.log"

Result:

There is no Interim Patch

OPatch succeeded.

3、具体范例及遇到的问题

下面以打补丁5523799为例

[/app/oracle/product/9205/patches/5523799]$opatch apply

报错:

Invoking fuser to check for active processes.

Invoking fuser on "/app/oracle/product/9205/bin/oracle"

Problems when checking for files that are active.

There were problems when checking for active processes on critical files.

The patch tool runs the command "fuser" to check that critical files are not in use. Make sure 'fuser' is available and executable on your PATH

ERROR: OPatch failed during pre-reqs check.

原因为fuser没有执行权限,su - root

/usr/sbin#chmod +x fuser

重新命令,打Patch成功

用opatch lsinventory显示打patch结果

[/app/oracle/product/9205/OPatch]$ opatch lsinventory

Oracle Interim Patch Installer version 1.0.0.0.57

Copyright (c) 2007 Oracle Corporation. All Rights Reserved..

We recommend you refer to the OPatch documentation under

OPatch/docs for usage reference. We also recommend using

the latest OPatch version. For the latest OPatch version

and other support related issues, please refer to document

293369.1 which is viewable from metalink.oracle.com

Oracle Home : /app/oracle/product/9205

Oracle Home Inventory : /app/oracle/product/9205/inventory

Central Inventory : /app/oracle/oraInventory

from : /var/opt/oracle/oraInst.loc

OUI location : /app/oracle/product/9205/oui

OUI shared library : /app/oracle/product/9205/oui/lib/hpunix/liboraInstaller.sl

Java location : /app/oracle/product/9205/jre/1.4.2/bin/java

Log file location : /app/oracle/product/9205/.patch_storage//*.log

Creating log file "/app/oracle/product/9205/.patch_storage/LsInventory__02-20-2008_16-11-49.log"

Result:

Installed Patch List:

=====================

1) Patch 5523799 applied on Wed Feb 20 16:11:14 GMT+08:00 2008

[ Base Bug(s): 5523799 ]

OPatch succeeded.

4、最后通过opatch查看数据库各组件版本

[/app/oracle/product/9205/OPatch]$ opatch lsinventory –details

 

[oracle@xushao OPatch]$ ./opatch version
Invoking OPatch 10.2.0.1.0

OPatch Version: 10.2.0.1.0

OPatch succeeded.
[oracle@xushao OPatch]$ ./opatch lsinventory
Invoking OPatch 10.2.0.1.0

Oracle interim Patch Installer version 10.2.0.1.0
Copyright (c) 2005, Oracle Corporation.  All rights reserved..


Oracle Home       : /u01/app/oracle/product/10g
Central Inventory : /u01/app/oracle/oraInventory
   from           : /u01/app/oracle/product/10g/oraInst.loc
OPatch version    : 10.2.0.1.0
OUI version       : 10.2.0.1.0
OUI location      : /u01/app/oracle/product/10g/oui
Log file location : /u01/app/oracle/product/10g/cfgtoollogs/opatch/opatch-2011_Aug_28_00-12-13-CST_Sun.log

Lsinventory Output file location : /u01/app/oracle/product/10g/cfgtoollogs/opatch/lsinv/lsinventory-2011_Aug_28_00-12-13-CST_Sun.txt

--------------------------------------------------------------------------------
Installed Top-level Products (1):

Oracle Database 10g                                                  10.2.0.1.0
There are 1 products installed in this Oracle Home.


There are no Interim patches installed in this Oracle Home.

--------------------------------------------------------------------------------


 

你可能感兴趣的:(oracle,command,perl,documentation,patch,installer)