博客
关于我
12.2 DB测试环境启动报错ORA-20001
阅读量:520 次
发布时间:2019-03-06

本文共 2511 字,大约阅读时间需要 8 分钟。

一、报错

在测试Oracle 12.2数据库启动时,我们观察到相关报错信息。具体错误包括ORA-20001:"Latest xml inventory is not loaded into table"以及ORA-06512: "在 'SYS.DBMS_QOPATCH', 线 777"等多处错误提示。

此外,还遇到ORA-20001错误,具体描述为"无法获取当前补丁信息,原因是ORA-20001"。这些错误表明在启动数据库时,OPatch补丁管理功能出现了问题。

二、参考学习

查阅相关文档和资料,发现该问题与OPatch补丁管理工具在Oracle 12c环境中的常见问题相关。特别是Doc ID 2323937.1提到,ORA-20001错误通常与无法读取OPatch XML补丁清单表有关。

此外,还需要关注文档ID 1609718.1,了解如何解决OPatch补丁预检查失败的问题。

三、问题排查

3.1 参考MOS处理,非权限问题

在执行OPatch相关操作时,首先需要确认是否存在权限问题。根据MOS建议,执行以下命令验证是否能读取OPatch清单表: ```sql SELECT * FROM OPATCH_XML_INV; ``` 此时可能会出现ORA-29913: "执行ODCIEXTTABLEFETCH调用时发生错误",进一步提示可能是数据载入问题。

进一步分析发现,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,获取详细错误信息。

3.2 问题定位

通过进一步分析OPatch日志,发现关键问题:OPatch无法找到有效的`oraInst.loc`文件来定位主产品清单。具体错误提示:"OPatch 找不到有效的 `oraInst.loc` 文件来定位主产品清单。"

这表明,系统中缺少或无法读取必要的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.bat
  • cat: /picclife/app/oracle/product/12.2.0/db_1/rdbms/log/xml_file_c11.xml: No such file
  • KUP-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

3.3 验证

在修正`oraInst.loc`文件后,重新运行OPatch命令验证: ```bash $ ./opatch lsinv ``` 此时OPatch应能够正确读取主产品清单,输出如下信息: ```bash Oracle 中间补丁程序安装程序版本 12.2.0.1.6版权所有 (c) 2021, Oracle Corporation。保留所有权利。 Oracle Home : /picclife/app/oracle/product/12.2.0/db_1 Central Inventory : n/a from : /picclife/app/oracle/product/12.2.0/db_1/oraInst.loc OPPatch version : 12.2.0.1.6 OUI version : 12.2.0.1.4 Log file location : /picclife/app/oracle/product/12.2.0/db_1/cfgtoollogs/opatch/opatch2021-03-04_22-52-09下午_1.log ``` 验证结果表明OPatch能够正确读取`oraInst.loc`文件,并识别到主产品清单。

最后,重新执行datapatch -prereq命令,确保预检查通过:

$ $ORACLE_HOME/OPatch/datapatch -prereq

此时系统提示:"Nothing to roll back Nothing to apply",表明没有需要回滚或应用的补丁。随后,SQL Patching tool完成预检查,准备进行补丁安装。

通过以上步骤,我们成功解决了OPatch无法读取oraInst.loc文件的问题,确保了数据库补丁管理的正常运行。

转载地址:http://uolyz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现nevilles method多项式插值算法(附完整源码)
查看>>
Objective-C实现newton raphson牛顿-拉夫森算法(附完整源码)
查看>>
Objective-C实现newtons second law of motion牛顿第二运动定律算法(附完整源码)
查看>>
Objective-C实现newton_forward_interpolation牛顿前插算法(附完整源码)
查看>>
Objective-C实现newton_raphson牛顿拉夫森算法(附完整源码)
查看>>
Objective-C实现NLP中文分词(附完整源码)
查看>>
Objective-C实现NLP中文分词(附完整源码)
查看>>
Objective-C实现NMS非极大值抑制(附完整源码)
查看>>
Objective-C实现NMS非极大值抑制(附完整源码)
查看>>
Objective-C实现Node.Js中生成一个UUID/GUID算法(附完整源码)
查看>>
Objective-C实现not gate非门算法(附完整源码)
查看>>
Objective-C实现number of digits解字符数算法(附完整源码)
查看>>
Objective-C实现NumberOfIslands岛屿的个数算法(附完整源码)
查看>>
Objective-C实现numerical integration数值积分算法(附完整源码)
查看>>
Objective-C实现n个取m个数的组合算法(附完整源码)
查看>>
Objective-C实现n皇后问题算法(附完整源码)
查看>>
Objective-C实现O(E + V) 中找到 0-1-graph 中的最短路径算法(附完整源码)
查看>>
Objective-C实现OCR文字识别(附完整源码)
查看>>
Objective-C实现odd even sort奇偶排序算法(附完整源码)
查看>>
Objective-C实现ohms law欧姆定律算法(附完整源码)
查看>>