11 February 2007

Hanya ada 3 hari dalam hidup kita

Yang pertama;
Hari kemarin. (PAST)
Kita tak bisa mengubah apa pun yang telah terjadi.
Kita tak bisa menarik perkataan yang telah terucapkan.
Kita tak mungkin lagi menghapus kesalahan;
dan mengulangi kegembiraan yang kita rasakan kemarin.
Biarkan hari kemarin lewat; lepaskan saja...

Yang kedua:
Hari esok. (FUTURE)
Hingga mentari esok hari terbit,
Kita tak tahu apa yang akan terjadi.
Kita tak bisa melakukan apa-apa esok hari.
Kita tak mungkin sedih atau ceria di esok hari.
Esok hari belum tiba; biarkan saja...

Yang tersisa kini hanyalah :
Hari ini. (PRESENT)
Pintu masa lalu telah tertutup;
Pintu masa depan pun belum tiba.
Pusatkan saja diri kitauntuk hari ini.
Kita dapat mengerjakan lebih banyak hal
hari ini bila kita mampu memaafkan
hari kemarin dan melepaskan ketakutan akan esok hari.
Hiduplah hari ini.
Karena, masa lalu dan masa depan
hanyalah permainan pikiran yang rumit.
Hiduplah apa adanya. Karena yang ada
hanyalah hari ini; hari ini yang abadi.
Perlakukan setiap orang dengan kebaikan hati
dan rasa hormat, meski mereka berlaku buruk pada kita.

Cintailah seseorang sepenuh hati hari ini,
karena mungkin besok cerita sudah berganti.
Ingatlah bahwa kita menunjukkan penghargaan pada orang lain
bukan karena siapa mereka, tetapi karena siapakah
diri kita sendiri. Jadi, jangan biarkan masa lalu
mengekangmu atau masa depan membuatmu
bingung, lakukan yang terbaik HARI INI dan
lakukan SEKARANG juga!

The day will come when you will review your life and be
thankful for every minute of it. Every hurt,every sorrow,
every joy, every celebration, every moment of your life
will be a treasure This is why today is called a PRESENT

23 December 2006

Arti Sebuah Nama

Stapler adalah benda berguna yang sering membantu kita. Mulai dari orang kantoran sampe tukang manisan, semua merasakan manfaatnya. Kalo sampe ilang serasa bencana.

Orang yang suka minjem stapler dan ga balikin, terancam sanksi sosial berupa dicuekin di kantin. Stapler memegang peranan penting dalam kehidupan. Tapi apa balasan kita? Boro-boro menghargai, ngasih nama yang jelas aja enggak.

Benda malang ini telah lama hidup dengan nama yang sangat ambigu. Kadang memang kita menyebutnya stapler, sesuai nama aslinya. Tapi nggak jarang kita telah melekatkan nama-nama yang kurang terhormat bagi pembantu setia ini. Sebut saja misalnya CEKREKAN, CEPRETAN, JEGREKAN, bahkan ada yang menyebutnya CEPROTAN. Keterlaluan sekali bukan?

Benda ini pasti punya nama resmi dalam bahasa Indonesia . Masalahnya, namanya apa?

Jawabannya ditemukan dari majalah Tempo edisi 6-12, halaman 10, dalam kolom surat pembaca. Kutipannya adalah:...
Imbauan kepada seluruh masyarakat untuk memperlakukan uang rupiah dengan baik, diantaranya dengan tidak melipat, mengokot (stapling)...

STAPLING = MENGOKOT

Dengan demikian aman untuk kita simpulkan bahwa ternyata nama resmi untuk stapler adalah: PENGOKOT

Seandainya aku jadi si stapler, mungkin aku lebih memilih dinamain cekrekan daripada pengokot ... entah kenapa tapi yang terbayang dibenakku saat mendengar kata itu adalah sebuah benda lembek yang bau, berjamur, dan nyaris busuk - tapi ya... sudahlah!!! Mari bersama-sama kita gunakan istilah resmi ini, untuk mempercepat
proses penyerapannya dalam kehidupan bermasyarakat.

Misalnya:

...di kantor:
"Boss, ini report-nya perlu dikokot atau cukup dimasukkan ke map?"
...di tukang foto kopi:
"Bang, gimana sih lu, masa mengokot aja nggak becus, kan jadi rusak fotokopian gue!"
...juga saat bercakap dengan teman:
"Bawel banget sih jadi orang, lama-lama gua kokot juga bibir lu...!"

20 December 2006

Akhir dari Sesuatu, merupakan Awal dari Sesuatu.

Hmmmm...kata-kata diatas sepintas lalu emang tidak berarti apa-apa lucu, menggelitik mungkin iya bagi yang cuman membacanya saja namun coba disimak lebih dalam paling tidak dibaca 4 ato 5 kali sembari direnungkan baik-baik hmmmm...bener kan???

Belum ada sebulan dikukuhkan menjadi Sarjana kirain setelah jadi Sarjana enak gitu....habis sudah tanggungan habis sudah capek-capek-nya, habis sudah pusing-pusingnya. Ternyata??? TIDAK

Yah, memulai sesuatu yang baru *KERJA*! berbahagialah yang begitu mendapat gelar sarjana dan langsung bekerja, mungkin bagi yang laen harus nyari dulu lamar sana lamar sini....huh *tapeee deeehhh* kata Indra Birowo di Extravaganza.

Nah, benerkan????

Setelah kita mengakhiri sesuatu, kita pasti juga akan memulai sesuatu mungkin setelah kerja bisa menghasilkan duit sendiri, satu hal lagi yang kita pikirkan mengakhiri masa lajang dan memulai hidup baru dengan pasangan hidup kita *soul mate*.

Intinya selalu persiapkan segala sesuatu untuk menghadapi awal yang baru berusaha, berdoa, dan tak lupa selalu mensyukuri nikmat yang diberikan oleh-Nya susah, senang, lebih, kurang disyukurin aja deh itu semua nikmat sembari tetap berusaha... berusaha... berusaha.... dan berdoa

Wed Dec 20 19:06:00 WIT 2006 - zainal.a@gmail.com

30 August 2006

CBQ Web Based

###############################################

LANGKAH-LANGKAH INSTALLASI DAN KONFIGURASI
QoS CBQ WEB-BASED PADA LINUX REDHAT 9.0


###############################################

I. PERSIAPAN AWAL
------------------
Install Redhat Linux 9.0, dengan pilihan installasi "SERVER",
paket aplikasi yang tidak diinstall dengan paket tarball
dapat dinstall pada waktu proses installasi ini.
Paket aplikasi yang harus diinstall (pilih) antara lain :

[1]. Perl - perl-5.8.0-88.i386.rpm
\ perl-CGI-2.81-88.i386.rpm
\ perl-DBI-1.32-5.i386.rpm
\ perl-CPAN-1.61-88.i386.rpm
\ perl-suidperl-5.8.0-88.i386.rpm
\ perl-TimeDate-1.1301-5.noarch.rpm
\ perl-Archive-Tar-0.22-29.noarch.rpm
\ perl-HTML-Parser-3.26-17.i386.rpm
\ perl-HTML-Tagset-3.03-28.noarch.rpm
\ perl-libwww-perl-5.65-6.noarch.rpm

[2]. Squid - squid-2.5.STABLE1-2.i386.rpm

[3]. IPTables - iptables-ipv6-1.2.7a-2.i386.rpm

[4]. MySQL - mysql-3.23.54a-11.i386.rpm
\ mysql-server-3.23.54a-11.i386.rpm


II. INSTALLASI PAKET TARBALL
-----------------------------
* Sebagai 'root'

[1]. Installasi Apache Web Server
tar -xvf httpd-2.0.54.tar
cd httpd-2.0.54/
./configure --enable-http --enable-suexec --enable-cgi --enable-cgid --enable-so --enable-header --enable-ssl --enable-proxy --enable-proxy-http --enable-proxy-ftp --enable-proxy-connect --enable-rewrite
make; make install
useradd -s /bin/false apache
cp conf/httpd_init /etc/rc.d/init.d/httpd
chmod 755 /etc/rc.d/init.d/httpd
chkconfig --add httpd
chkconfig --level 3 httpd on
cp conf/httpd.conf /usr/local/apache2/conf/
cp conf/ca.* /usr/local/apache2/conf/
cp conf/qoscbq-httpd.conf /qoscbq/config/

[2]. Installasi Paket Library PHP
[x] freetype
tar -zxvf freetype-2.1.9.tar.gz
cd freetype-2.1.9/
./configure
make; make install
[x] zlib
tar -zxvf zlib-1.2.2.tar.gz
cd zlib-1.2.2/
./configure
make; make install
[x] libpng
tar -zxvf libpng-1.2.8-config.tar.gz
cd libpng-1.2.8-config/
./configure
make; make test; make install
[x] GD (untuk Jpgraph)
tar -zxvf gd-2.0.33.tar.gz
cd gd-2.0.33/
./configure
make; make install;

[3]. Installasi PHP
tar -xvf php-4.3.8.tar
cd php-4.3.8/
./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-fastcgi --with-openssl --with-mysql=/usr --with-zlib --with-gd --with-freetype --enable-bcmath --with-openssl --enable-calendar --enable-safe-mode --enable-memory-limit --with-tiff --with-png --enable-gd-imgstrttf --enable-gd-native-ttf --enable-inline-optimization --enable-mbstring --enable-mbregex
cp conf/php.ini /usr/local/lib

[4]. Installasi SNMP-extension LINUX-QOS dan Net-SNMP
tar -zxvf snmp-extension-0.2.0.tar.gz
tar -zxvf net-snmp-5.1.4.pre1.tar.gz
cp tree-new-model/QOS.txt net-snmp-5.1.4.pre1/mibs/
cp tree-new-model/source/* net-snmp-5.1.4.pre1/agent/mibgroup/
cd net-snmp-5.1.4.pre1/
./configure --with-perl-modules --enable-embedded-perl --enable-shared --with-mib-modules=qos
make; make test; make install
mkdir -p /usr/local/etc/snmp
cp conf/snmp.conf /usr/local/etc/snmp

[5]. Installasi cgilib, libart_lgpl dan RRDTool
tar -zxvf cgilib-0.5.tar.gz
cd cgilib-0.5/
make CC=gcc CFLAGS="-O3 -fPIC -I."
cp *.h /usr/local/include
cp libcgi* ../usr/local/lib
tar -zxvf libart_lgpl-2.3.17.tar.gz
cd libart_lgpl-2.3.17
./configure
make; make install
tar -zxvf rrdtool-1.2.6.tar.gz
cd rrdtool-1.2.6/
./configure --enable-perl-site-install
make; make install;

[6]. Tambahkan isi file pada conf/ld.so.conf kedalam /etc/ld.so.conf
dan eksekusi /sbin/ldconfig untuk mengaktifkan
semua paket installasi tarball


III. KONFIGURASI
-----------------

[1]. CBQ Script
cp cbq-script/cbq.init-v0.7.3 /etc/rc.d/init.d/cbq.init
chmod 755 /etc/rc.d/init.d/cbq.init
chown apache.root /etc/rc.d/init.d/cbq.init
chown apache.root /var/cache/cbq.init
mkdir -p /etc/sysconfig/cbq/
--
cp cbq-script/cbq-class/* /etc/sysconfig/cbq/
chmod 600 /etc/sysconfig/cbq/*
chown -R apache.apache /etc/sysconfig/cbq/
chkconfig --add cbq.init
chkconfig --level 3 cbq.init on

[2]. Squid dan Iptables
cp conf/squid.conf /etc/squid/
cp conf/iptables /etc/sysconfig/

[3]. QoSCBQ
mkdir /qoscbq
cp -r qoscbq/* /qoscbq/
chown -R apache.apache /qoscbq/
--tambahkan 2 baris berikut kedalam /etc/crontab
*/1 * * * * root /qoscbq/bin/qos_traffic.pl > /dev/null
*/1 * * * * root /qoscbq/bin/trap_datacbq.pl > /dev/null
*/5 * * * * root /qoscbq/bin/rrd_traffic.pl > /dev/null


IV. AKHIR INSTALLASI & KONFIGURASI
------------------------------------

[1]. Menjalankan cbq-init, Apache, Squid, Iptables dan MySQL
/etc/rc.d/init.d/cbq.init compile
/etc/rc.d/init.d/cbq.init start
/etc/rc.d/init.d/httpd start
/etc/rc.d/init.d/squid start
/etc/rc.d/init.d/iptables start
/etc/rc.d/init.d/mysql start

[2]. MySQL CBQ Database
--sebagai user 'root'
mysql> use mysql;
mysql> CREATE DATABASE dbqoscbq;
mysql> GRANT ALL ON dbqoscbq.* TO cbqadmin@localhost IDENTIFIED BY 'admincbq';
mysql> flush privileges;

shell> mysql -u cbqadmin -p dbqoscbq < source/mysql/cbq_sql_script.sql



* Draft 01, dibuat oleh Zainal Abidin
Selasa, 09 Agustus 2006 jam 01:53:43 dini hari

* Draft 02, dibuat oleh Zainal Abidin
Selasa, 17 Agustus 2006 jam 14:49:12 siang

* Final, dibuat oleh Zainal Abidin
Rabu, 30 Agustus 2006 jam 10:13:58 siang

* Aplikasi akan di-Upload kemudian
(still looking for a place)

10 August 2005

Fungsi-fungsi "CRUSIAL" dalam Script PHP, untuk mengakses MySQL Database

[1]. Fungsi "mysql_connect" dan "mysql_pconnect"
-------------------------------------------

Digunakan untuk membuat hubungan (koneksi) ke Database MySQL yang terdapat pada suatu HOST.
Syntax-nya :
mysql_connect(host, nama_user, password)
Keterangan :
[x] host, menyatakan nama host (komputer) tempat MySQL berada.
[x] pemakai, nama pemakai (user) yang digunakan untuk melakukan
hubungan (koneksi) ke DBMySQL
[x] password, merupakan password milik pemakai (user)

Fungsi ini menghasilkan nilai balik berupa nilai BOOLEAN, yang menyatakan pengenal hubungan (koneksi) dan digunakan sebagai pengenal diberbagai "mysql_".
Jika benar maka nilainya adalah TRUE dan bila terjadi suatu kesalahan maka nilai balik akan berupa FALSE. (e.g) $id_mysql = mysql_connect("localhost", "zj", "badguy");
dimana, $id_mysql --> merupakan variabel yang diciptakan untuk "pengenal_hubungan".
Selain itu PHP juga mempunyai fungsi "mysql_pconnect" yang serupa dengan "mysql_connect". Fungsi ini digunakan untuk membentuk hubungan (koneksi) yang PERSISTEN, artinya "koneksi tidak akan ditutup, walaupun skrip sudah berakhir". Namun hal ini hanya berlaku pada PHP yang bertindak sebagai modul, misalnya pada Web Server Apache.

(e.g) $id_mysql = mysql_pconnect("localhost", "zj", "badguy");

[2]. Fungsi "mysql_close"
--------------------

Fungsi ini berguna untuk menutup hubungan (koneksi) ke database MySQL.
Syntax-nya :
mysql_close(pengenal_hubungan)

Dalam hal ini "pengenal_hubungan" menyatakan pengenal yang diperoleh dari pemanggilan fungsi "mysql_connect" diatas.

(e.g) mysql_close($id_mysql)

Ketika skrip PHP berakhir, koneksi ke Database MySQL yang dibentuk melalui mysql_connect bukan (mysql_pconnect) juga dengan sendirinya akan ditutup dengan fungsi "mysql_close".

[3]. Fungsi "mysql_select_db"
------------------------

Fungsi ini berguna untuk memilih Database, seperti mengunakan perintah USE pada aplikasi MySQL.
Syntax-nya :
mysql_select_db(database, pengenal_hubungan)

Dalam hal ini "pengenal_hubungan" (e.g) $id_mysql) diperoleh juga dari pemanggilan fungsi mysql_connect diatas. Dan argumen/parameter database adalah nama dari database yang dipilih atau yang akan digunakan pada skrip PHP.

(e.g) mysql_select_db("mydatabase", $id_mysql)

[4]. Fungsi "mysql_query"
--------------------

Fungsi ini digunakan untuk mengeksekusi permintaan record pada sebuah tabel atau sejumlah tabel.
Syntax-nya :
mysql_query(permintaan, pengenal_hubungan)

Argumen "permintaan" merupakan penyataan (syntax SQL) untuk mengakses tabel, dimana tabel-tabel dimaksud dan bisa diakses adalah tabel milik database yang disebutkan/dipanggil melalui fungsi "mysql_select_db" diatas.

[5]. Fungsi "mysql_db_query"
-----------------------

Fungsi ini berguna untuk menjalankan suatu permintaan terhadap suatu Database.
Syntax-nya :
mysql_db_query(database, permintaan, pengenal_hubungan)

Dalam hal ini pengenal hubungan adalah menyatakan pengenal hubungan yang diperoleh dari pemanggilan fungsi mysql_connect dan argumen database adalah nama database yang dipilih. Dan argumen permintaan adalah pernyataan (syntax SQL). Khusus untuk argumen ketiga adalah optional bisa ditulis bisa tidak, karena fungsi mysql_db_query selalu sesudah fungsi mysql_connect, argumen ketiga sudah diwakili didalam fungsi mysql_connect.

Fungsi ini memberikan nilai balik berupa suatu angka bulat yang menyatakan pengenal hasil, yang diperlukan pada pada berbagai fungsi berawalan "mysql_" lainnya. Hasilnya FALSE menyatakan bahwa terdapat sesuatu kesalahan.

(e.g) mysql_query_db("mydatabase", "SELECT * FROM mytabel", $id_mysql)

[6]. Fungsi "mysql_num_rows"
-----------------------

Fungsi ini berguna untuk memperoleh jumlah baris dari suatu hasil permintaan (query) yang menggunakan SELECT.
Syntax-nya :
mysql_num_rows(pengenal_hasil)

