データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

DBA必見!Oracle Workflow Notification Mailer(ワークフロー通知メーラー)の問題対処とメンテナンス術

本記事では、データベース管理者(DBA)が日々の業務で直面するOracle® Workflow Notification Mailer(ワークフロー通知メーラー)の一般的な問題とその解決策を紹介します。

はじめに

問題管理とは、課題の記録・追跡・解決までの一連のプロセスを指します。Workflow Notification Mailerは構成要素が非常に多いため、関連するトラブルへの対応に苦労することも少なくありません。そこで本記事では、代表的な問題とその修正方法をわかりやすく解説します。さらに、Workflow Notification Mailerの運用管理を効率化するための実用的なスクリプトも紹介しますので、ぜひ最後までご覧ください。

Workflow Notification Mailerの一般的な問題と解決策

以下では、よく発生する3つの問題と、それぞれの原因・対処方法を詳しく見ていきます。

問題1:ユーザーに通知メールが届かない

ユーザーに通知メールが届かない、あるいは失敗した通知を再送できないというケースです。

原因:

以下の設定値が MAILHTML ではなく DISABLED になっていることが考えられます。

  • FND_USER_PREFERENCES テーブルの PREFERENCE_VALUE
  • WF_LOCAL_ROLES テーブルの NOTIFICATION_PREFERENCE

解決策:

  1. まず、以下のコマンドで対象テーブルをバックアップします。

        SQL> create table fnd_user_preferences_bkp as select * from fnd_user_preferences;
    
        Table created.
    
        SQL> create table wf_local_roles_bkp as select * from wf_local_roles;
    
        Table created.
    
  2. 続いて、以下のコマンドでテーブルを更新します。

        select user_name,preference_value from FND_USER_PREFERENCES where preference_value = 'DISABLED' and preference_name = 'MAILTYPE' and module_name = 'WF' and user_name like '%<USER_NAME>%';
    
        update FND_USER_PREFERENCES set preference_value = 'MAILHTML' where preference_name = 'MAILTYPE' and preference_value = 'DISABLED' and module_name = 'WF' and user_name like '%<USERNAME>%';
    
        select * from wf_local_roles where notification_preference = 'DISABLED' and name like '%<NAME>'
    
        update wf_local_roles set notification_preference = 'MAILHTML' where notification_preference = 'DISABLED' and name like '%<NAME>%'
    
  3. システム管理者責任領域(System Administrator responsibility)から「Resend Failed/Error Workflow Notifications」リクエストを実行し、失敗した通知を再送します。日付パラメータ「Notifications sent on or after」には対象となる日付を指定してください。

    注意: 日付の形式は DD-MMM-YYYY(例:01-JAN-2020)を使用してください。

問題2:メールが誤ったフォルダに振り分けられる

経費申請の承認通知メールが、PROCESS フォルダではなく DISCARD フォルダに配信されてしまうケースです。

承認者が Approval リンクをクリックした際に生成される標準的な承認メールの Action 項目は、通常次のような形式になります。

Action: 'Approve'
Note: ''
NID[5513471/192168752214903990869743932721878211126@WFMAIL]

一方、通知が迷惑メールフォルダなどに振り分けられた場合は、「Action」項目が次のように崩れて表示されます。

Action: 'Approve'Note: ''NID5389465/1779945055187563456464409735425450546126@WFMAIL

原因:

Microsoft® Outlook® のメール作成フォーマット設定がテキストモードになっているか、モバイルデバイスから通知を承認したことが原因として考えられます。

解決策:

テキストモードのメールやモバイルデバイスから通知を承認する場合は、必ず以下の点を確認してください。

  • 各フィールドの間にスペースを入れる。
  • NID 値を角括弧で囲む。

先ほどの例でいえば、各フィールド間に少なくとも1つのスペースを挿入し、NID 値を角括弧([ ])で囲む必要があります。正しい形式は以下の通りです。

Action: 'Approve'
Note: ''
NID[5389465/1779945055187563456464409735425450546126@WFMAIL]

問題3:メールが届かない、または古いメールが届く

メールが時間どおりに届かない、あるいはすでにクローズ済み・キャンセル済みの古い通知が届いてしまうというケースです。

原因:

この問題は、Workflow Notification Mailerのキューに不要データが大量に溜まっている場合に発生します。

wf_notifications パラメータでは、クローズ済み通知に対して mail_statusMAIL に、オープン状態の通知に対しては SENT に設定されます。

このシナリオでは、wf_notification_out キューに wf_notifications テーブル由来の非常に古いエントリが残っています。Workflow Background Processリクエストのパラメータ設定が誤っていると、この状態が異常な通知の送信につながります。

解決策:

以下の手順に従って、Workflow Notification Mailerのキューを再構築します。

  1. 顧客と相談のうえ、古い通知をパージする方針を決める。
  2. begin_date など、基準となる日付を控えておく。
  3. Workflow Notification Mailerを停止する。
  4. begin_date より前の、すべての古い OPEN 状態の通知をクローズする。
  5. begin_date より前の通知について、mail_statusSENT に更新する。
  6. APPS ユーザーとして以下のスクリプトを実行し、キューを再構築する。
        SQL> @$FND_TOP/patch/115/sql/wfntfqup.sql apps <APPS_PASSWD> APPLSYS
    

