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

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

Tablespace در Oracle Database: همه‌چیز در مورد مدیریت ذخیره‌سازی داده‌ها

در این مقاله آموزش Oracle در بخش معماری اوراکل، به بررسی دقیق و جامع مفهوم Tablespace در پایگاه داده Oracle خواهیم پرداخت.

این مفهوم یکی از ارکان اساسی در مدیریت پایگاه‌های داده اوراکل است و برای مدیران پایگاه داده و توسعه‌دهندگان بسیار حیاتی است.

اگر قصد دارید درک بهتری از نحوه مدیریت فضای ذخیره‌سازی در Oracle داشته باشید، این مقاله برای شماست.

با توضیحات ساده و مثال‌های کاربردی، شما می‌توانید به راحتی یاد بگیرید که چگونه از Tablespace در پروژه‌های خود استفاده کنید.

اگر می خواهید با ساحتار آبجکت هایی که در اوراکل داده و دیتا در خود نگه می دارند بیشتر آشنا بشید، پیشنهاد می شود نوشته زیر را مطالعه کنید:

در این نوشته شما می خوانید

Tablespace چیست؟ تعریف ساده و کاربردی

Tablespace در Oracle، یک ساختار منطقی برای مدیریت فضای ذخیره‌سازی داده‌ها است

. به عبارت دیگر، Tablespace پلی است که بین ساختارهای منطقی دیتابیس (مثل جداول و ایندکس‌ها) و فایل‌های فیزیکی ذخیره‌سازی (Datafile) ایجاد می‌کند.

Tablespace از چه اجزایی تشکیل می‌شود؟

  • Datafiles: فایل‌های فیزیکی که داده‌ها در آن ذخیره می‌شوند.
  • Segments: شامل جداول، ایندکس‌ها، و دیگر اشیاء.
  • Extents: گروهی از بلوک‌ها که برای یک Segment تخصیص داده می‌شود.
  • Blocks: کوچک‌ترین واحد ذخیره‌سازی و پردازش در Oracle.

انواع مختلف Tablespace در Oracle Database

Oracle از چندین نوع Tablespace برای اهداف مختلف استفاده می‌کند.

این تقسیم‌بندی‌ها به شما کمک می‌کند که از فضا بهینه‌تر استفاده کنید و از بروز مشکلات جلوگیری کنید.

🔹 ۱. SYSTEM Tablespace

این نوع Tablespace شامل دیکشنری داده‌ها و اجزای سیستم اوراکل است. هیچ‌گاه نمی‌توان آن را حذف کرد.

🔹 ۲. SYSAUX Tablespace

این Tablespace برای ذخیره داده‌های اضافی و افزونه‌های مدیریتی است. به‌عنوان مثال، اطلاعات AWR، Oracle Enterprise Manager و غیره.

🔹 ۳. UNDO Tablespace

مربوط به ذخیره اطلاعات تراکنش‌های Rollback و تغییرات موقتی است.

🔹 ۴. TEMPORARY Tablespace

برای ذخیره اطلاعات موقتی استفاده می‌شود، به ویژه برای عملیات‌های سنگین مانند مرتب‌سازی و Joins پیچیده.

🔹 ۵. USERS Tablespace

این Tablespace پیش‌فرض برای ذخیره‌سازی داده‌های کاربران است.

🔹 ۶. Bigfile Tablespace

جدیدترین نوع Tablespace که فقط یک Datafile دارد ولی حجم آن می‌تواند بسیار بزرگ باشد.

🔹 ۷. Smallfile Tablespace

این نوع Tablespace می‌تواند چندین Datafile داشته باشد و بیشتر در شرایط معمولی استفاده می‌شود.

چرا Tablespace مهم است؟

Tablespace یکی از مهم‌ترین اجزای هر پایگاه داده است، زیرا مدیریت بهینه فضای ذخیره‌سازی را فراهم می‌کند.

با استفاده صحیح از Tablespaceها می‌توان عملکرد بهتری از سیستم گرفت، خطرات پر شدن دیسک را کاهش داد، و از مشکلاتی نظیر کاهش سرعت یا خرابی پایگاه داده جلوگیری کرد.

ایجاد و مدیریت Tablespace در Oracle

چگونه یک Tablespace جدید ایجاد کنیم؟

برای ایجاد Tablespace در Oracle، از دستور SQL زیر استفاده می‌کنیم:

				
					CREATE TABLESPACE users_data
DATAFILE '/u01/oradata/orcl/users_data01.dbf'
SIZE 500M
AUTOEXTEND ON
NEXT 50M
MAXSIZE 5G
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;

				
			

توضیحات:

  • AUTOEXTEND ON: به Datafile این امکان را می‌دهد که به صورت خودکار بزرگ‌تر شود.
  • EXTENT MANAGEMENT LOCAL: برای مدیریت تخصیص فضا به‌صورت محلی استفاده می‌شود.
  • SEGMENT SPACE MANAGEMENT AUTO: از Bitmap برای مدیریت فضای Segments بهره می‌برد.

چگونه Tablespace پیش‌فرض کاربر را تغییر دهیم؟

برای تغییر Tablespace پیش‌فرض یک کاربر به users_data:

				
					ALTER USER ali DEFAULT TABLESPACE users_data;

				
			

آفلاین و خواندنی کردن Tablespace

اگر نیاز دارید تا یک Tablespace را به حالت خواندنی یا آفلاین درآورید، می‌توانید از دستورات زیر استفاده کنید:

				
					ALTER TABLESPACE users_data READ ONLY;

				
			
				
					ALTER TABLESPACE users_data OFFLINE;

				
			

حذف Tablespace همراه با Datafile‌ها

برای حذف یک Tablespace و تمام Datafileهای آن:

				
					DROP TABLESPACE users_data INCLUDING CONTENTS AND DATAFILES;

				
			

بهینه‌سازی استفاده از Tablespace

چگونه فضای مصرفی Tablespace را مشاهده کنیم؟

برای مشاهده میزان فضای مصرفی هر Tablespace می‌توانید از کوئری زیر استفاده کنید:

				
					SELECT 
  TABLESPACE_NAME, 
  ROUND(SUM(BYTES)/1024/1024, 2) AS SIZE_MB
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME;

				
			

استفاده از Partitioning با Tablespace

یکی از بهترین روش‌ها برای بهینه‌سازی عملکرد پایگاه داده، استفاده از پارتیشن‌بندی است. در پارتیشن‌بندی، می‌توانید هر پارتیشن را در یک Tablespace مجزا ذخیره کنید:

				
					CREATE TABLE sales (
  sale_date DATE,
  amount NUMBER
)
PARTITION BY RANGE (sale_date)
(
  PARTITION p2023 VALUES LESS THAN 
  (TO_DATE('01-JAN-2024','DD-MON-YYYY')) TABLESPACE ts_2023,
  PARTITION p2024 VALUES LESS THAN 
  (TO_DATE('01-JAN-2025','DD-MON-YYYY')) TABLESPACE ts_2024
);

				
			
				
					ALTER TABLESPACE users_data OFFLINE;

				
			

سوالات متداول درباره Tablespace در Oracle

Tablespace در Oracle برای مدیریت فضای ذخیره‌سازی داده‌ها در پایگاه داده استفاده می‌شود. این ساختار به شما کمک می‌کند تا داده‌ها، ایندکس‌ها، جداول و سایر اشیاء دیتابیس را به‌طور مؤثر مدیریت و سازماندهی کنید. هر Tablespace شامل یک یا چند فایل فیزیکی است که داده‌ها را ذخیره می‌کند. به‌طور خلاصه، کاربردهای اصلی Tablespace شامل:

  • مدیریت فضای ذخیره‌سازی: با استفاده از Tablespace می‌توانید فضای پایگاه داده را به گونه‌ای تقسیم کنید که عملکرد بهینه حفظ شود.
  • تفکیک داده‌ها: می‌توانید داده‌ها، ایندکس‌ها و جداول را در Tablespaceهای مختلف قرار دهید تا سرعت دسترسی به داده‌ها را بهبود ببخشید.

Tablespace و Datafile دو مفهوم مرتبط با هم هستند، اما تفاوت‌های کلیدی دارند:

  • Tablespace یک ساختار منطقی در دیتابیس است که شامل Segments (مثل جداول و ایندکس‌ها) می‌شود.

  • Datafile یک فایل فیزیکی روی دیسک است که داده‌ها در آن ذخیره می‌شود. هر Tablespace می‌تواند شامل یک یا چند Datafile باشد.
    در واقع، Tablespace یک واسط منطقی است که Datafileهای مختلف را مدیریت می‌کند.

برای حذف Tablespace در Oracle، از دستور DROP TABLESPACE استفاده می‌شود. اگر می‌خواهید Tablespace را همراه با تمامی Datafileهای مربوطه حذف کنید، دستور زیر را اجرا کنید:

DROP TABLESPACE users_data INCLUDING CONTENTS AND DATAFILES

توضیحات:

  • INCLUDING CONTENTS: تمامی داده‌های داخل Tablespace حذف می‌شود.
  • AND DATAFILES: فایل‌های فیزیکی Datafile که به Tablespace تعلق دارند نیز حذف می‌شوند.
    این دستور باعث پاک‌سازی کامل Tablespace و داده‌های آن خواهد شد.

برای مانیتورینگ فضای ذخیره‌سازی Tablespace در Oracle، می‌توانید از کوئری SQL زیر استفاده کنید تا میزان فضای مصرفی Datafileهای مختلف را مشاهده کنید:

SELECT
TABLESPACE_NAME,
ROUND(SUM(BYTES)/1024/1024, 2) AS SIZE_MB
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME;

این کوئری به شما نشان می‌دهد که هر Tablespace چه مقدار فضا را در Datafileها اشغال کرده است. همچنین، برای بهبود مدیریت فضای Tablespace می‌توانید از Autoextend برای فایل‌های خودکار استفاده کنید تا به‌صورت خودکار رشد کنند.

🏁 جمع‌بندی

در این مقاله، شما با مفهوم Tablespace در Oracle آشنا شدید و یاد گرفتید که چگونه می‌توان از آن برای مدیریت بهینه فضای ذخیره‌سازی استفاده کرد.

این ابزار حیاتی به DBAها و توسعه‌دهندگان این امکان را می‌دهد تا بتوانند از پایگاه داده‌های Oracle بهره‌برداری بهتری داشته باشند و عملکرد سیستم را بهینه کنند.

📢 مقاله را مفید دیدید؟ برای همکاران‌تان بفرستید. یا اگر سوالی درباره Tablespace و انواع آن در اوراکل دارید، همین‌جا بپرسید!🚀

میثم راد

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

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

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