ESC را فشار دهید تا بسته شود

زمیوس آموزش، یادگیری و سرگرمی

Memory Management در اوراکل چیست و چگونه تنظیم می‌شود؟

اگر با Oracle Database کار می‌کنید، احتمالاً بارها شنیده‌اید که تنظیم صحیح Memory چقدر در سرعت و عملکرد سیستم تأثیر دارد. مدیریت حافظه در اوراکل یکی از مهم‌ترین مباحث Performance Tuning محسوب می‌شود و اگر درست انجام نشود، سیستم دچار کندی، افزایش I/O، مصرف بالای CPU و خطاهای پرتکراری مثل ORA-04031 و ORA-04030 خواهد شد.

در این مقاله آموزش Oracle در بخش آموزش معماری اوراکل ، توضیح می‌دهم که Memory Management دقیقاً چیست، چگونه کار می‌کند، چه انواعی دارد و بهترین روش تنظیم آن چیست.

گر با دیتابیس Oracle کار می‌کنی—چه به عنوان برنامه‌نویس، چه DBA—حتماً اسم Shared Pool را زیاد شنیدی.

Shared Pool یکی از حیاتی‌ترین بخش‌های حافظه SGA است و دقیقاً همان جایی است که می‌تواند سرعت اجرای SQL را چند برابر کند یا برعکس، اگر درست مدیریت نشود، سیستم را کند و سنگین کند.

پیشنهاد می کنم این مقاله زیر رو حتما مطالعه کنی.

در این مقاله شما می خوانید

Memory Management در Oracle یعنی چه؟

Memory Management یعنی نحوه تخصیص و مدیریت حافظه بین بخش‌های مختلفی که Oracle برای اجرای Query و پردازش داده‌ها نیاز دارد.

اوراکل حافظه را به دو بخش اصلی تقسیم می‌کند:

  • SGA (Shared Global Area)
  • PGA (Program Global Area)

این دو بخش هسته اصلی عملکرد دیتابیس را تشکیل می‌دهند.

SGA چیست؟ (Shared Global Area)

SGA بخش اشتراکی حافظه است و همه سشن‌ها از آن استفاده می‌کنند.

اجزای اصلی SGA:

  • Database Buffer Cache
  • Shared Pool
  • Redo Log Buffer
  • Large Pool
  • Java Pool
  • Streams Pool

۱. Database Buffer Cache

بلوک‌های داده‌ای که از دیسک خوانده می‌شوند در این بخش ذخیره می‌شوند.

پارامتر تنظیم:

				
					DB_CACHE_SIZE

				
			

مثال:

				
					ALTER SYSTEM SET DB_CACHE_SIZE = 2G;

				
			

۲. Shared Pool

جایی که اوراکل SQLهای Parse شده و Data Dictionary را ذخیره می‌کند.

پارامتر تنظیم:

				
					SHARED_POOL_SIZE

				
			

مثال:

				
					ALTER SYSTEM SET SHARED_POOL_SIZE = 800M;

				
			

PGA چیست؟ (Program Global Area)

PGA حافظه اختصاصی هر Session است و شامل موارد زیر می‌شود:

  • Sort
  • Hash Join
  • Bitmap Merge
  • Private SQL Area

اگر مقدار آن کم باشد، عملیات Sort روی دیسک انجام می‌شود و سیستم افت سرعت شدیدی پیدا می‌کند.

پارامتر اصلی:

				
					PGA_AGGREGATE_TARGET

				
			

مثال:

				
					ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 1G;

				
			

انواع روش‌های مدیریت حافظه در Oracle

اوراکل سه مدل مدیریت حافظه دارد:

۱. Manual Memory Management

در این روش همه پارامترها دستی تنظیم می‌شوند.

مثلاً:

				
					DB_CACHE_SIZE
SHARED_POOL_SIZE
LARGE_POOL_SIZE
PGA_AGGREGATE_TARGET

				
			

مزایا:

  • کنترل کامل

معایب:

  • نیاز به تجربه بالا
  • احتمال خطا زیاد

۲. ASMM (Automatic Shared Memory Management)

در این روش، ما مقدار SGA را مشخص می‌کنیم و Oracle خودش آن را بین بخش‌های مختلف تقسیم می‌کند.

مثال:

				
					ALTER SYSTEM SET SGA_TARGET = 4G;

				
			

۳. AMM (Automatic Memory Management)

بهترین و آسان‌ترین روش

در این حالت تنها MEMORY_TARGET را مشخص می‌کنیم و Oracle به‌صورت هوشمند آن را بین SGA و PGA توزیع می‌کند.

مثال:

				
					ALTER SYSTEM SET MEMORY_TARGET = 6G;
ALTER SYSTEM SET MEMORY_MAX_TARGET = 6G;

				
			

مزایا:

  • بسیار ساده
  • هوشمند
  • مناسب اکثر محیط‌های عملیاتی

مثال از تنظیم memory

سناریو:

  • سرور: ۱۶GB RAM
  • کاربران: حدود ۱۰۰ کاربر همزمان
  • استفاده فقط برای Oracle

پیشنهاد:

  • OS → ۴GB
  • Oracle → ۱۲GB

تنظیم:

				
					ALTER SYSTEM SET MEMORY_TARGET = 10G;
ALTER SYSTEM SET MEMORY_MAX_TARGET = 10G;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 2G;

				
			

خطاهای رایج حافظه در Oracle

ORA-04031

کمبود حافظه Shared Pool

راه‌حل:

				
					ALTER SYSTEM SET SHARED_POOL_SIZE = 1G;

				
			

یا فعال‌سازی AMM

ORA-04030

کمبود PGA

راه‌حل:

				
					ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 2G;

				
			

بررسی Buffer Cache Hit Ratio

				
					SELECT 
  (۱ - (phy.value / (cur.value + con.value))) * 100 "Buffer Cache Hit Ratio"
FROM 
  v$sysstat phy,
  v$sysstat cur,
  v$sysstat con
WHERE 
  phy.name = 'physical reads'
  AND cur.name = 'db block gets'
  AND con.name = 'consistent gets';

				
			

اگر کمتر از ۹۰ باشد یعنی Cache کم است.

سوالات متداول درباره Memory Management در اوراکل

حدود ۶۰ تا ۷۰ درصد کل RAM سیستم.

AMM ساده‌ترین و کاربردی‌ترین روش است.

وقتی نیاز به کنترل دقیق جزئیات داریم.

Parse زیاد، CPU بالا، خطای ORA-04031.

Sort روی دیسک انجام می‌شود → سیستم کند می‌شود.

جمع‌بندی

  • استفاده از AMM (اگر نسخه اوراکل اجازه دهد)
  • بررسی منظم AWR Report
  • مانیتورینگ Memory با V$ views
  • تنظیم مقادیر بر اساس بار واقعی سیستم

سؤالی درباره این مقاله داری؟

اگر نکته‌ای در این مقاله برات مبهم بود یا خواستی بیشتر بدونی، همین حالا برام بنویس تا دقیق و صمیمی پاسخت رو بدم — مثل یه گفت‌وگوی واقعی 💬

برو به صفحه پرسش و پاسخ

میثم راد

من یه برنامه نویسم که حسابی با دیتابیس اوراکل رفیقم! از اونایی ام که تا چیزی رو کامل نفهمم،ول کن نیستم، یادگرفتن برام مثل بازیه، و نوشتن اینجا کمک می کنه تا چیزایی که یاد گرفتم رو با بقیه به شریک بشم، با هم پیشرفت کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *