LoginSignup
1
0

More than 3 years have passed since last update.

z/Db2のCOPYユーティリティでハマった話

Last updated at Posted at 2019-09-29

z/Db2のCOPYユーティリティでハマった話

メインフレームの現場から離れて4か月。少しずつメインフレームの知識を忘れていると感じたため、自分自身の備忘録として書きます。
結構忘れてきてるから、コードに自信がない・・・

ある朝のことz/Db2のCOPYユーティリティを使用して実行している定期バックアップジョブがabendしてた・・・orz
でも、原因が分からない。それまで普通に動いてたのに・・・
バックアップ容量も見積もって余裕を持たせてるし、バックアップジョブの実行時間にも問題ない。
なのにどうして!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

原因はz/Db2ユーティリティのTEMPLATEだった

-TEMPLATEユーティリティは各テンプレートに関して、テンプレート名、データ・セットの命名規則、必要な割り振りパラメーターを指定できる。
-なんのこっちゃと思った?例を挙げよう。

以下のような名前のDBとテーブルスペースたちがあったとしよう。
1つ目
DB名:DBTEST1
TS名:TSTEST1
2つ目
DB名:DBTEST2
TS名:TSTEST2

こうしたDB、TSたちに対していちいちデータセット名JCLにべた書きしてを割り振るのは面倒すぎる。それにデータセット名は一意でないといけないから、被りは絶対NG!
そんなこ定期バックアップでいちいち考慮してられっか(怒)
って時にこのTEMPLATEが超便利なんです。

TEMPLATEにはあらかじめDB名やTS名のほかに日付や時間にデータセット名を一意にするためのがある。それらを組み合わせると、

TEMPLATE COPYDS DSN &DB..&TS..IC.D&DATE..&UN
         LOCALDDN UNIT SYSDA DSN(COPY001F.IFDY01) SPACE(15,1) CYL 
         DISP(NEW,CATLG,CATLG) 
LISTDEF  LIST1 INCLIUDE DB.ONLDB.*
COPY TABLESPACE LIST1 COPYDDN(COPYDS)

こんな感じ。実際に使ってたのはVTLだけどそこは許して・・・。
じゃあ何が悪かったのかというと。

TEMPLATE COPYDS DSN &DB..&TS..IC.D&DATE..*&UN*

「&UN」の部分。これは、英数字からなるランダムな8文字で、DB2 はこの文字をシステム・クロックから組み込んでくれる。
この数字が当時、偶然GDG(世代管理)データセットの絶対バージョンGxxxxVxxxのランダムな数字を生成してしまった。
ただ、実態はGDGではないからz/OS君が異常を検知してabendしちゃってた。

結局ダサいけど、↓みたいな感じで直した。

TEMPLATE COPYDS DSN &DB..&TS...&UN..IC.D&DATE.

そこまで考えてバックアップ設計をしないといけないのねって痛感した。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0