Oracle Resource Manager là một công cụ mạnh mẽ để quản lý tài nguyên trong cơ sở dữ liệu Oracle. Dưới đây là các bước cơ bản để sử dụng Oracle Resource Manager:
Oracle Resource Manager ORM | Sử dụng Oracle Resource Manager quản lý tài nguyên người dùng
Tạo một Resource Plan
Resource Plan xác định cách tài nguyên sẽ được phân bổ cho các nhóm tài nguyên khác nhau. Bạn có thể tạo một Resource Plan như sau:
Tạo khu vực chờ: Pending area
BEGIN DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA(); END; /
Tạo một Resource Plan
BEGIN DBMS_RESOURCE_MANAGER.CREATE_SIMPLE_PLAN( simple_plan => 'my_simple_plan', consumer_group1 => 'group1', group1_cpu => 80, consumer_group2 => 'group2', group2_cpu => 20 ); END; /
Tạo các Consumer Group
Consumer Group là các nhóm người dùng hoặc các phiên làm việc được gán vào một Resource Plan. Bạn có thể tạo một Consumer Group như sau:
BEGIN DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( consumer_group => 'group1', comment => 'Group 1' ); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( consumer_group => 'group2', comment => 'Group 2' ); END; /
Gán người dùng vào Consumer Group
Bạn cần gán người dùng vào các Consumer Group mà bạn đã tạo:
EXEC DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP('username', 'group1', TRUE); EXEC DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP('username', 'group2', TRUE);
Kích hoạt Resource Plan
Cuối cùng, bạn cần kích hoạt Resource Plan:
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'my_simple_plan';
Xác nhận và submit các thay đổi
BEGIN DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA(); DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA(); END; /
Kiểm tra và Quản lý
Bạn có thể kiểm tra Resource Plan và các nhóm tài nguyên đang hoạt động bằng cách sử dụng các truy vấn sau:
SELECT * FROM DBA_RSRC_PLANS; SELECT * FROM DBA_RSRC_CONSUMER_GROUPS; SELECT * FROM DBA_RSRC_PLAN_DIRECTIVES;
Chỉnh sửa và Xóa Resource Plan
Nếu bạn cần chỉnh sửa hoặc xóa một Resource Plan, bạn có thể sử dụng các thủ tục của DBMS_RESOURCE_MANAGER.
BEGIN DBMS_RESOURCE_MANAGER.DELETE_PLAN('my_simple_plan'); END; /
THAM SỐ ORM:
Trong Oracle Resource Manager, có nhiều tham số tài nguyên khác nhau mà bạn có thể sử dụng để kiểm soát và quản lý tài nguyên. Dưới đây là một số tham số tài nguyên quan trọng:
1. CPU Utilization (Sử dụng CPU)
- CPU_PERCENTAGE: Xác định tỷ lệ phần trăm CPU mà một nhóm tiêu thụ tài nguyên (consumer group) có thể sử dụng.
2. Active Session Pool (Bể phiên hoạt động)
- ACTIVE_SESS_POOL_P1: Xác định số lượng phiên hoạt động tối đa mà một nhóm tiêu thụ tài nguyên có thể có tại bất kỳ thời điểm nào.
3. Parallel Execution (Thực thi song song)
- PARALLEL_DEGREE_LIMIT_P1: Giới hạn mức độ song song của các câu lệnh trong một nhóm tiêu thụ tài nguyên.
- PARALLEL_QUEUE_TIMEOUT_P1: Thời gian tối đa mà một phiên có thể chờ đợi trong hàng đợi thực thi song song.
4. Idle Time (Thời gian nhàn rỗi)
- IDLE_TIME: Xác định thời gian nhàn rỗi tối đa của một phiên trước khi nó bị ngắt kết nối.
5. Undo Pool (Bể hoàn tác)
- UNDO_POOL: Giới hạn lượng tài nguyên hoàn tác mà một nhóm tiêu thụ tài nguyên có thể sử dụng.
6. Session Management (Quản lý phiên)
- MAX_SESSIONS_PER_USER: Giới hạn số lượng phiên tối đa mà một người dùng có thể có trong một nhóm tiêu thụ tài nguyên.
- SWITCH_GROUP: Chuyển một phiên sang một nhóm tiêu thụ tài nguyên khác dựa trên các tiêu chí nhất định (ví dụ: sử dụng CPU vượt quá một ngưỡng xác định).
7. I/O Management (Quản lý I/O)
- MAX_EST_EXEC_TIME: Giới hạn thời gian thực thi ước tính tối đa của một câu lệnh I/O.
- IORM_SHARE: Chia sẻ tài nguyên I/O giữa các nhóm tiêu thụ tài nguyên.
8. Automatic Consumer Group Switching (Chuyển nhóm tiêu thụ tài nguyên tự động)
- SWITCH_TIME: Thời gian tối đa mà một phiên có thể chạy trước khi bị chuyển sang một nhóm tiêu thụ tài nguyên khác.
- SWITCH_ESTIMATE: Nếu được đặt, phiên sẽ được chuyển sang nhóm tiêu thụ tài nguyên khác nếu thời gian thực thi ước tính của câu lệnh vượt quá giá trị này.
9. Memory Management (Quản lý bộ nhớ)
- MAX_MEMORY: Giới hạn lượng bộ nhớ tối đa mà một nhóm tiêu thụ tài nguyên có thể sử dụng.
- MEMORY_LIMIT: Giới hạn bộ nhớ thực tế mà một phiên trong một nhóm tiêu thụ tài nguyên có thể sử dụng.
10. Composite Limits (Giới hạn tổng hợp)
- COMPOSITE_LIMIT: Xác định một giới hạn tổng hợp dựa trên nhiều yếu tố như CPU, I/O, và thời gian thực thi.
VÍ DỤ CHI TIẾT:
BEGIN DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA(); END; / BEGIN DBMS_RESOURCE_MANAGER.CREATE_PLAN( plan => 'my_complex_plan', comment => 'Complex Resource Plan' ); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( consumer_group => 'high_priority_group', comment => 'High Priority Group' ); DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( consumer_group => 'low_priority_group', comment => 'Low Priority Group' ); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( plan => 'my_complex_plan', group_or_subplan => 'high_priority_group', comment => 'High Priority Group Directive', cpu_p1 => 80, parallel_degree_limit_p1 => 16, active_sess_pool_p1 => 10, max_est_exec_time => 300 ); DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( plan => 'my_complex_plan', group_or_subplan => 'low_priority_group', comment => 'Low Priority Group Directive', cpu_p1 => 20, parallel_degree_limit_p1 => 4, active_sess_pool_p1 => 5, max_est_exec_time => 600 ); DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA(); DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA(); END; / ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'my_complex_plan';
Việc sử dụng Oracle Resource Manager một cách hợp lý có thể giúp tối ưu hóa hiệu suất và đảm bảo rằng các tài nguyên được phân bổ một cách công bằng cho các tác vụ quan trọng.