Email: service@parnassusdata.com 7 x 24 online support!

    You are here

    • You are here:
    • Home > Blogs > PDSERVICE's blog > Oracle OERR: ORA-8103 "指定したオブジェクトは存在しません" マスターノート/トラブル・シューティング、診断と解決策

Oracle OERR: ORA-8103 "指定したオブジェクトは存在しません" マスターノート/トラブル・シューティング、診断と解決策

Oracle OERR: ORA-8103 "指定したオブジェクトは存在しません" マスターノート/トラブル・シューティング、診断と解決策

 

ORACLEデータベース によくあるエラ の解決策

プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com

 

適用範囲:

Oracle Database - Enterprise Edition - バージョン 8.1.5.0 から 11.2.0.3 [リリース 8.1.5 から 11.2]

この文書の内容はすべてのプラットフォームに適用されます。


本文書利用上のご注意

  本文書は英語で提供されている Document 8103.1 (最終更新日: 2014年10月08日) の翻訳です。

  ご利用に際しては、英語の原文を併せてご参照頂くことをお勧めいたします。

 

目的

本文書は、ORA-8103エラーに関する可能なアクション情報を提供しています。

対象

このドキュメントは ORA-8103 を初期診断する一般の読者を対象としています。

詳細

 

ORA-08103
現在、指定したオブジェクトは存在しません
-------------------------------------------------------------------------------
原因: オブジェクトは、操作が開始された後、他のユーザーによって削除されています。またはオブジェクトの削除中に、以前の不完全リカバリによってデータベースがPoint-in-Timeにリストアされました。
処置: 不完全リカバリが原因の場合は、オブジェクト・ファイルを削除してください。

 

概要

ORA-8103 は SQL 文で参照されているオブジェクトにブロックが現在存在していない場合に報告されます。

原因

ORA-8103 は無効なブロックタイプが起因して発生します。ブロック・ヘッダーに無効なブロック・タイプまたは予想外のブロック・タイプがある場合です。例えば、デー タ・ブロック(Type=6)が期待されていたのに、実際にはデータ・ブロックではない(Type!=6).場合です。

ORA-8103 は影響を受ける SQL 文が実行されている間に関連するオブジェクトの変更され、予想外の data_object_id になることによっても発生します。

これらの2つの原因は、予想外の事象や他の問題が起因している可能性があります。詳細は以下のとおりです。:

期待された動作

SQL 文が実行中に SQL 文の中の表が drop/truncate されています。索引の場合では、索引の rebuild によって引き起こされている可能性があります。他には、操作が開始されてから他のセッションによってオブジェクトが削除されています。

問合せ実行中に影響を受けるオブジェクトの dba_objects.data_object_id が変化しているかどうかを確認してください。

以下のような DDL 文によって data_object_id が変更されます。:

truncate table
alter index .. rebuild
alter table .. move
etc.


truncate の場合、DBA_TAB_MODIFICATIONS の TRUNCATED 列を確認してください。これは最後の analyze から、表が truncate されたかどうかを示すことに注意してください。マニュアルを参照してください。

11g では、パラメータ enable_ddl_logging を TRUE に設定することで、DDL 文を alert.log に出力し、このエラーの原因になる可能性がある DDL が実行されているかを確認することが可能です。

 

ブロック破損

ハードウェア、IO サブシステム、OS がブロック破損の原因になることがあります。これによりブロック・ヘッダーのブロック・タイプが上書きされた場合、ORA-8103 を引き起こします。 

 

ブロックは正常でも、"OLD/STALE" ブロックになっています。破損のこれらの種類は、LOST IO/LOST WRITE またはデータベースがオープンしている間にファイル・システムを移行する 外部の Oracle 以外のツールの BUG が原因である可能性があります。その場合、影響を受けるオブジェクトの data_object_id が変更され、実際のブロックはそれを反映していない可能性があります。

 

注意:ブロックがバッファ・キャッシュ (SGA)上で一時的に破損する場合もあります。

重複エクステント

重複エクステントは、複数のセグメントで同じブロックを不正に使用していること意味しています。これは、LMT Bitmap エクステントやデータ・ディクショナリが不正な状態になっています。

