منبع اصلی نوشتار زیر در این لینک قرار دارد

ایجاد و مدیریت Tablespace ها در اوراکل

هر پایگاه داده بصورت منطقی به چندین Tablespace تقسیم شده است. یک یا چند Datafile به یک Tablespace داده می شود و هر Datafile می تواند تنها مطعلق به یک Tablespace باشد. TBS ها بالاترین سطح ساختار منطقی پایگاه داده اوراکل را تشکیل می دهند. مجموع اندازه یک TBS برابر با مجموع اندازه تمام Datafile ها مطعلق به آن TBS است. در هنگام ایجاد یک پایگاه داده جدید یا به هنگام نصب اوراکل و ایجاد اولین پایگاه داده، بصورت پیشفرض پنچ Tablespace در پایگاه داده ایجاد خواهد شد.

  • SYSTEM Tablespace : برای نگهداری و ذخیره سازی Data Dictionary استفاده می شود. Data Dictionary ها حاوی Metadata هستند که Metadata ها داده هایی درباره دیگر داده ها می باشند. Data Dictionary ها بصورت جداول و یا View هایی هستند و مالک تمامی Data Dictionary های درون SYSTEM Tablespace ها، کاربر SYS می باشد.
  • SYSAUX Tablespace : از این Tablespace بعنوان مخزنی از داده برای ابزار های اوراکل مانند Enterprise Manager,Statpack,LogMiner استفاده می شود.
  • UNDO Tablespace : از این Tablespace به هنگام انجام عمل Undo در زمان Recovery استفاده می شود. از Undo برای بازگرداندن پایگاه داده از حالتی نادرست که در اثر اجرای یک تراکنش مانند Insert , Update انجام شده به حالتی صحیح استفاده می شود.
  • TEMP Tablespace : اوراکل برای انجام عمل مرتب سازی (Sort) نیاز به فضایی دارد. دو فضا برای انجام مرتب سازی در نظر گرفته شده است : 1) حافظه اصلی و 2) TEMP Tablespace. اوراکل نخست از حافظه اصلی برای انجام مرتب سازی استفاده می کند و در صورتی که حافظه اصلی در دسترس نباشد، از TEMP Tablespace که بر روی هارد دیسک قرار دارد، استفاده می نماید.
  • USERS Tablespace : بصورت پیشفرض، پس از ایجاد کاربر و در صورتی که Tablespace را انتخاب نکرده باشید، از Tablespace برای ایجاد جداول و دیگر Object ها، توسط کاربر استفاده می شود.

دلایل ایجاد Tablespace های اضافی

می توانیم از USERS Tablespace برای نگهداری تمامی Objects های، تمامی کاربران استفاده کنیم. اما این کار بسیار اشتباه و خطرامیز می باشد. بهتر آنکه به ازای هر Application که از پایگاه داده استفاده می نماید، یک TBS استفاده نماییم. می توانیم به ازای واحد مالی یک TBS و به ازای واحد فروش یک TBS دیگر داشته باشیم. توجه کنید که هر TBS می تواند متشکل از چندین Datafile باشد ولی هر Datafile تنها به یک Tablespace اختصاص داده می شود، پس Datafile مربوط به Tablespace واحد مالی نمی تواند به Tablespace واحد فروش نیز اختصاص داده شود. Datafile ها، ساختار فیزیکی متشکل از بلاک هایی از رسانه ذخیره سازی هستند که اشیاء پایگاه داده، مانند جداول و ایندکس ها درون آن ذخیره می شوند. می توان بطور خلاصه، سیاست های ایجاد یک TBS جدید را بصورت زیر می باشد:

  • به ازای هر مورد کاربردی کاربران از یک TBS مجزا بر روی یک پایگاه داده استفاده کنید، در این صورت اگر یک TBS بخواهد که offilne شود، بر روی دیگر Tablespace ها، اثر نمی گذارد.
  • برای یک مورد کاربردی خاص، مانند واحد مالی، برای داده های جدول و داده های ایندکس را در دو Tablespace مجزا ایجاد کنید. به دلیل اینکه، داده های جدول و داده های ایندکس، نیاز ذخیره سازی متفاوتی دارند و نباید فضای Datafile را بی جهت اشغال نمود.
  • در انتخاب نام برای Tablespace دقت کنید و نامی را انتخاب کنید که متناسب با کاربرد Tablespace باشد.
  • تعداد Datafile های اختصاص داده شده به Tablespace را حداقل نمایید و این باعث می شود که تعداد Datafile کمتری داشته باشید و مدریت آنها ساده تر خواهد شد.

ایجاد Tablespace جدید

با استفاده از CREATE TABLESPACE می توان یک Tablespace جدید ایجاد نمود. فرمت استفاده از آن بصورت زیر می باشد.

create tablespace TBS_NAME

datafile PATH_TO_DATAFILE_NAME.DBF size SIZE_NUMBER

extent management LOCAL

autoextend on next SIZE_ON_NEXT maxsize MAX_SIZE

  • TBS_NAME : نام Tablespace
  • datafile : با استفاده از datafile مسیر و نام Datafile (یک یا چند Datafile) را که پسوند DBF دارند را تعیین می کنیم. SIZE_NUMBER اندازه اولیه datafile را مشخص می کند. اگر اندازه را مشخص نکنید، بصورت پیشفرض 100 مگابایت در نظر گرفته می شود.
  • autoextend : بالاخره Datafile پر خواهد شد، می توانید مدیریت افزایش حجم آنرا بصورت دستی و یا بصورت خودکار انجام دهید. اگر از مدیریت خودکار افزایش حجم استفاده می کنید، دقت داشته باشید که از مقادیر on next و maxsize را حتما مشخص کنید. on next یعنی اگر datafile پر شد، به اندازه SIZE_ON_NEXT افزایش یابد و maxsize یعنی datafile حداکثر به اندازه MAX_SIZE می تواند اندازه داشته باشد.
  • extent management: اگر مقدار local را داشته باشد، Tablespace با استفاده از یک bitmap در datafile تعیین می کند که آیا یک extent در حال استفاده است.

CREATE TABLESPACE new_tbs

DATAFILE ‘C:\app\amir\oradata\orcl\new_tba.dbf’ SIZE 100M

;AUTOEXTEND ON NEXT 1M MAXSIZE 2000M

خطوط بالا، یک Tablespace به نام new_tbs که یک datafile به نام new_tbs.dbf به اندازه اولیه 100مگابایت و حداکثر اندازه 2 گیگابایت ایجاد می کند.

Rename کردن Tablespace

به هر دلیلی می توانید نام Tablespace را تغییر دهید. بطور مثال در نامگذاری Tablespace بالا، از یک نام که نامفهوم است استفاده کرده ایم. با استفاده از دستور ALTER TABLESPACE می توانید نام Tablespace را تغییر داد. توجه داشته باشید که تغییر نام Tablespace باعث تغییر نام Datafile آن نمی شود.

;alter tablespace CURRENT_NAME rename to NEW_NAME

Sample

;alter tablespace new_tbs rename to salary

تغییر mode های Tablespace

در محیط هایی مانند انبار داده ها، داده های ذخیره شده نباید به هیچ عنوان تغییر کنند بلکه باید تاریخچه ای از داده ها وجود داشته باشد. می توانیم Tablespace ها را بصورت Read Only و یا بصورت Read Write تنظیم کنیم. با استفاده از دستور ALTER TABLESPACE می توانیم Tablespace Mode را مشخص کنیم.

;alter tablespace TBS_NAME TBS_MODE

Sample

;alter tablespace salary read only

OR

;alter tablespace salary read write

همچنین در نسخه های 11g به بالای اوراکل می توانیم یک جدول را بصورت منفردانه، بصورت read only و یا read write تنظیم کنیم. با استفاده از ALTER TABLE می توانید انجام دهید.

;alter table TABLE_NAME TABLE_MODE

Sample

;alter table tbl1 read only

OR

;alter table tbl1 read write

در صورتی که جدول در مُد read only باشد و بخواهید از آن سطری را حذف کنید و یا اینکه آنرا update کیند و یا سطری را در آن درج کنید، خطای زیر نشان داده می شود.

ORA-12081: update operation not allowed on table “SYSTEM”.”TBL1″

ایجاد Tablespace ها توسط OMF

OMF مخفف Oracle Managed Files امکان مدیریت ساده تر فایل ها در بانک اطلاعاتی اوراکل را فراهم می کند. با فعال کردن OMF از این پس بجای مدیریت فایل ها توسط سیستم عامل و مدیریت دستی آنها توسط مدیر OMF مدیریت فایل ها را به عهده می گیرد.طور مثال بصورت معمول وقتی یک Tablespace را ایجاد می کنید باید با پارامتر datafile مسیر و نامی برای datafile (های) مربوط به tablespace را تعیین کنید. اما با استفاده از OMF دیگر نیازی به استفاده از این پارامتر نیست.

  • تنظیم پارامتر DB_CREATE_FILE_DEST : از این پارمتر برای تعیین محل پیش فرض قرار گیری Data File ها استفاده می شود. با استفاده از دستور زیر مقدار فعلی آن را می توانید مشاهده کنید.

show parameter db_create_file_dest

NAME TYPE VALUE
———————————— ———– ——————————
db_create_file_dest string

از خروجی بالا مشخص است که هنوز هیچ مقداری پارامتر DB_CREATE_FILE_DEST تعیین نشده است. برای تنظیم آن از دستور زیر استفاده کنید.

;’alter syetem set db_create_file_dest=’DIRECTORY_PATH

Sample

;’alter syetem set db_create_file_dest=’C:\app\amir\oradata\orcl

پس از اجرای دستور بالا دایرکتوری همنام با پایگاه داده در مسیر مشخص شده ایجاد می شود و داخل آن دایرکتوری به نام DATAFILE برای ذخیره سازی datafile ها ایجاد خواهد شد.

بطور مثال می توانید از دستور های زیر برای ایجاد Tablespace های جدید توسط OMF استفاده کنید.

;create tablespace tbs1

;create tablespace tbs2 datafile size 20m

توجه داشته باشید که دومین دستور بالا، datafile با اندازه 2 مگابایت ایجاد می کند و درصورتی که اندازه datafile تعیین نشده باشد، بصورت پیشفرض اندازه آن 100 مگابایت خواهد بود. می توانید از v$datafile اطلاعاتی از datafile ها بدست آورید.

;’%select name from v$datafile where name like ‘%TBS

NAME
—————————————————————-
C:\APP\AMIR\ORADATA\ORCL\UNDOTBS01.DBF
C:\APP\AMIR\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS1_91LS7NQX_.DBF
C:\APP\AMIR\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TBS2_91LS827N_.DBF



برچسب ها : , , ,