在从Linux Oracle 9204 x86*64 升级到9208的时候,执行catpatch.sql的过程中遭遇ORA-04021
startup migrate
@?/rdbms/admin/catpatch.sql
……
create type XMLTypePI OID '0000000000000000000000000002014F' as *
ERROR at line 1:
ORA-04021: timeout occurred while waiting to lock object SYS.XMLTYPEPI
发生这个错误的同时,脚本是在这儿等待很长的时间,v$session_wait中会显示library cache pin这一等待。发生这个错误的主要原因在于在更新xmldb的时候,oracle需要一个版本一个版本往上提,如9204->9205->9206,如中间缺少,那么就出现这种报出错误的情况,解决这个错误的方法就是手工执行xdbpatch脚本。
startup migrate
spool xdbpatch.log
@?/rdbms/admin/xdbpatch
spool off;
然后可以重新跑一遍catpatch执行一次字典的更新,当然,这个实际上也是一个bug,oracle说在9207中已经fix掉,但实际上在9208上面还会有这个错误发生。
MetaLink上的参考信息:
Subject: | Bug 2884318 - ORA-4021 possible upgrading XMLType / XMLTypePI | |||
Doc ID: | 2884318.8 | Type: | PATCH | |
Modified Date : | 24-SEP-2008 | Status: | PUBLISHED |
FROM:http://hi.baidu.com/benmaoer/blog/item/08e06d22909739ad4723e8b9.html