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

Large Objects در اوراکل

Large Object ها که LOB نوع داده ای هستند که برای ذخیره داده های حجیم و غیر ساخت یافته مانند فایل های متنی، تصاویر، فایل های XML و غیره به کار می روند. پیش از اوراکل 8 دو نوع داده ای LONG و LONG RAW برای ذخیره داده های حجیم در ستون ها استفاده می شدند. اما امروزه از انواع داده ای دیگری که به آنها اشاره خواهد شد به جای LONG و LONG RAW استفاده می شود و تنها دلیلی که برای استفاده از دو نوع داده ای فوق وجود دارد استفاده برخی از برنامه از این دو نوع است. اوراکل انواع داده ای LOB زیر را پشتیبانی می کند :

  • Character large object یا CLOB
  • National character large object یا NCLOB
  • Binary large object یا BLOB
  • Binary File یا BFILE

CLOB برای ذخیره داده های کاراکتری حجیم مانند فایل های متنی، فایل های XML و فایل های LOG استفاده می شود. NCLOB همانند CLOB اما برای ذخیره national character set استفاده می شود. BLOB برای ذخیره فایل های باینری حجیمی به کار می روند. فایل های باینری قابل خواندن نیستند که از جمله آنها spreadsheets، فایل های صوتی و تصویری نام برد. CLOB, NCLOB و BLOB از گونه Internal LOB هستند به این خاطر که این نوع های داده ای در داخل Database و درون Datafile ها ذخیره می شوند که در تراکنش ها و Backup and Recovery مربوط به پایگاه داده پوشش داده می شوند. گونه دیگر BFILE است که به External LOB شناخته می شود. ستون های از نوع BFILE یک اشاره گره به یک فایل خارج از پایگاه داده که بر روی سیستم عامل ذخیره شده است را نگه می دارند.

Internal LOB ها داده ها را در تکه هایی به نام chunk ذخیره می کنند. chunk کوچکترین واحد اختصاص فضا به یک LOB و از یا بیشتر از بلاک های پایگاه داده تشکیل شده است. (برای درک بلاک رجوع شود به مطلب “ساختار منطقی پایگاه داده اوراکل“). LOB  locator در سطر های از ستون های نوع LOB ذخیره می شود که به یک LOB index اشاره می کند. LOB index اطلاعاتی را درباره LOB chunk ها ذخیره کرده است. هنگامی که یک جدول مورد جستجو قرار می گیرد، پایگاه داده از  LOB locator و LOB index اختصاص داده شده به آن برای تعیین محل کردن chunk های ذخیره شده بر روی بلاک های پایگاه داده استفاده می کند. شکل زیر رابطه میان جدول، سطر، LOB locator، LOB index و LOB segment را نشان می دهد.

اما LOB locator برای یک BFILE مسیر دایرکتوری و نام فایل را بر روی سیستم عامل ذخیره می کند. شکل زیر مطلب فوق را نشان می دهد :

دو نوع فایل، BasicFile ها و SecureFile ها برای LOB ها که از یکدیگر متمایز هستند. بطور پیشفرض در اوراکل 11g هنگامی که LOB را ایجاد می کنید، از نوع BasicFile است اما در نسخه 12c بطور پیشفرض وقتی LOB را ایجاد می کنید از نوع SecureFile است. البته از اوراکل 11g به بعد SecureFile به آن اضافه شد ولی در 11g هنوز BasicFile بطور پیشفرض است. یک SecureFile دارای ویژگی های زیر است :

  • Encryption امکان رمز کردن LOB data را می دهد.
  • Compression امکان فشرده سازی و به طبع صرفه جویی فضا را می دهد.
  • Deduplication حذف LOB های تکرای. در غیر اینصورت LOB ها چندین بار تکرار می شوند.

برای استفاده از SecureFile باید از پیش مواردی را فراهم کنیم :

  • یک SecureFile در یک Tablespace با استفاده از ASSM ذخیره می شود. ASSM  مخفف Automatic Segment Space Management است.
  • پارامتر DB_SECUREFILE کنترل می کند که آیا SecureFile می تواند استفاده شود و معماری پیشفرض LOB را برای پایگاه داده تعیین می کند.

همانطور که گفته شد یک SecureFile باید در Tablespace با استفاده از ASSM ذخیره شود پس لازم است مانند شکل زیر یک ASSM-enabled Tablespace را ایجاد کنیم:

create tablespace lob_data

‘datafile ‘/u01/dbfile/o12c/lob_data01.dbf

size 1000m

extent management local

uniform size 1m

;segment space management auto

برای ایجاد یک ASSM-enabled tablespace باید SEGMENT SPACE MANAGEMENT AUTO را در دستور CREATE TABLESPACE تعیین کنیم. اگر از یک tablespace موجود می خواهید استفاده کنید، باید اطمینان داشته باشید که از ASSM استفاده می کند. می توانید با پرس و جو بر روی  DBA_TABLESPACES بررسی کنید که ستون SEGMENT_SPACE_MANAGEMENT مقدار AUTO داشته باشد.

select tablespace_name, segment_space_management

;from dba_tablespaces

برای اطلاع بیشتر می توانید مطالب “ایجاد و مدیریت Tablespace ها در اوراکل” و “مدیریت Tablespace ها بصورت Locally در مقابل مدیریت Dictionary در اوراکل” را مطالعه کنید.

دومین گام تنظیم پارامتر DB_SECUREFILE است که با استفاده از دستور ALTER SESSION یا ALTER SYSTEM مقدار پارامتر را تنظیم کنید که می تواند شامل مقادیر زیر باشد :

  • NEVER : بی توجه به اینکه حتی اگر گزینه SECUREFILE در هنگام ایجاد جدول (جدولی که شامل نوع LOB است)، LOB را از نوع BasicFiles ایجاد می کند.
  • PERMITTED : مقدار پیشفرض در اوراکل 11g که اجازه ایجاد LOB های از نوع SecureFiles را می دهد.
  • PREFERRED : مقدار پیشفرض در اوراکل 12C و تعیین می کند که تمامی LOB ها بعنوان نوع SecureFiles ایجاد شوند مگر اینکه حالت دیگر تعیین شده باشد.
  • ALWAYS : همواره LOB ها بعنوان نوع SecureFiles ایجاد می شوند مگر اینکه Tablespace ای که جدول در آن ذخیره می شود از ASSM استفاده نکند.
  • IGNORE : گزینه SecureFiles را نادیده می گیرد.

برای اطلاع بیشتر می توانید مطلب “تنظیم پارامترهای اوراکل (Oracle Paramterer File)” را بخوانید.



برچسب ها : , ,