
در این مقاله شما می خوانید
🔹 بخش اول: مفاهیم پایه Tablespace
۱. Tablespace در Oracle چیست؟
Tablespace یک ساختار منطقی (Logical) برای نگهداری دادهها در Oracle Database است.
دادهها فیزیکی داخل Datafile ذخیره میشوند، اما Oracle آنها را از طریق Tablespace مدیریت میکند.
📌 ساختار کلی:
Database
└── Tablespace
└── Datafile
└── Segment (Table, Index, ...)
۲. تفاوت Tablespace و Datafile چیست؟
| Datafile | Tablespace |
|---|---|
| فیزیکی | منطقی |
| فایل روی دیسک | قابل مدیریت با SQL |
| فقط متعلق به یک Tablespace | شامل چند Datafile |
۳. چرا Tablespace مهم است؟
چون مستقیماً روی این موارد اثر میگذارد:
- ✅ مدیریت فضای ذخیرهسازی
- ✅ Performance دیتابیس
- ✅ Backup و Recovery
- ✅ پایداری در Production
۴. انواع Tablespace در Oracle کداماند؟
- SYSTEM
- SYSAUX
- UNDO
- TEMP
- User Tablespace
SELECT tablespace_name FROM dba_tablespaces;
۵. SYSTEM Tablespace چه کاربردی دارد؟
- شامل Data Dictionary
- حیاتی برای دیتابیس
- هرگز نباید Drop یا Read Only شود
۶.SYSAUX Tablespace چیست؟
برای نگهداری اطلاعات جانبی مثل:
- AWR
- OEM
- Statistics
هدف: سبکتر شدن SYSTEM
۷. UNDO Tablespace چیست؟
برای:
- Rollback
- Read Consistency
- Flashback
SHOW PARAMETER undo_tablespace;
۸. TEMP Tablespace چیست؟
برای عملیات موقتی مثل:
- Sort
- Order By
- Hash Join
SELECT * FROM dba_temp_files;
🔹 بخش دوم: ساخت و مدیریت Tablespace
۹. چگونه یک Tablespace بسازیم؟
CREATE TABLESPACE users_ts
DATAFILE '/u01/oradata/ORCL/users01.dbf'
SIZE 500M;
۱۰. Tablespace با Autoextend چیست و چرا مهم است؟
CREATE TABLESPACE data_ts
DATAFILE '/u01/oradata/ORCL/data01.dbf'
SIZE 1G
AUTOEXTEND ON
NEXT 100M
MAXSIZE 5G;
✅ جلوگیری از Out of Space
✅ مناسب Production
۱۱. BIGFILE و SMALLFILE Tablespace چه تفاوتی دارند؟
| توضیح | نوع |
|---|---|
| چند Datafile | SMALLFILE |
| یک Datafile بزرگ | BIGFILE |
۱۲. چگونه Datafile جدید اضافه کنیم؟
ALTER TABLESPACE users_ts
ADD DATAFILE '/u01/oradata/ORCL/users02.dbf'
SIZE 500M;
۱۳. افزایش سایز Datafile چگونه است؟
ALTER DATABASE DATAFILE
'/u01/oradata/ORCL/users01.dbf'
RESIZE 1G;
۱۴. Offline و Online کردن Tablespace چه زمانی استفاده میشود؟
ALTER TABLESPACE users_ts OFFLINE;
ALTER TABLESPACE users_ts ONLINE;
✅ برای Maintenance
✅ نه در Peak Time
۱۵. Read Only کردن Tablespace چه کاربردی دارد؟
ALTER TABLESPACE users_ts READ ONLY;
مناسب آرشیو دیتا
۱۶. حذف Tablespace چگونه انجام میشود؟
DROP TABLESPACE users_ts
INCLUDING CONTENTS AND DATAFILES;
⚠️ بسیار خطرناک در عملیاتی
۱۷. چگونه مصرف فضای Tablespace را بررسی کنیم؟
SELECT tablespace_name,
ROUND(SUM(bytes)/1024/1024) MB
FROM dba_data_files
GROUP BY tablespace_name;
۱۸. چه اشیایی داخل یک Tablespace هستند؟
SELECT owner, segment_name, segment_type
FROM dba_segments
WHERE tablespace_name = 'USERS';
🔹 بخش سوم: نکات حرفهای و DBA Level
۱۹. Locally Managed Tablespace چیست؟
- مدیریت Extent با Bitmap
- Performance بهتر
- استاندارد Oracle
۲۰. ASSM چیست و چرا مهم است؟
Automatic Segment Space Management
✅ کاهش Contention
✅ مناسب OLTP
۲۱. Extent و Segment چه تفاوتی دارند؟
- Segment = Table / Index
- Extent = مجموعهای از بلاکها
۲۲. Default Tablespace کاربر چگونه تعیین میشود؟
ALTER USER hr
DEFAULT TABLESPACE users;
۲۳. انتقال Table به Tablespace دیگر
ALTER TABLE employees
MOVE TABLESPACE data_ts;
۲۴. انتقال Index چگونه است؟
ALTER INDEX emp_idx
REBUILD TABLESPACE index_ts;
۲۵. Tablespace Encryption چیست؟
CREATE TABLESPACE secure_ts
ENCRYPTION USING 'AES256'
DEFAULT STORAGE (ENCRYPT);
✅ امنیت بالا
✅ بدون تغییر اپلیکیشن
۲۶. Transportable Tablespace چیست؟
انتقال سریع دیتا بین دیتابیسها بدون Export کامل
۲۷. Fragmentation در Tablespace چیست؟
راهحلها:
- MOVE TABLE
- REBUILD INDEX
- SHRINK SPACE
۲۸. مانیتورینگ Tablespace در Production
SELECT tablespace_name,
used_percent
FROM dba_tablespace_usage_metrics;
۲۹. اشتباهات رایج DBAها درباره Tablespace
❌ استفاده از SYSTEM برای دیتا
❌ نداشتن Autoextend
❌ مانیتور نکردن فضا
۳۰. Best Practice نهایی Tablespace
✅ Data و Index جدا
✅ Autoextend + Maxsize
✅ LMT + ASSM
✅ مانیتورینگ دائمی
سوالات متداول درباره Tablespace در اوراکل
Tablespace در Oracle یک ساختار منطقی برای مدیریت فضای ذخیرهسازی دیتابیس است که دادهها را از طریق Datafileها سازماندهی میکند.
Oracle از Tablespace برای کنترل بهتر فضا، افزایش Performance، جداسازی دادهها و سادهسازی Backup و Recovery استفاده میکند.
📌 به زبان ساده:
Tablespace مثل یک قفسه است و Datafileها کشوهای آن هستند.
تفاوت اصلی این دو در ماهیت منطقی و فیزیکی آنهاست:
- Tablespace: ساختار منطقی و قابل مدیریت با SQL
- Datafile: فایل فیزیکی که واقعاً روی دیسک ذخیره میشود
یک Tablespace میتواند چند Datafile داشته باشد، اما هر Datafile فقط به یک Tablespace تعلق دارد.
SYSTEM Tablespace شامل Data Dictionary و اطلاعات حیاتی Oracle است.
اگر دادههای کاربر داخل SYSTEM ذخیره شوند:
❌ Performance افت میکند
❌ ریسک Crash بالا میرود
❌ نگهداری دیتابیس سخت میشود
✅ بهترین کار این است که همیشه User Tablespace جداگانه بسازید.
برای یک محیط عملیاتی پایدار، این تنظیمات توصیه میشود:
✅ استفاده از Locally Managed Tablespace (LMT)
✅ فعال بودن AUTOEXTEND با MAXSIZE مشخص
✅ جداسازی Data و Index Tablespace
✅ مانیتورینگ مداوم فضای مصرفی
✅ عدم استفاده از SYSTEM و SYSAUX برای دادههای اپلیکیشن
این تنظیمات جلوی بیشتر مشکلات Out of Space و افت Performance را میگیرد.
جمعبندی
Tablespace فقط یک مفهوم نیست؛
پایهی مدیریت فضای Oracle است.
اگر درست طراحی شود، دیتابیس نفس راحت میکشد؛
اگر نه، دیر یا زود به مشکل میخوری.
سؤالی درباره این مقاله داری؟
اگر نکتهای در این مقاله برات مبهم بود یا خواستی بیشتر بدونی، همین حالا برام بنویس تا دقیق و صمیمی پاسخت رو بدم — مثل یه گفتوگوی واقعی 💬
برو به صفحه پرسش و پاسخ
دیدگاهتان را بنویسید