Tài nguyên server là có hạn, và mỗi database có thể có nhiều user sử dụng với các thao tác, mục đích khác nhau. Do vậy nếu không có sự phân bổ, giới hạn tài nguyên, 1 nhóm user có thể sử dụng quá nhiều resource, ảnh hưởng tới nhóm user khác.

 

Oracle hỗ trợ quản lý việc phân bổ tài nguyên bằng Resource Manager, với 3 thành phần chính:

  • Resource plan: Có thể có nhiều resource plan trong database, nhưng chỉ có thể active 1 resource plan tại 1 thời điểm. Trong resource plan có thể bao gồm nhiều consumer group, subplan, và các plan directive
  • Consumer groups: các nhóm user, session có nhu cầu sử dụng resource tương tự nhau
  • Resource plan directives: kịch bản phân bổ resource cho từng consumer group trong resource plan

 

VD: ta có resource plan WEEKDAY với 3 consumer groups: OLTP, REPORTING, OTHER_GROUPS. Mỗi group được phân bổ (directive) CPU như sau:

OLTP: tối đa 70% CPU

REPORTING: tối đa 20% CPU

OTHER_GROUPS: tối đa 10% CPU

 

Nhóm OTHER_GROUPS luôn được tự động thêm vào các resource plan để đảm bảo user nào không được chỉ định rõ thì cũng sẽ có consumer group mặc định.

 

Khi không có user của nhóm khác hoạt động thì Oracle vẫn có thể tăng thêm resource cho nhóm user đang hoạt động để tăng performance, chứ không hoàn toàn cứng nhắc cố định. Ngoài ra, có thể cấu hình để chuyển 1 session/user từ consumer group này sang consumer group khác khi thỏa điều kiện, nhằm sử dụng resource hiệu quả hơn. Việc này hoàn toàn do Resource manager thực hiện tự động và trong suốt với người dùng.

 

Để kiểm tra các thành phần trong Resource Manager, ta có thể query trong 3 table:

 

 

Mặc định Oracle có tạo ra 1 số plan cũng như consumer group sẵn. Tuy vậy, Oracle không enable 1 plan nào

 

 

Resource Manager có thể phân bổ những tài nguyên gì?

 

  • % sử dụng CPU
  • Mức độ parallel
  • Số active session
  • Dung lượng undo
  • CPU time
  • Idle time

 

Sử dụng cơ bản Resource Manager

 

Để sử dụng Resource Manager, ta có thể dùng package DBMS_RESOURCE_MANAGER. Và để dễ dàng hơn, ta nên sử dụng các tool như Enterprise Manager, Toad với giao diện trực quan.

 

Ví dụ ta tạo 1 consumer group cho team Developers. Các script dưới đây được sinh ra bằng công cụ Toad

 

 

Gán user HR vào consumer group DEV

 

 

Kiểm tra lại

 

 

Sau đó tạo ra 1 plan mới trong Toad

 

 

Ta thấy đoạn script tạo ra 1 Resource plan tên là MY_PLAN, với các plan directive cho các consumer group/subplan khác nhau (DEV, SYS_GROUP, BATCH_GROUP, OTHER_GROUPS).

 

Mỗi plan directive sẽ phân bổ CPU (cpu_p1, cpu_p2…), số active session (active_sess_pool_p1), số parallel tối đa (parallel_degree_limit_p1), session timeout (queueing_p1), có chuyển group không (switch_group, switch_time)… Nếu không chỉ định thì giá trị các tham số thường là UNLIMITED.

 

Để enable Resource plan này, ta thực hiện ALTER SYSTEM

 

 

Để theo dõi hoạt động sử dụng Resource, có thể theo dõi trong Grid Control/Cloud Control, hoặc query các performance view

 

 

Ngoài ra, có 1 tool nhỏ để monitor do 1 DBA viết bằng Python là presman. Mình sẽ giới thiệu trong 1 bài viết khác.

 

Qua bài này chúng ta đã nắm được khái niệm cơ bản về Resource Manager. Trong các bài viết khác chúng ta sẽ cùng tìm hiểu chi tiết hơn về cách sử dụng tính năng này.