برای این کار از دستور زیر موقع ایجاد TableSpace استفاده میکنیم:
create tablespace ts datafile 'd:\root\a.dbf' size 100m nologging;
برای این کار از دستور زیر موقع ایجاد TableSpace استفاده میکنیم:
create tablespace ts datafile 'd:\root\a.dbf' size 100m nologging;
در طول کارتان شاید به این نیاز پیدا کنید که یکسری از TableSpaceها را از دسترس خارج کنید تا هیچ عملیاتی نتوان روی TableSpace مورد نظر انجام داد(نه میشه دیتا رو ازش خوند نه میشه دیتا روش نوشت پس جداولی که روی اون TableSpace هستند کلاً از کار میافتند):
ممکنه تو یه محدوده زمانی خاص نخواین روی این TABLESPACE عملی انجام بشه، مثلاً یکجور EXPORT خاص از دیتابیس میخواین بگیرین اونوقت باید آفلاین کنید یا وقتی میخواین دیتافایلهای یک TABLESPACE رو REPAIR کنید.
نکته: اگر تراکنشی با جدولی در ارتباط باشه که شما میخواهید TABLESPACE اون جدول را آفلاین کنید بلافاصله کل تراکنش ROLLBACK میشه.
SQL> CREATE TABLESPACE TS DATAFILE 'E:\A.DBF' SIZE 100M ;
Tablespace created.
SQL> ALTER TABLESPACE TS OFFLINE;
Tablespace altered.
SQL> ALTER TABLESPACE TS ONLINE;
Tablespace altered.
فضایی بسازید که تا 200mb به طور خودکار 10m 10m رشد می کند: (در صورتی که maxsize مشخص نشود فضا میگیرد)
SQL> create tablespace ts datafile 'd:\root\a.dbf' size 100m reuse autoextend on
next 10m maxsize 200m;
در دستور بالا 100mb سایز اولیه TableSpaceامون است اگر این مقدار فضای اولیه پر شود به طور خودکار 10m 10m به فضا اضافه میشود تا به 200m برسد. در صورتی که فضای maxsize مشخص نگردد تا جایی که مدیا ذخیرهسازی اجازه دهد به DataFile ما 10m 10m اضافه میشود.
نکته: عددی که برای رشد DataFile مشخص میکنیم بسیار مهم است. اگر این عدد را زیاد بگیریم فضای مدیایذخیرهسازی ما از بین میرود چون این فضا به طور کامل اشغال و توسط اوراکل رزرو میشود و ممکن است دیتای ما آنقدر فضا نیاز نداشته باشد. اگر این عدد را کم بگیریم (مثلا ۱ کیلوبایت) اینجوری مدیای ذخیرهسازی ما فضای هدر شده ندارد ولی تو این مدت که بخواد به 200m برسه بار بسیار وحشتناکی رو CPU سرور ما داره چون به ازای هر کیلوبایت میخواد فایل رو extend کنه پس performance سیستم به شدت پایین میآید.
نکته: من ترجیح میدم فضای از دست رفتهام زیاد باشه نه اینکه بار CPU ام زیاد بشه و performance سیستم پایین بیاد
س: آیا با اضافه کردن به دیتافایل در مدیای ذخیرهسازی ما Gap ایجاد میشود؟
ج: این بستگی به سیستمعامل و سیستمفایلتان دارد و به اوراکل به صورت معمولی در حالت FileSystem ربطی ندارد. مگر در حالت ASM باشید که در این حالت اوراکل هیچ Gap ای در مدیای ذخیرهسازی شما ایجاد نمیکند.
یکی از مباحث خیلی مهم در سطح دیتابیس Tablespaceها هستند.
گفتیم رکوردهای ما رو سطح DataFile ذخیره میشوند، حال اگر بخواهیم DataFile را در سطح اوراکل ایجاد کنیم علاوه بر DataFile ای که قبلاً رو سطح دیتابیس وجود داشته باید از سک دستور SQL استفاده کنیم.
توی اوراکل مدیریت DataFileها و دستهبندی DataFileها توسط یک موجودیت منطقی مدیریت میشه به نام موجودیت Tablespace پس وقتی ما یک DataFile ایجاد میکنیم بعد از ایجاد DataFile مورد نظرمون اونو داخل یک tablespace میذاریم بعد جدولمون رو به tablespaceامون وصل میکنیم.
پس DataFile رو ایجاد میکنیم DataFile یک ساختار فیزیکی داره به یک tablespace لینکش میکنیم بعد جداولمون رو به tablespaceامون وصل میکنیم. جدول ما از لحظهای که به tablespaceامون وصل میشه اطلاعاتش رو میریزه در داخل DataFile ای که به Tablespace مدنظر وصل شده است.
به این ترتیب مدیریت DataFileها توسط Tablespace انجام میشود و شما هیچوقت یک جدول رو به طور مستقیم به یک DataFile وصل نمیکنید همیشه یک جدول رو به یک Tablespace وصل میکنید.
Tablespace در اصل واسط شما و DataFileتون است.