در نوشته های پیشین گفتیم که Data File ها، فایل های فیزیکی روی دیسک هستند که داده ها برای همیشه (تا زمان پاک نشده) درون آنها نگهداری و ماندگار می شوند. هر Tablespace می تواند یک تا چندین Data File داشته باشد ولی هر Data File تنها به یک Tablespace واگذار می شود. Data File ها را می توانیم در دو گروه دسته بندی کنیم:

۱ – Temp File ها یا Temporary Data File ها که به Tablespace گذرا (Temporary) واگذار می شوند.

۲ – Data File هایی که به Tablespace ماندگار (Primary) واگذار می شوند.

اگر می خواهید Tablespace چندین Data File داشته باشد، بهتر است هر یک از آنها بر روی دیسک و درایور (Driver – راهه اندازه) متفاوت نگهداری شود. هر Data File (که از این پس آن را تنها فایل می گوییم) دارای دو شماره ویژه خودش است. یکی از این شماره ها Absolute (یگانه و تک) است که درون همه پایگاه داده به یک Data File داده می شود. بنابراین می توان از این شماره یگانه به جای وارد کردن مسیر فایل، در پرس و جوهای SQL (روی دیتا دیکشنری) کمک گرفت. برای پیدا کردن شماره فایل می توانید از نما های (View) زیر کمک بگیرید.

  • ستون #FILE در نما V$DATAFILE یا V$TEMPFILE (برای Temp File در Tablespace گذارا)
  • ستون FILE_ID در نما DBA_DATA_FILES یا DBA_TEMP_FILES (برای Temp File در Tablespace گذارا)

در کنار شماره ای که درون پایگاه داده به هر Data File یا Temp File داده می شود، به یک از آنها درون Tablespace نیز یک شماره یا بهتر است بگوییم یک شناسه یکتا به فایل ها داده می شود. هیچ بایدی نیست که این دو شماره با هم یکسان باشند.

پارامتر DB_FILES

این پارامتر شمارگان (تعداد) فایل های فیزیکی را نشان می دهد که می توان به یک Instance واگذار کرد. خطای ORA-00059 زمانی نشان داده می شود که از آستانه بیشترین شمارگان (تعداد) Data File های یک Instance بگذریم. برای این خطا باید مقدار DB_FILE را تغییر دهیم. پارامتر DB_FILE از گونه پویا (Dynamic) نیست پس باید با دستور ALTER SYSTEM زیر آن را درون SPFILE و با SCOPE=BOTH تغییر دهیم.

اگر مقدار این پارامتر بسیار کوچک باشد، شما نمی توانید Data File تازه ای را درون Instance ایجاد کنید و نیاز است برای ایجاد فایل بیشتر، پایگاه داده خاموش (Shutdown) شود، زیرا برای دادن مقدار دیگری به پارامتر، باید پس انجام ALTER SYSTEM PARAMETER، پایگاه داده خاموش و از نو روشن (راه اندازی) شود. همچنین اگر مقدار آن بیش از اندازه بزرگ باشد، حافظه بی خود مصرف می شود.

در نوشته  گفتیم که Tablespace ها را می توانیم در دو دسته Smallfile و Bigfile گروه بندی کنیم. Bigfile تک Data File بسیار بزرگ است که به Tablespace داده می شود. در باره Smallfile ها با اینکه چندین فایل به Tablespace داده می شود، ولی چندین تنگنا (محدودیت) وجود دارد که می بایست آنها را بدانید.

  • سیستم عامل نمی گذارد بیش از یک اندازه، یک فرایند (کاربر و در اینجا کاربر oracle) همزمان فایل باز داشته باشد.
  •  سیستم عامل های متفاوت، تنگناهای متفاوتی را بر روی اندازه و شمارگان فایل ها (Data File) دارد.
  • نمی توان بیشتر از DB_FILES درون یک Instance فایل (Data File) ایجاد کرد.

اندازه Tablespace

Tablespace مفهوم منطقی (و نه فیزیکی) است و اندازه آن برابر با اندازه همه فایل (های) آن است. اگر شما Tablspace را تنها با یک یا چندین فایل ایجاد می کنید، پس گذشت زمان و افزوده شدن شی های تازه به Tablespace، اندازه آن بزرگتر می شود تا جایی که دیگر گنجایش آن به پایان می رسد و نیاز است تا یک یا چندین فایل دیگر افزوده شود. اگر تمامی فایل (های) Tablespace پر شود، پس دیگر نمی توان چیز تازه ای را درون آن ریخت (نگهداری کرد)

پیشنهاد می شود که فایل های Tablespace روی دیسک های با درایورهای متفاوت نگهداری شوند تا بار کاری از روی یک دیسک برداشته شود. زمانی که بلام های (Data Block) یک فایل پر شود، اوراکل خودکار روی فایل دیگر، حتی روی دیسک دیگر باشد می نویسد و همچنین اوراکل تمامی فایل ها (Data File ها) را باز می کند و می تواند پاسخ گوی پرس و جو ها باشد، بی آنکه نیاز باشد شما بدانید داده شما روی کدام بلاک از کدام فایل نگهداری می شود.

اسکریپت SQL برای پیگیری و بررسی (Monitoring) اندازه کارکرده و اندازه مانده همه Tablespace ها