プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:[email protected]
ORA-8103は我々Database Consultant がよく見られるトラブルである。
ORA-8103の 原因は主に二つがある:
- データブロックのタイプが無効的なものあるいはブロックタイプがOracleが予想したものと違っている。例えばOracleがデータタイプをdata(type=6)と見なしているが実際にはそうじゃない。
- データブロックのdata_object_id とデータディクショナリーのdata_object_idがマッチしていない。
ORA-8103トラブルに対して、以下の処置を勧めている:
ORA-08103トラブルの診断は8103エラのERROR STACK TRACEを作成して、TRACEで8103を引き起こしたOBJとOBJDを記録する。これはcorruptionがある相手を定義できる。
トラブルはフォアグラウンドプロセスがORA-08103エラになった場合に、バックグラウンドでTRACEファイルを作成しない。それで、人工的に8103を設定して、ERRORSTACKのEVENTSを引き起こす必要がある:
ALTER SYSTEM SET EVENTS ‘8103 TRACE NAME ERRORSTACK LEVEL 3’;
解決策は以下の通り:
1. OBJDとDBAで具体的テーブル名とブロック名を探し出す
2. できればそのテーブルをanalyze .. validate structureしてください
3. できればそのテーブルを含むtablespaceに対して dbms_space_admin.ASSM_TABLESPACE_VERIFYしてください
4. できればそのテーブルを関するパーティションに移して、トラブルを避けてみてください
5. できれば。そのテーブルあるいはパーティションをMSSMテーブルスペースに移してトラブルを避けてください
execute dbms_space_admin.tablespace_verify(‘&tablespace_name’)
oradebug setmypid
oradebug tracefile_name
execute dbms_space_admin.assm_tablespace_verify(‘&tablespace_name’,dbms_space_admin.TS_VERIFY_BITMAPS)
oradebug setmypid
oradebug tracefile_name
異なる analyze validate structureした結果に対して、初期的な結論を下せる:
flush buffer cacheを実行したあと再びanalyze validate structureするときにORA-8103エラが現れないとは:
これは正常の現象かもしれない。前に言ったORA-8103はオブジェクトがDROP/TRUNCATEされて、SELECTがORA-8103になった。一般的にCall Stackはプロセスがプロセスがそのセグメントヘッダをアクセスできる。より多くの情報はBUG 7441661に参考できる。
これもbuffer cacheだけに起こるかもしれない。flush buffer_cacheで解決できるなら、大体こういう場合に限っている。それにいつもBuffer Cacheが管理するBUGである 。
flush buffer cacheを実行したら、再びanalyze validate structureするときにORA-8103なったとは:
該当するデータブロックをダンプするときに、そのブロックがロジックに一致している。(bed/dbvツールで検証できる)。Lost Writeの可能性もあって、ほかのオブジェクトに再びフォーマットされない。
ここでLost Writeを判断する大事な手段とはブロックにrecover/blockrecoverする。もしリカバリできるなら、ORA-8103エラがLost Writeで引き起こした。そうでなければ99%はBUGによるものである。
よくある状況はほかのツールでデータベースを起動したままにデータベースをコピしてたが、ツールのBUGによって、古いバーションのblockを新たなデータベースにコピするかもしれない。
もう一つの可能は extentレベルが一致していない。同じデータブロックが同時に二つのデータセグメントに属していて、あとのセグメントに上書きされるかもしれない。このようなロジックエラがテーブルスペースレベルのエクステント情報に起こるから、リカバリするだけで修復できない。dba_extents/dba_segments/dba_free_spaceなどのインメージを検証することによって、これらのブロックが複数のオブジェクトに属しているかを確認できる。あるいはあるデータブロックが同時にdba_extents/dba_segments/dba_free_space 三つのインメージに現れたが、 used extentがdba_free_spaceに現れるはずがないから。それにfree extentもdba_extentsに現れるわけがない。Recyclebinのオブジェクトの影響を除いて、大多数の場合に、こういうロジックが一致していない状況はextent overlap と呼ばれている。これは一般的にOracle Space Managementスペース管理のBUG。
ORA-8103エラに対する診断プロセスで、トラブルのOBJDを探し出すことはとっても大切である。けど、ORA-8103エラとBUGとつながるとはとっても難しい。
これはredo dumpに関わっている。一部のBUGで、変数が古いから、作成したobjd構造が削除されていない。そしてブロックのobjdが間違えたと気づいた。それはORA-8103あるいはORA-1410かもしれない。これは後のロジックエラを引き起こしたからTRACE/REDO LOG DUMPで原始なトラブルの場合を見つかりにくくなった。これもロジックエラの分析と処置は物理的なエラより難しいと言った理由である。
Macleanの経験は大量なOracle DBを持っている環境で、一年に何度ロジック/物理ベッドブロックが現れるのはごく普通なことである。物理的な場合に対して、バックアップすればいい。ロジックベッドブロックの場合にやることがあんまりない。
ORA-8103のBug Noteを読んで、 LOB、APPEND INSERT、PARALLEL INSERT、exchange partition 、Split partition、advanced compression、HCC 混ぜた列凍結をするのはORA-8103になるかもしれない。けど実際には以上の操作を諦めるわけにはいかない。
今までORA-8103に関するBUGリスト:
NB | Bug | Fixed | Description |
13910420 | 11.2.0.3.BP09, 12.1.0.0 | ORA-8103 during insert / update of basicfile LOB in assm segment using space search cache | |
13725395 | 11.2.0.3.BP07, 11.2.0.4, 12.1.0.0 | ORA-600 [kdzhFindHeadPiece: unnewed > 1] from load into HCC table | |
13700577 | 11.2.0.3.BP07, 11.2.0.4, 12.1.0.0 | PQ slave dies with ORA-600 [kdblddr_2] | |
12747437 | 12.1.0.0 | ORA-600 [ktspfmdb:objdchk_kcbnew_3] after purging single consumer queue table | |
12582839 | 11.2.0.3, 12.1.0.0 | ORA-8103/ORA-600 [3020] on RMAN recovered locally managed tablespace | |
12321309 | 12.1.0.0 | 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.0 | A Parallel query fails with ORA-8103 on an Active Dataguard Enviroment. | |
11850492 | 11.2.0.3, 12.1.0.0 | ORA-8103 ORA-600 ORA-3113 on temporary tables using INDEX FAST FULL SCAN and DIRECT read | |
10385812 | 11.2.0.3, 12.1.0.0 | 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.0 | 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.0 | ORA-1578 / ORA-600 [3020] Corruption. Misplaced Blocks and Lost Write in ASM |
10136415 | 11.2.0.3, 12.1.0.0 | ORA-8103 on Partitioned IOT after partition maintenance | |
9965085 | 11.2.0.3, 12.1.0.0 | ORA-1578 / ORA-8103 Temporary table block corruption / space wastage from PDML | |
9659614 | 10.2.0.5.3, 11.2.0.2, 11.2.0.3.5, 11.2.0.3.BP05, 12.1.0.0 | Large trace file for ORA-8103 | |
9651350 | 11.2.0.2.2, 11.2.0.2.BP05, 11.2.0.3, 12.1.0.0 | Large redo dump and ORA-308 might be raised due to ORA-8103 | |
9275027 | 11.2.0.2, 12.1.0.0 | 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.0 | 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.0 | IMP-17 / ORA-8103 transporting a large dictionary managed tablespace | |
8740993 | 11.1.0.7.8, 11.2.0.2, 12.1.0.0 | 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.0 | Corruption from cross platform transport of tablespace with securefile objects | |
8716064 | 11.2.0.2, 12.1.0.0 | Analyze Table Validate Structure fails on ADG standby with several errors | |
+ | 8597106 | 11.2.0.1.BP06, 11.2.0.2, 12.1.0.0 | Lost Write in ASM when normal redundancy is used |
8428523 | 11.2.0.2, 12.1.0.0 | Alter Table Rename causes wrong results/ora-8103/hangs on ADG Standby. | |
7710827 | 11.2.0.2, 12.1.0.0 | 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.0 | Larger trace than needed for ORA-8103 under kteinicnt1 | |
P | 12330911 | 12.1 | EXADATA LSI firmware for lost writes |
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 | 9.2.0.4, 10.1.0.2 | 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 |
Leave a Reply