Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド


6.1.4 プロセスインスタンスの実行履歴を削除する

リクエストを再送信する場合,またはテスト実行したプロセスインスタンスを削除する場合など,不要になったプロセスインスタンスの実行履歴を,1件ずつ削除できます。

また,プロセスインスタンスの実行履歴は,日々追加されていくため,定期的に情報を削除しないとデータベースの容量が圧迫されます。そこで,定期的に,管理者はデータベース上の実行履歴情報テーブルから,プロセスインスタンスの実行履歴を削除する必要があります。日常運用では通常,バッチ化して,実行履歴を一括削除できます。

プロセスインスタンスの実行履歴の削除は,画面による方法,コマンドによる方法およびデータベース作成ユティリティ(pdload)による方法があります。

〈この項の構成〉

(1) 画面による実行履歴の削除

(a) 1件ずつ削除する場合

画面上でプロセスインスタンスの実行履歴を1件ずつ削除する手順を次に示します。

  1. プロセスインスタンスを検索します。

  2. 検索結果一覧から,削除したいプロセスインスタンスの実行履歴を選択します。

  3. [履歴削除]ボタンをクリックします。

    プロセスインスタンス実行履歴削除の実行確認ダイアログが表示されます。

    「実行中」のプロセスインスタンスを含む場合は,実行中のプロセスインスタンスの実行履歴を削除するかどうかを確認するダイアログが表示されます。

  4. [OK]ボタンをクリックします。

    プロセスインスタンスの実行履歴が削除され,プロセスインスタンスの実行履歴削除の実行結果ダイアログが表示されます。

  5. [OK]ボタンをクリックします。

    検索結果一覧が更新されます。

(b) 一括して削除する場合

画面によってプロセスインスタンスの実行履歴を一括削除する手順を次に示します。

  1. プロセスインスタンスを検索します。

  2. 検索結果一覧から,削除したいプロセスインスタンスの実行履歴を選択します。

    [Ctrl]キーまたは[Shift]キーを使用して,複数のプロセスインスタンスを選択します。

  3. [履歴削除]ボタンをクリックします。

    プロセスインスタンス実行履歴削除の実行確認ダイアログが表示されます。

    「実行中」のプロセスインスタンスを含む場合は,実行中のプロセスインスタンスの実行履歴を削除するかどうかを確認するダイアログが表示されます。

  4. [OK]ボタンをクリックします。

    プロセスインスタンスの実行履歴が削除され,プロセスインスタンスの実行履歴削除の実行結果ダイアログが表示されます。

  5. [OK]ボタンをクリックします。

    検索結果一覧が更新されます。

注意事項

一括削除に失敗した場合,選択したプロセスインスタンスはまったく削除されません。

(2) コマンドによる実行履歴の削除

cscpideleteコマンドを使った実行履歴の削除について説明します。cscpideleteコマンドの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「cscpidelete(プロセスインスタンスの実行履歴の削除)」を参照してください。

(a) 1件ずつ削除する場合

コマンドによってプロセスインスタンスの実行履歴を1件ずつ削除する手順を次に示します。

  1. アクセスするHCSCサーバを決定します。

  2. cscpiselectコマンドで,削除したいプロセスインスタンスを検索します。

  3. 検索結果から,削除対象のプロセスインスタンスのプロセスIDを特定します。

  4. 次のコマンドを実行して削除します。

    • where句を直接指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>
    注※

    削除対象のプロセスインスタンスの削除条件を指定します。

    • where句が記載されたファイルを使用する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>
    注※

    削除対象のプロセスインスタンスの削除条件を指定します。

    • IDのリストが記載されたファイルを指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -idlist <IDのリストが記載されたファイル名>
(例)次の条件でコマンドを入力して,プロセスインスタンスの実行履歴を削除します。
  • 削除対象のプロセスID:J2EEServer_010209010042_XXXPurchaseRegisterService_1142479241203_760331597_2115

  • アクセスするHCSCサーバ:HCSC

コマンド
  • -wherefileオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt

    delete_where.txtの内容

    ProcessID = 'J2EEServer_010209010042_XXXPurchaseRegisterService_1142479241203_760331597_2115'
  • -idlistオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -idlist delete_id_list.txt

    delete_id_list.txtの内容

    J2EEServer_010209010042_XXXPurchaseRegisterService_1142479241203_760331597_2115

