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

۱ مطلب با موضوع «Scripts» ثبت شده است

یک سری جداول وجود دارند که لازم است پارتیشن های آنها به صورت دوره ای پاک شوند. مثلا یک policy میگذاریم که اگر از ایجاد هر پارتیشن 4 ماه گذشته باشد، آن پارتیشن 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) ;


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


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_pkg


نکته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 ایجاد کنیم که به صورت دوره ای اجرا شود. این job برای پاک کردن پارتیشن ها لازم است یکی از پروسیجرهای drop_partition_pkg را به صورت زیر فراخوانی کند.


execute c##usr1.drop_partition_pkg.drop_spec_part_prc;


  • راهله شاکری