「SAP Basis概要の教科書」NO.13 SAP障害分析について
INDEX LINK
1.はじめに
今回はSAPシステムにおけるBasis主要業務の一つとなる「障害分析」についてお話いたします。障害が発生すると、慣れないうちはどこから調査したらよいかわからないことがあると思います。下記に分析アプローチの方法から見るべきポイントについて説明いたします。
2.分析アプローチの方法から見るべきポイント
■ ステップ1:どんな処理で障害が発生したのかを確認
SAPシステムは様々な実行ログが格納されています。そのため、アプローチの方法を間違えると、確かにエラーに関するログであっても発生したエラーの直接的な原因ではなく、結果的に解決まで遠回りしてしまうこともしばしばあります。(問題発生時刻と同時間帯に発生したエラーのため、それが原因と決めつけてしまうなど)
そこでまず始めに切り分けて頂きたいのが、ダイアログの処理(利用者のトランザクション実行等)かバックグランド処理(ジョブの実行エラー等)なのかです。
前者の場合は、まずシステムログから状況を確認します。後者の場合もシステムログからも追えますが、ジョブのエラーとわかっているのでジョブログからアプローチする方が確実かつ解決スピードが上がります。次にそれぞれのログの見方を説明いたします。
■ ステップ2-A:システムログの分析
システムログの分析はトランザクションコード:SM21から行います。下記のように時系列にどこのクライアントで、どのユーザが何の処理でエラーになったのかが確認できます。障害が発生しているユーザ名とおおよその発生時刻が判明していれば、この一覧から該当する行を選択・ダブルクリックすることで詳細エラー情報が確認できます。また、「メッセージテキスト(①)」に表示されているキーワードを用いてSAPサービスマーケットプレイスでノート検索すると、対応策が見つかることがありますので、まずはそこから確認します。単純に解決できない場合は、より詳細な情報を「開発者トレース」から確認することになります。こちらについては後半のステップ4で説明いたしますが、該当エラーのプロセス番号(②)を確認しておいて下さい。そのプロセス番号の詳細分析を行うために必要な情報となります。
■ ステップ2-B:ジョブログの分析
ジョブログの分析は、トランザクションコード:SM37から行います。ジョブの一覧表示を行う際にステータス「中止」で検索して下さい。これによりエラーになったジョブだけが表示されます。
一覧から該当時刻に発生したエラー行を選択し、ダブルクリックして下さい。ジョブ詳細情報が表示されるので、画面上部の「ジョブログ」からエラーの内容を確認することができます。ここからあまり解決に有効な情報が得られない場合は、次に説明するショートダンプ分析や開発者トレースを行って下さい。
■ ステップ3:ショートダウンプの分析
ショートダンプの分析は、トランザクションコード:ST22から行います。発生した問題がより深刻な(クリティカルな)場合、ここに詳細ログがショートダンプとして記録されます。逆に軽微なエラーはここには表示されませんので、前述のシステムログやジョブログのエラーキーワードから問題解決を図ることになります。ショートダンプには多様な情報が記載されていますので、下記のページメモリ不足のエラーを例に見方を説明いたします。(ページメモリが何なのかなど、性能面のお話はまた別の機会にできたらと考えています。)
まず該当エラー行をダブルクリックして下さい。
「Short Text(①)」で、何のエラーかが端的に述べられています。
「What happened?(②)」で、少し掘り下げてどんなことが起きたのかが述べられています。
「What can you do?(③)」で、何をすべきかが述べられています。
ある程度システムを運用してくると、これらの情報から何をすべきか見当がつくこともありますが、最初は難しいと思いますのでさらに下の方の情報を確認します。
ページをスクロールしていくと「keywords(④)」という文字が見えてきます。これは、この問題に関係するキーワードで、これを元にSAPノート検索を行うと具体的な解決策がわかります。こまずはこのキーワードから何が起きていてどんな対処が必要なのか検索してみて下さい。
さらに下を見ていくと、今回はメモリリソース不足のエラーでしたので、各種メモリリソースの使用状況が表示されています(⑤)。これによりこのショートダンプの発生を回避するには、プログラム側でリソースを大量に消費しないようSQLクエリーを見直すか、そもそものメモリリソースを拡張するか、いずれかの対策が必要になることがわかります。
その他に有効な情報として、どのクライアントでどのユーザがどのトランザクション、プログラムでエラーが発生したのか(⑥)や、SAPノート検索でさらに有効なキーワード(⑦)などが表示されています。これらの情報から適切な対処を検討していくことになります。
また、今回はメモリリソースの問題でしたが、アドオンプログラムなどでプログラム自体のバグが原因で障害が発生することもあります。その場合は、下記のようにソースコードのエラー箇所も特定可能ですので、この情報を開発者に連携し、問題解決を図って下さい。
■ ステップ4:開発者トレースの分析~SAPサポート支援依頼
上述のシステムログ解析から、より詳細な分析を行う場合は開発者トレースを確認します。
開発者トレースの分析は、トランザクションコード:ST11から行います。
開発者トレースはワークプロセス毎に詳細情報が記録されているので、システムログの該当エラー行にてプロセス番号をまず確認してください。例えば18番のプロセスで障害が発生していた場合は、下記のようにdev_w18の行を選択し、ダブルクリックして下さい。
するとエラー情報が詳細に記録されていますので、問題が発生したい該当時刻行までスクロールし、何が起きていたか確認しSAPノート検索などを行い、解決策を検討します。また、ここまで詳細に調べても解決が難しい場合もあります。その場合はSAPサポート(OSS)に解決のための支援を依頼することになります。その際、SAP社から「開発者トレースを添付・送付して下さい」と依頼されることがあります。この開発者トレース情報は「/usr/sap/<SID>/<インスタンス名>/work」の下に格納されていますので、ここをまとめて圧縮してSAP社OSSへ送付し、問題解決までの支援を依頼するようにして下さい。
3.おわりに
いかがでしたでしょうか。今回はSAPの障害分析方法について説明いたしました。アプローチの順番はあるにせよ、基本的にまずSAPノート検索を行い自力での解決が難しければSAP社OSSの支援を依頼することになります。よって、起きている事象、キーワードから関連するノートを的確に見つけられるかが問題解決のスピードに影響します。SAPノート検索は日ごろから実施されていると慣れるのが早いと思います。次回はBAPIを中心としたベーシスとしてのSAPプログラムの利用についてお話できればと考えています。