U Make it Easy as 1,2,3,4

1 Think, 2 Do, 3 Words, 4 You….. I am Happy

High Water Mark March 24, 2009

Filed under: Oracle10g — Princess Frog @_@ @ 7:07 AM

weh wehhh.. apaan nich.. kok gk ada di modul… nich aku dapet resep handal lho.. dijamin gk ada di modul deh….

Beberapa waktu yang lalu saya membahas tentang bagimana cara mengurangi size dari datafile (tablespace). Datafile tidak bisa dikurangi sampai batas High Water Mark (HWM).

Misalkan kita punya tablespace USERS yang punya datafile 3G. Namun bila kita lihat di OEM, TOAD, atau melalui view dba_free_space, ternyata datafile tersebut mempunyai free space cukup banyak yaitu 2G, itu artinya yang kepakai hanya 1G. Namun datafile tersebut tidak bisa diresize menjadi 1G, bahkan 2G saja tidak bisa.

SQL> alter database
datafile ‘/oradata/oracle/ts/users01.dbf’ resize 2048M;
ORA-03297: file contains used data beyond requested RESIZE value

Dulunya, tablespace USERS mungkin (pasti) pernah kepakai sampai 3G. Bisa kepakai oleh table, index, ataupun temp segment. Namun sekarang sudah banyak yang dihapus sehingga yang terpakai hanya 1G. Nah ini yang penting, DULUNYA pernah dipakai. Oracle membuat aturan bahwa datafile tidak bisa di-resize menjadi ukuran maksimal yang DULUNYA pernah dipakai. Ukuran maksimal yang DULUNYA pernah dipakai ini disebut sebagai HIGH WATER MARK (HWM).

Begini analoginya. Misalkan di kampung kita ada tanggul kali yang tingginya 4 meter. Sejak adanya tanggul itu, paling tinggi air mencapai 3,5 meter (inilah yang disebut sebagai HIGH WATER MARK, batas air paling tinggi yang pernah dicapai), setengah meter lagi mencapai batas atas tanggul.

Namun sejak 10 tahun terakhir ini air paling tinggi hanya mencapai 2 meter. Karena itulah warga sekitar menyarankan agar tanggul diturunkan menjadi 2 meter saja. Tanggul yang tinggi 4 meter itu bikin pemandangan tidak sedap. Tapi… oleh pemerintah daerah tanggul tidak boleh diturunkan sampai 3,5 meter (apalagi di bawah itu). Kalau mau menurunkan ya paling tidak sampai 3,6 meter lah. Katanya, ‘pamali’ kalau menurunkan tanggul di bawah ketinggian air maksimal yang pernah dicapai.

Kira-kira begitulah pengertian HIGH WATER MARK.

Mari kita lihat lebih dalam. Datafile berisi block-block data. Bayangkan dinding yang terbuat dari tumpukan 100 batu bata. Pada awalnya block-block ini disusun secara berurutan. Pada suatu hari kita menghapus data (delete), analoginya kita mau mengambil 5 batu bata. OO… ternyata data (batu bata) yang kita cari itu ada di tumpukan paling bawah. Berikutnya kita ingin menghapus data lagi (sebanyak 4 batu bata). Dan sekarang batu bata yang ini ada di tumpukan tengah. Demikianlah seterusnya hingga akhirnya yang tersisa ada 40 batu bata.

Sekarang, tumpukan 40 batu bata itu tidak beraturan dan memamakan ruang sebesar tumpukan 100 batu bata. Namun kita tidak bisa ngapa-ngapain karena sudah begitu adanya. Kalo diutak-atik malah bisa rubuh tumpukan batu bata itu. Jadi space sebesar tumpukan 100 batu bata itulah yang disebut sebagai HIGH WATER MARK, batas tertinggi yang pernah dipakai.

Gimana cara memaksa untuk menurunkan size datafile sampai di bawah HIGH WATER MARK?

Caranya, rubuhkan dan susun ulang tumpukan batu bata itu. Di database, rubuhkan dan susun ulang block-block data itu. Begini caranya:

1. Export content (data-data) tablespace yang bersangkutan
2. Buat tablespace baru yang punya size lebih kecil
3. Import data yang telah di-export tersebut ke tablespace baru
4. Drop tablespace lama

yapzz.. ngerti kan skrg konsepna…

belajar yach terutama praktikanQ biar semuanya lulus.. tar nyalahin aku lagi kalo gk lulus hehehe

i hope not ok
Namun untuk tablespace SYSTEM kita tidak bisa melakukan hal di atas. Satu-satunya cara bagi tablespace SYSTEM adalah:

1. Export full database
2. Buat database baru yang ukuran tablespace SYSTEM-nya lebih kecil
3. Import full data yang telah di-export tersebut
4. Drop database lama

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s