Day 25: Oracle Workspace Manager


Learning In HomeOriginal Date: 6 Februari 2009

Workspace Manager merupakan fitur database Oracle yang cukup berguna bila dipakai dalam proses QA (Quality Assurance). Workspace Manager memungkinkan versioning pada sebuah tabel, layaknya memakai versioning di CVS. Untuk menggunakan Workspace Manager, aku memakai API yang tersedia di package DBMS_WM. Aku akan memulai dengan mengaktifkan versioning pada sebuah tabel:


EXECUTE DBMS_WM.ENABLEVERSIONING('TBL_BARANG,TBL_KATEGORI', 'VIEW_WO_OVERWRITE');

Perintah di atas akan mengaktifkan versioning pada tabel TBL_BARANG dan TBL_KATEGORI, dimana kedua tabel tersebut saling berhubungan. Selain itu, akan terbentuk view dengan nama TBL_BARANG_HIST dan TBL_KATEGORI_HIST yang menampung history perubahan atas kedua tabel tersebut. Lalu, aku membuat workspace baru:


EXECUTE DBMS_WM.CREATEWORKSPACE('SAMPLE_SCENARIO');
EXECUTE DBMS_WM.CREATEWORKSPACE('SAMPLE_SCENARIO_B');

Kemudian, aku berpindah ke workspace SAMPLE_SCENARIO:


EXECUTE DBMS_WM.GOTOWORKSPACE('SAMPLE_SCENARIO');

Sekarang, pada workspace ini, aku dapat melakukan berbagai perubahan pada tabel TBL_BARANG dan TBL_KATEGORI. Setelah puas, aku berpindah ke workspace yang lain:


EXECUTE DBMS_WM.GOTOWORKSPACE('SAMPLE_SCENARIO_B');

Pada workspace SAMPLE_SCENARIO_B yang berbeda ini, jika aku men-select isi table, aku tidak akan menemukan perubahan record lama dan record yang baru di-insert di workspace SAMPLE_SCENARIO_B. Aku kembali bebas melakukan modifikasi data di workspace ini dengan memberikan perintah DML.

Setelah itu, aku kembali ke parent workspace yang paling utama, yang namanya berupa LIVE (huruf besar):


EXECUTE DBMS_WM.GOTOWORKSPACE('LIVE');

Jika aku men-select TBL_BARANG sekarang, isinya persis seperti semula saat sebelum aku melakukan modifikasi di kedua workspace. Sekarang, aku dapat berpindah-pindah antar workspace dan mendapatkan versi yang berbeda-beda dari sebuah tabel yang sama. Setelah itu, aku dapat memutuskan untuk menghapus workspace yang mana, dan men-merge atau melakukan rollback pada workspace tertentu, seperti:


EXECUTE DBMS_WM.
  GOTOWORKSPACE('LIVE');
EXECUTE DBMS_WM.
  REMOVEWORKSPACE('SAMPLE_SCENARIO_B');
EXECUTE DBMS_WM.
  MERGEWORKSPACE('SAMPLE_SCENARIO');
SELECT * FROM TBL_BARANG;

Perintah di atas akan menghapus workspace SAMPLE_SCENARIO_B dan men-merge isi workspace SAMPLE_SCENARIO dengan isi workspace LIVE. Aku juga bisa men-rollback isi tabel dan men-nonaktif-kan versioning dengan perintah:


EXECUTE DBMS_WM.ROLLBACKTABLE('SAMPLE_SCENARIO', 'TBL_BARANG');


EXECUTE DBMS_WM.DISABLEVERSIONING('TBL_BARANG,TBL_KATEGORI');

Selama menggunakan workspace manager, aku dapat melihat semua ini perubahan TBL_BARANG melalui view TBL_BARANG_HIST.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: