从版开始Oracle公司设计实现了个别补丁安装管理工具opatchopatch使用一
个称为inventory的系统数据结构(严格说是与oui共享inventory)集中管理所有已安装的个别补丁个别
补丁的安装和卸载都使用opatch命令完成沖突检测也由opatch在安装时自动完成提供列表命令可以很方
便得到已安装个别补丁的信息
g(和)版本中opatch作为一个标准工具在软件安装时自动安装(安装在
$ORACLE_HOME/OPatch下)而对于版需要从metalink下载opatch无论数据库是哪一个版本系统中是
否已经安装opatch在使用之前应从metalink下载最新版本的opatch很遗憾由于系统实现的问题
使用的opatch与之前版本(和)使用的opatch不兼容不能混用这一点必须注意
opatch是使用perl编写的脚本程序(其中也使用JAVA API)编程使用的perl版本是版虽然在
之前的版本中也可运行但应尽可能安装或以上的版本的perl对于DBA来说一个好消息是如果安装
版软件时保留了HTTP服务器则在$ORACLE_HOME/Apache下会自动安装perl(g会自动安装配置perl和
opatch)
opatch命令格式为
opatch < command > [< command_options >] [ h[elp] ]
命令有apply(安装个别补丁)rollback(卸载个别补丁)lsinventory(对inventory进行列表)
query(显示某一个别补丁的详细信息)version(显示opatch版本信息)在opatch目录下有用户使
用指南文件(Users_Guidetxt)其中有详细的命令格式和使用示例读者可以参考Opatch执行操作时
除在屏幕输出结果外还生成日志文件日志文件的路径和文件名格式如下
$ORACLE_HOME/patch_storage/< patch_id >/< action >< patch_id >_< mmddyyyy_hhmiss
>log
其中patch_id是Oracle技术支持部门为个别补丁分配的编号
* 个别补丁安装实例
沿用安装PSR实例中的环境在安装PSR后检索metalink发现若干在其之上的个别补丁选
择其中之一安装
个别补丁Patch 修复BUG这一BUG的主要问题是TNS LISTENER在注册ONS(Oracle
Notification Services)的同时如果创建子进程那么LISTENER会挂起(HANGUP)
安装时首先从metalink下载补丁的压缩文件p__LINUXzip将此文件解压缩至某一目录
中解压缩后这一补丁的所有文件都在子目录下目录名就是个别补丁的补丁号opatch依据目录
名获得信息所以一定不要重命名子目录
然后在终端窗口中执行cd命令移动到子目录中执行以下命令
$ $ORACLE_HOME/OPatch/opatch apply
对inventory列表确认安装操作
$ $ORACLE_HOME/OPatch/opatch lsinventory
执行卸载命令时也必须使子目录成为当前目录其中Rollback命令需要两个参数id给出
个别补丁号ph 给出个别补丁解压缩后的路径
$ $ORACLE_HOME/OPatch/opatch rollback id ph /…/
随后再对inventory列表则会看到这一个别补丁已经被移去
* 使用opatch显示已安装的版本信息
不需要启动数据库执行加选项的对inventory的列表命令可以得到已安装的软件的各个组件的详细版
本信息
$ $ORACLE_HOME/OPatch/opatch lsinventory detail
安全补丁CPU
一个CPU内包含了对多个安全漏洞的修复并且也包括相应必需的非安全漏洞的补丁CPU是累积型的
只要安装最新发布的CPU即可其中包括之前发布的所有CPU的内容事实上在CPU之前的安全漏洞修改除去
个别例外也被包括在CPU中Oracle公司只对处于标准技术支持和延长支持期间的产品提供CPU更新对处于
维持支持范围的产品不提供新的CPU(对于以前的版本只对处于ECS和EMS期间的版本提供CPU更新)
一般对当前补丁发行版及前一个版本提供CPU但也有只限于当前补丁发行版的例外情形也就是说一般需
要先安装最新PSR后才可能安装CPU由于是累积型的定期发布所以对于某一平台的某一版本如果两次CPU
发布期间没有发现新的安全漏洞则新发布的CPU与前一版本完全相同
在以下网址中可以找到CPU发布的信息但是很遗憾只有技术支持签约用户才可以从metalink下载补丁
文件
Oracle公司制定的CPU的发布日期大约在一月四月七月和十月的最接近的星期二
对于每一个CPU附有相应的说明文档(Critical Patch Update Note)其中介绍安装过程和注意事项
在安装之前应认真阅读此文档同样也存在文档Oracle Critical Patch Update MM YYYY Known Issues
for Oracle Database其中列出了说明文档中没有给出的新信息
在安装时首先下载压缩文件p__LINUXzip解压缩到与其它个别补丁相同的目录下检
查其发行说明时发现要求opatch版本比现已安装版本要高下载安装指定版本opatch进入子目录
(这是此安全补丁的补丁号)执行apply命令
$ $ORACLE_HOME/OPatch/opatch apply
打开此次安装生成的日志文件其中没有错误信息出现执行inventory列表命令确认安装
$ $ORACLE_HOME/opatch lsinventory
opatch作用
opatch是用于维护个别补丁的有人称其为interim path或是oneoff patch
以解决TA ENQ AND US ENQ DEADLOCK DURING TRANSACTION RECOVERY IN RAC问题的interim patch 为例
安装及rollback的命令如下
install:
oracle>unzip p__HPzip
oracle>cd
oracle>opatch apply
rollback:
oracle>cd
oracle>opatch rollback id
查看
如下命令可以看到已经安装了哪些interim patch
[oracle@mysql ~]$ /u/app/oracle/product//db_/OPatch/opatch lsinventory
不断的在opatch后面加h可以看到这个命令更加详细的选项
看一下lsinventory后面有哪些选项
[oracle@mysql ~]$ /u/app/oracle/product//db_/OPatch/opatch lsinventory h
环境介绍
XXXX综合管理信息系统主机放在XXXX数据库平台硬件架构如下
数据库主机两台IBMp (jcczxtjcczxt)安装AIXL ML 通过IBM HACMP构成双机热备
数据库平台Oracle Server Enterprise Edition Version:
故障描述
年月号上午值班人员接到用户反应应用出错无法存盘前台出现的错误信息如下
ORAIO error reading block from file (block #)
ORA: data file : /oradata/smisdbf
ORA: skgfqio :unable to quere I/O
ORA: skgfdisp : I/O error
IBM AIX RISC System/ Error : : I/O error
此时数据库管理员重新启动数据库前台用户反应应用可能正常运行问题解决数据库管理员在检查主机日志时没有发现任何硬件故障问题在检查数据库日志时也没有任何错误提示用Oracle的实用程序DBV对数据库文件进行检查没有发现坏块
年月日下午用户又报同样的错误此时DBA重新启动数据库和应用问题解决 :用户又报同样的DBA重新启动数据库和应用问题解决
故障的定位
第一步通过errpt检查主机的日志确认主机没有硬件问题磁盘没有损坏第二步通过检查数据库的日志文件(alertSIDlog)也没有相关的错误提示初步判定不是数据库的问题第三步通过Oracle的实用程序DBV对数据库文件进行检查没有发现坏块此时可以确认不是硬件问题是软件的问题第四步综合管理信息系统是年月号上线一直都稳定运行没有出现过类似的情况可以排除是应用程序的问题第五步通过上metalink网站查询与ORA相关的信息发现有大量的资讯其中的故障描述与我们的情况一致由于在AIXL的操作系统上Oracle由于无法获取正确的data block头信息从而导致DBWn进程写硬盘失败Oracle数据库从到都有此问题是由于Oracle的BUG导致需要打一个Oracle的临时补丁此时问题可以定位为oracle在AIXL平台上的BUG需要加载一个Oracle的临时补丁patch
Oracle术语解释
什么叫interim patch ?
Interim patch是一次性的补丁针对特定的情况下触发的Bug没有经过Oracle系统的认证Oracle会根据Bug的严重性和需要在下一次的patch set中包含此Interim patchInterim patch对环境和版本有特定的要求即不同操作系统平台和数据库版本的会有不同的Interim patch如Interim patch 会
什么叫Opatch?
Opatch是oracle支持的Oracle临时补丁的安装实用程序是针对Oracle数据库第二版后安装临时补丁Opatch是一个基于Perl的程序
如何安装Opatch?
从metalink上选择补丁程序选择简单搜索输入patch号选择相应的操作系统平台查询结果会显示所有可用版本的optach下载版本号就行将下的压缩文件上传到数据库主机将压缩文件复制到$ORACLE_HOME目录下用unzip工具解压此压缩文件具体命令如下
#cp /tmp/p__AIXLzip $ORACLE_HOME
#chown oracle:dba $ORACLE_HOME/p__AIXLzip
以oracle用户解压此文件
$ cd $ORACLE_HOME
$unzip p__AIXLzip
解决方法
)从metalink上选择补丁程序选择简单搜索输入patch号选择平台为IBM AIX Based System(bit)下载Oracle对应的patch大小为K
)将patch 上传到数据库主机(host)
)在jcczxt主机上加载此patch
因综合管理信息系统采用双机热备方式所以备机(host)没有数据库应用所以我们可以在不停下数据库的情况下加载patch 详细步骤如上
以oracle数据库用户执行下面的命令
$cp /tmp/p__AIXLzip /oracle/patch
$cd /oracle/patch
$unzip p__AIXLzip
$cd
$$ORACLE_HOME/Opatch/opatch install
提示要求输入metalink的帐号和密码可能随便输入
提示 Please shut down Oracle instances running out of this ORACLE_HOME输入Y
此时oracle会开始安装patch因为要重新链接lib所以要花几分钟时间在安装完毕后会出现OPatch succeeded提示
)将数据库切换到jcczxt
)在host主机上采用相同的方法上加载patch