ORA-1499 表/索引の行数ミスマッチ
(Doc ID 2488432.1)
Last updated on DECEMBER 25, 2018
適用範囲:
Oracle Database Cloud Exadata Service - バージョン N/A 以降Oracle Database Backup Service - バージョン N/A 以降
Oracle Database Cloud Service - バージョン N/A 以降
Oracle Database - Enterprise Edition - バージョン 8.1.7.0 から 12.2.0.1 [リリース 8.1.7 から 12.2]
Oracle Database Cloud Schema Service - バージョン N/A 以降
この文書の内容はすべてのプラットフォームに適用されます。
本文書は英語の文書 <Document 563070.1> (最終メジャー更新日: 2018年10月26日) の日本語翻訳版です。
英語の文書のメジャー更新に応じて本文書を随時更新いたします。
現象
"validate structure cascade" と共に実行する Analyze table が ORA-1499 で失敗し、トレースファイルには "Table/Index row count mismatch" というメッセージが含まれます。例:
analyze table test validate structure cascade
*
ERROR at line 1:
ORA-01499: table/index cross reference failure - see trace file
関連のトレースファイルには、以下が含まれます:
table 6559 : index 10000, 0
Index root = tsn: 6 rdba: 0x01400091
つまり、表スキャンは 6559 行を返し、索引スキャンは 10000 行を返しました。
"Index root" は、索引のセグメントヘッダー情報です。
rdba: 0x01400091 は、索引セグメントヘッダーの相対データブロックアドレスです。Rfile#=5 (相対ファイル番号) Block#=145 であるのは 10進数の 20971665 です。
accept tsn
prompt Enter rdba (in hex, no '0x' prefix):
accept hex_rdba
set verify off
select file#,
dbms_utility.data_block_address_block(
to_number('&hex_rdba','XXXXXXXXX')) block#
from sys.v$datafile
where ts# = &tsn
and rfile# = dbms_utility.data_block_address_file(
to_number('&hex_rdba','XXXXXXXXX'));
FILE# BLOCK#
---------- ----------
7 145
dba_segments から次のクエリを実行すると、関連付けられている索引が識別されます (header_fileには絶対 file# が必要です)。
SQL> select owner, segment_name, segment_type
2 from dba_segments
3 where header_file = 7
4 and header_block = 145;
OWNER SEGMENT_NAME SEGMENT_TYPE
-------- --------------- ------------------
SCOTT I_TEST INDEX
この論理的な不整合は、10g 以降の ORA-600 [kdsgrp1] またはそれより前のバージョンでは ORA-600 [12700] として現れることがあります。
変更点
原因
To view full details, sign in with your My Oracle Support account. |
|
Don't have a My Oracle Support account? Click to get started! |
本書の内容
現象 |
変更点 |
原因 |
解決策 |
参照情報 |