(b) プロセスインスタンスのビジネスプロセス定義名を指定して一括削除する場合

コマンドによってプロセスインスタンスのビジネスプロセス定義名を指定し,実行履歴を一括削除する手順を次に示します。

  1. アクセスするHCSCサーバを決定します。

  2. 次のコマンドを実行して削除します。

    • where句を直接指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>
    注※

    列名ProcessDefinitionNameに対してのSQL条件を指定します。

    • where句が記載されたファイルを使用する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>
    注※

    列名ProcessDefinitionNameに対してのSQL条件を指定します。

    • ビジネスプロセス定義名を直接指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -processname <ビジネスプロセス定義名>
(例)次の条件でコマンドを入力して,プロセスインスタンスの実行履歴を一括削除します。
  • ビジネスプロセス定義名:Helloビジネスプロセス

  • アクセスするHCSCサーバ:HCSC

コマンド
  • -wherefileオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt

    delete_where.txtの内容

    ProcessDefinitionName=' Helloビジネスプロセス '
  • -processnameオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -processname Helloビジネスプロセス

(c) プロセスインスタンスの開始日時を指定して一括削除する場合

コマンドによってプロセスインスタンスの開始日時を指定し,実行履歴を一括削除する手順を次に示します。

注意事項

削除する場合に指定する開始日時は,コマンドに指定するオプションによって使用する時法が異なります。

  • -whereオプションまたは-wherefileオプションのwhere句が記載されたファイルに指定する場合:グリニッジ標準時間(GMT)

  • -dateオプションで指定する場合:デフォルトタイムゾーン

  1. アクセスするHCSCサーバを決定します。

  2. 次のコマンドを実行して削除します。

    • where句を直接指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>
    注※

    列名StartTimeに対してのSQL条件を指定します。

    • where句の記載されたファイルを使用する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>
    注※

    列名StartTimeに対してのSQL条件を指定します。

    • 開始日時範囲を直接指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -date <照会開始日時>,<照会終了日時>
    注※

    照会開始日時は省略できます。

(例)次の条件でコマンドを入力して,プロセスインスタンスの実行履歴を一括削除します。
  • 開始日時範囲:2008/10/09 14:59:59以前(グリニッジ標準時間)

  • アクセスするHCSCサーバ:HCSC

コマンド
  • -wherefileオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt

    delete_where.txtの内容

    StartTime <= '2008-10-09 14:59:59'
  • -dateオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -date ,20081009235959
注※

-dateオプションのデフォルトタイムゾーンは,日本時間を使用しています。

(例)次の条件でコマンドを入力して,プロセスインスタンスの実行履歴を一括削除します。
  • 開始日時範囲:2008/10/08 15:00:00〜2008/10/09 14:59:59(グリニッジ標準時間)

  • アクセスするHCSCサーバ:HCSC

コマンド
  • -wherefileオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt

    delete_where.txtの内容

    StartTime BETWEEN '2008-10-08 15:00:00' AND '2008-10-09 14:59:59'
  • -dateオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -date 20081009000000,20081009235959
注※

-dateオプションのデフォルトタイムゾーンは,日本時間を使用しています。

(d) プロセスインスタンスの状態を指定して一括削除する場合

コマンドによってプロセスインスタンスの状態を指定し,実行履歴を一括削除する手順を次に示します。

  1. アクセスするHCSCサーバを決定します。

  2. 次のコマンドを実行して削除します。

    • where句を直接指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>
    注※

    列名Stateに対してのSQL条件を指定します。

    • where句が記載されたファイルを使用する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>
    注※

    列名Stateに対してのSQL条件を指定します。

    • 状態を直接指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -status {executing|completed|faulted|error|all}
    注※

    どれか1つを指定します。

(例)次の条件でコマンドを入力して,プロセスインスタンスの実行履歴を一括削除します。
  • プロセスインスタンスの状態:実行中

  • アクセスするHCSCサーバ:HCSC

コマンド
  • -wherefileオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt

    delete_where.txtの内容

    State='Executing'

State='Completed'以外の条件を指定すると,完了したプロセスインスタンス以外の削除条件で削除されるため,注意が必要です。

  • -statusオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -status executing

