データベースの運用中には、アプリケーションエラー、データベース接続エラー、データベース権限問題、データベースリソース問題、ネットワーク問題など、さまざまな異常が発生することがよくあります。これらすべてのケースの中で、アプリケーション例外の一種として、エラーメッセージに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アプリケーションで接続数不足の問題が発生した場合を参照してください。