Friday, February 23, 2007

Share: Physical Structures

Database: Physical Structures

Di Oracle terdapat 3 file penting dan harus ada dalam sebuah internal database. File-file tersebut antara lain, control file, online redo log file dan datafile. Sedangkan file lain yang yang mendukung file-file tersebut yang lebih bersifat eksternal antara lain password file, archive redo log file dan initialization parameter.

Satu database wajib memiliki satu control file, tetapi alangkah sangat baiknya jika DBA melakukan penggandaan atas control file dari database karena fungsi control file sangatlah krusial. Jika satu control file rusak maka control file lainnya dapat melakukan backup sehingga database tetap dapat berjalan normal. Kita tidak perlu mengurusi sinkronisasi antar control file karena Oracle yang akan mengurusinya, sedangkan tugas kita hanyalah menentukan jumlah duplikasi dari control file dan penempatan file tersebut. Control file sangatlah krusial karena :
  • berisi pointer dari seluruh informasi database, yaitu lokasi (-pointer) online redo log files dan datafile.
  • informasi pengelolaan integritas database, seperti critical sequence number dan timestamp.
  • informasi backup ketika kita menggunakan Recovery Manager
Setiap database yang dibuat setidaknya minimal dua online redo log files, namun alangkah baiknya jika perlakuan online redo log files disamakan dengan control file, yaitu dibuat duplikasi untuk faktor keamanan. Online redo log files menyimpan rantai kronologi yang berkelanjutan dari perubahan yang dilakukan pada database. Redo log file terdiri atas grup dari redo log file yang disebut dengan member. Oracle membutuhkan minimal dua grup dan satu member untuk tiap fungsinya, dengan tujuan agar sistem bekerja secara simultan, jika salah satu melakukan backup (archiving) maka yang lainnya tetap dapat melayani request.

Untuk mendapatkan performa dan sekuritas yang lebih maka disarankan untuk menggunakan lebih dari dua online redo log file. Proses yang terjadi dalam online redo log file adalah ketika user session mengupdate data pada database buffer cache, LGWR seminimal mungkin melakukan perubahan pada redo log buffer. Namun secara berkelanjutan LGWR meneruskan/flush buffer tersebut ke log grup yang online.

Sedangkan redo log file ukurannya bersifat tetap, sehingga ketika member yang aktif tersebut penuh, maka LGWR akan menjalankan log switch yang akan mengubah status grup yang pertama menjadi penuh dan grup yang kedua menjadi aktif, sehingga penyimpanan dilakukan pada grup yang kedua. Dan ketika grup yang kedua penuh, maka dilakukan log switch lagi sehingga flush berganti ke grup yang selanjutnya, begitu seterusnya ketika salah satu grup penuh.

Intinya, pengelolaan redo log file terletak pada penentuan ukuran file dan pathnya, sedangkan proses sinkronisasi antara proses-proses lainnya dihandle oleh Oracle. Ukuran redo log file yang sesuai dengan frekuensi transaksi yang dilakukan dapat menghasilkan performa yang optimal yang biasanya dilakukan dalam tahapan tuning.

File terakhir yang berperan dalam database adalah datafile. Secara otomatis di versi 10g, Oracle akan membuat minimum dua buah datafile. Datafile adalah tempat menyimpan data. Ukurannya tidak dibatasi sehingga dapat mencapai ribuan giga sesuai dengan batasan hardware yang dimiliki. Datafile dapat dimodifikasi saat online seperti rename, resize, move, add atau drop, tetapi ada saat-saat tertentu modifikasi datafile membutuhkan offline status.

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.