oracle补丁怎么打,如何利用oracle opatch打补丁

本文主要介绍了如何利用ORACLE的OPATCH工具安装补丁,同时通过本文的描述,我们也应该了解确认BUG一般步骤:分析、排查相关错误信息、对比环境、最终确认。

关键字: ORACLE、OPATCH、补丁

1.      引言

近几年,随着我们ORACLE数据库的应用越来越深入,用户的环境越来越复杂,一些ORACLE常见的BUG也会偶尔的被触发。因此,我们对技术人员要求不能再象以前一样只要求会安装数据库,还应该要求其掌握如何安装补丁才行,下面我们就结合一个案例,介绍下如何利用ORACLE OPATCH工具进行补丁的安装。

2.      案例描述

前不久,某数据库监听在系统高峰期出现偶尔莫名宕掉的现象,导致客户端无法连接,但是重新启动监听又不报任何错误,及时重建监听,现象依旧。听到问题描述,我们首先检查监听停止时段的日志,发现有如下错误提示:

2071374353615797599.jpg

查询metalink后,发现有个类似案例《TNS Listener Crash with Core dump [ID 549932.1]》,适用于ORACLE10.2.0.3.0到11.1.0.6.0,平台是UNINX。该数据库版本是10.2.0.4,但是平台是LINUX的,还是有点区别,需要进一步分析,但是看下面的现象,在系统日志(/var/log/messages)中,会出现如下提示:

35f8cca66258fb38bacfc5b04c3d6537.png

文档中还提到,在出现该错误的时间段,系统的虚拟内存会出现异常,于是我们通过配置跟踪文件,等待再次出现问题后,观察下系统的虚拟内存观察的情况如下:

1693071984916367146.jpg

这些现象都同文档的的错误现象一致,因此,虽然个别条件有所差别,但是可以基本判断为同一问题。接下来,我们就来看看解决问题的方法,该问题ORACLE官方提供的解决方法有2种:一种是加物理内存,一种是再当前平台打补丁6139856。由于加物理内存涉及硬件投入,我们这里考虑采用打补丁的方式尝试解决该问题。

3.      准备工作

决定了采用打补丁的解决思路,接下来就是做准备工作,首先,当然是下载补丁文件(P6139856),然后把文件上传到服务器的相关目录,并进行解压,当然在打补丁前,对数据库的备份是必不可少的,这些步骤我们就不再一一阐述,重点还是介绍下打补丁的过程。

4.      操作过程

4.1.             阅读说明

在正式操作前,我们还是应该认真阅读补丁的说明,看看有什么特别需要注意事情,这些在补丁说明中都会有提示,如果你们没有作特别的提示,我们就可以在正式环境中应用了,小补丁的安装其实比较简单,主要利用ORACLE的OPATCH工具进行操作,OPATCH工具是ORACLE自带的一个补丁安装程序,默认ORACLE安装后就自带该工具,因此无需我们再单独安装。

4.2.             检查环境

每个补丁的应用都有一定的环境,包括数据库版本、OPATCH版本等,首先应该对这些环境进行检查,通过命令opatch lsinventory检查,操作如下:

Last login: Fri Jul 30 10:08:59 2010

[oracle@wzy01 ~]$ cd 6139856/                  #进入补丁文件目录

[oracle@wzy01 6139856]$ ls

etc  files  README.txt

[oracle@wzy01 6139856]$ opatch lsinventory     #用opatch lsinventory检查环境

Invoking OPatch 10.2.0.4.2

Oracle Interim Patch Installer version 10.2.0.4.2

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

Oracle Home       : /u01/oracle/product/db10gr2

Central Inventory : /u01/oracle/oraInventory

from           : /etc/oraInst.loc

OPatch version    : 10.2.0.4.2                                  #opatch版本

OUI version       : 10.2.0.4.0

OUI location      : /u01/oracle/product/db10gr2/oui

Log file location : /u01/oracle/product/db10gr2/cfgtoollogs/opatch/opatch2010-07-30_11-16-12AM.log

Lsinventory Output file location : /u01/oracle/product/db10gr2/cfgtoollogs/opatch/lsinv/lsinventory2010-07-30_11-16-12AM.txt

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

Installed Top-level Products (2):

Oracle Database 10g                                                  10.2.0.1.0

Oracle Database 10g Release 2 Patch Set 3                            10.2.0.4.0                                                                    #oracle大版本

There are 2 products installed in this Oracle Home.

There are no Interim patches installed in this Oracle Home.

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

OPatch succeeded.

4.3.             停数据库

在打补丁的时候,会有文件的覆盖替换,因此,大部分时候,在打补丁的时候是要求数据库处于关闭状态,因此,我们需要把数据库实例关闭。

SQL> conn / as sysdba

已连接。

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL>

4.4.             应用补丁

补丁的安装也非简单,如果前面的环境都没有问题,直接运行下opatch apply就行了,OPATCH工具会自动应用补丁,完成补丁的安装,如下:

[oracle@wzy01 6139856]$ opatch apply     #在补丁文件目录中用opatch apply应用补丁

Invoking OPatch 10.2.0.4.2

Oracle Interim Patch Installer version 10.2.0.4.2

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

Oracle Home       : /u01/oracle/product/db10gr2

Central Inventory : /u01/oracle/oraInventory

from           : /etc/oraInst.loc

OPatch version    : 10.2.0.4.2

OUI version       : 10.2.0.4.0