Dalam hal ini pengenal hasil menyatakan nilai yang diperoleh dari pemanggilan fungsi seperti "mysql_db_query" atau "mysql_query". Sebagai catatan, untuk permintaan yang menggunakan UPDATE, INSERT, atau DELETE menggunakan fungsi "mysql_affected_rows" untuk memperoleh jumlah baris yang terkena operasi-operasi tersebut.

[7]. Fungsi "mysql_affected_rows"
----------------------------

Fungsi ini berguna untuk memperoleh jumlah baris yang dikenai operasi INSERT, UPDATE, dan DELETE.
Syntax-nya :
mysql_affected_rows(pengenal_hubungan)

Dalam hal ini pengenal hubungan menyatakan nilai yang diperoleh dari pemanggilan fungsi "mysql_connect". Dimana argumen ini bersifat opsional. Pada permintaan yang mengandung DELETE tetapi tanpa klausa "WHERE", penghapusan akan dilakukan pada semua baris; namun fungsi "mysql_affected_rows" hanya akan memberikan nilai balik berupa nol 0.

[8]. Fungsi mysql_num_fiedls
-----------------------

Fungsi ini berguna untuk memperoleh jumlah kolom pada suatu hasil permintaan.
Syntax-nya :
mysql_num_fields(pengenal_hasil)

Dalam hal ini pengenal hasil menyatakan nilai yang diperoleh dari pemanggilan fungsi seperti "mysql_db_query" atau "mysql_query".
Skrip dibawah ini akan memberikan gambaran sedikit tentang penggunaan fungsi "mysql_select_db", "mysql_query", "mysql_num_fields", dan "mysql_num_rows".
<html>
<head><title></title></head>
<body>

<?php
/* inisialisasi koneksi */
$pemakai = "zj";
$password = "badguy";

/* membuka koneksi ke Database MySQL */
$id_mysql = mysql_connect("localhost", $pemakai, $password)
OR die("Can NOT Connect to MySQL");
/* Database dan Tabel yang dituju */
mysql_select_db("mydatabase, $id_mysql) OR die("Database NOT FOUND!");
$hasil = mysql_query("SELECT * FROM mytable", $id_mysql);

/* jika tabel tidak ditemukan*/
if (! $hasil)
die("Query Aborted");

/* mengambil jumlah kolom */
$jum_kolom = mysql_num_fields($hasil);
echo "Jumlah kolom : $jum_kolom
\n";
/* mengambil jumlah baris */
$jum_baris = mysql_num_rows($hasil);
echo "Jumlah baris : $jum_baris
\n";

/* menutup koneksi ke Database MySQL */
mysql_close($id_mysql);
>?

</body>
</html>

--
Last saved by Zj,
On 09 Agustus 2005 at 12:22:36


Referensi :
[x]. MySQL-Tutorial in My Slackie Linux Box /usr/share/doc
[x]. PHP and MySQL Web Development by Luke Welling & Laura Thompson

05 July 2005

Partisi Table pada Oracle 9i

MANAGING TABEL BY PARTITIONING TABLE
Oracle 8i (recomended 9i)

Manfaat dari penggunaan Partitioning Table pada Oracle Database
adalah sebagai berikut :
[1]. Data dalam jumlah besar dapat disimpan secara terpisah berdasarkan
kolom tertentu yang disebut sebagai "PARTITION KEY".
[2]. Pencarian Data dapat dilakukan menggunakan partisi tertentu
sehingga tidak perlu membaca semua block pada table yang sudah terpartisi.

Ada berberapa macam jenis Partition Table antara lain :

1. Partition Table by Range
Membuat Partisi berdasarkan Range data tertentu,
misal berdasarkan data dari bulan januari sampai dengan desember, atau
Mempartisi data menurut interval atau kisaran dari nilai ‘partition key’
yaitu kolom yang digunakan sebagai acuan pembuatan partisi.

2. Partition Table by List
Membuat Partisi berdasarkan Range data tertentu,
misal berdasarkan wilayah atau kota
(hint: jenis partisi ini hanya terdapat pada Oracle v.9i keatas)

3. Partition Table by Hash
Metode partisi ini digunakan jika tidak mengetahui range data secara pasti,
cukup menyebutkan berapa akan partisi dan yang membuat partisinya
adalah Oracle sendiri. Dengan kata lain partisi yang dilakukan sesuai dengan
Oracle Formula dan user tidak perlu tahu.
Partisi hash menggunakan fungsi HASH untuk kolom terpartisi
dan memungkinkan penyebaran data secara merata pada sejumlah partisi
karena row yang dipetakan ke suatu partisi didasarkan pada nilai hash dari partition key.
Sebaiknya tetapkan jumlah partisi sebagai kelipatan 2,4,6,8, dst.

4. Partition Composite (partisi gabungan)
Membuat Partisi tabel dengan menggunakan gabungan dari partisi
Range dan List, atau Range dan Hash.


Demo Impmenetasi keemapat metode partisi tabel:

1. PARTITION BY RANGE (v 8i, support)
Membuat Table P_RANGE,
dengan implementasi PARTITIONING By RANGE

CREATE TABLE P_RANGE (
ID CHAR(4),
TANGGAL DATE,
NAMA_BARANG VARCHAR2(20),
QTY NUMBER
) PARTITION BY RANGE (TANGGAL) (
PARTITION PART_2000 VALUES LESS THAN (TO_DATE('01012001','DDMMYYYY')),
PARTITION PART_2001 VALUES LESS THAN (TO_DATE('01012002','DDMMYYYY')),
PARTITION PART_2002 VALUES LESS THAN (TO_DATE('01012003','DDMMYYYY')),
PARTITION PART_2003 VALUES LESS THAN (TO_DATE('01012004','DDMMYYYY')),
PARTITION PART_2004 VALUES LESS THAN (TO_DATE('01012005','DDMMYYYY'))
) ENABLE ROW MOVEMENT;

Dengan penambahan klausa ‘ENABLE ROW MOVEMENT’,
maka perpindahan data pada partisi yang berbeda ketika melakukan
update pada tanggal yang merupakan ‘PARTITION KEY’ bisa dilakukan.

Menambah Partisi baru dengan nama PMAX untuk menampung nilai tertinggi
yang tidak bisa ditampung oleh partisi-partisi yang sudah ada (melebihi kapasitas)

SQL> ALTER TABLE P_RANGE
2 ADD PARTITION PMAX VALUES LESS THAN (MAXVALUE);
Table altered

Menghapus partisi PMAX

SQL> ALTER TABLE P_RANGE
2 DROP PARTITION PMAX;
Table altered

Menambah Partisi baru dengan untuk TAHUN 2005

SQL> ALTER TABLE P_RANGE
2 ADD PARTITION PART_2005
3 VALUES LESS THAN (TO_DATE('01012006','DDMMYYYY'));
Table altered

Memisahkan/membagi sebuah Partisi 2 bagian (2 buah partisi)
menggunakan keyword “SPLIT PARTITION”.
Misal dari partisi yang sudah ditambahkan diatas P2005 (partisi untuk tahun 2005)
akan dibagi menjadi 2 yakni periode_1 (sampai dengan tanggal 01-Agustus-2005)
dan periode_2 (sampai dengan tanggal 01-jan-2006).

SQL> ALTER TABLE P_RANGE
2 SPLIT PARTITION PART_2005 AT (TO_DATE('01072005','DDMMYYYY'))
3 INTO (
4 PARTITION PERIODE_1,
5 PARTITION PERIODE_2
6 );
Table altered

Hasil dari penambahan partisi dengan cara SPLIT PARTITION,
pada table P_RANGE akan terlihat seperti berikut:

SQL> SELECT PARTITION_POSITION NO, PARTITION_NAME PNAME,
2 SUBPARTITION_COUNT, AVG_SPACE, BLOCKS, EMPTY_BLOCKS
3 FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='P_RANGE' ORDER BY NO;

NO PNAME SUBPARTITION_COUNT AVG_SPACE BLOCKS EMPTY_BLOCKS
---------- ---------- ------------------ ---------- ---------- ------------
1 PART_2000 0 8035 1 14
2 PART_2001 0 8065 1 14
3 PART_2002 0 8071 1 14
4 PART_2003 0 8067 1 14
5 PART_2004 0 0 0 15
6 PERIODE_1 0 0 0 15
7 PERIODE_2 0 0 0 15

7 rows selected

Menggabungkan 2 buah partisi dalam tabel P_RANGE.
Misal menggabungkan partisi PART_2000 dan PART_2001

SQL> ALTER TABLE P_RANGE
2 MERGE PARTITIONS PART_2000, PART_2001
3 INTO PARTITION PART_2001_2002;
Table altered

Hasil dari penggabungan partisi dengan cara MERGE PARTITION,
pada table P_RANGE akan terlihat seperti berikut:

SQL> SELECT PARTITION_POSITION NO, PARTITION_NAME PNAME,
2 SUBPARTITION_COUNT, AVG_SPACE, BLOCKS, EMPTY_BLOCKS
3 FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='P_RANGE' ORDER BY NO;

NO PNAME SUBPARTITION_COUNT AVG_SPACE BLOCKS EMPTY_BLOCKS
---------- --------------- ------------------ ---------- ---------- ------------
1 PART_2001_2002 0 7998 1 14
2 PART_2002 0 8071 1 14
3 PART_2003 0 8067 1 14
4 PART_2004 0 0 0 15
5 PERIODE_1 0 0 0 15
6 PERIODE_2 0 0 0 15

6 rows selected

2. PARTITION BY LIST (v. 8i, tidak support)
Membuat tabel P_LIST, dengan implementasi PARTITION BY LIST
dan list yang digunakan sebagai data untuk dipartisi adalah field “NAMAKOTA”.

CREATE TABLE P_LIST (
ID NUMBER(4),
NO_BUKTI CHAR(4),
NAMABARANG VARCHAR2(20),
NAMAKOTA VARCHAR2(20),
QTY NUMBER
) PARTITION BY LIST (NAMAKOTA) (
PARTITION KOTA1 VALUES(‘Surabaya’),
PARTITION KOTA1 VALUES(‘Bandung’),
PARTITION KOTA1 VALUES(‘Jakarta’),
) ENABLE ROW MOVEMENT;

Catatan:
Untuk Partition by LIST, hampir sama dengan Partition by RANGE
dalam menambah partisi, modifikasi partisi, hapus paritisi, etc.
Namun metode Partisi by LIST ini tidak terdapat pada Oracle
dengan versi 8i kebawah (hanya terdapat pada Oracle versi 9i keatas).

Sedang untuk operasi penambahan, penghapusan, pembagian/pemisahan,
dan penggabungan partisi dalam satu table sama dengan pembahasan
diatas pada Partisi by Range.

3. PARTITION BY HASH (v.8i, support)
Membuat tabel P_HASH, dengan implementasi PARTITION BY HASH

CREATE TABLE P_HASH (
KODE NUMBER,
NAMA VARCHAR2(20)
) PARTITION BY HASH (NAMA) PARTITIONS 4;

Penamaan partisi oleh Oracle dengan SYS_n

SQL> SELECT PARTITION_POSITION NO, PARTITION_NAME P_NAME,
2 BLOCKS, EMPTY_BLOCKS, NUM_ROWS "#ROWS"
3 FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='P_HASH';

NO P_NAME BLOCKS EMPTY_BLOCKS #ROWS
---------- ------------------------------ ---------- ------------ ----------
1 SYS_P7 0 15 0
2 SYS_P8 0 15 0
3 SYS_P9 0 15 0
4 SYS_P10 0 15 0

Jenis metode partisi HASH, bisa diterapkan pada Oracle Database Server
dengan media penyimpanan menggunakan RAID untuk memoptimalkan LOAD BALANCING.
Dimana Oracle akan membagai data-data yang diinputkan (meletakkan secara seimbang)
sesuai dengan kolom yang dipartisi menggunakan metode HASH.

Pada saat membuat tabel dengan metoda parition HASH,
pembagian partisi juga bisa langsung ditempatkan pada
tablespace yang berbeda, berikut contoh pembuatannya.

CREATE TABLE P_HASH1 (
KODE NUMBER,
NAMA VARCHAR2(20)
) PARTITION BY HASH (NAMA) PARTITIONS 4
STORE IN (TSPACE1, TSPACE2, TSPACE3, TSPACE4);

Catatan:
Untuk operasi penambahan, penghapusan, pembagian/pemisahan,
dan penggabungan partisi dalam satu table sama dengan
pembahasan diatas pada Partisi by Range.

4. PARTITION COMPOSITE
Membuat tabel P_COMPOSITE, dengan implementasi metode
partisi gabungan (composite) dari metode RANGE dan HASH

CREATE TABLE P_COMPOSITE (
KODE NUMBER(5),
TGL DATE,
NAMA_PRODUK VARCHAR2(25),
QTY NUMBER
) PARTITION BY RANGE (TGL)
SUBPARTITION BY HASH (NAMA_PRODUK) SUBPARTITIONS 3 (
PARTITION TH2000 VALUES LESS THAN (TO_DATE('01012001','DDMMYYYY')) (
SUBPARTITION PROD_A,
SUBPARTITION PROD_B,
SUBPARTITION PROD_C
),
PARTITION TH2001 VALUES LESS THAN (TO_DATE('01012002','DDMMYYYY')) (
SUBPARTITION PROD_D,
SUBPARTITION PROD_E,
SUBPARTITION PROD_F
),
PARTITION TH2002 VALUES LESS THAN (TO_DATE('01012003','DDMMYYYY')) (
SUBPARTITION PROD_G,
SUBPARTITION PROD_H,
SUBPARTITION PROD_I
)
) ENABLE ROW MOVEMENT;


Melihat deskripsi tabel P_COMPOSITE, yang dipartisi dengan
metode Partisi Composite (Gabungan) RANGE dan HASH.

SQL> SELECT PARTITION_POSITION NO, PARTITION_NAME P_NAME,
2 SUBPARTITION_COUNT SUB_COUNT, BLOCKS, EMPTY_BLOCKS,NUM_ROWS "#ROWS"
3 FROM USER_TAB_PARTITIONS
4 WHERE TABLE_NAME='P_COMPOSITE';

NO P_NAME SUB_COUNT BLOCKS EMPTY_BLOCKS #ROWS
---- -------------- ---------- ---------- ------------ ----------
1 TH2000 3 0 45 0
2 TH2001 3 0 45 0
3 TH2002 3 0 45 0

Kolom SUB_COUNT, merupakan jumlah subpartisi dari masing-masing partisi.

MENGAKTIFKAN AUTOTRACE

Sebagai tambah untuk menganalisa dan melihat performa query
gunakan AUTOTRACE. Untuk menggunakan tool ini di Oracle harus
di set terlebih dahulu, berikut langkah-langkah mengaktifkan
tool autotace:

[1]. Langkah pertama, lakukan koneksi sebagai SYS ATAU SYSTEM as SYSDBA
SQL> CONN SYSTEM/MANAGER@DB8I
Connected.

[2]. Jalankan script SQL, yang sudah tersedia pada Oracle yakni 'utlxplan.sql'
SQL> @?\rdbms\admin\utlxplan.sql
Table created.

[3]. Buat sebuah synonym yang nantinya bisa dipakai oleh semua user (public)
SQL> create public synonym plan_table for plan_table;

[4]. Jalankan lagi script SQL, yang ada pada Oracle yakni 'plustrace.sql'
SQL> @?\sqlplus\admin\plustrce.sql

[5]. Beri Grant pada plus trace agar bisa diakses oleh semua user (public)
SQL> grant plustrace to public;
Grant succeeded.

Semoga bermanfaat.

Didokumentasikan oleh Zainal Abidin
pada tanggal 03 Juli 2005 jam 22:36:41

24 May 2005

Koneksi Java Wireless Toolkit (MIDlet-J2ME) dan Server Side Scripting PHP menggunakan Database MySQL

System Requirements :
---------------------

[x]. Linux Operating System (eg. Mandrake 10.0 Official, etc.)
[-]. j2sdk_1_4_01_linuxi586_rpm.bin
[-]. j2me_wireless_toolkit_1_4_01_linuxi386.bin
[-]. Apache, MySQL

[x]. Windows Operating System (eg. WindowsXP, etc.)
[-]. j2sdk_1_4_0_win.exe
[-]. j2me_wireless_toolkit_1_4_01_bin_win.exe
[-]. PHPTriad_2.2.exe

Step by steps:
--------------
[1]. Apache and MySQL must be running well. Create user 'zj' on mysql identified by 'zj',and create database 'mahasiswa'. After that create table 'mahasiswa'. If you're familiar with mysql just run the 'table_mahasiswa.sql' script. ;)

[2]. Copy directory 'zainal' (in Server SIDE directory) to your apache directory
eg. '/var/www/html/' or '/home/zainal/public_html/' If you're using PHPtriad, copying to 'apache/htdocs/'Copy directory 'MobileWeb' (in Client SIDE directory) to your j2me directory usually '$PATH/WTK_1_4/apps/'

[3]. Check file BrowseData.java, EntryData.java, and SearchData.java in directory '$PATH/MobileWeb/src/' and suitable link on variable 'serverURL'.

[4]. And then run your ktoolbar and open MIDlet file MobileWeb for running the emulator for mobile. (DON'T FORGET!. COMPILE BEFORE RUNNING).


###############################################
Last saved by. Zainal Abidin zainal.a@gmail.com> On 23/04/2005 At 12:27
http://black-jhe.tk , http://black.lug.stikom.edu
Feed back send mail to zainal.a@gmail.com or ferd.legho@gmail.com
###############################################

Mari Perbanyak Bersyukur

Damn! setelah sekian lama gak ketemu dan share dgn Paman di Jojoran semalem akhir-nya bisa terlaksana, masih dalam kehangatan lebaran. Dari ...