Monday, February 19, 2007

Share: Architecture Of Oracle Server

Architecture of Oracle Server

Pada intinya Oracle arsitektur terbagi atas dua bagian yaitu instance dan database. Umumnya hubungan antara keduanya untuk satu sistem adalah one-to-one tetapi tidak menutup kemungkinan digunakannya relasi many-to-one yang lebih dikenal dengan RAC (Real Application Cluster) yaitu terdapat banyak instance yang mengakses satu database. RAC memberikan performa sistem yang cepat, scalability, fault tolerance dan (mungkin) cost savings. RAC merupakan bagian dari konsep grid yang diusung oleh Oracle.

instance terdiri atas struktur memori dan proses yang bersifat transient di dalam memori. Sedangkan database adalah kebalikan dari instance, database terdiri atas physical file dalam disk yang hanya hilang jika di-delete.

instance merupakan block shared memory yang lebih dikenal dengan SGA (System Global Area) yang terbagi atas:
  • shared pool, shared pool terbagi menjadi dua struktur memori lagi, yaitu:
    • library cache, yang menyimpan kode eksekusi yang dijalankan dalam format tertentu. Parsing adalah proses yang dilakukan oleh programmer dan itu membutuhkan waktu yang agak lama. Namun, dengan adanya parsed format yang disimpan dalam memori maka parsing dapat dihindari sekaligus dapat digunakan kembali tanpa harus reparsing.
    • data dictionary cache, menyimpan objek yang telah digunakan sehingga apabila digunakan kembali tidak perlu mengambilnya lagi dari disk, dan tentu saja hal itu mempengaruhi performa.
  • database buffer cache, area memory yang digunakan untuk mengeksekusi perintah SQL. User di'haram'kan untuk meng-update data langsung dari disk, oleh karenanya oracle meng-copy data dari disk ke dalam database buffer dan user melakukan update di area tersebut sehingga meminimalisasi kebutuhan I/O.
  • log buffer, area kecil di memori yang digunakan untuk menyimpan perubahan jangka pendek pada database buffer cache.
  • large pool, optional area yang digunakan secara otomatis oleh proses-proses yang akan menggunakan area memori di shared pool.
  • java pool, area yang digunakan jika terdapat program java yang berjalan pada database. Namun, Oracle sekarang dibangun dengan Java, jadi java pool menjadi kebutuhan standar sekarang.
  • stream pool, digunakan oleh Oracle stream.
Selain SGA, di dalam instance juga terdapat setidaknya 5 proses untuk mendukung jalannya server. Proses-proses tersebut lebih dikenal dengan background proses, mereka antara lain :
  • SMON (System Monitor), mempunyai fungsi utama mengaktifkan database dengan membangun koneksi antara instance dengan database. Selama proses normal, SMON memonitor dan mengelola operasi.
  • PMON (Process Monitor), PMON bertugas mengawasi jalannya session oleh user, misalkan komputer restart saat user dalam keadaan login maka PMON akan mencatat semua proses dan mengelola proses pada session tersebut.
  • DBWn (Database Writer), bertugas terhadap penulisan di database. Ingat ya, bahwa tidak ada session untuk mengupdate data langsung ke disk, user hanya mengupdate data pada database buffer cache dan DBWn-lah yang bertugas menulis data-data tersebut ke disk. DBWn bekerja sangat jarang karena Oracle lebih banyak beroperasi pada memori.
  • LGWR (Log Writer), memindahkan semua perubahan yang dilakukan user di database buffer cache hingga redo log files ke disk. LGWR bertolak belakang dengan DBWn karena proses ini harus banyak dilakukan untuk antisipasi apabila terjadi "kecelakaan".
  • CKPT (Checkpoint), bertanggung jawab atas up-to-date-nya database dengan instance atau dengan kata lain CKPT bertugas menjaga sinkronisasi antara database dengan instance. Pada prinsipnya database adalah selalu out-of-date, untuk itu diperlukan proses yang mengatur frekuensi proses penulisan dari instance ke database.
So, that's why sometime Oracle called as the best Database in the world.

No comments: