本文共 2511 字,大约阅读时间需要 8 分钟。
此外,还遇到ORA-20001错误,具体描述为"无法获取当前补丁信息,原因是ORA-20001"。这些错误表明在启动数据库时,OPatch补丁管理功能出现了问题。
此外,还需要关注文档ID 1609718.1,了解如何解决OPatch补丁预检查失败的问题。
进一步分析发现,KUP-04004错误:"在读取文件时发生错误",具体指向路径/picclife/app/oracle/product/12.2.0/db_1/QOpatch/qopiprep.bat。这表明OPatch在读取相关文件时遇到了问题。
在执行datapatch -prereq命令时,系统提示:"Pre req check failed, exiting without installing any patches." 这表明OPatch无法完成预检查,无法继续补丁安装。
因此,需要检查日志文件/picclife/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_8718_2021_03_04_22_49_46/sqlpatch_invocation.log,获取详细错误信息。
这表明,系统中缺少或无法读取必要的oraInst.loc配置文件。根据OPatch的工作原理,oraInst.loc文件位于$ORACLE_HOME目录下,用于指定数据库的存储位置和相关参数。
检查/picclife/app/oracle/product/12.2.0/db_1/rdbms/log目录下的日志文件,发现多个错误提示,例如:
KUP-04004: error while reading file /picclife/app/oracle/product/12.2.0/db_1/QOpatch/qopiprep.batcat: /picclife/app/oracle/product/12.2.0/db_1/rdbms/log/xml_file_c11.xml: No such fileKUP-04118: operation "pipe read", location "skudmir:2"此外,还发现/etc/oraInst.loc文件权限问题,当前文件权限设置为-rw-r--r--,而oracle用户无法读取该文件。因此,需要检查是否存在其他有效的oraInst.loc文件。
通过进一步检查,发现/picclife/app/oracle/product/12.2.0/db_1/oraInst.loc文件的内容似乎缺少了一个'i'字符,导致文件内容异常。修正后,文件内容应如下:
inventory_loc=/picclife/app/oraInventory inst_group=oinstall
最后,重新执行datapatch -prereq命令,确保预检查通过:
$ $ORACLE_HOME/OPatch/datapatch -prereq
此时系统提示:"Nothing to roll back Nothing to apply",表明没有需要回滚或应用的补丁。随后,SQL Patching tool完成预检查,准备进行补丁安装。
通过以上步骤,我们成功解决了OPatch无法读取oraInst.loc文件的问题,确保了数据库补丁管理的正常运行。
转载地址:http://uolyz.baihongyu.com/