در نوشته معماری اوراکل – ساختار منطقی اوراکل ساختار منطقی پایگاه داده اوراکل را تا اندازه ای آموزش دادیم. در این نوشته می خواهیم Tablespace ها را آموزش دهیم که یکی از چهار ساختار منطقی پایگاه داده اوراکل است. هر پایگاه داده در اوراکل دارای چندین Tablespace است و هر Tablespace خود دارای یک یا چندین Data File است ولی هر Data File تنها می تواند درون یک Tablespace شناخته شود.

داشتن چندین Tablespace درون پایگاه داده، کارایی (Performance) آن را بالا می برد. رایج است که Tablespace هایی که داده های کاربران را در خود دارند، از Tablespace هایی که Data Dictionary را دارند، جدا کنیم تا شمار اتصال ها کاهش داده شود. همچنین بهتر است که داده های هر کدام از برنامه ها را از دیگری جدا و بر روی Tablespace های جداگانه نهاده شود. Data File های Tablespace های متفاوت، بهتر است روی دیسک های متفاوت نهاده شود تا با این کار، درخواست های I/O (خواندن و نوشتن) بر روی یک دیسک کاهش داده شود.

برخی از سیستم عامل ها، تنگنایی را (محدودیتی) بر روی تعداد (شمارگان) فایل های همزمان باز می دهد. در نوشته  گفتیم که درون فایل etc/limits.conf/، پیش از پیاده سازی اوراکل، باید تعداد فایل های باز، بوسیله پارامتر fopen مشخص شده باشد. ولی این تنگا متفاوت است با آنچه که خود سیستم عامل خودش مشخص کرده است. تعداد فایل های باز همزمان از یک سیستم عامل به دیگری نیز تفاوت دارد.

ولی تعداد فایل های همزمان باز چه تاثیری بر روی Tablespace دارد؟ گفتیم که هر Tablespace دارای یک تا چندین Data File است و هرData File یک فایل فیزیکی روی دیسک است، پس محدودیت تعداد فایل های باز، تعداد Data File های باز را مشخص می کند. زمانی که Data File های یک Tablespace باز باشند، آن Tablespace در حالت Online خواهد بود و زمانی Tablespace آنلاین باشد، پس تراکنش های کاربران می توانند روی Data File های آن نوشته یا از روی آن بخوانند.

فایل های اوراکل – Data File ها

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

SYSTEM و SYSAUX

هر پایگاه داده اوراکل دارای دو Tablespace به نام های SYSTEM و SYSAUX است. این دو Tablespace در زمان ایجاد پایگاه داده ایجاد می شوند ولی سرپرست پایگاه داده می تواند Tablespace دلخواه خودش را نیز ایجاد کنید. هر Tablespace می تواند یا Onlie (در دسترس) و Offline (بیرون از دسترس) باشد. SYSTEM Tablespace همواره باید آنلاین باشد، زیرا SYSTEM Tablespace جدول ها و نماهایی را نگه می دارد که برای کارکرد پایگاه داده نیاز هستند.

SYSAUX یک Tablespace کمکی (Auxiliary) برای SYSTEM Tablespace است. بسیاری از مولفه های پایگاه داده درون SYSAUX نگهداری می شوند، پس این Tablespace نیز همانند SYSTEM همواره باید آنلاین باشد. یک نکته مهم آنکه نباید داده های کاربران و برنامه ها را درون این دو Tablespace نگهداری کنیم و از این رو باید برای داده های کاربران و برنامه Tablespace های جداگانه ایجاد شود. نکته مهم دیگری که در این دوره به آن نمی پردازیم، آن است که برای انجام بازیابی (Recovery) می توان SYSAUX را آفلاین کرد ولی این برای SYSTEM انجام شدنی نیست.

گونه های Tablespace

در اوراکل سه گونه Tablespace هست که در ادامه هر کدام را آموزش می دهیم. هر یک از آنها برای کاربرد و هدفی ویژه هستند و باید در اینجا و پیش از آموزش های Data File ها بگوییم که در اوراکل سه گونه Data File هست که هر کدام می تواند در Tablespace هم گونه خودش نهاده شود.

Permanent Tablespace

گونه نخست، Tablespace های همیشگی (Permanent) هستند که آنها برای ذخیره سازی و نگهداری همیشگی داده های کاربران و برنامه ها به کار گرفته می شوند. SYSTEM و SYSAUX نیز از نمونه های Tablespace های همیشگی هستند. این گونه از Tablespace، داده ها را برای همیشه نگه می دارد. اگر نوشته های پیشین را به یاد داشته باشید، گفتیم فرایند DBWr درون کش را به Data File می ریزد. آن Data File همان هایی هستند که درون Tablespace های همیشگی نهاده شده اند.

Undo Tablespace

در این نوشته نمی خواهیم در مورد مفاهیم Undo و Undo Tablespace گفتگو کنیم و آنها را به مطلب های پیش رو واگذار می کنیم. ولی در این نوشته باید بگوییم که Undo Tablespace داده هایی به نام Undo را نگهداری می کنند که از آنها برای پسگرد (عقب گرد – Rollback) پایگاه داده کمک گرفته می شود. پسگرد مفهومی است که پایگاه داده را به زمانی در گذشته می برد که در آن پایگاه داده به درستی کار می کرده است.

Temporary Tablespace

Tablespace های گذرا در برابر Tablespace های همیشگی هستند. این گونه برای انجام فرمان های SQL مانند Sorting و Join به کار می روند. فرمان های SQL درون حافظه اصلی انجام می شوند و اگر فرمان SQL نیاز به فضای زیاد داشته باشد و این فضا در دسترس نباشد، اوراکل فرمان SQL را درون Data File یک Tablespace گذرا انجام می دهد. توجه کنید Data File ها بر روی دیسک هستند و از این رو فضای بیشتری در دسترس است. همانگونه که گفتیم، Data File هم گونه با Tablespace خودش است، پس Data File این گونه از Tablespace ها نیز به گونه گذرا (Temp Data File) است.