Bonjour,
J'ai une vue matérialisé MV1 définie par un group by sur T1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
CREATE MATERIALIZED VIEW MV1 
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS 
  SELECT XXXXXX, count(*) FROM T1
   WHERE     PLOP=12
GROUP BY XXXXXX;
CREATE OR REPLACE PUBLIC SYNONYM DTW_MV1 FOR MV1;
 
CREATE INDEX PLOP ON MV1 (PLOP);
Refresh PL/SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
dbms_mview.REFRESH('DTW_.' || p_NOM_SNAP);
Il y a de nombreux delete et insert sur T1. Donc certainement pendant le refresh.
Temps de refresh, plus de 5H.
Nbre de lignes de T1 environ 10 millions.

Le refresh fonctionne 1 fois sur 10 erreur :
L'enregistrement que vous essayez de modifier ne correspond plus à
la version existante.
Un autre utilisateur a effectué des modifications depuis votre dernière sélection.
Je me demande si cela correspond à
The Selected Record Has Been Modified by Another User since it was retrieved
Est ce qu'il peut y avoir des solutions existantes pour résoudre le problème ?
Je m'en doute mais pouvez vous me confirmer le fait que les insert et delete fond planter le refresh ?
Est ce qu'il ne faudrait pas mettre des locks sur T1 pendant le refresh ?

Merci d'avance de votre aide.