(e) プロセスインスタンスのビジネスプロセス定義名,開始日時,および状態を組み合わせて一括削除する場合

コマンドによってプロセスインスタンスのビジネスプロセス定義名,開始日時,および状態を組み合わせて指定し,一括削除する手順を次に示します。

注意事項

削除する場合に指定する開始日時は,コマンドに指定するオプションによって使用する時法が異なります。

  • -whereオプションまたは-wherefileオプションのwhere句が記載されたファイルに指定する場合:グリニッジ標準時間(GMT)

  • -dateオプションで指定する場合:デフォルトタイムゾーン

  1. アクセスするHCSCサーバを決定します。

  2. 次のコマンドを実行して削除します。

    • where句を直接指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -where <where句>
    注※

    列名ProcessDefinitionName,StartTime,およびStateに対してのSQL条件を指定します。

    • where句が記載されたファイルを使用する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -wherefile <where句が記載されたファイル名>
    注※

    列名ProcessDefinitionName,StartTime,およびStateに対してのSQL条件を指定します。

    • ビジネスプロセス定義名,開始日時範囲,および状態を直接指定する場合

      cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -processname <ビジネスプロセス定義名> -date <照会開始日時>※1,<照会終了日時> -status {executing|completed|faulted|error|all}※2
    注※1

    照会開始日時は省略できます。

    注※2

    どれか1つを指定します。

(例)次の条件でコマンドを入力して,プロセスインスタンスの実行履歴を一括削除します。
  • ビジネスプロセス定義名:Helloビジネスプロセス

  • 開始日時範囲:2008/10/09 14:59:59以前(グリニッジ標準時間)

  • プロセスインスタンスの状態:実行中

  • アクセスするHCSCサーバ:HCSC

コマンド
  • -wherefileオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -wherefile delete_where.txt

    delete_where.txtの内容

    ProcessDefinitionName=' Helloビジネスプロセス ' AND StartTime <= '2008-10-09 14:59:59' AND State='Executing'
  • -processnameオプション,-dateオプション,および-statusオプションを指定した場合

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -processname Helloビジネスプロセス -date ,20081009235959 -status executing

    注※

    -dateオプションのデフォルトタイムゾーンは,日本時間を使用しています。

(f) すべてのプロセスインスタンスの実行履歴を一括削除する場合

コマンドによってすべてのプロセスインスタンスの実行履歴を一括削除する手順を次に示します。

  1. アクセスするHCSCサーバを決定します。

  2. 次のコマンドを実行して削除します。

    cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc <HCSCサーバ名> -force
(例)次の条件でコマンドを入力して,すべてのプロセスインスタンスの実行履歴を一括削除します。
  • アクセスするHCSCサーバ:HCSC

コマンド
cscpidelete -user <ログインユーザID> -pass <ログインパスワード> -csc HCSC -force

(g) 削除処理時間を指定して一括削除する場合

削除したいプロセスインスタンスの実行履歴の量が膨大になると,すべての削除処理の完了までに長時間を要するおそれがあります。削除処理がリクエスト処理に影響を与えないよう,一括削除の処理時間を限定することもできます。

削除処理を中断するまでの経過時間は,cscpideleteコマンドの-canceltimerオプションに秒単位で指定できます。これによって,コミット後に指定された時間を超過すると削除処理を中断でき,その後の削除処理が実行されないようになります。

(例)

次の例では,2005年3月31日までに蓄積されたデータを600秒でできるかぎり削除します。

cscpidelete -csc CSCSrv1 -date ,20050331235959 -canceltimer 600

cscpideleteコマンドの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「cscpidelete(プロセスインスタンスの実行履歴の削除)」を参照してください。

(3) データベース作成ユティリティ(pdload)による実行履歴の削除

テーブル分割機能を利用する環境では,ビジネスプロセスの実行履歴をHiRDBの機能を利用してRDエリア(月)単位で削除できます。テーブル分割機能を利用する場合,RDエリアの循環割り当てを実行するため,日々追加される実行履歴を定期的に削除する必要があります。

ただし,RDエリア単位の実行履歴の削除を利用した場合,「Executing(実行中)」や「Error(エラー)」状態のデータも削除されます。事前に,削除したくないデータが含まれていないかを次の方法で確認してください。

