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

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

SQL> alter table TEST.MESSAGE move partition MESG01 online lob (content) store as (tablespace TEST_TBS) update indexes ;

  • راهله شاکری

SQL> alter database move datafile

'+DATA/FBPPRD/5E0295675F4B5286E0534911140A1EE8/DATAFILE/test_sdat.302.993730507'

to

'+SDATA';

  • راهله شاکری

convert timzone

۱۰
آذر

select to_char((from_tz(cast(sysdate as timestamp), 'UTC') at time zone

         'ASIA/Tehran'),

         'yyyy-mm-dd hh24:mi:ss')

  from dual;


  • راهله شاکری

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


  • راهله شاکری