ORA-3113, ORA-600, ORA-7445

Oracleに関する致命的エラーとして有名な上記3エラーの備忘録。
2003年の夏、某社のCMS(コンテンツ・マネジメント・システム)の構築において
かなり悩まされた(家に帰れない、徹夜、叱られる、迷惑かける…)ため、
ここに記録しておく。

ORA-3113
通信チャネルがなんたら。
だいたいORA-1041, 3114, 1012, 1034と一緒に出ることが多い。
まあ、なにかしらDBが正常に動いていないため、そこを確認する。

ORA-600
一般的に「即サポート行き」とされるものであるが、ある程度の切り分けは可能。
というか、Oracleサポートに行ってもすぐに回答が得られるものではなく、
またその本格対応策も有効か否かわからないことがおおい。
切り分けのためには600の次に続く数値が重要で、
0000台の場合は、サービスレイヤの問題。 
 例えば504ならラッチ競合で、729ならばUGAメモリリーク
2000台の場合は、キャッシュレイヤの問題。
 2103ならば、制御ファイル書き込みか、チェックポイントのキューがタイムアウト
 3020ならば、スタック領域のリカバリ
4000台の場合は、トランザクションレイヤ。UNDO領域での競合などで比較的多く発生する。
 4511ならば、非活性ITLでの行ロック
 4519ならば、ブラック破損
6000台はデータレイヤ。
8000台はアクセスレイヤ。
9000台はパラレルサーバ。
10000台は制御ファイルレイヤ。
12000台がユーザやオラクルインターフェースでのレイヤで、
 12333は、致命的2タスクプロトコルでの競合
 12700は、インデックスのポインタがROWIDを喪失
14000台はシステム依存レイヤ
15000台はセキュリティレイヤ
 15212は共有カーソルを見つけたが、バインドがマッチしない。
17000台は一般レイヤ。ヒープ領域の問題で起こる可能性が高い。
 17112 は内部ヒープエラー。
 17114はKGHのヘッダのマジックナンバー不良
 17182は、ヒープのチャンクヘッダの番号不整合
18000台は2相コミットレイヤ。
19000台はオブジェクトレイヤ。
21000台はレプリケーションレイヤ。
23000台はOLTPレイヤ。

まあ、だいたいこの第二引数の番号で起こっている問題にあたりをつけて、
そこに関係する初期化パラメタなどを調整して、再現しなくなるか様子見をすればなんとか
問題は解決できると思う。

2003年夏の自分の場合は、17000台のヒープ系であったため、とにかく共有メモリ量を
多めに割り当てたら、でなくなりました。

ORA-7445
とりあえず、

event = "10046 trace name context forerer, level12"
が定石かな。