OUI location      : /u01/oracle/product/db10gr2/oui

Log file location : /u01/oracle/product/db10gr2/cfgtoollogs/opatch/opatch2010-07-30_11-16-16AM.log

ApplySession applying interim patch '6139856' to OH '/u01/oracle/product/db10gr2'

Running prerequisite checks...

OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.

(Oracle Home = '/u01/oracle/product/db10gr2')

Is the local system ready for patching? [y|n]        #询问是否更新文件,输入Y更新

y

User Responded with: Y

Backing up files and inventory (not for auto-rollback) for the Oracle Home

Backing up files affected by the patch '6139856' for restore. This might take a while...

Backing up files affected by the patch '6139856' for rollback. This might take a while...

Patching component oracle.rdbms, 10.2.0.4.0...

Updating archive file "/u01/oracle/product/db10gr2/lib/libn10.a"  with "lib/libn10.a/nsev.o"

Updating archive file "/u01/oracle/product/db10gr2/lib32/libn10.a"  with "lib32/libn10.a/nsev.o"

Patching component oracle.rdbms.rsf, 10.2.0.4.0...

Updating archive file "/u01/oracle/product/db10gr2/lib/libn10.a"  with "lib/libn10.a/nsev.o"

Updating archive file "/u01/oracle/product/db10gr2/lib32/libn10.a"  with "lib32/libn10.a/nsev.o"

Running make for target client_sharedlib

Running make for target ioracle

ApplySession adding interim patch '6139856' to inventory

Verifying the update...

Inventory check OK: Patch ID 6139856 is registered in Oracle Home inventory with proper meta-data.

Files check OK: Files from Patch ID 6139856 are present in Oracle Home.

The local system has been patched and can be restarted.

OPatch succeeded.                                 #补丁更新成功

4.5.             检查核实

最后,我们要看一下,补丁安装情况,同样我们通过opatch lsinventory命令进行查看,如下:

[oracle@wzy01 6139856]$ opatch lsinventory

Invoking OPatch 10.2.0.4.2

Oracle Interim Patch Installer version 10.2.0.4.2

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

Oracle Home       : /u01/oracle/product/db10gr2

Central Inventory : /u01/oracle/oraInventory

from           : /etc/oraInst.loc

OPatch version    : 10.2.0.4.2

OUI version       : 10.2.0.4.0

OUI location      : /u01/oracle/product/db10gr2/oui

Log file location : /u01/oracle/product/db10gr2/cfgtoollogs/opatch/opatch2010-07-30_11-23-32AM.log

Lsinventory Output file location : /u01/oracle/product/db10gr2/cfgtoollogs/opatch/lsinv/lsinventory2010-07-30_11-23-32AM.txt

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

Installed Top-level Products (2):

Oracle Database 10g                                                  10.2.0.1.0

Oracle Database 10g Release 2 Patch Set 3                            10.2.0.4.0

There are 2 products installed in this Oracle Home.

Interim patches (1) :

Patch  6139856      : applied on Fri Jul 30 11:21:01 CST 2010

Created on 28 Jul 2008, 01:14:03 hrs PST8PDT

Bugs fixed:

6139856                                                                 #这里可以看到,补丁已经安装成功

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

OPatch succeeded.

完成补丁安装后,重新启动数据库实例,接着观察了2天时间,没有再出现监听莫名停止的现象,证明补丁确实起了作用。

5.      结束语

通过上面的介绍,大家可以看到,只要前期准备工作做好,其实ORACLE补丁的应用其实很简单,所以大家不要对其有畏难情绪,他的操作同WINDOWS的补丁安装是一样的,希望通过这篇文章的介绍,对大家以后的工作有所帮助

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Oracle 19c RAC,打补丁的过程如下: 1. 首先,确认你的Oracle Grid Infrastructure(GI)和数据库软件版本是否需要打补丁。你可以在Oracle官方文档中查找相关信息,比如Oracle Support网站上的补丁信息。 2. 在打补丁之前,建议先在测试环境中进行测试,确保补丁能够成功应用并不会对系统稳定性和可用性造成负面影响。 3. 下载相应的补丁文件。你可以在Oracle Support网站上找到适用于你的版本和平台的补丁。 4. 在所有节点上停止Oracle RAC数据库实例和监听器。可以使用`srvctl`命令来停止和启动实例和监听器。 5. 在所有节点上停止Oracle Grid Infrastructure服务。同样可以使用`crsctl`命令来停止和启动GI服务。 6. 在所有节点上备份相关文件和配置,包括数据库文件、GI配置文件、以及相关配置目录。 7. 在每个节点上应用补丁。你可以使用OPatch工具来应用Oracle补丁。首先,解压缩补丁文件,然后使用OPatch工具进行应用。具体的命令格式可能会有所不同,你可以参考补丁文档中的说明。 8. 在每个节点上应用完补丁后,需要执行相关的脚本来完成补丁安装。这些脚本通常在补丁的文档或Readme文件中提供。 9. 在所有节点上启动Oracle Grid Infrastructure服务。 10. 在所有节点上启动数据库实例和监听器。 11. 验证补丁是否成功应用。可以查看日志文件和相关的Oracle文档来确认补丁是否已经成功安装。 请注意,打补丁是一个重要的操作,需要谨慎对待。在进行补丁操作之前,建议先熟悉相关文档和参考资料,并在测试环境中进行测试,以确保操作的安全性和可行性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值