[RESOLU][PLSQL]Suppression de plus de 100000 enregistrements
Bonjour,
Afin de créer une fonction d'archivage sur ma base, j'essaie de créer un script d'ajout dans un autre schéma et de suppression dans le schéma de production. Mais, voilà, j'ai un premier problème qui me dit que mes rollbacks segments sont trop petits. Ok, j'essaie donc de créer un mini-script pour contourner le problème et supprimer les lignes petit à petit. Je ne sais ps s'il est judicieux sur tous les points mais le voici quand même :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
declare
cursor CURS_PICKDETAIL is
select count(*) from PICKDETAIL where EXPORTFLAG = 'E';
NbPickDetail VARCHAR2(50);
begin
LOOP
Open CURS_PICKDETAIL;
Fetch CURS_PICKDETAIL into NbPickDetail;
close CURS_PICKDETAIL;
Exit when NbPickDetail = 0;
set transaction use rollback segment RBSPEC;
delete from WMSP.PICKDETAIL
where EXPORTFLAG = 'E'
and rownum<1000;
commit;
END LOOP;
End; |
Mais, hélas, j'ai maintenant un nouveau problème. J'ai le message suivant :
Code:
1 2 3
|
ORA-08102: index key not found, obj# 21869, dba 50406478 (2)
ORA-06512: at line 13 |
J'ai cherché à savoir quel était cet index. C'est un index existant sur ma table PICKDETAIL. Je ne comprends pas pourquoi j'ai ce message. Est-ce dû à une mauvaise gestion des rollback segments, ou encore au rownum que j'ai mis dans ma requête mais dont je ne suis pas très sûre qu'il soit très adapté ?
J'espère que vous pourrez me filer un coup de main et des idées en prime ! :wink: