
مدیریت فضای ذخیرهسازی در دیتابیس اوراکل همیشه یکی از دغدغههای اصلی مدیران پایگاه داده (DBA) و توسعهدهندگان حرفهای بوده.
اگر بخوای بفهمی که دقیقاً چقدر از فضای جداول یا ایندکسهایت استفاده شده، یا بدونی که کدوم بخش از دیتا بیاستفاده افتاده، باید سراغ یکی از قدرتمندترین ابزارهای اوراکل بری: پکیج DBMS_SPACE.
تو این مقاله آموزش Oracle در بخش آموزش پکیج های اوراکلی (Oracle Packages) قراره به زبون ساده و کاربردی، همه چیز درباره DBMS_SPACE رو یاد بگیری — از کاربردهاش گرفته تا مثالهای واقعی از SQL و PL/SQL برای استفاده بهتر ازش.
در دنیای امروز که امنیت دادهها بیش از هر زمان دیگری اهمیت دارد، اوراکل قابلیتی به نام Row-Level Security را از طریق پکیج قدرتمند DBMS_RLS ارائه کرده است بنابراین پیشنهاد می شود نوشته زیر را مطالعه کنید:
در این نوشته شما می خوانید
DBMS_SPACE دقیقاً چیه و به چه دردی میخوره؟
پکیج DBMS_SPACE یکی از پکیجهای داخلی Oracle هست که برای بررسی، مانیتور و تحلیل فضای مصرفشده در دیتابیس استفاده میشه. این پکیج بهت نشون میده که:
- چند بلاک به آبجکت تخصیص داده شده
- چقدر از اون بلاکها واقعاً استفاده شده
- چه مقدار از فضای دیتابیس هنوز خالی یا بیاستفاده باقی مونده
- روند رشد جداول یا ایندکسها در طول زمان چطوری بوده
چه زمانی باید از DBMS_SPACE استفاده کنیم؟
- موقعی که دیتابیس کند شده و شک داری به Fragmentation
- وقتی که میخوای برای آینده ظرفیتسازی کنی
- یا حتی وقتی فضای Tablespace کم میاد و دنبال مقصرش میگردی!
پیشنیاز استفاده از DBMS_SPACE
برای اینکه بتونی این پکیج رو بدون مشکل اجرا کنی، یادت باشه مجوز اجراش رو به یوزرت بدی:
GRANT EXECUTE ON DBMS_SPACE TO your_user;
معرفی کامل پروسیجرها و توابع مهم DBMS_SPACE
۱. بررسی فضای استفادهنشده با UNUSED_SPACE
📌 چه کار میکنه؟
میگه چه مقدار از فضای تخصیصیافته توی جدول یا ایندکس، هنوز استفاده نشده.
✅ مثال کاربردی:
DECLARE
unused_bytes NUMBER;
BEGIN
DBMS_SPACE.UNUSED_SPACE(
segment_owner => 'HR',
segment_name => 'EMPLOYEES',
segment_type => 'TABLE',
unused_blocks => ...,
total_blocks => ...,
total_bytes => ...,
unused_bytes => unused_bytes,
...
);
DBMS_OUTPUT.PUT_LINE('Unused Bytes: ' || unused_bytes);
END;
۲. آنالیز فضای مصرفی بلاکها با SPACE_USAGE
📌 کاربرد:
نشون میده بلاکهای داده (Data Blocks) در چه وضعیتی هستن: خالی، پر، نیمهپر و…
| ردهبندی | توضیح |
|---|---|
| fs1 | بلاکهایی با ≤ ۲۵% استفاده |
| fs2 | بلاکهایی با ۲۶% تا ۵۰% استفاده |
| fs3 | بلاکهایی با ۵۱% تا ۷۵% استفاده |
| fs4 | بلاکهایی با ۷۶% تا ۱۰۰% استفاده |
| full | بلاکهایی کاملاً پر |
