Email: service@parnassusdata.com 7 x 24 online support!
[マスターノート] 内部エラー(ORA-600/ORA-7445/ORA-700)のトラブルシューティング・ガイド
ORACLEデータベース によくあるエラ の解決策
プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com
[概要]
本文書では Oracle Database Server における内部エラー (ORA-600/ORA-7445/
ORA-700) を検知した場合の一般的なトラブルシューティング方法について記載
します。
内部エラーの概要について説明し、公開事例の確認方法および、カスタマ・サ
ポートへのお問い合わせ時に提供いただきたい情報について解説します。
[対象リリース]
すべてのリリース
[対象プラットフォーム]
すべてのプラットフォーム
[詳細]
本文書は、以下の項目で構成されています。
1. 内部エラーの概要
2. 問題の把握と公開事例の確認方法
3. カスタマ・サポートへお問い合わせいただく場合に提供いただきたい情報
1. 内部エラーの概要
=========================================================================
ORA-600、ORA-700、ORA-7445 の 3つのエラーは内部的な問題を検知した場合に発
生するエラーです。それぞれのエラーについて以下に説明します。
1.1. ORA-600
ORA-600 は Oracle Database Server における一般的な内部エラーコードです。
通常、ORA-600 は複数の [] に括られた引数を伴って出力されます。
ORA-00600: 内部エラー・コード, 引数: [], [], [], [], [], [], [], []
引数のリストの最も左側に位置する最初の引数(以降、第一引数と記載します)
には数字か文字列が表示されます。この第一引数とデータベースのバージョン情
報は問題の原因調査と検知したエラーがシステムに与える影響を識別するための
重要な情報です。残りの引数は不整合を検知した時の内部変数値等の詳細な情報
を記録したものです。第一引数は ORA-600 の特徴を示したものであり、最初の
引数とバージョン情報を併用して既知の報告より問題の原因の絞込みを進めま
す。ただし、同一の第一引数を持つ ORA-600 がソースコード上の複数の箇所で
定義されていることもあります。この場合は第一引数とあわせてORA-600検知時
に出力されるトレースファイルに記録された Call Stack Trace の情報を併用し
て原因の絞込みを進めます。
1.2. ORA-700
ORA-700 はリリース 11.1 以降に導入されたエラーコードです。ORA-700 は
処理を終了させる必要がない軽微な問題を検知した場合に ORA-600 と同様に複
数の引数を伴って出力されます。
ORA-00700: ソフト内部エラー、引数: []、[]、[]、[]、[]、[]、[]、[]
ORA-600 と同様に第一引数、データベースのバージョン、トレースファイルに記
録された Call Stack の情報を併用して原因の絞込みを進めます。
1.3. ORA-7445
ORA-600、ORA-700 が Oracle Database Server 内部のチェック処理で異常を検知
して発生するエラーであるのに対し、ORA-7445 はオペレーティングシステムの
例外 (SIGSEGVなどのシグナル) を受け取った場合に発生する内部エラーです。
ORA-600、ORA-700 と同様に複数の引数を伴って出力されます。
この内部エラーとあわせて通常はコアファイルが生成されます。
ORA-07445: 例外が検出されました: コア・ダンプ [] [] [] [] [] []
ORA-600 や ORA-700 と同様にデータベースのバージョン、トレースファイルに
記録された Call Stack Trace の情報を併用して原因の絞込みを進めます。Call
Stack Trace の情報が記録されているトレースファイルが出力されていない場合
は、コアファイルの情報も使用して原因の絞込みを進めます。
2. 問題の把握と公開事例の確認方法
=========================================================================
My Oracle Support および 日本語ナレッジ・ベース(KROWN)には多くの内部エラー
に関する事例が公開されています。通常、公開事例の確認は、最も早く問題の原
因と対処策を確認できる手段です。以下に問題の把握から公開事例を確認するま
での手順について説明します。
2.1. アラートログの確認
内部エラーを検知すると、アラートログに検知した内部エラーに対応するエラー
コードが記録され、詳細情報がトレースファイルに出力されます。内部エラーを
検知した場合、検知時間帯においてアラートログにその他の問題を示すエラーの
記録がないか確認します。同一時間帯に複数のエラーが記録されている場合、最
も最初に発生したエラーに着目します。いくつかの例外はありますが、最初のエ
ラーに起因して他の内部エラーを検知している可能性があります。
2.2. トレースファイルの確認
アラートログより調査すべき対象のエラーを確認したら、対象のエラーを検知し
た時に出力されたトレースファイルより、Call Stack Trace の情報を確認しま
す。Call Stack Trace の情報は以下のセクションの間に記録されています。
----- Call Stack Trace -----
:
--------------------- Binary Stack Dump ---------------------
ORA-7445 発生時にこのような Call Stack Trace が記録されたトレースファイ
ルが確認できない場合は、Document 1702968.1(KROWN:13101) または Document 1750192.1(KROWN:143340) の方法にて、コア
ファイルからスタックトレースの情報を確認し、トレースファイルの代用としま
す。
2.3. 600/7445 Lookup Tool を使用した調査
日本語ナレッジ・ベース(KROWN) および My Oracle Support より発生した
内部エラーに関連する情報を検索します。以下は検索結果を絞り込むために一般
的によく使用される検索キーです。
- ORA-600、ORA-700、ORA-7445 などの発生しているエラーコード
- 第一引数の数字または文字列
- バージョン
- トレースファイルの Call Stack Trace やコアファイルのスタックトレース
から確認できる関数
- 実行していた処理やアクセス対象のオブジェクトの特徴
My Oracle Support の Document 153788.1 において ORA-600/ORA-7445 Lookup
Tool を公開しています。ORA-600/ORA-7445 Lookup Tool を使用することで
内部エラーの第一引数やデータベースのバージョン、トレースファイルに出力さ
れている Call Stack Trace をもとに関連性が高い My Oracle Support のナレッ
ジ・ベースを検索することができます。
- 内部エラーの第一引数からの調査
ORA-600/ORA-7445 Lookup Tool にて Error Code として当該エラーコードを
入力し、第一引数を入力します。 Lookup Error ボタンをクリックすること
で、この第一引数を持つ内部エラーのリファレンスを参照することができま
す。リファレンスにはこの引数を持つ内部エラーの説明とこの引数の当該エ
ラーに関連するナレッジ・ベースがまとまっています。
- 内部エラーの Call Stack Trace またはコアファイルからの調査
ORA-600/ORA-7445 Lookup Tool にて Search Knowledge Base ボタンをクリッ
クすることでナレッジ・ベースを直接検索することができます。検索結果が
多い場合、Call Stack の情報やバージョン情報を併用して検索結果の絞込み
を行います。
ORA-600/ORA-7445 Lookup Tool の詳細な使用方法については Document 1082674.1
を参照してください。
3. カスタマ・サポートへお問い合わせいただく場合に提供いただきたい情報
=========================================================================
内部エラーについてカスタマ・サポートへお問い合わせいただく場合にあわせ
てご提供いただきたい情報、および資料について以下に記載します。
リリース 11.1 以降で ADR が有効になっている場合、以下の項番 3.1. のアラート
ログ、3.2. のトレースファイル、 3.7. の SQL テスト・ケースの資料は
Document 1746336.1(KROWN:135295) に記載の「4. 物理パッケージの作成 」を参考にインシデント・
パッケージの形式でまとめてご提供ください。ADR をご利用でない場合は
Document 1701600.1(KROWN:5672) を参考にアラートログ、トレースファイルの場所を確認してください。
3.1. アラートログ
内部エラーを検知する直近のインスタンス起動時から 内部エラーを検知するま
での間の情報が記録されたアラートログをご提供ください。
3.2. トレースファイルまたはコアファイルから抽出したスタックトレースの情報
内部エラーを検知した際に出力されたトレースファイルをご提供ください。
ORA-7445 発生時に Call Stack Trace が確認できるトレースファイルが出力さ
れていない場合は、core_dump_dest パラメータにて確認できる出力先に生成さ
れたコアファイルより Document 1702968.1(KROWN:13101) または Document 1750192.1(KROWN:143340) の方法でスタック
トレースの情報を抽出してご提供ください。Windows プラットフォームにおいては
Document 1728388.1(KROWN:89844) と Document 1702898.1(KROWN:12986) を参考に <SID>core.log についてご提供ください。
3.3. 適用パッチの情報
以下のコマンドを実行してインストールしているコンポーネントおよび適用済み
の個別パッチの情報を表示させ、そのログをご提供ください。
$ opatch lsinventory -detail
opatch の使用方法については Document 1728259.1(KROWN:89388) を参照してください。
3.4. RDA の情報
最新の RDA を使用した情報をご提供ください。最新の RDA は Document 314422.1
よりダウンロード可能です。RDA の使用方法の詳細については Document 1733196.1(KROWN:106485)
および Document 1749022.1(KROWN:141109) を参照してください。
リリース 11.2 および 11.1 における RDA 取得例)
-- UNIX、Linux プラットフォームの場合 --
$ ./rda.sh -vSCRPfy -e SQL_SYSDBA=1,SQL_LOGIN=/,ALERT_TEXT=1 -p DB11g
-- Windows プラットフォームの場合 --
> SET ORACLE_SID=<情報取得対象の ORACLE_SIDを指定>
> SET ORACLE_HOME=<情報取得対象の ORACLE_HOMEを指定>
> rda.cmd -vSCRPfy -e SQL_SYSDBA=1,SQL_LOGIN=/,ALERT_TEXT=1 -p DB11g
リリース 10.2 および 10.1 における RDA 取得例)
-- UNIX、Linux プラットフォームの場合 --
$ ./rda.sh -vSCRPfy -e SQL_SYSDBA=1,SQL_LOGIN=/ -p DB10g
-- Windows プラットフォームの場合 --
> SET ORACLE_SID=<情報取得対象の ORACLE_SIDを指定>
> SET ORACLE_HOME=<情報取得対象の ORACLE_HOMEを指定>
> rda.cmd -vSCRPfy -e SQL_SYSDBA=1,SQL_LOGIN=/ -p DB10g
rda/output/ ディレクトリの RDA.RDA_<ホスト名>.zipファイルについてご提供ください。
3.5. オペレーティングシステムのログ
内部エラーを検知した時間とその前後の時間帯の情報について記録された
シスログなどのオペレーティングシステムのログをご提供ください。
3.6. クライアントアプリケーションのログ
内部エラーを検知した時間とその前後の時間帯のクライアントアプリケーション
のログをご提供ください。
3.7. 内部エラー検知時に実行していた処理の情報
まずは内部エラー発生時に出力されたトレースファイルに、実行中であった SQL
文が出力されているかを確認します。
トレースファイル内の "Current SQL statement for this session:" という行
の直後の出力で SQL が確認できます。
出力例)
Current SQL statement for this session:
SELECT SYSDATE FROM DUAL
また、トレースファイルの (session) を検索することで内部エラーを検知した
処理を実行したクライアントの情報を確認することができます。
出力例)
-------------------------------------------------------------------------
(session) sid: xxx ser: xxxx trans: 0x0000000000000000, creator: 0x0000000AAAAAAAAA
:
client details:
O/S info: user: Administrator, term: TEST, ospid: 1111:2222
machine: WORKGROUP\TEST program: sqlplus.exe
application name: SQL*Plus, hash value=1111111111
-------------------------------------------------------------------------
Document 1752482.1(KROWN:147414) と Document 390293.1 にはトレースファイルより処理の特徴を確認す
るポイントがまとまっていますので、あわせて参照してください。これらの情報
より、内部エラーを検知した処理がどのような処理を行っていたか確認し、処理
の概要の情報をまとめてご提供ください。例として、以下のような情報をまとめ
ます。
- セッション確立後、対象の SQL までの一連の処理概要
- 対象の SQL の処理の更新量
- クライアントアプリケーションの情報(ミドルウェアの種類や、バージョン等)
- 接続形態(専用サーバー接続、共有サーバー接続)またはコネクション・プー
リング等の使用の有無
- 一時表やデータベース・リンク、LOB 、マテリアライズド・ビューの使用等、
処理に関連するオブジェクトや処理方式の特徴
3.8. SQL テスト・ケース
リリース 11.1 以後で SQL テスト・ケース・ビルダーが適用可能な内部エラー
のインシデントの場合、Document 1751662.1(KROWN:146020) または Document 1755074.1(KROWN: 152185) の SQL テスト・
ケース・ビルダーを使用する手順にて SQL テスト・ケースを作成してください。
リリース 10.2 以前を使用している場合、または SQL テスト・ケース・ビルダー
の適用が不可能な場合、以下の2つの情報についてご提供ください。
- 内部エラーを検知した処理に関わるオブジェクトの DDL
内部エラーを検知した処理に関わるオブジェクトを作成する際に使用した
CREATE 文をご提供ください。表に付随して索引が存在する等、付随するオブ
ジェクトが存在する場合は、そのオブジェクトの CREATE 文についてもご提供
ください。オブジェクトの CREATE 文については Document 1721554.1(KROWN:63106) の方法でも確認
することができます。
- 内部エラーを検知した処理に関わる表の統計情報
Document 1708927.1(KROWN:27341) または Document 1749148.1(KROWN:141283) に記載されている手順にて取得した内部エ
ラーを検知した処理に関わる表の統計情報のダンプファイルをご提供ください。
3.9. 内部エラーの再現性
内部エラーの調査に最も有効な調査アプローチは、その内部エラーを意図的に発
生させる方法を特定することです。内部エラー検知時に実施していた処理を同じ
条件で実行し、内部エラーの再現性が見られるか確認してください。
再現性がみられる場合は、その手順をもとに意図的に内部エラーを発生させるこ
とができる再現手順を確立可能であるか確認してください。項番 3.6 の資料と
アラートログより確認できる初期化パラメータの情報は、意図的に内部エラーを
発生させる再現手順を確立するために役立つ資料です。意図的に内部エラーを発
生させることができる手順を確立可能であれば、その手順をまとめてご提供くだ
さい。詳細は Document 1755555.1(KROWN:152730) を参照してください。
3.10. 内部エラーを検知した処理の実行実績の有無
内部エラーを検知した処理が今までに問題なく実行できた実績がある処理である
か、それとも実行実績がなく、はじめて実行して内部エラーを検知しているのか
確認し、その実行実績に関する情報をご提供ください。
3.11. 内部エラーを検知する前におこなった構成変更の情報
内部エラーを検知する前に行ったシステムの構成変更に関する情報をご提供くだ
さい。以下はその一例です。
- オペレーティング・システム または Oracle Database のパラメータを変更
やパッチの適用を実施した。
- ハードウェアの交換や増設を実施した。
- 新規アプリケーションのリリースやアプリケーションの使用ユーザーが増加
した。
3.12. オペレーティング・システムのリソースの状況
内部エラーを検知した時間とその前後の時間帯におけるオペレーティング・シス
テムの CPU、メモリ、スワップ、I/O 等のリソースの使用状況に関する情報をご
提供ください。 例として、sar や vmstat、mpstat、netstat、ps、top、
iostat 等のコマンドにより取得した情報です。OS Watcher はこれらの情報を効
率よく取得することができます。OS Watcher の情報については Document 1748696.1(KROWN:140563)
および Document 301137.1 を参照してください。
[参照情報]
Document 1701600.1(KROWN:5672) 「アラート・ログ、トレース・ファイルの作成される場所」
Document 1702898.1(KROWN:12986) 「Oracle for Windows におけるCORE_DUMP_DESTについて」
Document 1702968.1(KROWN:13101) 「デバッガを使用したスタックトレースの採取方法」
Document 1708927.1(KROWN:27341) 「統計情報だけを他のデータベースへ移行する方法」
Document 1721554.1(KROWN:63106) 「既存の表・索引・表領域のDDL文を作成する方法(DBMS_METADATA.GET_DDL)」
Document 1728259.1(KROWN:89388) 「インストールされている個別パッチの詳細を確認する方法[OPatch]」
Document 1728388.1(KROWN:89844) 「Windows 環境の Oracle の coredump した際の alert(ORA-7445)の出力,traceの出力について」
Document 1733196.1(KROWN:106485) 「Remote Diagnostic Agent 4.x (RDA 4.x) について」
Document 1743378.1(KROWN:129170) 「Oracle Database 11g 以降のトレースファイルの出力ディレクトリについて」
Document 1746336.1(KROWN:135295) 「インシデント調査の SR 登録時にアップロードするパッケージの作成手順について]
Document 1748696.1(KROWN:140563) 「OS Watcher (OSW) を使用してオペレーティング・システムに関する情報を取得する方法]
Document 1749022.1(KROWN:141109) 「はじめての RDA (profile を使用した RDA クイック・スタート・ガイド)」
Document 1749148.1(KROWN:141283) 「Data Pump を使用して表と索引の定義と統計情報を移行する方法」
Document 1750192.1(KROWN:143340) 「stackx ユーティリティを使用した core からのスタックトレースの取得方法」
Document 1751662.1(KROWN:146020) 「ADRCI より SQL テスト・ケース・ビルダーを実行して SQL テスト・ケースを作成する方法」
Document 1752482.1(KROWN:147414) 「内部エラーのトレースファイル解析入門」
Document 1755074.1(KROWN:152185) 「SQL 実行時の問題を解析するための SQL テスト・ケースを作成する方法」
Document 1755555.1(KROWN:152730) 「内部エラー(ORA-600/ORA-7445)を再現させるテストケースを作成するためのガイドライン」
Document 1703201.1(KROWN:13784) 「ORA-600[2103]の発生原因と対処」
Document 1708157.1(KROWN:25686) 「ORA-600[12333]の一般的な原因について」
Document 1723202.1(KROWN:68439) 「ORA-600[12700] が発生した場合の調査方法」
Document 1740269.1(KROWN:125889) 「ORA-600[12870]の発生原因と一般的な対処」
Document 1741593.1(KROWN:127284) 「ORA-600[729]領域リーク・エラーの理解および診断」
Document 1747014.1(KROWN:137085) 「ORA-00600[17059] エラーの意味ついて」
Document 1746923.1(KROWN:136956) 「ORA-600[KKOCXJ : PJPCTX] が発生した場合の調査方針」
Document 1747453.1(KROWN:138131) 「ORA-600[19004] が発生した場合の調査方針」
Document 1747477.1(KROWN:138173) 「ORA-600[15160] が発生した場合の調査方針」
Document 1748313.1(KROWN:139949) 「ORA-600[12333] または ORA-3137[12333] のトラブルシューティング・ガイド」
Document 1752564.1(KROWN:147561) 「ORA-600[12209] エラーの意味について」
Document 1752572.1(KROWN:147572) 「ORA-600[17069] エラーの意味について」
Document 1752788.1(KROWN:148002) 「ORA-600[25027] エラーの意味について」
Document 1752796.1(KROWN:148023) 「ORA-600[17114] エラーの意味について」
Document 1752797.1(KROWN:148024) 「ORA-600[17147] エラーの意味について」
Document 1752889.1(KROWN:148224) 「ORA-600[kdsgrp1] エラーの意味について」
Document 1752923.1(KROWN:148319) 「ORA-600[4194] エラーの意味について」
Document 18485.1 「OERR: ORA 600 "internal error code, arguments: [%s],[%s],[%s], [%s], [%s],」
Document 146580.1 「What is an ORA-600 Internal Error?」
Document 153788.1 「Troubleshoot an ORA-600 or ORA-7445 Error Using the Error Lookup Tool」
Document 211909.1 「Customer Introduction to ORA-7445 Errors」
Document 232963.1 「How to Build a Testcase for Oracle Data Server Support
to Reproduce ORA-600 and ORA-7445 Errors」
Document 301137.1 「OS Watcher User Guide」
Document 390293.1 「Introduction to 600/7445 Internal Error Analysis」
Document 737878.1 「ORA-700 Soft Internal Errors in 11g」
Document 1082674.1「A Video To Demonstrate The Usage Of The ORA-600/ORA-7445 Lookup Tool [Video]」
NOTE.1088018.1「Master Note for Handling Oracle Database Corruption Issues」
Document 1092832.1「Master Note for Diagnosing ORA-600」
Document 1092855.1「Master Note for Diagnosing ORA-7445」