dbTalk Databases Forums  

add a new partition and drop old partition !!!

comp.databases.oracle.misc comp.databases.oracle.misc


Discuss add a new partition and drop old partition !!! in the comp.databases.oracle.misc forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
sansar
 
Posts: n/a

Default add a new partition and drop old partition !!! - 10-20-2007 , 07:50 AM






Hallo !
I have write a pl/sql-script. but i don't get a solution.
i want add a new partition. And from the new added partition make - 8
to find a old partition. when i find this partition drop this
partition.

my script:

declare
-- Local variables here
v_date_string VARCHAR2(20);
v_part VARCHAR2(20);
l_statement VARCHAR2(2000);
v_create_part VARCHAR2(200);
v_drop_part VARCHAR2(20);
v_exists_part VARCHAR2(20);
v_date VARCHAR2(20);
tmp VARCHAR2(2000);

CURSOR context_date_cur IS
Select distinct ext_frontend.context_date
from ext_frontend
where context_date not in
(select substr(PARTITION_NAME,6,10)
from dba_tab_partitions where table_name='FRONTEND_TAB') order by
context_date asc;

v_date_add_part context_date_cur%ROWTYPE;

CURSOR exists_drop_partion_cur IS
select dba_tab_partitions.partition_name
from dba_tab_partitions;

v_date_drop_part exists_drop_partion_cur%ROWTYPE;

begin
-- Test statements here
IF NOT context_date_cur%ISOPEN
THEN
OPEN context_date_cur;
END IF;

loop
fetch context_date_cur into v_date_add_part;
exit when context_date_cur%NOTFOUND;
v_create_part :='part_'||v_date_add_part.context_date;
v_date:=to_char(1+to_date(v_date_add_part.context_ date,'dd.mm.yyyy'),'DD.MM.YYYY');
l_statement:= 'alter table FRONTEND_TAB
add partition "'||v_create_part||'" values less than (TO_DATE('''||
v_date||''','''||'DD.MM.YYYY'||'''))
STORAGE( INITIAL 1048576 NEXT 1048576 PCTINCREASE 0 )
TABLESPACE "LOG_ANALYSE"
NOLOGGING ';


DBMS_OUTPUT.put_line(l_statement);
execute immediate l_statement;
-----------------------------this section drop the finding partition,
when not then go out from the for-
statement-----------------------------------
v_date:=to_char(8-
to_date(v_date_add_part.context_date,'dd.mm.yyyy') ,'DD.MM.YYYY');
DBMS_OUTPUT.put_line(v_date);

FOR v_date_drop_part in exists_drop_partion_cur
Loop
IF v_date_drop_part.partition_name='part_'||v_date
THEN
DBMS_OUTPUT.put_line(' Gefunden !!!');
ELSE
DBMS_OUTPUT.put_line('Nicht gefunden !!!');
End IF;

End Loop;
end loop;
end;

i think the problem in this statement IF
v_date_drop_part.partition_name='part_'||v_date

????

Thank you for very much


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.