在9.2.0.7.0中运行?/rdbms/admin/catalog.sql时,需要先禁用一个系统触发器:_SYSTEM_TRIG_ENABLED。
参考metalink文档:
Note:149948.1
Note:360509.1 Ora-04020 on Sys.Cdc_alter_ctable_before When Running Catalog.Sql
在以往的经验中,?/rdbms/admin/catalog.sql是可以重复运行的,并且在运行时,不需要进行任何额外动作,对数据库的运行也没有什么影响。
在Oracle 9.2.0.7.0中,如果在数据库打开时,直接重新运行catalog.sql这个脚本,会报告:
ERROR at line 1:
ORA-04020: deadlock detected while trying to lock object
SYS.CDC_ALTER_CTABLE_BEFORE
此时,数据库catalog已经被损坏。使用特权用户可以登陆数据库,但速度非常慢;普通用户无法再登陆数据库。
特权用户登陆:
SQL> conn system;
ERROR:
ORA-04020: deadlock detected while trying to lock object SYS.DBMS_STANDARD
ERROR:
ORA-04020: deadlock detected while trying to lock object SYS.DBMS_STANDARD
Error accessing package DBMS_APPLICATION_INFO
Connected.
SQL>
SQL> alter trigger sys.limit_test disable;
alter trigger sys.limit_test disable
*
ERROR at line 1:
ORA-04020: deadlock detected while trying to lock object
SYS.CDC_ALTER_CTABLE_BEFORE
普通用户无法登陆。
SQL> conn test/test;
ERROR:
ORA-04020: deadlock detected while trying to lock object
SYS.CDC_ALTER_CTABLE_BEFORE
Warning: You are no longer connected to ORACLE.
SQL>
关闭数据库。然后创建pfile,在pfile里增加_SYSTEM_TRIG_ENABLED=FALSE,然后再根据pfile创建spfile,然后再启动数据库。
再运行?/rdbms/admin/catalog.sql就可以了。
运行完毕后,将pfile里增加的参数去掉,然后重新根据pfile创建spfile,再重新启动数据库。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23822/viewspace-988783/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23822/viewspace-988783/