Ta đã biết trong SGA có Database buffer cache dùng để lưu trữ dữ liệu đọc từ data file lên, và được quản lý theo thuật toán LRU. Dữ liệu nào trong buffer cache ít được sử dụng nhất, trong trường hợp cần chỗ cho dữ liệu mới, sẽ bị xóa đi.

 

Tuy vậy, trong database có những table ta sẽ thường xuyên truy cập, hoặc rất ít khi truy cập. Nếu 1 table thường xuyên truy cập mà cứ phải tốn thêm thời gian cho physical I/O đọc từ disk lên thì không hay. Trong khi 1 table ít khi truy cập lại chiếm nhiều chỗ trong buffer cache, thì cũng không nên tí nào.

 

Do đó, Oracle hỗ trợ thêm 2 vùng bộ nhớ cache (pool) khác trong SGA, là KEEP cache, và RECYCLE cache, với mục đích lưu giữ dữ liệu lâu hơn (Keep cache), hoặc không lưu giữ dữ liệu ngay khi không sử dụng nữa (Recycle cache).

 

Mặc định 2 vùng này không được cấu hình. Ta có thể dễ dàng set dung lượng mong muốn. 2 vùng bộ nhớ này sẽ được cấp phát dung lượng riêng trong SGA. 

 

 

Sau đó là cấu hình cho đối tượng cần KEEP hay cần RECYCLE. 

Đối tượng nên KEEP là table hay index có dung lượng nhỏ, thường xuyên được truy cập. Ta có thể cấu hình trong mệnh đề STORAGE khi tạo mới object, hoặc có thể thay đổi bằng lệnh ALTER.

 

 

Đối tượng không nên để dữ liệu lâu trong buffer cache là những table lớn rất ít khi truy cập. VD ở đây ta không muốn dữ liệu bảng JOB_HISTORY lưu lại trên cache làm gì.

 

 

Kiểm tra danh sách các table đang được KEEP hay RECYCLE

 

 

Để chuyển lại 1 table về buffer cache bình thường

 

 

 

Trong trường hợp đang có dữ liệu object trong Keep buffer cache hay Recycle buffer cache, nếu ta set lại dung lượng về 0, dữ liệu object trong 2 vùng cache đó sẽ bị xóa đi.