データベースの運用中には、アプリケーションエラー、データベース接続エラー、データベース権限問題、データベースリソース問題、ネットワーク問題など、さまざまな異常状況が発生することがよくあります。これらすべての状況の中で、アプリケーション例外というものがありますが、そのエラーメッセージにはOBのエラーコードが含まれていません。このような問題では、問題とOceanBaseデータベースとの関連性を判断することが一般的に困難であり、その結果、トラブルシューティングの方向性が不明確になります。
皆様がこのようなシナリオで問題の根本原因を迅速に特定し、効率的に解決できるよう支援するために、ここではアプリケーション例外でエラーメッセージにOceanBaseエラーコードが含まれない場合の、明確で実用的なトラブルシューティングプロセスをまとめました。このプロセスは明確な操作手順を提供し、問題処理の効率を向上させ、業務への影響を可能な限り低減し、日常的な運用保守作業を強力に支援することを目的としています。
アプリケーション実行時にエラーが発生し、そのエラーメッセージにOceanBaseエラーコードが含まれない場合の問題トラブルシューティングプロセスは、以下の図のとおりです。
プロセスの紹介
アプリケーション実行時に例外が発生し、エラーメッセージにOceanBaseエラーコード情報が含まれないシナリオに遭遇した場合、このプロセスに従って問題をトラブルシュートできます。
アプリケーション側のエラーロジックを分析し、切断例外の問題かどうかを判断します:
はいの場合は、アプリケーション切断問題のトラブルシューティングドキュメントを参照してトラブルシュートしてください。
いいえの場合は、再現可能かどうかをさらに判断します:
はいの場合は、プログラムコードのデバッグ、ネットワークパケットキャプチャ分析(例:tcpdump)などの手段を用いて、プログラムコードのエラー原因を分析し、問題のトリガーロジックを明確にして分析の方向性を定めます。
いいえの場合は、既存の情報とプログラム自体のロジックを組み合わせて、エラー原因を推測し、問題のトリガーロジックを明確にして分析の方向性を定めます。
典型的な事例
アプリケーション側からのフィードバック:大量データインポート時に、アプリケーションログに
Connection is closed & Connection resetエラーが表示される。具体的なトラブルシューティング操作については、OBProxyがメモリ使用量の上限を超えたためアプリケーションにエラーが発生:Connection resetを参照してください。業務がテスト環境で実行される際、アプリケーション側から観測されたSQLの平均実行時間は2msでしたが、本番環境で実行されると30〜40msに増加しました。しかし、データベース内のSQL実行時間は増加していません。具体的なトラブルシューティング操作については、アプリケーション側のSQL実行時間がデータベース内の時間よりもはるかに高い問題を参照してください。
- システムがOracleデータベースからOceanBaseデータベースのOracleテナントに切り替えた後、JBoss上でデプロイされたJDBCアプリケーションで接続数不足の問題が発生しました。具体的なトラブルシューティング操作については、JBoss上でデプロイされたJDBCアプリケーションで接続数不足の問題を参照してください。