ITPub博客

首页 > 数据库 > Oracle > 在9.2.0.7.0中重新创建catalog

在9.2.0.7.0中重新创建catalog

原创 Oracle 作者:pondka 时间:2007-12-05 15:17:16 0 删除 编辑

在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

[@more@]

在以往的经验中,?/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/,如需转载,请注明出处,否则将追究法律责任。

下一篇: RCS
请登录后发表评论 登录
全部评论
  • 博文量
    11
  • 访问量
    33834