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

اضافه‌کردن فضا به TableSpace

برای انجام اینکار می‌توان به فرم کلی زیر اینکار را انجام داد:

alter tablespace <tablespace_name>  add datafile <url> size <size>;

مثال:

alter tablespace ts  add datafile 'd:\root\b.dbf' size 100m;

نکته: مسیر tablespace شما می‌تواند در شبکه نیز باشد. حتی می‌تونه تو درایوهای دیگر و هر نوع مدیای ذخیره‌سازی نظیر: هارد اکسترنال، فلش، رم و ... باشد.

نکته: اگر هر کدوم از DataFileهای ما از شبکه خارج شوند یا از حالت mount بیرون بیایند موقع start کردن اوراکل به مشکل جدی می‌خورید و اورکل تا همه DataFileهای مد نظر را نداشته باشد دیتابیس را  startup open نمی‌کند.(به صورت کلی باید DataFile همیشه باشد و بدون نبود DataFile به هیچ‌وجه نمی‌توان دیتابیس را startup open کرد برای همین پیشنهاد می‌کنم که همیشه Backup داشته باشید)

نکته: در این موارد بهترین کار flash recovery است.

نکته: اگر بخواهید یک table‌ را روی چند tablespace پراکنده کنیم باید حتماً partitioning کنید و جالبه بدونید که قبل از ورژن 11g اوراکل اجازه اینکار را اصلاً نمی‌داد چون اصلاً بحث partitioning مطرح نبود.

س: چرا وقتی می‌توان چند DBF را به یک TableSpace اضافه کرد باید از چند TableSpace برای ذخیره‌سازی یک جدول استفاده کرد؟

ج: به خاطر سرعت index گذاری و cache اولیه - مثلاً وقتی می‌گیم select * from person where age =20 اوراکل به صورت پیش‌فرض اصلاً به where شما گوش نمی‌دهد اما حالا فرض کنید فضای SGA فضای کافی نباشه که بتونه کل جدول رو لود کنه (این مثال در مورد جداول بسیار بسیار حجیم صحت دارد مثلاً جدول ۱ اگزابایتی) خب شما نمی‌تونید رم ۱ اگزابایتی پیدا کنید که کش رو تو فضای SGA انجام بده پس کش کامل انجام نمیشه و همونطور که قبلاً گفتم اوراکل در این مورد خورد خورد عمل میکنه و تیکه تیکه دیتا رو برای کش میاره و در این حالت وقتی میخواد بره تیکه تیکه بیاره وقتی میبینه اندازه کش کافی نیست به سرعت میره و فقط اون قسمت where رو پیدا میکنه و کش میکنه و شما اگه partitioning اتون رو بر مبنای age کرده باشید اوراکل به سرعت اون DataFile‌رو پیدا میکنه و کش میکنه به این حالت میگن (کش اولیه یعنی زمانی که میخواد برای بار اول کش رو انجام بده)

یعنی زمانی که برای کش فضای خالی به اندازه کافی نباشد اوراکل به where شما توجه می‌کند و از partitioning به نفع خودش استفاده می‌کند تا به دیتا فایلی برسد که داده ما درون آن است.(این فقط در مورد tableهای وحشتناک سنگین صدق می‌کند)

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

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تون است.

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