<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>惜分飞 &#187; oer 8102.2</title>
	<atom:link href="https://www.xifenfei.com/tag/oer-8102-2/feed" rel="self" type="application/rss+xml" />
	<link>https://www.xifenfei.com</link>
	<description>提供7*24专业数据库(Oracle,SQL Server,MySQL,PostgreSQL等)恢复和技术支持@Tel:17813235971</description>
	<lastBuildDate>Wed, 28 Oct 2026 00:37:06 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>记录一次oer 8102.2处理</title>
		<link>https://www.xifenfei.com/2011/12/%e8%ae%b0%e5%bd%95%e4%b8%80%e6%ac%a1oer-8102-2%e5%a4%84%e7%90%86.html</link>
		<comments>https://www.xifenfei.com/2011/12/%e8%ae%b0%e5%bd%95%e4%b8%80%e6%ac%a1oer-8102-2%e5%a4%84%e7%90%86.html#comments</comments>
		<pubDate>Sat, 24 Dec 2011 14:10:17 +0000</pubDate>
		<dc:creator><![CDATA[惜分飞]]></dc:creator>
				<category><![CDATA[Oracle备份恢复]]></category>
		<category><![CDATA[8102.2]]></category>
		<category><![CDATA[oer 8102.2]]></category>
		<category><![CDATA[ORA-01499]]></category>

		<guid isPermaLink="false">https://www.xifenfei.com/?p=2264</guid>
		<description><![CDATA[联系：手机/微信(+86 17813235971) QQ(107644445)  &#8230; <a href="https://www.xifenfei.com/2011/12/%e8%ae%b0%e5%bd%95%e4%b8%80%e6%ac%a1oer-8102-2%e5%a4%84%e7%90%86.html">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div id="xifenfeicopyright">
<p>联系：<a href="https://www.xifenfei.com/about_xifenfei" target="_blank">手机/微信(+86 17813235971)   QQ(107644445)</a><a target="_blank" href="http://wpa.qq.com/msgrd?v=3&#038;uin=107644445&#038;site=qq&#038;menu=yes"><img src="https://www.xifenfei.com/wp-content/themes/img/site_qq.jpg" alt="QQ咨询惜分飞" title="QQ咨询惜分飞"/></a></p>
<p>标题：<a href="https://www.xifenfei.com/2011/12/%e8%ae%b0%e5%bd%95%e4%b8%80%e6%ac%a1oer-8102-2%e5%a4%84%e7%90%86.html" target="_blank">记录一次oer 8102.2处理</a></p>
<p>作者：<a href="https://www.xifenfei.com" target="_blank">惜分飞</a>©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]</p>
</div>
<p><strong>1.alert日志</strong></p>
<pre class="brush: bash; title: ; notranslate">
Tue Dec 20 22:09:45 2011
Errors in file /opt/app/oracle/admin/BAS/bdump/bas_m000_27442.trc:
Wed Dec 21 22:10:45 2011
Errors in file /opt/app/oracle/admin/BAS/bdump/bas_m000_32761.trc:
Thu Dec 22 22:11:46 2011
Errors in file /opt/app/oracle/admin/BAS/bdump/bas_m000_5935.trc:
Fri Dec 23 22:12:47 2011
Errors in file /opt/app/oracle/admin/BAS/bdump/bas_m000_11382.trc:
</pre>
<p>Mnnn performs manageability tasks dispatched to them by MMON. Tasks performed include taking Automatic Workload Repository snapshots and Automatic Database Diagnostic Monitor analysis.<br />
从这个时间点来看，应该是数据库启动GATHER_STATS_JOB收集统计信息时发现这个错误。<br />
<br />
<strong>2.bas_m000_11382.trc</strong></p>
<pre class="brush: bash; title: ; notranslate">
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1
System name:    Linux
Node name:      bas
Release:        2.6.9-78.ELsmp
Version:        #1 SMP Wed Jul 9 15:46:26 EDT 2008
Machine:        x86_64
Instance name: BAS
Redo thread mounted by this instance: 1
Oracle process number: 24
Unix process pid: 11382, image: oracle@bas (m000)

*** ACTION NAME:(Auto-Purge Slave Action) 2011-12-23 22:12:47.074
*** MODULE NAME:(MMON_SLAVE) 2011-12-23 22:12:47.074
*** SERVICE NAME:(SYS$BACKGROUND) 2011-12-23 22:12:47.074
*** SESSION ID:(5465.2033) 2011-12-23 22:12:47.074
oer 8102.2 - obj# 4152, rdba: 0x00401f7c(afn 1, blk# 8060)
kdk key 8102.2:
  ncol: 2, len: 10
  key: (10):  02 c1 0a 06 00 c0 04 dc 00 00
  mask: (4096): 
 09 00 00 00 00 fb d1 c0 00 00 00 00 00 70 f8 fe bf 7f 00 00 00 cd 7d 5d 01
</pre>
<pre class="brush: bash; title: ; notranslate">oer 8102.&lt;code&gt; - obj# &lt;object id&gt;, rdba: &lt;rdba value&gt;(afn &lt;file#&gt;, blk# &lt;block#&gt;)
kdk key 8102.2:
ncol: &lt;number of columns in the key including the rowid&gt;, len: &lt;key length&gt;
key: (&lt;length&gt;):&lt;hexadecimal value&gt;

obj#:   object_id for the affected index in dba_objects.
rdba:   relative data block address where the key is supposed to be stored in the index.
afn:     absolute file number where the affected index block is stored. 
(file_id in dba_data_files, file# in v$datafile).
blk#:   Index block number where the key is supposed to be stored.
</pre>
<p>出现oer 8102.2的错误，有两种可能:1.坏块,2.表和索引数据不一致<br />
<br />
<strong>3.找出相关对象</strong></p>
<pre class="brush: sql; title: ; notranslate">
SQL&gt; col object_name for a30
SQL&gt; col owner for a10
SQL&gt; select object_name,owner,object_type
  2  from dba_objects where object_id=4152;

OBJECT_NAME                    OWNER      OBJECT_TYPE
------------------------------ ---------- -------------------
WRI$_SEGADV_OBJLIST_IDX_TS     SYS        INDEX

SQL&gt; select OWNER,TABLE_NAME from dba_indexes 
   2 where index_name='WRI$_SEGADV_OBJLIST_IDX_TS';

OWNER      TABLE_NAME
---------- ------------------------------
SYS        WRI$_SEGADV_OBJLIST

SQL&gt; ANALYZE TABLE sys.WRI$_SEGADV_OBJLIST VALIDATE STRUCTURE CASCADE;
ANALYZE TABLE sys.WRI$_SEGADV_OBJLIST VALIDATE STRUCTURE CASCADE
*
ERROR at line 1:
ORA-01499: table/index cross reference failure - see trace file
</pre>
<p><strong>4.分析坏块(逻辑/物理)</strong></p>
<pre class="brush: bash; title: ; notranslate">SQL&gt; ANALYZE INDEX WRI$_SEGADV_OBJLIST_IDX_TS VALIDATE STRUCTURE;

Index analyzed.

SQL&gt; ANALYZE TABLE WRI$_SEGADV_OBJLIST VALIDATE STRUCTURE;

Table analyzed.

[oracle@bas bdump]$ dbv file=/opt/app/oracle/oradata/BAS/system01.dbf

DBVERIFY: Release 10.2.0.1.0 - Production on Sat Dec 24 21:14:38 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

DBVERIFY - Verification starting : FILE = /opt/app/oracle/oradata/BAS/system01.dbf


DBVERIFY - Verification complete

Total Pages Examined         : 552960
Total Pages Processed (Data) : 360156
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 167596
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 1961
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 23247
Total Pages Marked Corrupt   : 0
Total Pages Influx           : 0
Highest block SCN            : 2890198330 (2750.2890198330)
</pre>
<p>检测证明，对象以及对象所属的数据文件，无坏块现象<br />
<br />
<strong>5.分析表和index不一致</strong></p>
<pre class="brush: sql; title: ; notranslate">--找出index对应列
SQL&gt; SELECT table_name , column_name from dba_ind_columns  
  2  WHERE index_name='WRI$_SEGADV_OBJLIST_IDX_TS' order by table_name; 

TABLE_NAME                     COLUMN_NAME
------------------------------ --------------------
WRI$_SEGADV_OBJLIST            TS_ID

--确定对应列是否允许为null
SQL&gt; desc WRI$_SEGADV_OBJLIST
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AUTO_TASKID                                        NUMBER
 TS_ID                                              NUMBER
 OBJN                                               NUMBER
 OBJD                                               NUMBER
 STATUS                                             VARCHAR2(40)
 TASK_ID                                            NUMBER
 REASON                                             VARCHAR2(40)
 REASON_VALUE                                       NUMBER
 CREATION_TIME                                      TIMESTAMP(6)
 PROC_TASKID                                        NUMBER
 END_TIME                                           TIMESTAMP(6)
 SEGMENT_OWNER                                      VARCHAR2(30)
 SEGMENT_NAME                                       VARCHAR2(81)
 PARTITION_NAME                                     VARCHAR2(30)
 SEGMENT_TYPE                                       VARCHAR2(18)
 TABLESPACE_NAME                                    VARCHAR2(30)

--确认在表中对应列是否有空值
SQL&gt; SELECT /*+ FULL(t1) */ count(TS_ID)
  2   FROM WRI$_SEGADV_OBJLIST t1 
  3    WHERE t1.TS_ID IS NULL;

COUNT(TS_ID)
------------
           0
--表比index多数据
SQL&gt; SELECT /*+ FULL(t1) */ TS_ID
  2  FROM WRI$_SEGADV_OBJLIST t1
  3  MINUS
  4  SELECT /*+ index(t WRI$_SEGADV_OBJLIST_IDX_TS) */ TS_ID
  5  FROM WRI$_SEGADV_OBJLIST t where  ts_id is not null;

no rows selected


--index中数据条数
SQL&gt; SELECT /*+ index(t WRI$_SEGADV_OBJLIST_IDX_TS) */ count(TS_ID)
  2  FROM WRI$_SEGADV_OBJLIST t
  3  where ts_id is not null;

COUNT(TS_ID)
------------
         901

--表中数据条数
SQL&gt; SELECT /*+ FULL(t1) */ count(TS_ID)
  2  FROM WRI$_SEGADV_OBJLIST t1 ;

COUNT(TS_ID)
------------
         937

--index中不同值数量
SQL&gt; SELECT /*+ index(t WRI$_SEGADV_OBJLIST_IDX_TS) */ 
  2  COUNT(DISTINCT TS_ID)
  3  FROM WRI$_SEGADV_OBJLIST t WHERE TS_ID IS NOT NULL;

COUNT(DISTINCTTS_ID)
--------------------
                   5
--表中不同值数量
SQL&gt; SELECT /*+ index(t WRI$_SEGADV_OBJLIST_IDX_TS) */ TS_ID
  2  FROM WRI$_SEGADV_OBJLIST t WHERE ts_id IS NOT NULL
  3  MINUS
  4  SELECT /*+ FULL(t1) */ TS_ID
  5  FROM WRI$_SEGADV_OBJLIST t1 ;

     TS_ID
----------
         4
--对比可以知道index中的唯一值比表中，这个也就解释了，为什么表中总条数多，
--但是他们两做减法的时候，记录为空

--索引表比表多数据
SQL&gt; SELECT /*+ index(t WRI$_SEGADV_OBJLIST_IDX_TS) */ TS_ID
  2  FROM WRI$_SEGADV_OBJLIST t WHERE ts_id IS NOT NULL
  3  MINUS
  4  SELECT /*+ FULL(t1) */ TS_ID
  5  FROM WRI$_SEGADV_OBJLIST t1 ;

     TS_ID
----------
         4
</pre>
<p>上面的检测证明:1.表中有索引中无的数据,2.索引中有表中不存在数据<br />
<br />
<strong>6.解决问题</strong></p>
<pre class="brush: sql; title: ; notranslate">
SQL&gt; alter index WRI$_SEGADV_OBJLIST_IDX_TS rebuild online;

Index altered.

--测试index中总条数
SQL&gt; SELECT /*+ index(t WRI$_SEGADV_OBJLIST_IDX_TS) */ count(TS_ID)
  2   FROM WRI$_SEGADV_OBJLIST t
  3    where  ts_id is not null;

COUNT(TS_ID)
------------
         937

--无多余index项(以前唯一值为4的记录已经不存在)
SQL&gt; SELECT /*+ index(t WRI$_SEGADV_OBJLIST_IDX_TS) */ TS_ID
  2      FROM WRI$_SEGADV_OBJLIST t WHERE ts_id IS NOT NULL
  3    MINUS
  4      SELECT /*+ FULL(t1) */ TS_ID
  5      FROM WRI$_SEGADV_OBJLIST t1 ;

no rows selected

--通过上述测试，证明表和index不一致问题解决
</pre>
<div id="crp_related"><ul><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/09/%e5%81%87%e5%9d%8f%e5%9d%97%e5%bc%95%e8%b5%b7%e6%81%90%e6%85%8c.html" rel="bookmark" class="crp_title">假坏块引起恐慌</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2026/07/dbv-controlfile.html" rel="bookmark" class="crp_title">需要注意:dbv 检测controlfile可能不准</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/12/some-indexes-or-index-subpartitions-of-table-vas-tab_pub_calllog-have-been-marked-unusable.html" rel="bookmark" class="crp_title">Some indexes or index [sub]partitions of table VAS.TAB_PUB_CALLLOG have been marked unusable</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/08/ora-01578%e5%9d%8f%e5%9d%97%e8%a7%a3%e5%86%b31.html" rel="bookmark" class="crp_title">ORA-01578坏块解决(1)</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2013/02/rman%e5%88%b6%e9%80%a0%e5%9d%8f%e5%9d%97bbed%e4%bf%ae%e5%a4%8d%e5%9d%8f%e5%9d%97.html" rel="bookmark" class="crp_title">rman制造坏块,bbed修复坏块</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2025/06/ora-00756-ora-10567-0-lost-recovery.html" rel="bookmark" class="crp_title">ORA-00756 ORA-10567故障数据0丢失恢复</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2011/08/ora-01578%e5%9d%8f%e5%9d%97%e8%a7%a3%e5%86%b32.html" rel="bookmark" class="crp_title">ORA-01578坏块解决(2)</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2012/03/%e8%ae%b0%e5%bd%95%e4%b8%80%e6%ac%a1ora-60013013%e5%a4%84%e7%90%86%e8%bf%87%e7%a8%8b.html" rel="bookmark" class="crp_title">记录一次ORA-600[13013]处理过程</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2012/04/%e8%ae%b0%e5%bd%95%e4%b8%80%e6%ac%a1ora-00600kdsgrp1%e5%88%86%e6%9e%90.html" rel="bookmark" class="crp_title">记录一次ORA-00600[kdsgrp1]分析</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2016/08/mon_mods_ora-600-13013.html" rel="bookmark" class="crp_title">MON_MODS$表ORA-600 13013报错处理</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2012/06/undo%e5%9d%8f%e5%9d%97%e5%af%bc%e8%87%b4%e6%95%b0%e6%8d%ae%e5%ba%93%e5%bc%82%e5%b8%b8%e7%bb%88%e6%ad%a2%e6%a1%88%e4%be%8b.html" rel="bookmark" class="crp_title">undo坏块导致数据库异常终止案例</a></li><li style="list-style-type:decimal;font-size:11px;" ><a href="https://www.xifenfei.com/2022/04/segment-header-ora-1578.html" rel="bookmark" class="crp_title">segment header异常对象删除处理</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>https://www.xifenfei.com/2011/12/%e8%ae%b0%e5%bd%95%e4%b8%80%e6%ac%a1oer-8102-2%e5%a4%84%e7%90%86.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
