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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !