博客
关于我
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/

你可能感兴趣的文章
R&Python Data Science 系列:数据处理(2)
查看>>
php递归算法总结
查看>>
PHP递归遍历文件夹
查看>>
R&Python Data Science 系列:数据处理(1)
查看>>
php错误日志文件
查看>>
PHP错误解决:Array and string offset access syntax with curly braces is deprecated
查看>>
php隐藏手机号中间4位方法总结
查看>>
php面向对象三大特征封装、多态、继承
查看>>
php面向对象全攻略
查看>>
php面向对象的基础题
查看>>
php面试题二--解决网站大流量高并发方案(从url到硬盘来解决高并发方案总结)...
查看>>
php页面增加自选项,php-在Woocommerce中添加新的自定义默认订购目录选项
查看>>
php页面静态化技术;学习笔记
查看>>
php项目心得以及总结
查看>>
R&Python Data Science 系列:数据处理(4)长宽格式数据转换
查看>>
PHP项目集成支付宝PC端扫码支付API(国内支付)
查看>>
php预定义常量&变量
查看>>
R 集成算法③ 随机森林
查看>>
php验证码背景色设置无效
查看>>
php验证邮箱是否有效
查看>>