ジャーナルの自動削除機能をテストしてみました。
PGM
DCL &LIB *CHAR 10 'TST'
MONMSG CPF0000
CRTJRNRCV &LIB/JRNRCV THRESHOLD(5000)
CRTJRN &LIB/JRN JRNRCV(&LIB/JRNRCV) MNGRCV(*SYSTEM) DLTRCV(*NO)
CRTPF &LIB/JRNPF RCDLEN(1000) SIZE(*NOMAX)
STRJRNPF &LIB/JRNPF JRN(&LIB/JRN) IMAGES(*BOTH)
RETURN
ENDPGM
|
この後、JRNPFに膨大なレコードを追加してみます。
Command Entry
Request level: 4
All previous commands and messages:
Ownership of object JRN in TST type *JRN changed.
Journal JRN created in library TST.
1100 - CRTPF FILE(TST/JRNPF) RCDLEN(1000) SIZE(*NOMAX)
File JRNPF created in library TST.
Member JRNPF added to file JRNPF in TST.
1300 - STRJRNPF FILE(TST/JRNPF) JRN(TST/JRN) IMAGES(*BOTH)
File JRNPF started journaling to journal JRN.
1 files have started journaling.
2100 - RETURN
4 > CPYF FROMFILE(QTEMP/Q) TOFILE(JRNPF) MBROPT(*ADD)
23386 records copied from member JRNPF.
Bottom
Type command, press Enter.
===>
F3=Exit F4=Prompt F9=Retrieve F10=Exclude detailed messages
F11=Display full F12=Cancel F13=Information Assistant F24=More keys
|
さらに、WRKJRNAでジャーナルの接続状況をみると、
Work with Receiver Directory
Journal . . . . . . : JRN Library . . . . . . : TST
Total size of receivers (in kilobytes) . . . . . . . . . . . : 31516
Type options, press Enter.
4=Delete 8=Display attributes
Attach Size
Opt Receiver Library Number Date Status (K)
JRNRCV TST 00001 04/23/02 ONLINE 5768
JRNRCV0001 TST 00002 04/23/02 ONLINE 5128
JRNRCV0002 TST 00003 04/23/02 ONLINE 5128
JRNRCV0003 TST 00004 04/23/02 ONLINE 5128
JRNRCV0004 TST 00005 04/23/02 ONLINE 5128
JRNRCV0005 TST 00006 04/23/02 ONLINE 5128
More...
Parameters or command
===>
F3=Exit F4=Prompt F5=Refresh F9=Retrieve F11=Display systems
F12=Cancel
|
と勝手に切り離されています。
CRTJRNRCV &LIB/JRNRCV THRESHOLD(5000)敷居値を5000KBにしているので、大体その値で切り離されています。
今度は、同じことを、DLTRCV(*YES)にして行います。
Work with Receiver Directory
Journal . . . . . . : JRN Library . . . . . . : TST
Total size of receivers (in kilobytes) . . . . . . . . . . . : 3868
Type options, press Enter.
4=Delete 8=Display attributes
Attach Save
Opt Receiver Library Number Date Status Date
JRNRCV0005 TST 00001 04/23/02 ATTACHED 00/00/00
Bottom
Parameters or command
===>
F3=Exit F4=Prompt F5=Refresh F9=Retrieve F11=Display size
F12=Cancel
|
このように、onlineになっているものが、一つも無く、接続中のジャーナルのみが残っています。残りは、システムが勝手に削除しています。
マニュアルによれば、この機能は、限定的に使用するものとして説明されています。
システム変更ジャーナル管理を選択する場合、回復に必要がなくなったジャーナ
ル・レシーバーをシステムに削除させることもできます。システムは、アクセス・
パスの回復またはコミットされた変更のロールバックなどのような、システム自体
の回復機能にレシーバーが必要かどうかを評価できるだけです。システムは、ジャ
ーナルされた変更を適用または除去するのにレシーバーが必要かどうかを判別する
ことはできません。
次の条件のうちのいずれかが真の場合には、システムはジャーナル・レシーバーを
削除することができません (DLTRCV (*YES)
が使用される場合でも)。
- ジャーナル・レシーバーの削除 (DLTJRNRCV)
出口点 (QIBM_QJO_DLT_JRNRCV)
用に登録された出口プログラムが、レシーバーが削除に適さないことを示して
いる。
- ジャーナルに遠隔ジャーナルが関連付けられており、関連するそれらの遠隔ジ
ャーナルの 1
つ以上がこのレシーバーの完全なコピーを持っていない。
- 操作を完了するのに必要な適切なロックをシステムが取得できなかった。
- 出口プログラムが登録されたかどうかを判別するために、出口プログラム登録
機能を利用できなかった。
システムの削除レシーバー・サポートを使用する場合、環境が適切であることを確
認する必要があります。QSYSOPR
メッセージ待ち行列、およびジャーナルに割り当
てられたメッセージ待ち行列を定期的にチェックする必要もあります。
- 上記のいずれかの理由によりシステムが
DLTJRNRCV コマンドを完了できない 場合、システムは
10
分おきに再試行します。それからジャーナルのメッセー
ジ待ち行列と QSYSOPR メッセージ待ち行列に CPI70E6
メッセージを送信しま
す。このようなとき、なぜその操作を実行できないかを判別し、その条件を訂
正するか、DLTJRNRCV
コマンドを実行することができます。
- 他の何らかの理由によりシステムがコマンドを完了できない場合、システムは
ジャーナルに割り当てられたメッセージ待ち行列に
CPI70E1 メッセージを送
信します。ジャーナルにメッセージ待ち行列を特別に割り当てていない場合、
メッセージは QSYSOPR
メッセージ待ち行列に送信されます。QHST
のメッセー
ジを見て問題を判別してください。その問題を訂正してから、特定のジャーナ
ル・レシーバーで DLTJRNRCV
コマンドを使用してください。
切り離されたジャーナル・レシーバーが回復に必要な場合、または削除する前にそ
れを保管したい場合、それを削除する選択はしないでください。システムはジャー
ナル・レシーバーを削除する前に保管することはありません。ユーザーが保管され
ていないレシーバーを削除しようとした場合に出す警告メッセージ
(CPA7025) を システムが出すことはありません。
DLTRCV(*YES)
を指定できるときの例には、次のものが含まれます。
- コミットメント制御のジャーナル処理をしているとき。
- 明示のアクセス・パス保護のジャーナル処理をしているとき。
- ユーザーが遠隔ジャーナル機能によって別のシステムにジャーナル・レシーバ
ーを複写しており、そのシステムがジャーナル・レシーバーのバックアップ・
コピーを提供しているとき。
注: このパラメーターを指定できるのは、MNGRCV(*SYSTEM)
を指定するときと、
ジャーナルが遠隔ジャーナルのときに限られます。
|
今度はさらに、コミットメントコントロールをして、サスペンド状態でのテストをしました。サスペンドしているときに、消えてしまっては、困るからです。
上記設定で、STRCMTCTLをして、下記RPGを流します。意図的に、ROLBKもCOMITもしていません。
FJRNPF IF E DISK A
F KCOMIT
F JRNPF KRENAMEJRN001R
IJRN001R
I JRNPF JRNPFD
C 1 DO 60000
C WRITEJRN001R
C ENDDO
C*
C MOVE *ON *INLR
C RETRN
C READ JRN001R 90
|
DSPRCDLCK JRNPF (同一ジョブでこれだけたくさんのレコードロックは、コミットメントの特徴ですね)
Display Member Record Locks
System:
File . . . . . . . . : JRNPF Member . . . . . . . : JRNPF
Library . . . . . : TST
Record Lock
Number Job User Number Status Type
1 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
2 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
3 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
4 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
5 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
6 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
7 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
8 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
9 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
10 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
11 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
12 JOBJOBJOB TESTUSER1 676742 HELD UPDATE
More...
Press Enter to continue.
F3=Exit F5=Refresh F12=Cancel
|
Work with Journal Attributes
Journal . . . . . . : JRN Library . . . . . . : TST
Auxiliary storage Journal type . . . . : *LOCAL
pool . . . . . . . : 1 Journal state . . . : *ACTIVE
Message queue . . . : QSYSOPR Receiver size options: *NONE
Library . . . . . : *LIBL
Manage receivers . . : *SYSTEM
Delete receivers . . : *YES
Text . . . . . . . . : *BLANK
Type options, press Enter.
8=Display attributes
Attached
Option Receiver Library
JRNRCV0002 TST
Bottom
F3=Exit F5=Refresh F12=Cancel F13=Display journaled files
F14=Display journaled access paths F24=More keys
|
Work with Receiver Directory
Journal . . . . . . : JRN Library . . . . . . : TST
Total size of receivers (in kilobytes) . . . . . . . . . . . : 16300
Type options, press Enter.
4=Delete 8=Display attributes
Attach Save
Opt Receiver Library Number Date Status Date
JRNRCV TST 00001 04/23/02 ONLINE 00/00/00
JRNRCV0001 TST 00002 04/23/02 ONLINE 00/00/00
JRNRCV0002 TST 00003 04/23/02 ATTACHED 00/00/00
Bottom
Parameters or command
===>
F3=Exit F4=Prompt F5=Refresh F9=Retrieve F11=Display size
F12=Cancel
|
本来、切り離された後で、消されているはずのジャーナルは残っています。ここで、ENDCMTCTLをして、RBを指定してみます。ログには、以下のように出ました。
ENDCMTCTL
ENDCMTCTL requested with changes pending. (RB C CM)
RB
60000 pending changes being rolled back.
Commitment control ended with 60000 local changes not committed.
|
そこで、データを確認すると、
Display Physical File Member
File . . . . . . : JRNPF Library . . . . : TST
Member . . . . . : JRNPF
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+...
(Selected member contains no records)
Bottom
F3=Exit F12=Cancel
|
予定通りデータはありません。また、WRKJRNA JRNを実行すると
Work with Receiver Directory
Journal . . . . . . : JRN Library . . . . . . : TST
Total size of receivers (in kilobytes) . . . . . . . . . . . : 2588
Type options, press Enter.
4=Delete 8=Display attributes
Attach Save
Opt Receiver Library Number Date Status Date
JRNRCV0005 TST 00001 04/23/02 ATTACHED 00/00/00
Bottom
Parameters or command
===>
F3=Exit F4=Prompt F5=Refresh F9=Retrieve F11=Display size
F12=Cancel
|
で、切り離され削除されていなかった、ジャーナルレシーバーは削除されました。まったく問題ないようです。
テストしていて気が付きましたが、敷居値が小さく設定されて、データが一気に大量に書き出されると、切り離しそのものに時間がかかり、レスポンスが遅くなるようです。実施した上での最適な値を探し出したほうがよさそうです。
これらを考えると、運用上、MNGRCV(*SYSTEM) DLTRCV(*YES)を利用しない場合よりも、利用したほうが、効率がいいのではないかと思います。
利用にあたっては、そのジャーナルの使い道が、本当に、コミット機能に限定されているのか、が、ポイントです。
2002-5-2
|