Gather statistic untuk Performance

Cost based optimizer (CBO) menggunakan statistic untuk menentukan execution plan yang paling optimal. Saya pernah membahas sekilas tentang CBO ini di artikel Tuning Query dengan Explain Plan.

DI versi 9i ke bawah, gather statistic dilakukan secara manual dengan package DBMS_STATS. By default di database Oracle 10g, gather statistic ini dilakukan oleh Oracle secara otomatis; selanjutnya kitapun bisa memilih cara melakukan gather statistic ini, apakah secara otomatis atau manual.

Agar Database melakukan gather statistic secara manual, jalankan command berikut di SQL:

conn system
BEGIN
  DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
END;
/

Untuk mengembalikan gather statistic berjalan otomatic, jalankan command berikut di SQL:

BEGIN
  DBMS_SCHEDULER.ENABLE('GATHER_STATS_JOB');
END;
/

Untuk mempermudah pekerjaan, saya menyarankan untuk menjalankan gather statistic secara otomatis. Untuk database versi 9i, mau tidak mau kita harus melakukan secara manual karena di 9i belum ada feature gather statistic otomatis. Walaupun manual, kita bisa mensiasatinya dengan menjalankan DBMS_STATS lewat DBMS_JOB.

Continue reading Gather statistic untuk Performance

Mengenal Teknologi Grid

Oracle 10g, g adalah singkatan dari grid. Berikut ini pembahasan mengenai Grid yang saya kutip dari Wikipedia.

Komputasi Grid (grid computing) adalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar.

Latar belakang grid

Perkembangan kecepatan prosesor berkembang sesuai dengan Hukum Moore, meskipun demikian bandwidth jaringan komputer berkembang jauh lebih pesat. Semakin cepatnya jalur komunikasi ini membuka peluang untuk menggabungkan kekuatan komputasi dari sumber-sumber komputasi yang terpisah. Perkembangan ini memungkinkan skala komputasi terdistribusi ditingkatkan lebih jauh lagi secara geografis, melintasi batas-batas domain administrasi yang sudah ada.

Pesatnya perkembangan teknologi komputer di negara-negara maju, membuat para penelitinya semakin haus akan tenaga komputasi yang dapat menjawab tantangan dan permasalahan yang mereka hadapi. Walaupun sudah memiliki supercomputer dengan kapasitas yang sangat tinggi , apa yang sudah ada ini pun dirasa tetap kurang, karena mereka berusaha memecahkan permasalahan yang lebih besar lagi. Setelah semua komputer yg dimiliki seorang “peneliti haus tenaga komputasi” dipergunakan habis-habisan untuk memecahkan masalahnya, setelah berbagai cara untuk memecahkan masalah dicoba, dan dipilih yang paling efisien, tapi tetap masalahnya belum bisa dipecahkan juga, apa yang harus dia lakukan? Komputasi grid adalah salah satu jawaban dari pertanyaan ini.

Definisi grid

Menurut tulisan singkat [1] oleh Ian Foster ada check-list yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu :
Continue reading Mengenal Teknologi Grid

Memindahkan atau Me-rename Datafile

Kadang kita perlu memindahkan datafile dari satu tempat (disk/file system/directory/drive) ke tempat yang lainnya. Atau kadang juga kita perlu me-rename datafile karena ada salah ketik waktu membuatnya. Baik memindahkan file dari satu tempat ke tempat lain, maupun merename datafile di tempat yang sama, intinya adalah sama saja.

Misalkan kita ingin memindahkan/me-rename datafile dari ‘/oradata/oracle/ts/users01.dbf’ ke ‘/oradata/oracle/ts/users02.dbf’

Pada database yang NOARCHIVELOG:

  1. Shutdown database
    SQL> shutdown immediate
    
  2. Pindahkan/move/rename datafile. Di Windows bisa pakai Windows explorer. Di unix gunakan command ini:
    mv /oradata/oracle/ts/users01.dbf /oradata/oracle/ts/users02.dbf
    
  3. Startup mount database
    SQL> startup mount
    
  4. Rename datafile di level database
    SQL> alter database rename file '/oradata/oracle/ts/users01.dbf' 
    to '/oradata/oracle/ts/users02.dbf';
    
  5. Setelah itu, open database
    SQL> alter database open;
    

Continue reading Memindahkan atau Me-rename Datafile

Partitioning Table: Informasi Segment & Tablespace

Kadang kita bingung, ketika query TABLESPACE_NAME di view DBA_TABLES, kok nilai TABLESPACE_NAME ada yang NULL (blank/kosong).

SQL> select distinct TABLESPACE_NAME from dba_tables;
TABLESPACE_NAME
------------------------------
SYSTEM
                                            < --- Kosong/blank/NULL
USERS
SYSAUX

Tidak perlu bingung, itu tandanya ada tabel berpartisi di database tersebut. Pada tabel yang berpartisi, data disimpan di dalam partisinya. Contoh, lihat tabel berpartisi PENJUALAN_RANGE yang pernah dibahas di Partitioning Table: Definisi dan Contoh.

CREATE TABLE penjualan_range
( no_invoice  NUMBER,
tgl_jual    DATE NOT NULL,
area varchar2(10))
PARTITION BY RANGE (tgl_jual)
(
PARTITION jual_kw1 VALUES LESS THAN (TO_DATE('01-APR-2008','DD-MON-YYYY')) TABLESPACE users,
PARTITION jual_kw2 VALUES LESS THAN (TO_DATE('01-JUL-2008','DD-MON-YYYY')) TABLESPACE users,
PARTITION jual_kw3 VALUES LESS THAN (TO_DATE('01-OCT-2008','DD-MON-YYYY')) TABLESPACE users,
PARTITION jual_kw4 VALUES LESS THAN (TO_DATE('01-JAN-2009','DD-MON-YYYY')) TABLESPACE users
);

Continue reading Partitioning Table: Informasi Segment & Tablespace

Dasar-dasar Tuning

Berikut ini pertanyaan-pertanyaan seputar tuning:

  1. Bagian mana yang perlu dituning. Siapa yang melakukan?
  2. Dari sisi aplikasi, apanya yang perlu dituning?
  3. Bagian database yang mana yang perlu dituning?
  4. Darimana kita bisa belajar banyak tentang tuning?

Bagian mana yang perlu dituning? Oleh siapa?

  1. Aplikasi, oleh application designer dan developer
  2. Database, oleh database administrator (DBA)
  3. System Operasi (OS), oleh system administrator (sysadmin)

Tuning Aplikasi

Tuning aplikasi memberikan kontribusi tersebar terhadap performa sistem secara keseluruhan. Termasuk bagian-bagian tuning aplikasi adalah:

  1. Normalisasi yang tepat
  2. Pemakaian index
  3. Pemakaian hint dalam query SQL atau PL/SQL
  4. Pemanfaatan sharing cursor
  5. dan lain-lain

Bagian database yang mana yang perlu dituning?

  1. Memory -> PGA dan SGA SGA (shared pool, large pool, buffer cache, redo log buffer, sort area size)
  2. I/O -> distributing I/O, striping, multiple DBWn processes, DBWn I/O slaves.
  3. CPU -> CPU utilization.
  4. Network
  5. Space management -> extent allocation dan Oracle block efficiency.
  6. Redo log dan checkpoint -> redo log file configuration, redo entries, dan checkpoint.
  7. Rollback segment -> sizing rollback segments. Mulai versi 9i, banyakbagian yang dibuat automatic
  8. dan lain-lain

Darimana kita bisa belajar banyak tentang tuning?

Continue reading Dasar-dasar Tuning