Quản trị bộ nhớ trong Oracle Database là một khía cạnh quan trọng để đảm bảo hiệu suất và độ tin cậy của hệ thống. Oracle cung cấp nhiều công cụ và kỹ thuật để cấu hình và quản lý bộ nhớ một cách hiệu quả. Dưới đây là một hướng dẫn chi tiết về cách cấu hình và quản trị bộ nhớ trong Oracle Database:
1. Các Thành Phần Bộ Nhớ Chính trong Oracle Database
Oracle Database sử dụng ba vùng bộ nhớ chính:
- System Global Area (SGA): Vùng bộ nhớ chia sẻ, chứa dữ liệu và thông tin điều khiển của Oracle.
- Program Global Area (PGA): Vùng bộ nhớ không chia sẻ, được sử dụng bởi mỗi phiên làm việc của Oracle.
- In-Memory Column Store: Một tính năng tùy chọn lưu trữ dữ liệu theo cột trong bộ nhớ.
Memory total = SGA + PGA
Memory total = 70-80% tổng memory của RAM thực
Tham số memory có 2 tham số là: memory_max_target, memory_target
alter system set memory_max_target=2000m scope=spfile
alter system set memory_target=2000m scope=spfile
Có 2 cách để đặt memory cho oracle database:
- Đặt memory_target và để SGA, PGA tự động được phân bổ do hệ thống tính toán cho phù hợp.
- Set memory_target, memory_max_target về 0, và set SGA và PGA riêng lẻ do người dùng định nghĩa, các thành phần bộ nhớ bên trong SGA và PGA sẽ được tự động phân bổ.
2. Cấu Hình Bộ Nhớ Tự Động (Automatic Memory Management – AMM)
Oracle cung cấp hai cách để quản lý bộ nhớ tự động:
- Automatic Shared Memory Management (ASMM): Quản lý tự động SGA.
- Automatic Memory Management (AMM): Quản lý tự động cả SGA và PGA.
Thiết lập các thông số SGA, PGA thủ công (tắt MEMORY_TARGET):
ALTER SYSTEM SET MEMORY_TARGET=0 SCOPE=SPFILE; ALTER SYSTEM SET MEMORY_MAX_TARGET=0 SCOPE=SPFILE; ALTER SYSTEM SET SGA_TARGET = 2000m SCOPE = SPFILE; ALTER SYSTEM SET SGA_MAX_SIZE = 2000m SCOPE = SPFILE; ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 1000m SCOPE = SPFILE;
Thiết lập MEMORY_TARGET tự động (AMM): hệ thống tự động quả lý phân bổ PGA, SGA
ALTER SYSTEM SET SGA_TARGET = 0 SCOPE = SPFILE; ALTER SYSTEM SET SGA_MAX_SIZE = 0 SCOPE = SPFILE; ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE; ALTER SYSTEM SET MEMORY_TARGET=2500m SCOPE=SPFILE; ALTER SYSTEM SET MEMORY_MAX_TARGET=2500m SCOPE=SPFILE;
Oracle cung cấp nhiều công cụ và chế độ xem động (dynamic views) để giám sát và điều chỉnh bộ nhớ:
- V$SGA_DYNAMIC_COMPONENTS: Cung cấp thông tin về các thành phần động của SGA.
- V$MEMORY_TARGET_ADVICE: Cung cấp gợi ý về việc điều chỉnh MEMORY_TARGET.
- V$PGA_TARGET_ADVICE: Cung cấp gợi ý về việc điều chỉnh PGA_AGGREGATE_TARGET.
- V$SGA_TARGET_ADVICE: Cung cấp gợi ý về việc điều chỉnh SGA_TARGET.
Kích hoạt tính năng In-Memory:
ALTER SYSTEM SET INMEMORY_SIZE = <size> SCOPE = SPFILE;
Thiết lập các thông số liên quan:
ALTER SYSTEM SET INMEMORY_QUERY = ENABLE SCOPE = BOTH;