下記の手順にて重複エクステントを特定します:

LMT (ローカル管理表領域) の場合:

sqlplus / as sysdba

execute dbms_space_admin.tablespace_verify('&tablespace_name')
oradebug setmypid
oradebug tracefile_name

In 10gR2 and forward, for locally managed tablespaces using ASSM (DBA_TABLESPACES.SEGMENT_SPACE_MANAGEMENT=AUTO) run:

execute dbms_space_admin.assm_tablespace_verify('&tablespace_name',dbms_space_admin.TS_VERIFY_BITMAPS)
oradebug setmypid
oradebug tracefile_name

  • 不正が検出された場合に、DBMS_SPACE_ADMIN 実行中のセッションの画面には不正が検知されたかどうかは表示されないことに注意してください。DBMS_SPACE_ADMIN はトレース・ファイルを生成します。このため、"oradebug tracefile_name" がトレース・ファイルを提供しているかどうか確認します。
  • ORA-8103 が TABLESPACE_VERIFY によって生成される場合には、セグメント・ヘッダに関連するブロックが影響していることを意味します。以下のセクションで説明されているように、影響を受 けるオブジェクトを識別し、それを削除します。セグメントを一時的に変換するには dbms_space_admin.segment_corrupt を使用し、完全にセグメントを削除するには dbms_space_admin.segment_drop を使用します。

ディクショナリ管理表領域である場合、hcheck スクリプトを実行します:

Note 136697.1 (これは、fet$/uet$ で重複エクステントをチェックします。).

ASM 重複エクステント

重複 ASM エクステントは2つの異なるファイルと2つの異なるエクステントが同じ ASM ディスクの同じアロケーション・ユニット (AU) を使用しています。

ASM インスタンスで下記の SQL 文を実行します。

SQL> alter diskgroup <name> check all norepair;

ASM の alert.log に下記のメッセージが出力されます。

ERROR: file +data1.3551.721223631: F3551 PX3819 => D254 A78 => F3564 PX337: fnum mismatch

ASM ファイル番号 3551 の物理エクステント 3819 が Disk 254 のアロケーション・ユニット 78 を使用して、同時に ASM ファイル番号 3564 が同じアロケーション・ユニットを指す物理エクステントになっています。

Oracle 不具合

Oracle の不具合である可能性もあります。  下記の "既知の問題" を参照してください。

 

対象オブジェクトの特定

時々 SQL 文で複数の表で ORA-8103 が発生する場合は索引が影響している可能性があります。次の手順に従い、影響を受けているオブジェクトを特定します。:

エラーが発生した SQL 文を取得します。

SQL*Plus で対象 SQL 文を実行し現象を再現します。

ANALYZE により対象オブジェクトを特定します。

エラーを起こしたのは表または索引か?:

表の場合:

analyze table <table_name> validate structure;

またはフル・テーブル・スキャンでエラーが再現するか確認します。

索引の場合:

analyze index <index_name> validate structure;

イベント 10236 でオブジェクトの特定

9.2.0.8 以上の場合、ORA-8103 のコール・スタック・トレースに ktrget 関数があれば、イベント 10236 を設定するとエラーを引き起こしたブロック番号が出力されます。

alter session set events '8103 trace name errorstack level 3';
alter session set events '10236 trace name context forever, level 1';
alter session set tracefile_identifier='ORA8103';

ORA-8103 が発生した問合せを実行し、<sid>_ora_<pid>_ORA8103.trc 形式のトレースファイルを確認します。、

トレース・ファイルをオープンしコールスタックに ktrget 関数があれば、下記のように出力されます:

KTRVAC: path typ=22, rdba=32810e06

rdba=0x32810e06 で、エラーが発生していることを意味しています。10進に変換して、relative_fno と block# を取得します。

select dbms_utility.data_block_address_file(847318534) relative_fno
,dbms_utility.data_block_address_block(847318534) block#
from dual;

RELATIVE_FNO BLOCK#
------------ ----------
         202 69126

そして<>の"破損オブジェクトの特定"セクションを使用し、対象オブジェクトを特定します。

イベント 10200 で対象オブジェクトの特定

