本文共 8128 字,大约阅读时间需要 27 分钟。
测试库12.2 DB 启动,观察DB Alert存在报错信息
Completed: ALTER DATABASE OPEN2021-03-04T22:39:51.795680+08:00Unable to obtain current patch information due to error: 20001, ORA-20001: Latest xml inventory is not loaded into tableORA-06512: 在 "SYS.DBMS_QOPATCH", line 777ORA-06512: 在 "SYS.DBMS_QOPATCH", line 864ORA-06512: 在 "SYS.DBMS_QOPATCH", line 2222ORA-06512: 在 "SYS.DBMS_QOPATCH", line 740ORA-06512: 在 "SYS.DBMS_QOPATCH", line 2247===========================================================Dumping current patch information===========================================================Unable to obtain current patch information due to error: 20001===========================================================
SQL> select * from OPATCH_XML_INV ;ERROR:ORA-29913: error in executing ODCIEXTTABLEFETCH calloutORA-29400: data cartridge errorKUP-04004: error while reading file/picclife/app/oracle/product/12.2.0/db_1/QOpatch/qopiprep.batselect xmltransform(dbms_qopatch.get_opatch_lsinventory(), dbms_qopatch.GET_OPATCH_XSLT()) from dual ;ERROR:ORA-20001: Latest xml inventory is not loaded into tableORA-06512: at "SYS.DBMS_QOPATCH", line 777ORA-06512: at "SYS.DBMS_QOPATCH", line 864ORA-06512: at "SYS.DBMS_QOPATCH", line 2222ORA-06512: at "SYS.DBMS_QOPATCH", line 740ORA-06512: at "SYS.DBMS_QOPATCH", line 2247datapatch -prereq报错$ $ORACLE_HOME/OPatch/datapatch -prereq SQL Patching tool version 12.2.0.1.0 Production on Thu Mar 4 22:49:46 2021Copyright (c) 2012, 2017, Oracle. All rights reserved.Connecting to database...OKNote: Datapatch will only apply or rollback SQL fixes for PDBs that are in an open state, no patches will be applied to closed PDBs. Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation (Doc ID 1585822.1)Queryable inventory could not determine the current opatch status.Execute 'select dbms_sqlpatch.verify_queryable_inventory from dual'and/or check the invocation log/picclife/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_8718_2021_03_04_22_49_46/sqlpatch_invocation.logfor the complete error.Prereq check failed, exiting without installing any patches.Please refer to MOS Note 1609718.1 and/or the invocation log/picclife/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_8718_2021_03_04_22_49_46/sqlpatch_invocation.logfor information on how to resolve the above errors.SQL Patching tool complete on Thu Mar 4 22:49:50 2021
c11:/picclife/app/oracle$ tail -200f /picclife/app/oracle/product/12.2.0/db_1/rdbms/log/qopatch_log.log
LOG file opened at 03/04/21 22:43:13KUP-05007: Warning: Intra source concurrency disabled because the preprocessor option is being used.
Field Definitions for table OPATCH_XML_INV
Record format DELIMITED BY NEWLINE Data in file has same endianness as the platform Reject rows with all null fieldsFields in Data Source:
XML_INVENTORY CHAR (100000000)
Terminated by "UIJSVTBOEIZBEFFQBL" Trim whitespace same as SQL LoaderKUP-04004: error while reading file /picclife/app/oracle/product/12.2.0/db_1/QOpatch/qopiprep.batKUP-04017: OS message: Error 0KUP-04017: OS message: OPatch cannot find a valid oraInst.loc file to locate Central Inventory.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"$ ls -ld $ORACLE_HOME/rdbms/log
drwxr-xr-x. 2 oracle oinstall 4096 3月 4 22:43 /picclife/app/oracle/product/12.2.0/db_1/rdbms/log$ chmod 775 /picclife/app/oracle/product/12.2.0/db_1/rdbms/log
OPatch 找不到有效的 oraInst.loc 文件来定位主产品清单。
c11:/picclife/app/oracle/product/12.2.0/db_1/OPatch$ ./opatch lsinventoryOracle 中间补丁程序安装程序版本 12.2.0.1.6版权所有 (c) 2021, Oracle Corporation。保留所有权利。Oracle Home : /picclife/app/oracle/product/12.2.0/db_1Central Inventory : n/a from : /picclife/app/oracle/product/12.2.0/db_1/oraInst.locOPatch version : 12.2.0.1.6OUI version : 12.2.0.1.4Log file location : /picclife/app/oracle/product/12.2.0/db_1/cfgtoollogs/opatch/opatch2021-03-04_22-52-09下午_1.logOPatch 找不到有效的 oraInst.loc 文件来定位主产品清单。OPatch failed with error code 104
查询日志
# cat /picclife/app/oracle/product/12.2.0/db_1/cfgtoollogs/opatch/opatch2021-03-04_22-52-09下午_1.log[2021-3-4 22:52:09] OUI exists, the oraclehome is OUI based.[2021-3-4 22:52:09] OUI exists, the oraclehome is OUI based.[2021-3-4 22:52:09] OPatch invoked as follows: 'lsinventory -invPtrLoc /picclife/app/oracle/product/12.2.0/db_1/oraInst.loc '[2021-3-4 22:52:09] OUI-67077: Oracle 主目录 : /picclife/app/oracle/product/12.2.0/db_1 主产品清单: n/a 从 : /picclife/app/oracle/product/12.2.0/db_1/oraInst.loc OPatch 版本 : 12.2.0.1.6 OUI 版本 : 12.2.0.1.4 OUI 位置 : /picclife/app/oracle/product/12.2.0/db_1/oui 日志文件位置 : /picclife/app/oracle/product/12.2.0/db_1/cfgtoollogs/opatch/opatch2021-03-04_22-52-09下午_1.log[2021-3-4 22:52:09] Patch history file: /picclife/app/oracle/product/12.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt[2021-3-4 22:52:09] OUI-67104:OPatch 找不到有效的 oraInst.loc 文件来定位主产品清单。[2021-3-4 22:52:09] 堆栈说明: java.lang.RuntimeException: OPatch 找不到有效的 oraInst.loc 文件来定位主产品清单。[2021-3-4 22:52:09] 堆栈跟踪: oracle.opatch.OPatchEnv.printOPatchHeader(OPatchEnv.java:6225)[2021-3-4 22:52:09] 堆栈跟踪: oracle.opatch.OPatchSession.process(OPatchSession.java:1925)[2021-3-4 22:52:09] 堆栈跟踪: oracle.opatch.OPatch.process(OPatch.java:796)[2021-3-4 22:52:09] 堆栈跟踪: oracle.opatch.OPatch.main(OPatch.java:846)
观察oraInst.loc 文件
# cat /etc/oraInst.loc inventory_loc=/picclife/app/oraInventoryinst_group=oinstall
# ls -ld /etc/oraInst.loc
-rw-r--r--. 1 root root 61 5月 24 2019 /etc/oraInst.loc这个权限oracle 根本无法读取,再次找其它的oraInst.loc文件
检查文本信息! 找到了Oracle Opatch读取的oraInst.loc配置文件!
发现缺失了一个i字符! ???
$ cat /picclife/app/oracle/product/12.2.0/db_1/cfgtoollogs/opatch/opatch_history.txtDate & Time : Thu Mar 04 22:55:22 CST 2021Oracle Home : /picclife/app/oracle/product/12.2.0/db_1OPatch Ver. : 12.2.0.1.6Current Dir : /picclife/app/oracle/product/12.2.0/db_1/OPatchCommand : lsinv -invPtrLoc /picclife/app/oracle/product/12.2.0/db_1/oraInst.loc Log File : /picclife/app/oracle/product/12.2.0/db_1/cfgtoollogs/opatch/opatch2021-03-04_22-55-22下午_1.logc11:/picclife/app/oracle/product/12.2.0/db_1/OPatch$ cat /picclife/app/oracle/product/12.2.0/db_1/oraInst.loc nventory_loc=/picclife/app/oraInventoryinst_group=oinstall 修改
inventory_loc=/picclife/app/oraInventory
$ ls -lrt /picclife/app/oracle/product/12.2.0/db_1/oraInst.loc -rw-r-----. 1 oracle oinstall 61 5月 24 2019 /picclife/app/oracle/product/12.2.0/db_1/oraInst.loc$ vi /picclife/app/oracle/product/12.2.0/db_1/oraInst.loc inst_group=oinstall$ ./opatch lsinv已安装的顶级产品 (1):Oracle Database 12c 12.2.0.1.0此 Oracle 主目录中已安装 1 个产品。此 Oracle 主目录中未安装任何中间补丁程序。--------------------------------------------------------------------------------OPatch succeeded.$ $ORACLE_HOME/OPatch/datapatch -prereq SQL Patching tool version 12.2.0.1.0 Production on Thu Mar 4 23:03:19 2021Copyright (c) 2012, 2017, Oracle. All rights reserved.Connecting to database...OKNote: Datapatch will only apply or rollback SQL fixes for PDBs that are in an open state, no patches will be applied to closed PDBs. Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation (Doc ID 1585822.1)Determining current state...doneAdding patches to installation queue and performing prereq checks...doneInstallation queue: For the following PDBs: CDB$ROOT PDB$SEED C11PDB Nothing to roll back Nothing to applySQL Patching tool complete on Thu Mar 4 23:03:29 2021 重启OK
转载地址:http://uolyz.baihongyu.com/