本篇内容介绍了“怎么解决使用数据库出现的ORA-00001、ORA-00604问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

On : 12.1.0.2 version, RDBMS

alert log shows:

ORA-00604: error occurred at recursive SQL level 1

ORA-00001: unique constraint (SYS.SMON_SCN_TIME_TIM_IDX) violated

分析:

需要分析表smon_scn_time。验证表和索引的结构和一致性,如果它们之间存在不一致。需要重新创建索引。

For 11.2.0.3 ,11.2.0.2 databases, it could be caused by Bug 13251192 – SMON reports ORA-604/ORA-1 on SYS.SMON_SCN_TIME_TIM_IDX which is fixed in 12.1.0.1 and 11.2.0.4.

解决办法:

For database 11.2.0.4 OR 12c, perform the analyze command below:

ANALYZE TABLE smon_scn_time VALIDATE STRUCTURE CASCADE ONLINE;

1、先得到表SMON_SCN_TIME上的INDEX的创建语句)

set pages 0

set long 2000000000

select dbms_metadata.get_ddl('INDEX','SMON_SCN_TIME_SCN_IDX','SYS') from dual;

select dbms_metadata.get_ddl('INDEX','SMON_SCN_TIME_TIM_IDX','SYS') from dual;

2、然后在系统级别设置12500事件阻止SMON更新SMON_SCN_TIME表

alter system set events '12500 trace name context level 10';

3、drop索引

drop index SYS.SMON_SCN_TIME_SCN_IDX;

drop index SYS.SMON_SCN_TIME_TIM_IDX;

4、通过步骤1得到的ddl,创建索引SYS.SMON_SCN_TIME_SCN_IDX;和SYS.SMON_SCN_TIME_TIM_IDX;)

5、将事件12500关闭,这样SMON就能更新SMON_SCN_TIME表)

alter system set events '12500 trace name context off';