Housekeping AS400 File PART 1 – Clear Data

Housekeeping merupakan bagian penting dalam suatu sistem atau data. Dengan Housekeeping, diharapkan akan menjaga kestabilitasan dan kehandalan sistem.

Metode Housekeeping yang akan dibahas pertama yaitu dengan Clear File atau mengkosongkan seluruh isi record. Untuk bagian ini, jika memang ada beberapa file yang dapat dilakukan dengan menghapus seluruh data pada file tersebut, maka berikut cara yang dapat digunakan:

Menggunakan SQL statement

DELETE FROM LIBA/FILEA

Menggunakan Command CLRPFM

Jika file cukup besar, disarankan submit job dengan SBMJOB. Command ini akan dapat dilakukan jika tidak terdapat locking pada file tersebut.

Menggunakan Metode Swap File Kosong

Siapkan file kosong dengan menggunakan command CRTDUPOBJ ke library lain / library temporer. Pada contoh dibawah duplicate FILEA dari LIBA ke LIBB.

Pastikan kondisi-kondisi berikut:

  • Jika file tidak memiliki beberapa logical file, lakukan duplicate logical file tersebut ke library temporer. Untuk cek logical file pada file tersebut, gunakan command DSPDBR
  • Jika file pada library source terjournal, maka file pada library temporer dijournalkan juga dengan menggunakan command STRJRNPF

Lakukan swap file dengan menggunakan command MOVOBJ, dengan tahapan, Move File FILEA beserta logical file (jika ada) di LIBA ke LIBC (library temporer kedua), kemudian move FILEA beserta logical file (jika ada) di LIBB ke LIBA (file kosong dipindah ke library source).

Dari ketiga cara diatas dalam clear file, saya lebih memilih dengan menggunakan cara swap object. Tapi hal ini jg bergantung dari seberapa lama kita aplikasi anda dapat dimatikan. Lakukan kajian terlebih dahulu sangat dianjurkan.

Menghilangkan Deleted Record pada Physical File AS400

Ketika kita melakukan proses delete record menggunakan SQL atau sejenisnya, record tersebut sebenarnya tidak langsung hilang dari table/file. Untuk menghilangkan deleted record pada suatu file ada beberapa cara, diantaranya:

Menggunakan command RGZPFM, dengan exclusive lock. Command ini cocok untuk proses untuk file-file yang tidak terlock secara terus menerus.

Pastikan tidak ada locking pada File yang akan di reorganize.

RGZPFM dengan Share Update, digunakan jika file yang akan di reorganize terdapat lock terus menerus dan butuh downtime untuk release lock tersebut.

Copy File (CPYF)

Tabel AS400 merupakan object *FILE, maka command CPYF digunakan untuk copy seluruh atau sebagian struktur tabel pada database ke table lain. Berikut command copy file yang biasa saya gunakan:

Member Option > MBROPT

# MBROPT(*ADD) - Copy seluruh record file source ke file target
# MBROPT(*REPLACE) - Copy seluruh record file source ke file target diawali delete member file terlebih dahulu

Create File > CRTFILE

# CRTFILE(*YES) - Membuat file baru di target library
# CRTFILE(*NO) - File sudah tersedia di target library

Copy From – To Record Number > FROMRCD – TORCD

# FROMRCD (*START/<rrn>) - *START jika akan copy dari record pertama dari file source, atau <rrn> relative record number jika ingin dari record number tertentu
# TORCD (*END/<rrn>) - *END jika akan copy sampai record terakhir dari file source, atau <rrn> relative record number jika ingin sampai record number tertentu

Record Format Field Mapping – FMTOPT

Parameter ini digunakan jika format file sumber berbeda dengan format file target
# FMTOPT (*NOCHK) - Copy file berdasarkan length dari record yang ada
# FMTOPT (*MAP *DROP) - Copy file berdasarkan nama field yang ada (*MAP) dan abaikan field yang tidak ada (*DROP)

Contoh:

# CPYF FROMFILE(SRCLIB/SRCFILE) TOFILE(TGTLIB/TGTFILE) MBROPT(*ADD) CRTFILE(*YES)
# CPYF FROMFILE(SRCLIB/SRCFILE) TOFILE(TGTLIB/TGTFILE) MBROPT(*ADD)
# CPYF FROMFILE(SRCLIB/SRCFILE) TOFILE(TGTLIB/TGTFILE) MBROPT(*REPLACE)
# CPYF FROMFILE(SRCLIB/SRCFILE) TOFILE(TGTLIB/TGTFILE) MBROPT(*ADD) FROMRCD(*START) TORCD(*END)
# CPYF FROMFILE(SRCLIB/SRCFILE) TOFILE(TGTLIB/TGTFILE) MBROPT(*ADD) FROMRCD(10) TORCD(*END)
# CPYF FROMFILE(SRCLIB/SRCFILE) TOFILE(TGTLIB/TGTFILE) MBROPT(*ADD) FMTOPT(*NOCHK) 
# CPYF FROMFILE(SRCLIB/SRCFILE) TOFILE(TGTLIB/TGTFILE) MBROPT(*ADD) FMTOPT(*MAP *DROP)