دیتابیس اوراکل

دیتابیس اوراکل
طبقه بندی موضوعی

۱ مطلب با کلمه‌ی کلیدی «drop partition» ثبت شده است

پاک کردن N پارتیشن آخر یک جدول به صورت دوره ای

 

یک سری جداول وجود دارند که لازم است پارتیشن های آنها به صورت دوره ای پاک شوند. مثلا یک policy میگذاریم که 10 پارتیشن آخر یک جدول نگه داشته شوند و بقیه drop شود. با استفاده از مراحل زیر میتوان این کار را انجام داد:

 

1- یک جدول بنام list_drop_part ایجاد میکنیم و لیست جداولی که قرار است پارتیشن های آنها drop شود و همچنین policy که برای drop شدن پارتیشن ها وجود دارد را به آن جدول اضافه میکنیم.

create table c##usr1.list_drop_part

( tab_own  varchar2(128 byte),

 tab_name varchar2(128 byte),

 interval number) ;

 

 

برای هر جدول جدید، اگر لازم است پارتیشن های آن drop شود باید نام آن به list_drop_part اضافه شود. 

- در ستون interval تعداد پارتیشنهایی که باید نگهداری شوند را مشخص میکنیم.

 

2- یک جدول با نام result_drop_part ایجاد میکنیم که اطلاعات پارتیشن های drop شده در آن ریخته میشود.

 

create table c##usr1.result_drop_part

( tab_own    varchar2(128 byte),

  tab_name   varchar2(128 byte),

  part_name  varchar2(128 byte),

  high_value date,

  exec_date  date);

 

 

3- با استفاده از پروسیجر زیر میتوانیم پارتیشن های جداولی را که به list_drop_part اضافه شده اند ، بر اساس policyهای معین شده حذف نماییم.

 drop_partition_prc

 

نکته2) برای اجرای پکیج بالا باید grantهای زیر به کاربر c##usr1 داده شود.

 

grant drop any table to c##usr1 container=all;

grant select on dba_tab_partitions to c##usr1 container=all;

 

    4- میتوانیم یک job ایجاد کنیم که به صورت دوره ای اجرا شود و پروسیجر بالا را فراخوانی کند.