Workflow Notification Mailerのメンテナンス用スクリプト

ここで紹介するコマンドは、Workflow Notification Mailerの日常的な保守に役立ちます。用途に応じてスクリプト化しておくと、運用が格段に楽になります。

スクリプト1:コンポーネントステータスの確認と更新

このスクリプトでは、以下のステータス設定を確認・変更できます。

  • RUNNING
  • STARTING
  • STOPPED_ERROR
  • DEACTIVATED_USER
  • DEACTIVATED_SYSTEM
  • NOT_CONFIGURED

以下のコマンドで、Workflow Notification Mailerのcomponent_statusを更新し、ステータスを変更します。

SQL> select component_status
from fnd_svc_components
where component_id =
(select component_id
from fnd_svc_components
where component_name = 'Workflow Notification Mailer');

COMPONENT_STATUS
------------------------------
STARTING

SQL> update fnd_svc_components set component_status='DEACTIVATED_SYSTEM' where component_id =
(select component_id
from fnd_svc_components
where component_name = 'Workflow Notification Mailer');

1 row updated

SQL> commit;

Commit complete.

スクリプト2:起動モード(MANUAL/AUTOMATIC)の変更

以下のコマンドを使用すると、Mailerの STARTUP_MODEMANUAL または AUTOMATIC に設定できます。

SQL> select fsc.COMPONENT_NAME,fsc.STARTUP_MODE,fsc.COMPONENT_STATUS
from APPS.FND_CONCURRENT_QUEUES_VL fcq, fnd_svc_components fsc where fsc.concurrent_queue_id = fcq.concurrent_queue_id(+)
order by COMPONENT_STATUS , STARTUP_MODE , COMPONENT_NAME;
DBA必見!Oracle Workflow Notification Mailer(ワークフロー通知メーラー)の問題対処とメンテナンス術
SQL> update fnd_svc_components fsc set fsc.STARTUP_MODE='MANUAL' where fsc.COMPONENT_NAME='Workflow Notification Mailer';

1 row updated.

SQL> commit;

Commit complete.

スクリプト3:バックエンドからのパスワード更新

このスクリプトは、バックエンドから直接Workflow Notification Mailerのパスワードを更新します。

SQL> @wfmlrpwupd_in.sql
Enter value for password: *****
Enter value for componentid: 10006
Updated

SQL> @wfmlrpwupd_out.sql
Enter value for password: *****
Enter value for componentid: 10006
Updated

スクリプト4:afsvcpup.sqlによる設定値の一括変更

以下の単一スクリプトを使用すると、バックエンドからWorkflow Notification Mailerの各種設定値をまとめて変更できます。

$FND_TOP/sql/afsvcpup.sql
DBA必見!Oracle Workflow Notification Mailer(ワークフロー通知メーラー)の問題対処とメンテナンス術 DBA必見!Oracle Workflow Notification Mailer(ワークフロー通知メーラー)の問題対処とメンテナンス術

まとめ

Workflow Notification Mailerは多くのコンポーネントで構成されており、一筋縄ではいかない問題もいくつか存在します。wf_* テーブルを更新する前に、必ずバックアップを取得することを忘れないでください。

また、スクリプトを実行して修正を適用する前に、該当するOracle MetaLinkノートを必ず参照してください。MetaLinkには、本記事で紹介したもの以外にも、Workflow Notification Mailerの問題解決に役立つ多数のスクリプトが公開されています。

ご意見やご質問がある場合は、フィードバックタブからお気軽にお寄せください。チャットから会話を始めることも可能です。

データベースに関する詳細については、関連ページもあわせてご覧ください。


  1. 動画のバッファリングを解消する6つのコツ|快適なストリーミング体験のための対処法

    友達と一緒にお気に入りのドラマをオンラインで視聴している最中、クライマックスを迎えようとした瞬間に動画がバッファリングを始めてしまう——これほどイライラさせられることはありませんよね。動画が読み込まれるのをただ待つ時間ほど、ストレスが溜まるものはありません。 インターネットにおいて、通信速度は非常に重要です。スマートフォンやノートパソコンでYouTubeの動画を見るときも、テレビでお気に入りの映画やドラマを観るときも、何度もバッファリングで再生が止まってしまっては、せっかくの視聴体験が台無しになってしまいます。特にライブ配信を視聴している場合、バッファリングの問題は一刻も早く解決しなければなり

  2. Windows 11をゲーム向けに最適化する方法【8つの設定テクニック】

    高性能なゲーミングPCやノートパソコンを手に入れて、ゲーム体験を向上させようとしている方は多いでしょう。しかし、ハードウェアだけでなく、PC側の特定の設定を有効にすることでもゲーム体験は大幅に向上することをご存知でしょうか。ゲームの動作が遅い、Windows 11がフリーズするといった悩みを抱えているなら、ここで紹介する8つの方法でPCを最適化し、Windows 11のゲームパフォーマンスをブーストしましょう。 CPU(中央処理装置)は演算処理を受け取って実行する役割を担い、GPU(グラフィックス処理装置)はゲーム内で見る画像を描画する役割を持ちます。そしてRAM(メインメモリ)はデータを短期