<Insert Picture Here>
Oracle
Direct Seminar
サポートエンジニアが語る!
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。
また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことは
できません。以下の事項は、マテリアルやコード、機能を提供することをコミットメン
ト(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さ
い。オラクル製品に関して記載されている機能の開発、リリースおよび時期につい
ては、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文アジェンダ
•
内部エラーの概要
•
現場で可能なトラブルシューティング
アジェンダ
• 内部エラーの概要
•
現場で可能なトラブルシューティング
内部エラーとは?
ORA-00600: 内部エラー・コード,
引数: [string], [string], [string] ...
原因: これは、Oracleプログラムの例外に対する一括内部エラー
番号です。プロセスで例外条件が検出されたことを示します。
処置: このエラーをバグとして報告してください。最初の引数は内
Oracle® Database Error Messages
11
g
Release 2 (11.2) の ORA-600 の対処
Action: Visit My Oracle Support to access the
ORA-00600 Lookup tool (reference Note 600.1) for more
information regarding the specific ORA-00600 error
encountered. An Incident has been created for this
error in the Automatic Diagnostic Repository (ADR).
When logging a service request, use the Incident
Packaging Service (IPS) from the Support Workbench
or the ADR Command Interpreter (ADRCI) to
automatically package the relevant trace information
(reference My Oracle Support Note 411.1).
ORA-600とは?
•
Oracle Database の一般的な内部例外を示すエラーコード
•
値の整合性チェックで 問題を検出する等、内部的な不整
合を検知したことを示す
•
検知したプロセスは診断情報を出力して、影響を最小限に
抑える為、検知した処理を終了する
•
ソースコードの様々な箇所で定義されていて、エラー発生
時の引数により発生箇所の絞込みを行う
If Block_type != Data_Block then ORA-600[4519] End if ブロックのタイプがデータブロックと異なる CheckORA-7445とは?
•
不正なメモリ参照により SIGSEGV や SIGBUS シグナル
を受け取る等、オペレーティングシステムの例外を受け取
った場合に発生するエラー
•
検知したプロセスは core と基本的な診断情報を出力して
処理を終了する
•
ソースコードで定義されているエラーでないため、理論上
はどの関数内でも発生する可能性がある。
•
クライアントには ORA-3113 等のサーバーとのセッション
が切断されたエラーが返る
リリース11.1 から細分化した内部エラー
•
ORA-700
:ソフト内部エラー
•
ORA-600 として取り扱っていたエラーのうち、処理を停止させる必
要のないエラーを ORA-700 として検知
•
ORA-700 を検知した処理は継続する。
•
ORA-3137
: TTCプロトコル内部エラー
•
クライアントから受信したパケットの整合性チェックで不整合を検
知したことを示す
•
パラメータにより、エラー検知時の動作を制御可能
•
SEC_PROTOCOL_ERROR_FURTHER_ACTION
•
SEC_PROTOCOL_ERROR_TRACE_ACTION
内部エラーの一般的な原因
•
ハードウェアの問題
•
オペレーティング・システムやコンパイラの問題
•
Oracle Database の問題や制限
内部エラーの代表的な影響
•
SQL解析時や実行時の動作に起因した例外
•
SQLの実行が異常終了する
•
ORA-7445 の場合、プロセスが異常終了する。
•
同じ SQL を実行した時に再現性が見られる可能性が高い。
•
SGA や PGA 上のメモリに格納されている値の例外
•
プロセスが異常終了する。
•
バックグラウンドプロセスなどで検知した場合、インスタンスがダウンする
可能性がある。
•
データベース構成ファイルに格納されている値や管理情報の例外
•
関連するデータへのアクセスが不可能になる。
•
インスタンスを再起動しても解消せず、リカバリが必要になる。
アジェンダ
•
内部エラーの概要
• 現場で可能なトラブルシューティング
現場でのトラブルシューティングフロー
•
問題の確認と影響の把握
•
公開事例の調査
問題の確認と影響の把握
•
サーバー側の状況把握
•
アラートログ
•
トレースファイル
•
プロセスやサービスの稼動状況や負荷状況
•
シスログや イベントログ
•
クライアント側の状況把握
•
問題が確認された日時
•
問題を検知した端末とアプリケーション
•
発生した問題の詳細、エラーコードとエラーメッセージ
ログや画面のハードコピー等のエラーの発生が確認できる資料
•
問題の発生を検知したジョブやオペレーション、SQL
アラートログの確認点
•
エラーメッセージ
•
エラーの発生頻度
•
エラーの発生プロセス
•
出力されているトレースファイル名
•
Oracle Database のバージョン
•
インスタンス起動時に認識されている初期化パラメータ
•
パラメータの変更履歴
トレースファイルの確認点
•
エラーを検知した SQL の情報
•
Call Stack Trace の情報
•
エラーを検知したクライアントの情報
•
特定の SQL 実行時のみ再現性がみられる(Y/N)
•
オプティマイザによる SQL解析時の問題の可能性がある。
•
特定の表や索引、データにアクセスすると発生する(Y/N)
•
特定の表や索引が破損している可能性がある。
•
表の整合性チェックでエラーを検知する(Y/N)
•
SQL> ANALYZE TABLE <表名> VALIDATE STRUCTURE
•
SQL> ANALYZE TABLE <表名> VALIDATE STRUCTURE CASCADE
•
特定の表や索引が破損している可能性がある。
•
インスタンス再起動後も発生する(Y/N)
•
表や索引を格納するデータベースファイル自体に
問題が発生している可能性が高い。
•
My Oracle Support のナレッジ検索
•
NOTE:153788.1 ORA-600/ORA-7445 Error Lookup
Tool を使用した検索
•
ナレッジ・ベースの検索より ORA-600 と第一引数を
入力した検索
•
KROWN キーワード検索
•
KROWNディレクトリ・サービスの検索
•
KROWN:145899 の参照情報の欄から
関連コンテンツの確認
サポートサイトのナレッジベースを利用した
調査
アジェンダ
•
内部エラーの概要
•
現場で可能なトラブルシューティング
オラクル カスタマ・サポートとの協業
•
現場の役割
•
問題の実際の影響の把握
•
問題を発生時の一連のオペレーションの把握
•
問題の発生に関係するオブジェクトやデータ情報の把握
•
問題発生時の特徴的な状況の把握
•
対処方法の実装の検討
•
サポートの役割
•
検知した例外の把握
•
問題が潜在的に与える影響の調査
•
問題への対処方法の調査
オラクル カスタマ・サポートへの
お問い合わせ時に送付いただきたい資料
•
インシデント・パッケージ
•
アラートログ
•
トレースファイル
•
適用パッチの情報
•
オペレーティングシステムのログ
•
クライアントアプリケーションのログ
•
OS Watcher などのオペレーティング・システムの
リソースの使用状況
•
Remote Diagnostic Agent による情報取得
•
問題の再現性。再現性がある場合は具体的な再現手順
インシデント・パッケージとは?
•
11.1 以後の障害診断インフラストラクチャの診断データの
パッケージング形式
•
問題の1回の発生を1インシデントとして管理し、インシデ
ント単位で診断データのパッケージングを行う
•
オラクル カスタマ・サポートへの資料提供の標準
自動診断リポジトリ (ADR)
診断データ取得
自動情報取得
障害
インシデント・パッケージ
情報のパッケージング
インシデント トレース/アラート 診断ログ•
オペレーティング・システムのリソース情報を取得する
ツール
•
以下のコマンドの実行結果を取得(Linux の例)
•
vmstat
•
iostat
•
mpstat
•
netstat
•
ps
•
top
•
traceroute
•
NOTE:301137.1 より無料でダウンロードして利用可能
OS Watcher (OSW) とは?
Remote Diagnostic Agent (RDA) とは?
•
問題解析のための診断資料を効率よく取得するため診断
ツール
•
Oracle Database だけでなく、Oracle WebLogic や
Oracle E-Business Suite 等、多くの製品にも対応
•
My Oracle Support の NOTE:314422.1 より無料でダウン
ロードして利用可能
DBサーバ
APサーバ
•
内部エラーの対応は現場での迅速な初期対応と情報取
得が重要です。現場だから確認できる情報が重要になる
ことがあります。
•
内部エラーが発生する以前より、取得可能な情報につい
ては取得の仕組みを実装しておきましょう。
•
サポート・サイトのナレッジベースを有効活用しましょう。
日頃よりナレッジベースに慣れることで、トラブルへの対
処時以外にも有効な情報を得ることができます。
まとめ
•
KROWN:145899
•
内部エラー(ORA-600/ORA-7445/ORA-700)のトラブルシューティ
ング・ガイド
•
KROWN:147414
•
内部エラーのトレースファイル解析入門
•
KROWN:135295
•
インシデント調査の SR 登録時にアップロードするパッケージの作
成手順について
•
KROWN:140563
•
OS Watcher (OSW) を使用してオペレーティング・システムに関す
る情報を取得する方法
•
KROWN:106485
参考文献
•
NOTE:1092832.1
•
Master Note for Diagnosing ORA-600
•
NOTE:1092855.1
•
Master Note for Diagnosing ORA-7445
•
NOTE:153788.1
•
Troubleshoot an ORA-600 or ORA-7445 Error Using the Error
Lookup Tool
•
NOTE:175982.1
•
ORA-600 Lookup Error Categories
•
NOTE:146580.1
•
What is an ORA-600 Internal Error?
•
NOTE:211909.1
•
Customer Introduction to ORA-7445 Errors
•
NOTE 559339.1
•
Diagnostic Tools Catalog
•
NOTE:301137.1
•
OS Watcher User Guide
•
NOTE:314422.1
•
Remote Diagnostic Agent (RDA) 4 - Getting Started
アラートログの出力例
2010-09-24 15:19:26.251000 +09:00 Starting ORACLE instance (normal) :
Starting up:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options. Using parameter settings in server-side spfile
/home/ora11201/app/oracle/product/11.2.0.1/db_1/dbs/spfileora11201.ora System parameters with non-default values:
sga_max_size = 800M sga_target = 520M :
2010-09-25 15:21:48.265000 +09:00
ALTER SYSTEM SET sga_target='720M' SCOPE=BOTH; 2010-09-26 08:44:28.802000 +09:00
Errors in file /home/ora11201/app/oracle/product/11.2.0.1/diag/rdbms/ora11201/ora11201/trace/ora11201_ora_29001.trc (incident=670218):
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], [] Incident details in:
/home/ora11201/app/oracle/product/11.2.0.1/diag/rdbms/ora11201/ora11201/incident/incdir_670218/ora11201_ora_2900 1_i670218.trc バージョン情報 初期化パラメータの情報 変更パラメータの情報 ORA-600 とその引数 診断情報が出力された トレースファイル名の情報
エラーを検知した SQL の情報
*** 2010-09-26 08:44:28.802
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
Current SQL Statement for this session (sql_id=79j4uyu91xk2p)
---select * from emp where empno = :empno
Call Stack Trace
Call Stack Trace の情報
Call Stack Trace
---calling
call entry argument values in hex
location
type point (? means dubious value)
--- --- ---
---kgeasnmierr()+47 call kgerinv() 106AD180 ? B75143EC ?
F6413F8 ? 0 ? BFFFAFF4 ?
kdsgrp1_dump()+747 call kgeasnmierr() 106AD180 ? B75143EC ?
F6413F8 ? 0 ?
kdsgrp1()+32 call kdsgrp1_dump() B7345954 ? B7345954 ?
:
ktrexc()+535 call 00000000 23568014 ? BFFFB550 ?
kcbgtcr()+11661 call 00000000 BFFFB428 ? 106C293C ? 0 ?
:
クライアントの情報
(session) sid: 101 ser: 3 trans: (nil), creator: 0x29ef5a5c
:
oct: 3, prv: 0, sql: 0x29900748, psql: 0x299d2508, user: 84/SCOTT
client details:
O/S info: user: ora11201, term: pts/0, ospid: 32123
machine: client.jp.oracle.com program: sqlplus@client.jp.oracle.com (TNS V1-V3)
application name: SQL*Plus, hash value=3669949024
Current Wait Stack:
Not in wait; last wait ended 0.559813 sec ago
Wait State:
fixed_waits=0 flags=0x21 boundary=(nil)/-1
Session Wait History:
elapsed time of 0.559854 sec since last wait
0: waited for 'Disk file operations I/O'
クライアントの OSユーザー クライアントの OSプロセスID クライアントのホ スト名 クライアントの アプリケーション名
実行計画の情報
============
Plan Table
============
---+---+
| Id | Operation | Name | Rows | Bytes | Cost | Time |
---+---+
| 0 | SELECT STATEMENT | | | | 1 | |
| 1 | TABLE ACCESS BY INDEX ROWID | EMP
| 1 | 87 | 0 | |
| 2 | INDEX UNIQUE SCAN
| PK_EMP | 1 | | 0 | |
---+---+
索引 PK_EMPを使用してア クセスしている
•
11.1以後のリリースでは Incident Context Dump を出力
•
エラーの種類によっては Incident Context Dump の
Impact の欄よりエラーの影響が確認できることがある
トレースファイルから影響の確認
Incident Context Dump ---Incident ID: 123456
Problem Key: ORA 600 [13013] [07]: kgesiv []
[08]: ksesic6 [KSE]
[09]: updThreePhaseExe [DML]<-- Signaling [10]: updexe [DML]
[11]: opiexe []
Impact 0: POSSIBLE INDEX CORRUPTION Impact 1: PROCESS FAILURE
索引が壊れている可能性がある
•
共有プールの flush による対処
•
統計情報の制御による対処
•
オブジェクト破損への対処
•
ORA-600[17059] の発生
•
サポートサイトのナレッジベースよりエラーの意味を調査
•
ライブラリキャッシュにロードされている特定の親カーソルで管理され
る子カーソルの数が最大数に達したことを示す。
•
共有プールの flush により子カーソルを消去する事で対処
ケース1
共有プールの flush による対処
行1でエラーが発生しました。:
ORA-00600: 内部エラー・コード, 引数: [17059], [0x11CACBB00], [0x11CACB4C8],
[0x11CACBFC8], [], [], [], [], [], [], [], []
ケース2
統計情報の制御による対処
•
ORA-600[19004] の発生
•
サポートサイトのナレッジベースよりエラーの意味を調査
•
オプティマイザによる SQL の解析時において予期しない統計情
報の値を検知したこと示す。
•
統計情報の削除や過去の統計情報のリストアにて対処
•
DBMS_STATS.DELETE_TABLE_STATS
•
DBMS_STATS.RESTORE_TABLE_STATS
ケース3
オブジェクト破損への対処
•
ORA-600[12700] 発生
•
サポートサイトのナレッジベースよりエラーの意味を調査
•
表と索引の間の不整合を検知
•
破損箇所の切り分けを実施
•
ANALYZE TABLE <表名> VALIDATE STRUCTURE CASCADE
•
ANALYZE TABLE <表名> VALIDATE STRUCTURE
•
破損への対処
•
ORA-600[12333](11.1 以後は ORA-3137[12333])
•
受信したパケットの特定レイヤの不整合を検知
•
ORA-600[723] , ORA-600[729]
•
ログオフ時に PGA や UGA のメモリリークを検知
•
ORA-600[170xx]
•
ライブラリ・キャッシュ上の処理で問題を検知
•
ORA-600[171xx]
•
ヒープの破損を検知
問合せの多い ORA-600 の例
インシデント・パッケージの作成
INCIDENT_ID を指定
出力先ディレクトリを指定
$ adrci
adrci> set homepath diag/rdbms/ora11201/ora11201 adrci> show incident
ADR Home = /home/ora11201/app/oracle/product/11.2.0.1/diag/rdbms/ora11201/ora11201: *************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
--- --- ---670218 ORA 600 [kdsgrp1] 2010-09-26 08:44:28.802000 +09:00
670219 ORA 600 [kdsgrp1] 2010-09-26 08:45:11.347000 +09:00 adrci> #例1) incident 番号を指定したインシデントのパッケージング例 adrci> ips pack incident 670218 in /tmp
Generated package 6 in file /tmp/ORA600kds_20101025113513_COM_1.zip, mode complete adrci> #例2)時間を指定したインシデントのパッケージング例
adrci> ips pack time '2010-09-26 08:44:28.802000 +09:00' to
'2010-09-26 08:45:11.347000 +09:00' in /tmp