用OPatch给Oracle打补丁,小白踩坑以及解决办法全纪录
- 初衷
- OPatch介绍
- 打补丁之前的准备工作一:查看OPatch版本
- 打补丁之前的准备工作二:关闭所有的Oracle服务
- 开始打补丁
-
- 问题2::出现'%ORACLE_HOME%不是内部或外部命令,也不是可运行的程序或批处理文件'
- 问题3:出现"ZOP-51: The patch location is not valid for apply, because it doesn't have correct metadata, or it points to a patch directory.Please check the arguments and try again OPatch failed with error code = 135.
- 问题4:出现"OPatch could not create/open history file for writing .OPatch failed to lock and get an Inventory Session for the given Oracle Home.OPatch failed with error code = 73."
- 问题5:出现"OiiolLogger.addFileHandler:Error while adding file handler - C:\Program Files\Oracle\Inventory/logs\OPatch2020-09-18_11-22-15-AM.log.java.io.FileNotFoundException: C:\ProgramFiles\Oracle\Inventory\logs\OPatch2020-09-18_11-22-15-AM.log (拒绝访问。)无法锁定主产品清单。OPatch 将尝试重新锁定。"
- 问题5的另一种情况"不报任何情况,但只提示无法锁定产品清单。OPatch将尝试重新锁定。"
- 问题6:打补丁的过程中跳出问题"UtilSession 失败: Can't create patch_storage loc. for NApply.OPatch failed with error code = 73"
- 验证补丁是否安装上
初衷
分享的初衷也是为了人类的共同进步。今天在遇到了一连串的问题之后,百度了各大博客和论坛,均没有确切的Windows环境下,用OPatch工具给Oracle数据库打补丁的细致的问题讲解。本人通过反复尝试,终于从什么都不行,到补丁安装成功。感到不易的同时,也留下一份攻略,算是回馈帮助我很多的互联网吧,看到的朋友觉得有用的话可以转载,但要注明出处哦,谢谢!
OPatch介绍
这是一个安装工具,具体的概念建议百度,这里只需要会用就行。只要正常安装Oracle数据库,那么在Oracle数据库软件安装位置下,自然会有OPatch文件夹。我创建的Oracle数据库软件安装位置(也就是ORACLE_HOME的位置)是:“D:\Oracle\Base\product\11.2.0\dbhome_1”。一定要记住自己的数据库对应位置,后面要用到。
打补丁之前的准备工作一:查看OPatch版本
这是一个开始之前很基本的步骤,是一个开始,当然这个开始就绊倒了很多人也包括我。
具体的步骤是这样的:
一、找到自己的OPatch文件夹的位置
一般都在Oracle软件的位置,我的OPatch目录就在"D:\Oracle\Base\product\11.2.0\dbhome_1\OPatch"。如下图所示:
二、通过cd命令进入OPatch目录
打开命令行win+R,输入cmd(当然我更倾向于打开管理员的命令窗口,不会的请百度)。如下图所示:
三、在这个目录下输入"opatch version"命令
问题1:显示"Oracle Home is not set. OPatch cannot proceed!"
命令行出现下面这种情况:
解决办法:在环境变量的系统变量中设立一个"ORACLE_HOME",变量值是Oracle软件安装位置,我的对应值是"D:\Oracle\Base\product\11.2.0\dbhome_1"。
只靠这一步还是不行,还得在命令行中添加命令"
“set ORACLE_HOME=D:\Oracle\Base\product\11.2.0\dbhome_1”
然后你在输入"opatch version"命令,就好使了: