Bonjour à tous,
J'ai un problème sur lequel j'aimerai votre avis.
Je travaille sur une table qui possède environ 3 millions d'enregistrements. Rien de méchant dans les données : des dates, varchar2, number...
Mon traitement PL/SQL pour l'instant charge dans un cursor l'intégralité de la table suivant la requête typée comme suit :
Ce code fonctionne parfaitement je n'ai aucune erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT champ1, champ2, champ3 FROM matable WHERE champs1 BETWEEN date1 AND date2 AND champ2 <> 'valeur text' ORDER BY champ1
Mon champ2 possède uniquement la contrainte unique, et ma restriction porte toujours sur la même valeur.
Aussi me suis je dit, je vais créer une partition sur ma table afin de directement taper dedans, et ne plus utiliser mon
Aussi ai-je transformé la requête ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part AND champ2 <> 'valeur text'
Et là vient mon problème il me sort l'erreur durant l'exécution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT champ1, champ2, champ3 FROM matable PARTITION (mapartition) WHERE champs1 BETWEEN date1 AND date2 ORDER BY champ1
Pourquoi me prend t il plus de mémoire alors qu'il n'a plus, enfin je crois, le parcours de la table à effectuer ....?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ERROR at line 1: ORA-04030: out of process memory when trying to allocate 16408 bytes (koh-kghu sessi,pmuccst: adt/record)
Partager