ALLSTARS_ORACLE 发表于 2013-12-6 21:14:05

【Oracle数据恢复】ORA-01410一例

【Oracle数据恢复】ORA-01410一例

Alert Log报ORA-01410异常

问题描述
Alert Log报ORA-01410异常
相关trace文件内容如下:
*** SESSION ID:(1045.59915) 2011-07-22 23:39:14.101
ORA-01410: invalid ROWID
*** 2011-07-22 23:39:14.101
GATHER_STATS_JOB: GATHER_TABLE_STATS('"asc1"','"TAB"','""', ...)
ORA-01410: invalid ROWID
*** 2011-07-23 06:00:00.507
*** CLIENT ID:() 2011-07-23 06:00:00.507
GATHER_STATS_JOB: Stopped by Scheduler.

问题分析

常见的引起Oracle报ORA-01410的几种可能:
1 正在访问的表或者分区发生truncate操作
2 正在访问的分区发生exchange操作
3 表或者相关索引存在脏数据


--需要诊断是否相关的表和索引是否存在数据异常
请进行以下操作:

1 执行以下语句,观察是否报错
select /*+ full(a) */ count(*)
from asc1.TAB a
;

2 校验表和相关索引数据是否存在异常
--如果需要分析的对象是分区表,需要在准备执行ANALYZE操作的用户(比如system)下,创建表INVALID_ROWS,这个是一次性操作,以后校验不用再执行
@?\rdbms\admin\utlvalid.sql
--验证相关的表和索引(非分区表)
ANALYZE TABLE asc1.TAB VALIDATE STRUCTURE CASCADE ONLINE;
--验证相关的表和索引(分区表)
ANALYZE TABLE asc1.TAB VALIDATE STRUCTURE CASCADE ONLINE INTO INVALID_ROWS;

zyclove201305 发表于 2014-7-24 16:45:17

我遇到一个问题与您说的相拟,但不知道是哪张表出了问题:
OS:AIX 5.3
oracle:10.2.0.4
RAC
在alert中信息如下:
Wed Jul 23 02:42:54 2014
GATHER_STATS_JOB encountered errors.  Check the trace file.
Wed Jul 23 02:42:54 2014
Errors in file /oracle/product/database/10.2.0.4/db_1/admin/dw/bdump/dw2_j001_1654834.trc:
ORA-01410: invalid ROWID

trc文件中的信息如下:
*** 2014-07-22 22:44:46.682
*** ACTION NAME:(GATHER_STATS_JOB) 2014-07-22 22:44:46.671
*** MODULE NAME:(DBMS_SCHEDULER) 2014-07-22 22:44:46.671
*** SERVICE NAME:(SYS$USERS) 2014-07-22 22:44:46.671
*** SESSION ID:(1352.22057) 2014-07-22 22:44:46.671

我用SESSION ID:(1352.22057) 从V$ACTIVE_SESSION_HISTORY也没有找到。
请指教!

Maclean Liu(刘相兵 发表于 2014-7-24 17:24:06

把 /oracle/product/database/10.2.0.4/db_1/admin/dw/bdump/dw2_j001_1654834.trc 压缩打包上传

zyclove201305 发表于 2014-7-25 10:36:28

已上传,请查看

Maclean Liu(刘相兵 发表于 2014-7-27 14:22:36

zyclove201305 发表于 2014-7-25 10:36 static/image/common/back.gif
已上传,请查看

解压显示文件已损坏!

zyclove201305 发表于 2014-7-29 10:04:21

文件已重新上传,烦请查看

Maclean Liu(刘相兵 发表于 2014-7-29 16:07:34

GATHER_STATS_JOB: GATHER_TABLE_STATS('"NXTADW"','"T_DW_HXPT_SUBSCRIBE_STAT"','""', ...)
ORA-01410: invalid ROWID
*** 2014-07-23 02:52:08.100
GATHER_STATS_JOB: GATHER_TABLE_STATS('"NXTADW"','"T_DW_CDB_STATISTICS_BS_ZS"','""', ...)
ORA-08103: object no longer exists
*** 2014-07-23 06:04:13.471
*** CLIENT ID:() 2014-07-23 06:04:13.471
GATHER_STATS_JOB: Stopped by Scheduler.


8103 还有1410+10.2.0.4

可能存在较严重的 写丢失lost write,或者bug触发的可能

Maclean Liu(刘相兵 发表于 2014-7-29 16:08:25

请参考着2篇文档:

诊断ORA-08103错误
http://www.askmaclean.com/archives/resolve-ora-08103-error.html

【数据恢复】详解ORA-1410错误
http://www.askmaclean.com/archives/ora-1410.html

Maclean Liu(刘相兵 发表于 2014-7-29 16:12:09

NXTADW.T_DW_HXPT_SUBSCRIBE_STAT 表存在ORA-1410
NXTADW.T_DW_CDB_STATISTICS_BS_ZS 存在ORA-8103

zengmuansha 发表于 2014-7-30 11:45:39

我也遇到该问题 版本是11.2.0.1 备用库。 上周是索引,今天是表无效ROWID。alter.log没有出现ORA-01410

LOCK TABLE "CCPS_MAXMIND_OUTPUTS" IN SHARE MODE  NOWAIT  发现语句有锁表的行为。 这会不会造成备库无效ROWID的原因?

Maclean Liu(刘相兵 发表于 2014-7-30 14:15:24

LOCK TABLE "CCPS_MAXMIND_OUTPUTS" IN SHARE MODE  NOWAIT

LOCK TABLE IN SHARE MODE造成的是 内存里的TM锁 甚至不会到 数据块级别,所以不会的
页: [1]
查看完整版本: 【Oracle数据恢复】ORA-01410一例