Pada artikel Oracle Database – Table, Tablespace, dan Datafile, Saya membahas tempat penyimpanan data fisik pada Oracle Database, yaitu Datafile. Datafile sendiri berlokasi di disk pada server Database.
Kali ini Saya mau sedikit membahas tentang memory architecture pada Oracle Database. Bagi yang sudah familiar dengan Oracle Database, pasti sudah tidak asing lagi dengan istilah SGA, PGA, DB Cache, Library Cache, dan lain sebagainya.
Ini adalah komponen-komponen dari Oracle Database, tepatnya pada memory architecture.
Di mana komponen-komponen ini akan bekerja pada memory (RAM) server Database, bukan pada disk seperti komponen Datafile.



SGA vs PGA
SGA vs PGA, dua komponen yang ingin Saya bahas adalah System Global Area (SGA) dan Program Global Area (PGA).
Sederhananya, 2 komponen ini adalah komponen utama yang kemudian parameter Database konfigurasikan. SGA, adalah komponen yang berisi data dan informasi yang akan selalu bersifat sharing.
Artinya data dan informasi pada komponen ini untuk proses apapun mengaksesnya ketika membutuhkannya .
Isi dari SGA antara lain adalah Database Buffer Cache, Library Cache, Java Pool, Redo Log Buffer, dan masih banyak lagi.
Sementara itu, PGA, adalah komponen yang secara eksklusif hanya memperuntukkannya oracle process, data dan informasi pada PGA ini proses yang lain tidak dapat mengaksesnya.
Okey, terlalu teknis ya mungkin. Saya coba memberi sebuah contoh. Misal kita punya aplikasi ABC yang terkoneksi dengan Oracle Database.
Aplikasi ini akan melakukan koneksi terhadap Oracle Database, dan Oracle Database akan menyiapkan 1 Oracle Process untuk melayani koneksi aplikasi tersebut.
Setiap aplikasi mengirimkan SQL Statement kepada Oracle Database, SQL Statement tersebut akan engine Oracle proses, lalu melakukan pengecekan/validasi di SGA (library cache), lalu memproses SQL Statement tersebut dan mengambil result data-nya (Database Buffer Cache), dan mengirimkan data tersebut ke PGA untuk diproses lebih lanjut (mungkin ada operasi sorting atau grouping pada SQL Statement).
Dan kemudian data tersebut aplikasi terima untuk menampilkannya lewat User Interface.
Proses di Komponen
Jadi proses yang terjadi di komponen SGA dan PGA pada Oracle Database akan selalu terjadi ketika ada request SQL Statement dari client (baik dari aplikasi, dari 3rd party tools database seperti Toad/SQL Developer, atau pun langsung dari SQLPlus).
Mereka saling bahu membahu dalam melayani permintaan dan memproses SQL Statement tersebut. Konfigurasi SGA dan PGA juga harus tepat pada Oracle Database, dan besaran parameter biasanya disesuaikan dengan behaviour dari aplikasi.
Akan butuh data yang valid untuk menghitung besaran yang tepat dari SGA dan PGA.
Namun jika di awal tidak mempunyai data tersebut, biasanya yang dilakukan oleh seorang Oracle Database Administrator adalah menggunakan 50%-80% dari jumlah memory Server untuk Oracle Database, di mana komposisi SGA – PGA adalah 80-20, jika database tersebut bersifat OLTP.
Jika DWH, biasanya komposisi PGA akan lebih besar dari 20%.