۴ مطلب با کلمه‌ی کلیدی «DataFile‌» ثبت شده است

DataDictionaryهای مربوط به TableSpaceها

دیتادیکشنری جداولی هستند که به صورت پیش‌فرض در اوراکل وجود دارند و ساختار دیتابیس رو نگه‌داری می‌کنند. اونایی که اولشون DBA است جدول هستند و اونایی که اولشون V است VIEW هستند.

یه وضعیتی روی TableSpaceها وجود داره که شما می‌تونید به وسیله دیتا دیکشنری اسم همه TableSpaceهاتون رو پیدا کنید:

نکته: با دستور DESCRIB می‌توانید ساختار یک جدول را ببینید. وقتی می‌خوایم ساختار جداول دیتادیکشنری رو ببینیم از این دستور پر کاربرد استفاده می‌کنیم.

SQL> DESCRIB DBA_TABLESPACES;
Name Null? Type
----------------------------------------- -------- ---------------
 TABLESPACE_NAME                            NOT NULL  VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
MAX_SIZE NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
PLUGGED_IN VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
PREDICATE_EVALUATION VARCHAR2(7)
ENCRYPTED VARCHAR2(3)
COMPRESS_FOR VARCHAR2(30)

ادامه مطلب...
۱۴ ارديبهشت ۹۴ ، ۱۲:۱۵ ۲ نظر
مهدی غفاری

TableSpaceهای حجیم

هر دیتافایل در اوراکل تا حجم 8 اگزابایت معادل 8 میلیون ترابایت می‌تواند مقدار‌دهی شود. و توجه داشته باشید که یک دیتابیس از یک مخزن می‌تواند به طور نامحدود دیتافایل داشته باشد.

برای ایجاد TableSpaceهای حجیم بهتره در اوراکل از دستور زیر استفاده کنید، چون مکانیزم index گذاری DataFileهای حجیم فرق میکنه و دیگه snapshot بیس نیست:

Create bigfile tablespace ts datafile ‘d:\root\a.dbf’ size 100g;

نکته: بعد از زدن دستور ایجاد دیتافایل با سایز زیاد مدت زمانی طول می‌کشد تا initialize انجام شود. اندازه ۱۰۰ گیگ Gap رو ایجاد می‌کنه ته فایل رو می‌بنده.

نکته: اگر تمام فضای پارتیشن شما با دیتافایل پر شود نه بخشی از آن تمام آن بخش به دیتافایل اختصاص می‌یابد و دیگر قابل recovery نیز نیست.

نکته: معمولاً از حجم ۱ تا ۱۰ گیگ به بالا وقتی شما دارید دیتافایل ایجاد می‌کنید تا سقف ۸ اگزابایت tablespace ای که ایجاد می‌کنید بهتره bigfile‌ باشه

m = megabyte
g = gigabyte
t = terabyte
p = petabyte
e = exabyte

س: ۵ اگزابایت چند بایت است؟

ج: 5.0 × 1015 kilobytes به سرچ زیر در گوگل دقت کنید:

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=5+exabyte+convert+to+kilobyte

۱۳ ارديبهشت ۹۴ ، ۲۱:۰۹ ۰ نظر
مهدی غفاری

ساخت TableSpace با رشد خودکار فضا

فضایی بسازید که تا 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

یکی از مباحث خیلی مهم در سطح دیتابیس 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تون است.

ادامه مطلب...
۱۳ ارديبهشت ۹۴ ، ۱۱:۲۹ ۲ نظر
مهدی غفاری