12.2 DB测试环境启动报错ORA-20001 一、报错 二、参考学习 三、问题排查

测试库12.2 DB 启动,观察DB Alert存在报错信息

Completed: ALTER DATABASE OPEN
2021-03-04T22:39:51.795680+08:00
Unable to obtain current patch information due to error: 20001, ORA-20001: Latest xml inventory is not loaded into table
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 777
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 864
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 2222
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 740
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 2247

===========================================================
Dumping current patch information
===========================================================
Unable to obtain current patch information due to error: 20001
===========================================================

二、参考学习



12.2:DB Alert.log shows ORA-20001: Latest xml inventory,ORA-06512: at "SYS.DBMS_QOPATCH","KUP-04004: error while reading file" (Doc ID 2323937.1)
https://www.xifenfei.com/2018/01/orainventory-ora-20001.html

三、问题排查

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

SQL> select * from OPATCH_XML_INV ;
ERROR:
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-29400: data cartridge error
KUP-04004: error while reading file
/picclife/app/oracle/product/12.2.0/db_1/QOpatch/qopiprep.bat


select xmltransform(dbms_qopatch.get_opatch_lsinventory(), dbms_qopatch.GET_OPATCH_XSLT()) from dual ;
ERROR:
ORA-20001: Latest xml inventory is not loaded into table
ORA-06512: at "SYS.DBMS_QOPATCH", line 777
ORA-06512: at "SYS.DBMS_QOPATCH", line 864
ORA-06512: at "SYS.DBMS_QOPATCH", line 2222
ORA-06512: at "SYS.DBMS_QOPATCH", line 740
ORA-06512: at "SYS.DBMS_QOPATCH", line 2247


datapatch -prereq报错

$ $ORACLE_HOME/OPatch/datapatch -prereq                                                                   
SQL Patching tool version 12.2.0.1.0 Production on Thu Mar  4 22:49:46 2021
Copyright (c) 2012, 2017, Oracle.  All rights reserved.

Connecting to database...OK
Note:  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.log
for 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.log
for 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:13


KUP-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 fields


Fields in Data Source:


XML_INVENTORY CHAR (100000000)
Terminated by "UIJSVTBOEIZBEFFQBL"
Trim whitespace same as SQL Loader
KUP-04004: error while reading file /picclife/app/oracle/product/12.2.0/db_1/QOpatch/qopiprep.bat
KUP-04017: OS message: Error 0
KUP-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

 

3.2  问题定位

OPatch 找不到有效的 oraInst.loc 文件来定位主产品清单。

c11:/picclife/app/oracle/product/12.2.0/db_1/OPatch$ ./opatch lsinventory
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
OPatch 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 文件来定位主产品清单。
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/oraInventory
inst_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.txt
Date & Time : Thu Mar 04 22:55:22 CST 2021
Oracle Home : /picclife/app/oracle/product/12.2.0/db_1
OPatch Ver. : 12.2.0.1.6
Current Dir : /picclife/app/oracle/product/12.2.0/db_1/OPatch
Command     : 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.log


c11:/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/oraInventory
inst_group=oinstall
修改

inventory_loc=/picclife/app/oraInventory

3.3 验证

$ 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 2021
Copyright (c) 2012, 2017, Oracle.  All rights reserved.
Connecting to database...OK
Note:  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...done
Adding patches to installation queue and performing prereq checks...done
Installation queue:
  For the following PDBs: CDB$ROOT PDB$SEED C11PDB
    Nothing to roll back
    Nothing to apply
SQL Patching tool complete on Thu Mar  4 23:03:29 2021

重启OK