A partir du moment où vous avez ceci
1 2
|
TABLE ACCES (STORAGE FULL) |
C'est que vous êtes sur
exadata. Je voulais juste que vous vous en rendiez compte. Car en effet, le fonctionnement ou le traitement des requêtes diffère de celui des bases de données traditionnelles. Et puisque vous êtes sur exadata, la version d'oracle qui y est installée et au minimum 11gR2. Avec ce qui précède, il faut maintenant penser exadata et non comme si vous étiez sur une base de données ordinaire si je puis dire. Et lorsqu’on pense exadata on pense systématiquement à bénéficier de
smart scan.
La seule information qui est exploitable ici est
STORAGE FULL. Puisque cette option y figure dans le plan d’exécution ceci veut dire que l’accès et le filtrage des données
peuvent se faire au niveau du disque. Mais ceci ne veut pas dire que vous allez pouvoir bénéficier des
smart scans. Si par contre dans la partie predicate du plan d’exécution vous observez l’option
storage() ceci veut dire que votre plan d’exécution va essayer d’utiliser les smart scan et appliquer le filtre au niveau des ‘
cell’ avant de renvoyer le résultat à la base de données d’une manière extrêmement rapide. Mais la présence de la clause
storage() dans la partie predicate n’est pas une garantie que les smart scan et le ‘’
offloading’’ du filtre au niveau du disque (storage) va avoir lieu.
Une des solutions de votre problème serait d’utiliser le snapper(
http://tech.e2sn.com/oracle-scripts-...ession-snapper) de Tanel Poder pendant l’exécution de votre delete et voir pourquoi les smarts scans ne sont pas (ou sont) utilisées.
Enfin, c’est quand même bizarre que vous travaillez sur exadata et que vous ne vous êtes pas posés ce genre de question.
Bonne chance et profitez bien de la possibilité que vous avez de travailler sur exadata
Partager