7 x 24 在线支持!
Oracle エクスポートおよびインポート時に発生した ORA-01555/ORA-01628/ORA-30036 のトラブルシューティング
ORACLEデータベース によくあるエラ の解決策
プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com
適用範囲:
Oracle Database - Enterprise Edition - バージョン 9.2.0.1 から 11.2.0.4 [リリース 9.2 から 11.2]
この文書の内容はすべてのプラットフォームに適用されます。
本文書利用上のご注意
本文書は英語の文書 Document 1579437.1 (最終メジャー更新日: 2014年11月11日) の日本語翻訳版です。
英語の文書のメジャー更新に応じて本文書を随時更新いたします。
目的
このドキュメントの目的はエクスポートおよびインポート中に発生した ORA-01555/ORA-01628/ORA-30036 のトラブルシューティング用チェックリストを記載します。
この文書は当該事象に関する既知事例についても説明します。
トラブルシューティングの手順
エクスポートおよびインポート中に報告された UNDO エラーを診断する前に、事前にUNDO 表領域の使用率とUNDO保存期間を確認することが重要です。
SQL> SELECT DISTINCT STATUS,TABLESPACE_NAME, SUM(BYTES), COUNT(*) FROM DBA_UNDO_EXTENTS GROUP BY STATUS, TABLESPACE_NAME;
SQL> select max(maxquerylen),max(tuned_undoretention) from v$undostat;
SQL> select max(maxquerylen),max(tuned_undoretention) from DBA_HIST_UNDOSTAT;
SQL> select sum(bytes) from dba_free_space where tablespace_name='&UNDOTBS';
実行する前に、ACTIVE/UNEXPIRED エクステントの過剰な割り当てと tuned_undoretention の高い計算値を調査/解決します。
1) エクスポート時のORA-01555
アラート・ログとエクスポート・ログから、1555 のエラーメッセージを確認します。1555 エラーは2種類あります:
a. LOB セグメントの UNDO データへアクセス中に発生した ORA-1555:
ORA-01555: snapshot too old: rollback segment number with name "" too small
セグメント名が null "" になっていることに注意してください。
又は/且つ
ORA-22924: snapshot too old
b. UNDO 表領域のUNDOデータへアクセス中に発生したORA-1555:
ORA-01555: snapshot too old: rollback segment number 107 with name "_SYSSMU107_1253191395$" too small
セグメント名「_SYSSMU107_1253191395$」が存在し、UNDO表領域内のUNDOデータを示していることに注意してください。
a. LOBセグメントのUNDOデータにアクセス中の ORA-1555:
LOBセグメントでのORA-01555は次の何れかの原因で発生します:
1.LOB セグメントの破損:
LOB テーブルの破損を確認するには、次のドキュメントを参照してください:
Export Receives The Errors ORA-1555 ORA-22924 ORA-1578 ORA-22922 (Doc ID 787004.1)
Export Fails With ORA-2354 ORA-1555 ORA-22924 and How To Confirm LOB Segment Corruption Using Export Utility?(Doc ID 833635.1)
ORA-01555 And Other Errors while Exporting Table With LOBs, How To Detect Lob Corruption.(Doc ID 452341.1)
2. LOBの破損が見つからない場合、Retention/Pctversion 値に問題があります:
Retention/Pctversionの値を増やす必要があります。下記のドキュメントを参照してください:
LOBs and ORA-01555 troubleshooting (Doc ID 846079.1)
b. UNDO 表領域のUNDOデータへアクセス中に発生したORA-1555:
これは通常の1555エラーとして対処すべきです。エクスポート前にUNDO保存期間を増やして、エクスポートが正常に終了後、元の値に戻す必要があります。
alter system set undo_retention=<NEW_VALUE>;
>> 正常に完了するまでエクスポートを実行します。
alter system set undo_retention=<OLD_VALUE>;
注意:LOB列を持つテーブルをエクスポートする場合に、UNDO表領域のUNDOデータへのアクセスでORA-1555が報告されることはあります。この場合、前述のとおり、1555エラー・メッセージに記載されているUNDOセグメント名を確認し、適切に診断する必要があります。
2) インポート中のORA-01628/ORA-30036
インポート中に1628または30036エラーが発生することがよくあります。ここでの重要なポイントは、インポート・ユーティリティによって生成された UNDO の量になります。
通常、両方エラーを解決するためには、可能な限り、インポート時に割り当てられる UNDO 領域を最小化し、十分な UNDO 領域を割り当てる必要があります。
例えば、
- インポート対象から索引と統計情報を除き、インポート完了後にそれらを手動で作成/収集します。
- APPEND または TRUNCATE の代わりに TABLE_EXISTS_ACTION=REPLACE を使用します。
- DATA_ONLY の代わりに CONTENT=ALL を使用します。
- _rollback_segment_count=999999 を設定することで、インポート中にすべての使用可能なUNDOセグメントがオンラインであることを確保してください。
SQL> select status,count(*),tablespace_name from dba_rollback_segs group by status,tablespace_name;
既知事例:
Bug 17306264 - ORA-1628: MAX # EXTENTS (32765) REACHED FOR ROLLBACK SEGMENT - OFTEN ENCOUNTERE
Bug 17306264 または Patch 17306264 については、11g の Readme に記載のとおり、前提条件として下記のイベントを設定します。
event="64000 trace name context forever, level 25"
パッチのREADMEに記載の通り、event 64000 を level 25に設定することを推奨します。
How To Check the Usage of Active Undo Segments in AUM (Doc ID 1337335.1)
Data Pump (or other Oracle process) Reports ORA-01628: Max # Extents (32765) For Rollback Segment _SYSSMUx$ (Doc ID 1434643.1)
ORA-1628 Max # Extents Reached Using AUM On Locally Managed Tablespace (Doc ID 761176.1)
Ora-01628: Max # Extents (32765) Reached For Rollback Segment.(Doc ID 837853.1)
Troubleshooting ORA-30036 - Unable To Extend Undo Tablespace (Doc ID 460481.1)
Options to decrease use Of UNDO during import (Doc ID 952892.1)
Error ORA-30036 DataPump Import (IMPDP) Exhausts Undo Tablespace (Doc ID 727894.1)
Run Out Of Space On Undo Tablespace Using Import/Export DataPump (Doc ID 735366.1)