Database Buffer cache atau buffer cache adalah bagian dari SGA yang digunakan untuk menyimpan data block dari masing-masing segment yang diakses oleh user. Tipe-tipe segment tersebut anatar lain table segment, index segment, cluster segment, LOB segment, LOB index Segment, Undo segment, dan temporary segment. Oracle mempunyai beberapa cara pengaturan untuk menempatkan data block pada buffer cache. Oracle pertama kali mengenalkan metode LRU (Least Recently Used) dan sekarang dikenalkan metode touch count yang merupakan penyempurnaan metode sebelumnya
2.1.1 LRU (Least Recently Used)
Ketika oracle melakukan pembacaan terhadap sebuah segment oracle akan mencari block tersebut dari memori. Jika ini tidak ditemukan, oracle akan membaca dari hard disk dan setiap block yang dibaca akan diletakkan dalam memori, yaitu buffer cache. Dengan adanya keterbatasan alokasi memori yang ada pada oracle maka dalam hal ini oracle akan mengatur block-block mana saja yang akan tetap dipertahankan dan block mana yang harus dikeluarkan dari memori, yaitu menggunakan LRU list.
Dalam LRU list, block yang pertama kali dibaca akan berada pada posisi terakhir dalam LRU list, sedang block yang terakhir kali dibaca berada pada MRU (Most Recently Used)
Jadi pada meode ini data block yang terakhir dibaca berada pada posisi atas dan yang pertama kali di baca berada pada posisi paling bawah. Dan pada saat buffer cache dalam kondisi penuh maka harus ada block yang dikeluarkan dan itu adalah block yang berada paling bawah (LRU list paling bawah) Namun sebelumnya DBWR (database Writer).
Setiap block baru akan dibaca maka oracle akan berusaha menyediakan tempat kosong pada buffer cache apabila kapasitas buffer cache terbatas, dan oracle harus membuang block yang tidak terpakai. DBWR akan selalu memerikas dirty block. Apabila block yang akandibuang berstatus dirty block, DBWR akan menyimpannya dalam datafiles.
Oleh karena itu perlu disediakan alokasi memori (beffer cache agar proses pembacaan dalam buffer cache dapat berjalan dengan maksimal