確認方法の例
SELECT count(*) FROM CSCBP_<クラスタ名>_PROCESS IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WHERE State IN ('Executing','Error') WITHOUT LOCK NOWAIT

削除したくないデータは事前に退避してください。実行履歴の退避手順と削除手順を次に示します。

(a) 実行履歴の退避手順

データを退避する際の前提条件を次に示します。

  • すべてのHCSCサーバの受付が停止状態であることを確認してください。

  • 仕掛かり中のリクエストがないことを確認してください。

  • Service Coordinatorのコマンドは実行しないでください。

  • 退避処理はメモリ上(Javaプログラム)で実行してください。

データの退避手順を次に示します。

  1. JDBCドライバを使ってデータベース(HiRDB)に接続します。

    接続時には次の点に注意してください。

    • 接続時のユーザプロパティのLONGVARBINARY_ACCESSは,LOCATORにすることを推奨します。

      LONGVARBINARY_ACCESSにREALを設定する場合は,HiRDB_for_Java_MAXBINARYSIZEに適切な上限値を設定してください。

      HiRDB_for_Java_MAXBINARYSIZEを設定しなかった場合,CSCBP_<クラスタ名>_MSG_VARIABLEテーブルのVariableValueのデータの取得に2,147,483,639バイトのメモリを確保しようとするため,java.lang.OutOfMemoryErrorが発生するおそれがあります。

      また,HiRDB_for_Java_MAXBINARYSIZEの設定値がCSCBP_<クラスタ名>_MSG_VARIABLEテーブルのVariableValueに格納されているデータの最大長よりも小さい場合,超過したデータが切り捨てられ,システムが正常に動作しなくなるおそれがあります。

    • 自動コミットは無効にすることを推奨します。

      無効にしなかった場合,退避処理中に障害が発生すると,システムが正常に動作しなくなるおそれがあります。

  2. 退避対象のプロセスインスタンスを特定します。

    削除対象のRDエリアに格納されている,状態(State)が「Executing」または「Error」のプロセスインスタンスを退避させる場合,次に示すSQLを発行して,退避対象のプロセスインスタンス識別子の一覧を取得してください。

    SELECT ProcessID FROM CSCBP_<クラスタ名>_PROCESS
            IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
            WHERE State IN ('Executing', 'Error')
           WITHOUT LOCK NOWAIT;
  3. 退避対象のプロセスインスタンスの格納先を変更します。

    手順2.で取得したプロセスインスタンス識別子をキーとして,次に示すすべてのテーブルの格納先を変更してください。

    • CSCBP_<クラスタ名>_PROCESS

    • CSCBP_<クラスタ名>_ACTIVITY

    • CSCBP_<クラスタ名>_LINK

    • CSCBP_<クラスタ名>_CORRELATIONSET

    • CSCBP_<クラスタ名>_STR_VARIABLE

    • CSCBP_<クラスタ名>_NUM_VARIABLE

    • CSCBP_<クラスタ名>_BOOL_VARIABLE

    • CSCBP_<クラスタ名>_MSG_VARIABLE

    • CSCBP_<クラスタ名>_MSG_RELATION

    格納先の変更手順を次に示します。取得したプロセスインスタンス識別子が複数ある場合は,手順(i)〜(iii)を複数回実行してください。

    (i)対象のプロセスインスタンス識別子の全データを取得します。

    次のSQLを発行し,退避対象の全データを取得してください。

    SELECT * FROM CSCBP_<クラスタ名>_PROCESS
        IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
    WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT;
     
    SELECT * FROM CSCBP_<クラスタ名>_ACTIVITY
        IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
    WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT;
     
    SELECT * FROM CSCBP_<クラスタ名>_LINK
        IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
    WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT;
     
    SELECT * FROM CSCBP_<クラスタ名>_CORRELATIONSET
        IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
    WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT;
     
    SELECT * FROM CSCBP_<クラスタ名>_STR_VARIABLE
        IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
    WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT;
     
    SELECT * FROM CSCBP_<クラスタ名>_NUM_VARIABLE
        IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
    WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT;
     
    SELECT * FROM CSCBP_<クラスタ名>_BOOL_VARIABLE
        IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
    WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT;
     
    SELECT * FROM CSCBP_<クラスタ名>_MSG_VARIABLE
        IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
    WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT;
     
    SELECT * FROM CSCBP_<クラスタ名>_MSG_RELATION
        IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…')
    WHERE ProcessID = <プロセスインスタンス識別子> WITHOUT LOCK NOWAIT;
    (ii)SplitKey列の値を更新し,テーブルに再登録します。

    SplitKey列の値を次回の削除対象のRDエリアに割り当てられるよう変更(例えば,RDエリアの分割が1か月単位で,今回の削除対象が12月('12')の場合は,1月('01')へ変更)し,INSERT文を発行します。

    そのためには,取得したすべてのデータに対して次のSQLを発行し,退避対象のデータが別のRDエリアに割り当てられるよう再登録する必要があります。手順(i)のSELECT文で取得したレコードの数だけINSERT文を発行してください。

    INSERT INTO CSCBP_<クラスタ名>_PROCESS
    (ProcessID,ProcessDefinitionName,ProcessDefinitionVersion,State,ChangeCount, 
    StartTime,EndTime,CSCServerName,SplitKey)
    VALUES (<(i)で取得したSplitKey列以外のデータ>, '01');
     
    INSERT INTO CSCBP_<クラスタ名>_ACTIVITY
    (ProcessID,ActivityNumber,ActivityDefinitionName,ActivityKind,ParentNumber,
    ScopeNumber,RepeatNumber,State,FirstChildNumber,LastChildNumber,StartTime,EndTime,
    WaitTime,SplitKey)
    VALUES (<(i)で取得したSplitKey列以外のデータ>, '01');
     
    INSERT INTO CSCBP_<クラスタ名>_LINK
    (ProcessID,LinkDefinitionName,RepeatNumber,State,SplitKey)
    VALUES (<(i)で取得したSplitKey列以外のデータ>, '01');
     
    INSERT INTO CSCBP_<クラスタ名>_CORRELATIONSET
    (ProcessID,ProcessDefinitionName,ProcessDefinitionVersion,ScopeDefinitionName,
    ScopeNumber,CorrelationSetName,CorrelationSetValue,State,SplitKey)
    VALUES (<(i)で取得したSplitKey列以外のデータ>, '01');
     
    INSERT INTO CSCBP_<クラスタ名>_STR_VARIABLE
    (ProcessID,ScopeNumber,VariableName,VariableValue,SplitKey)
    VALUES (<(i)で取得したSplitKey列以外のデータ>, '01');
     
    INSERT INTO CSCBP_<クラスタ名>_NUM_VARIABLE
    (ProcessID,ScopeNumber,VariableName,VariableValue,SplitKey)
    VALUES (<(i)で取得したSplitKey列以外のデータ>, '01');
     
    INSERT INTO CSCBP_<クラスタ名>_BOOL_VARIABLE
    (ProcessID,ScopeNumber,VariableName,VariableValue,SplitKey)
    VALUES (<(i)で取得したSplitKey列以外のデータ>, '01');
     
    INSERT INTO CSCBP_<クラスタ名>_MSG_VARIABLE
    (ProcessID,ScopeNumber,VariableName,VariableValue,SplitKey)
    VALUES (<(i)で取得したSplitKey列以外のデータ>, '01');
     
    INSERT INTO CSCBP_<クラスタ名>_MSG_RELATION
    (MessageID,ProcessID,ActivityNumber,SendOrReceive,
    AsynchronousMessagingID,SplitKey)
    VALUES (<(i)で取得したSplitKey列以外のデータ>, '01');

    • 1〜9月へ更新する場合,「01」のように前に0を付けてください。

    • SplitKey列以外の値は変更しないでください。

    • 同じプロセスインスタンス識別子のSplitKey列の値は一致させてください。

      なお,退避したプロセスインスタンスを再実行したり,相関セットを指定した後続処理を呼び出したりした場合,新しくデータベースに格納されるデータのSplitKey列の値は,「プロセスインスタンスが開始された月(GMT)」ではなく,この手順でINSERTしたSplitKeyの値と同じ値になります。

    (iii)トランザクションをコミットします。

    自動コミットが無効のまま大量の処理を実行すると,資源不足が発生するおそれがあります。定期的(例えば,プロセスインスタンス識別子100件単位)にトランザクションのコミットを発行して,資源を解放してください。

  4. コネクションを破棄します。

(b) 実行履歴の削除手順

RDエリア単位の削除手順を次に示します。

  1. 削除対象のデータが格納されたRDエリアを閉塞させます。

    データ用RDエリアとインデクス用RDエリアの両方に対して,次のコマンドを実行してください。

    pdhold -r <RDエリア名>
  2. RDエリアに格納されている削除対象のデータをアンロードします。

    この手順は任意です。RDエリアに格納されているデータをバックアップしたい場合に実施してください。

    アンロードは次の形式でテーブルごとに実行してください。

    pdrorg -k unld -t <テーブル名>※1 -r <データ用RDエリア名> <制御情報ファイル名>※2
    注※1

    テーブル名には次の名称を指定してください。

    CSCBP_<クラスタ名>_PROCESS

    CSCBP_<クラスタ名>_ACTIVITY

    CSCBP_<クラスタ名>_LINK

    CSCBP_<クラスタ名>_CORRELATIONSET

    CSCBP_<クラスタ名>_STR_VARIABLE

    CSCBP_<クラスタ名>_NUM_VARIABLE

    CSCBP_<クラスタ名>_BOOL_VARIABLE

    CSCBP_<クラスタ名>_MSG_VARIABLE

    CSCBP_<クラスタ名>_MSG_RELATION

    注※2

    指定する制御情報ファイルには次の内容を記述してください。

    HiRDB/Single Serverの場合

    unload <各テーブルのデータをアンロードするファイルのパス>

    HiRDB/Parallel Serverの場合

    unload <バックエンドサーバ名>:<各テーブルのデータをアンロードするファイルのパス>

    なお,pdrorgでアンロードしたデータをテーブルに格納し直す方法については,マニュアル「HiRDB Version 10 コマンドリファレンス(Windows(R)用)」または「HiRDB Version 10 コマンドリファレンス(UNIX(R)用)」の,pdrorg出力バイナリ形式ファイルの記述を参照してください。

  3. RDエリアに格納された既存のデータを削除して,0件のデータをロードします。

    ロード方法は次のとおりです。インデクスの情報もデータの内容に合わせてロードされます。出力されたエラー情報ファイルの内容を参照し,エラーが発生していないことを確認してください。

    pdload -d CSCBP_<クラスタ名>_PROCESS <制御情報ファイル名>
    pdload -d CSCBP_<クラスタ名>_ACTIVITY <制御情報ファイル名>
    pdload -d CSCBP_<クラスタ名>_LINK <制御情報ファイル名>
    pdload -d CSCBP_<クラスタ名>_CORRELATIONSET <制御情報ファイル名>
    pdload -d CSCBP_<クラスタ名>_STR_VARIABLE <制御情報ファイル名>
    pdload -d CSCBP_<クラスタ名>_NUM_VARIABLE <制御情報ファイル名>
    pdload -d CSCBP_<クラスタ名>_BOOL_VARIABLE <制御情報ファイル名>
    pdload -d CSCBP_<クラスタ名>_MSG_VARIABLE <制御情報ファイル名>
    pdload -d CSCBP_<クラスタ名>_MSG_RELATION <制御情報ファイル名>

    指定する制御情報ファイルには次の内容を記述してください。<データファイルのパス>に指定する,データが0件(中身が空)のファイルを事前に用意してください。

    HiRDB/Single Serverの場合
    source <データ用RDエリア名> <データファイルのパス>
    HiRDB/Parallel Serverの場合
    source <データ用RDエリア名> <バックエンドサーバ名>:<データファイルのパス>
  4. RDエリアの閉塞を解除します。

    次のコマンドを実行し,手順1.で実施したRDエリアの閉塞を解除してください。

    pdrels -r <RDエリア名>

この手順によってRDエリア単位の削除が正しく実行されたかどうかは,次に示すSQLを発行することで確認できます。

SELECT count(*) FROM CSCBP_<クラスタ名>_PROCESS IN ('<削除対象のRDエリア名1>,<削除対象のRDエリア名2>,…') WITHOUT LOCK NOWAIT;