在检查客户数据库的告警日志时,发现了这两个错误。
在告警日志文件中,错误信息为:
Wed Mar 16 22:41:46 2011
Errors in file /oracle/admin/boss/bdump/boss_j001_12906.trc:
ORA-08103: object no longer exists
.
.
.
Thu Mar 17 22:34:10 2011
Errors in file /oracle/admin/boss/bdump/boss_j001_24222.trc:
ORA-01410: invalid ROWID
ORA-8103错误的详细trace文件为:
*** 2011-03-16 22:41:46.112
*** ACTION NAME:(GATHER_STATS_JOB) 2011-03-16 22:41:46.098
*** MODULE NAME:(DBMS_SCHEDULER) 2011-03-16 22:41:46.098
*** SERVICE NAME:(SYS$USERS) 2011-03-16 22:41:46.098
*** SESSION ID:(874.22318) 2011-03-16 22:41:46.098
ORA-08103: object no longer exists
*** 2011-03-16 22:41:46.112
GATHER_STATS_JOB: GATHER_TABLE_STATS('"BP"','"BP_ACC_CUR_BILLCYCLE_DTL_TMP"','""', ...)
ORA-08103: object no longer exists
ORA-1401错误的trace文件:
*** 2011-03-17 22:34:10.188
*** ACTION NAME:(GATHER_STATS_JOB) 2011-03-17 22:34:10.174
*** MODULE NAME:(DBMS_SCHEDULER) 2011-03-17 22:34:10.174
*** SERVICE NAME:(SYS$USERS) 2011-03-17 22:34:10.174
*** SESSION ID:(1084.15763) 2011-03-17 22:34:10.174
ORA-01410: invalid ROWID
*** 2011-03-17 22:34:10.188
GATHER_STATS_JOB: GATHER_TABLE_STATS('"BP"','"BP_ACC_CUR_BILLCYCLE_DTL_TMP"','""', ...)
ORA-01410: invalid ROWID
显然是同一张表在收集统计信息时出现的错误,由于出现了坏块或逻辑错误,导致Oracle在分析这张表时出现了上面的错误。
幸好这是一张用户创建的临时表,只需要删除重建就可以解决问题。
而如果这张表中的数据比较重要,那么解决这个问题可能就要复杂一些了。