イベント 10200 は、エラーが発生した時の最後にアクセスされたブロックを特定できます。イベント trace_buffer_on を利用して、より小さいトレースファイルを作成できます。 Errorstack とイベント 10236 を加えると、より詳細なトレース ファイルを取得できます。

alter session set max_dump_file_size=unlimited;
alter session set db_file_multiblock_read_count=1;
alter session set events 'immediate trace name trace_buffer_on level 1048576';
alter session set events '10200 trace name context forever, level 1';
alter session set events '8103 trace name errorstack level 3';
alter session set events '10236 trace name context forever, level 1';
alter session set tracefile_identifier='ORA8103';

ORA-8103 が発生する問合せを実行します。

alter session set events 'immediate trace name trace_buffer_off';
exit

<sid>_ora_<pid>_ORA8103.trc 形式のトレースを確認します。

トレースファイルには下記のような個所が出力されています。

"Consistent read started for block <XXX>: <YYY>"

XXX は表領域番号で、YYY はブロックの rdba です。通常、これが影響を受けたブロックです。

トレースファイルの出力例:

*** 2004-01-28 09:40:16.000
*** SESSION ID:(9.5) 2004-01-28 09:40:16.000
Consistent read started for block 0 : 00405302
env: (scn: 0x0000.001a9434 xid: 0x0000.000.00000000 uba: 0x00000000.0000.00 statement num=0 parent xid: xid: 0x0000.000.00000000 scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
CR exa ret 9 on: 01FEE950 scn: 0xffff.ffffffff xid: 0x0000.000.00000000 uba: 0x00000000.0000.00 scn: 0xffff.ffffffff sfl: 0
Consistent read finished for block 0 : 405302
Consistent read finished for block 0 : 405302
Consistent read started for block 0 : 00405303

rdba=0x00405303 (File=1,Block=21251) を読み込んでいる時にエラーが発生します。
"Consistent read finished for block 0 : 00405303"

<>の "破損オブジェクトの特定" セクションを使用し、対象オブジェクトを特定します。

ブロック破損によるオブジェクトの特定

DBVerify や RMAN を使用して、オブジェクトが配置されたデータファイルの破損ブロックを特定します。

一般的な破損は、ブロックが 0 になる(ブロックタイプも 0) になっています。DBVerify は下記のように出力します:

Completely zero block found during dbv

Note 836658.1 と Note 819533.1の "DBVerify - ブロック破損のデータファイルの特定" や "RMAN -ブロック破損のデータファイルの特定" セクションを利用して対象オブジェクトを特定します。

重複エクステントによるオブジェクトの特定

ローカル管理表領域の重複エクステントを特定したら、Note 887263.1を利用して、関連するセグメントを特定します。

 

 

 

解決策

ブロック破損の復旧

ANALYZE により ORA-8103 が繰り返し出力されて、期待される動作ではないと判断された場合、ブロック破損の可能性があることを意味します。考えられる解決策:

バッファ・キャッシュをフラッシュする

SGA (バッファ・キャッシュ) 上のみで破損している可能性がある場合。

alter session set events 'immediate trace name flush_cache level 1';

RACの場合、その他インスタンスでもバッファ・キャッシュをフラッシュする必要があります。

エラーがまだ発生する場合は、次の手順を実行します。

共有プールをフラッシュする

いくつかのケースでは問題は不正なカーソルの問題により発生する可能性があります。この場合は、共有プールのフラッシュが回避策になります。

alter system flush shared_pool;

エラーがまだ発生する場合は、ディスク上での問題の可能性があります。次の手順を実行します。

索引破損

索引を削除し、再作成します。

表破損

1. エラーがブロック破損(ブロックが0になっている)に起因している場合は、メディアリカバリを検討します。RMAN BLOCKRECOVER により、0 が設定されたブロックを修復できます。

2.対象ブロックを TRUNCATE や DROPし、再度エクスポートダンプから再ロードします。エラーが PARTITION のdrop/truncate で発生する場合、EXCHANGE を検討します。

alter table <owner>.<table_name> exchange partition <partition_name> with table <owner>.<new_table>;

注意:<new_table> と <table_name> と同様に定義する必要があります。

3.バックアップからの recover が利用できない場合は、ORA-8103 が発生したブロックをスキップし表のデータを保存できます。

オプション 1 - バックアップがない

表に索引がある場合は、Note  1527738.1 の plsql スクリプトを利用します。

オプション 2 - バックアップがない

表に索引がない場合は、Note 422547.1 で提供されるスクリプトを利用します。

別の解決策は、dbms_repair を使用して破損ブロックをスキップできるかどうか、Note 61685.1 で説明されている手順で rowid スキャンを使用して破損ブロックをスキップできるかどうか確認することです。

一時セグメントの破損

一時セグメントで ORA-8103 を発生していることが特定できた場合は、dbms_space_admin にて一時セグメントを削除し、表領域 bitmap を再作成します。

sqlplus / as sysdba

execute dbms_space_admin.segment_corrupt('&tablespace_name',&relative_fno,&block_number)
execute dbms_space_admin.segment_drop_corrupt('&tablespace_name',&relative_fno,&block_number)
execute dbms_space_admin.tablespace_rebuild_bitmaps('&tablespace_name')

 

重複エクステントの修正

エラーがローカル管理表領域(LMT)の重複エクステントが起因して発生する場合:

  • 影響する対象オブジェクトを drop します。一時セグメントが起因して ORA-8103 が発生していることが特定できる場合は、dbms_space_admin にて一時セグメントを削除し、bitmap を再作成します。
  • dbms_space_admin.assm_tablespace_verify や dbms_space_admin.tablespace_verify を実行し、重複エクステントがないことを確認してください。
  • dbms_space_admin.tablespace_rebuild_bitmaps の実行により、不正な重複を修正します。   注意: ORA-8103が発生する現在の影響を受けるブロックは修正されません。

ディクショナリ管理表領域の場合は、データベースを再作成する必要があるか確認します。

Known Bugs

次のバージョンのボタンをクリックすることによってそのバージョンに影響を与える可能性のある問題にリストを制限することができます。:
              

 

 
NB 不具合 修正 説明
  18240704 12.1.0.2, 12.2.0.0 ORA-8103 during upgrade on ALTER TABLE kottd$ MOVE LOB
  17480600 12.1.0.2, 12.2.0.0 ORA-8103 / ORA-600 [ktsfbfmt:objdchk_kcbnew_3] after ALTER INDEX on AQ$_QT_I/T
  18284763 12.1.0.2, 12.2.0.0 ORA-600 [3020] on ASSM blocks in Standby Database after CONVERT TO PHYSICAL or ORA-8103 ORA-600 [4552] in non-standby after FLASHBACK
  15996357 12.2.0.0 ORA-8103 when revoking DBA privileges
  13785734 11.2.0.4, 12.1.0.0 ORA-8103 or similar from queries on partitioned table in standby - superseded
  16844448 11.2.0.3.9, 11.2.0.3.BP22, 11.2.0.4, 12.1.0.2 ORA-600 [3020] after flashback database in a RAC
  15969429 11.2.0.4, 12.1.0.1 Wrong Results / ORA-600 [qesmagettblseg1] / ORA-8103 at physical standby with fix for bug 13536971
  13910420 11.2.0.3.6, 11.2.0.3.BP09, 11.2.0.4, 12.1.0.1 ORA-8103 during insert / update of basicfile LOB in assm segment using space search cache
  13725395 11.2.0.3.8, 11.2.0.3.BP07, 11.2.0.4, 12.1.0.1 ORA-600 [kdzhFindHeadPiece: unnewed > 1] from load into HCC table
  13700577 11.2.0.3.BP07, 11.2.0.4, 12.1.0.1 PQ slave dies with ORA-600 [kdblddr_2]
  12747437 11.2.0.3.8, 11.2.0.3.BP21, 11.2.0.4, 12.1.0.1 ORA-600 [ktspfmdb:objdchk_kcbnew_3] after purging single consumer queue table
  12582839 11.2.0.3, 12.1.0.1 ORA-8103/ORA-600 [3020] on RMAN recovered locally managed tablespace
P 12330911 12.1.0.1 EXADATA LSI firmware for lost writes
  12321309 11.2.0.4, 12.1.0.1 ORA-600 / ORA-8103 UNUSABLE state of partitioned index is not carried across by TABLESPACE transport using DataPump
  11937253 11.2.0.2.6, 11.2.0.2.BP11, 11.2.0.3, 12.1.0.1 A Parallel query fails with ORA-8103 on an Active Dataguard Enviroment.
  11850492 11.2.0.3, 12.1.0.1 ORA-8103 ORA-600 ORA-3113 on temporary tables using INDEX FAST FULL SCAN and DIRECT read
  10385812 11.2.0.2.BP20, 11.2.0.3, 12.1.0.1 ORA-1410 or ORA-8103 by queries with DIRECT READ while concurrent DIRECT INSERT
  10329146 11.2.0.1.BP10, 11.2.0.2.2, 11.2.0.2.BP03, 11.2.0.2.GIBUNDLE02, 11.2.0.2.GIPSU02, 11.2.0.3, 12.1.0.1 Lost write in ASM with multiple DBWs and a disk is offlined and then onlined
+ 10209232 11.1.0.7.7, 11.2.0.1.BP08, 11.2.0.2.1, 11.2.0.2.BP02, 11.2.0.2.GIBUNDLE01, 11.2.0.3, 12.1.0.1 ORA-1578 / ORA-600 [3020] Corruption.Misplaced Blocks and Lost Write in ASM
  10136415 11.2.0.3, 12.1.0.1 ORA-8103 on Partitioned IOT after partition maintenance
  10026972 11.2.0.2.BP02, 11.2.0.3, 12.1.0.1 Intermittent Wrong results from Parallel Query with chained rows in RAC
  9965085 11.2.0.3, 12.1.0.1 ORA-1578 / ORA-8103 Temporary table block corruption / space wastage from PDML - superseded
  9659614 10.2.0.5.3, 11.2.0.3.5, 11.2.0.3.BP05, 11.2.0.4, 12.1.0.1 Large trace file for ORA-8103
  9651350 11.2.0.2.2, 11.2.0.2.BP05, 11.2.0.3, 12.1.0.1 Large redo dump and ORA-308 might be raised due to ORA-8103
  9275027 11.2.0.2, 12.1.0.1 ORA-600 [kcbnew_3] can occur after TRUNCATE / DROP
  9272086 11.1.0.7.4, 11.2.0.1.2, 11.2.0.1.BP06, 11.2.0.2, 12.1.0.1 ORA-8103 by a query on DBA_EXTENTS.Trace file with Block type: 0x44=NGLOB: Extent Map
  8754670 11.2.0.2, 12.1.0.1 IMP-17 / ORA-8103 transporting a large dictionary managed tablespace
  8740993 11.1.0.7.8, 11.2.0.2, 12.1.0.1 ORA-1410 / ORA-8103 on ADG STANDBY during table scan after DROP/TRUNCATE/SHRINK in PRIMARY
  8725282 11.2.0.1.BP08, 11.2.0.2, 12.1.0.1 Corruption from cross platform transport of tablespace with securefile objects
  8716064 11.2.0.2, 12.1.0.1 Analyze Table Validate Structure fails on ADG standby with several errors
+ 8597106 11.2.0.1.BP06, 11.2.0.2, 12.1.0.1 Lost Write in ASM when normal redundancy is used
  8428523 11.2.0.2, 12.1.0.1 Alter Table Rename causes wrong results/ora-8103/hangs on ADG Standby.
  7710827 11.2.0.2, 12.1.0.1 Index rebuild or Merge partition causes wrong results in concurrent reads instead of ORA-8103
  7519406 10.2.0.5.1, 11.2.0.1.2, 11.2.0.1.BP06, 11.2.0.2, 12.1.0.1 Larger trace than needed for ORA-8103 under kteinicnt1
  8876094 11.1.0.7.2, 11.2.0.2 ORA-8103 by DBA_UNDO_EXTENTS or DBMS_SPACE_ADMIN.TABLESPACE_VERIFY on Block type: 0x25
  9167831 11.2.0.2 ORA-8103 instead of ORA-1410
  7650993 11.1.0.7.1, 11.2.0.1 ORA-8103 in a select at ADG standby database from table stored in ASSM tablespace
  7432556 11.1.0.7.1, 11.2.0.1 ORA-8103 by Parallel Query on Partitioned Tables in BIGFILE Tablespaces
  7390324 11.2.0.1 ANALYZE signals OERI [kcbgtcr_12]/ORA-8103 on bitmap index
  7117200 11.2.0.1 ORA-8103 after TSPITR/PLUGIN tablespace from a restored Level 1 Backup
  8825048 11.1.0.7.3 ORA-308/ORA-27037 when dumping archived log for ORA-8103.Dump when event 10736 level 4 is set
  6337376 11.1.0.7 OERI:kcbgcur_3 / ORA-8103 after truncating a partition table with LOBs
  9711472 11.1.0.6 ORA-8103 on operations for a partitioned LOB if any different partition is dropped
  5637976 10.2.0.4, 11.1.0.6 ORA-8103/ORA-1410 from concurrent INSERT / export on ASSM tables
  5083393 10.2.0.4, 11.1.0.6 DBA_FREE_SPACE FILE_ID / REL_FNO may be wrong
  4592596 10.2.0.4, 11.1.0.6 Corruption (ORA-1410 / ORA-8103) from multi-table insert with direct load
  6864586 10.2.0.5 ORA-8103 on partitioned table with a LOB column during analyze table with concurrent add/drop partition.
  3569503 9.2.0.6, 10.2.0.4 PQ may signal a false ORA-8103 under load
  13618170   ORA-8103 for create index online when the fix of bug 10027403 is installed
  3966709 9.2.0.7, 10.1.0.4, 10.2.0.1 Range/object reuse prematurely (ORA-8103)
  3868753 9.2.0.7, 10.1.0.5, 10.2.0.1 Concurrent export / INSERT of ASSM segment can fail with ORA-1410 / ORA-8103
+ 5523799   Various OERI (eg kcbgtcr_12) using ASSM managed segments - superceded
P* 6047085   Linux x64-64: SGA corruption / crash following any ORA-7445
* 3785200 9.2.0.6, 10.1.0.2 Corruption possible in automatic space managed segments
  3083560 9.2.0.5, 10.1.0.2 ORA-1410 / ORA-8103 from direct path export if concurrent DML occurs
  2619867 9.2.0.3, 10.1.0.2 OERI:[KCBGTCR_12] / ORA-8103 / ORA-1410 SELECTing from bitmap managed segment
  2551000 10.1.0.2, 9.2.0.4 False ORA-1410 / ORA-8103 possible from ANALYZE COMPUTE/ESTIMATE STATISTICS
  2333731 9.2.0.2 ORA-8103 possible in PQ slave
  2105419 9.0.1.3, 9.2.0.1 ORA-8103 possible from PQ on bitmap managed segments with concurrent inserts
  1998455 8.1.7.3, 9.0.1.3, 9.2.0.1 OERI:KCBGTCR_4 possible from long running DDL if referenced object dropped/truncated
  1804299 9.0.1.1, 9.2.0.1 Rollback of Direct load can corrupt BITMAP managed segments / ORA-8103
  1698789 9.2.0.1 Wrong results, ORA-1410, ORA-8103, OERI:25012 on SELECT of UNSCOPED REF with ROWID
  1504967 9.2.0.1 ORA-8103 possible on READ ONLY standby after TRUNCATE on primary
  1400739 8.1.7.1, 9.0.1.0 Block corruption/OERI:2023 /ORA-8103 can occur if TRUNCATE is interrupted (Ctrl-C)
  1283521 8.1.7.0 ORA-8103 can occur on TRUNCATED cluster table
  589855 7.3.3.6, 7.3.4.1 ORA:1578 or ORA:8103 selecting invalid ROWID
P 1053863 8.0.5.2, 8.0.6.2 NCR: ORA-8103 / corrupt read possible using async IO
  • '*'この問題に対する ALERT が存在することを示します。
  • '+'特に注目すべき問題/BUGであることを示します。
  • 'P'プラットフォーム固有であることを示します。
  • "OERI:xxxx" は ORA-600 [xxxx]の省略形として使用することもできます。