2010-11-30 7 views
0

Je souhaite exécuter une requête qui nécessite beaucoup d'espace temporaire. Cependant, je ne veux pas que la requête épuise tout l'espace temporaire disponible. Comment cela peut il etre accompli?Limite d'espace temporaire de requête dans Oracle

+0

ajouter une question à la question, son aide beaucoup. –

+0

C'est un problème normal et il a échoué avec un problème d'espace temporaire dans une jointure de hachage. Cependant, nous ne pouvons pas laisser la requête utiliser l'espace temporaire complet. Il lance ORA-12805 cette fois-ci. La requête fonctionnait bien depuis des mois. – Arc

+2

J'ai souvent constaté que toute requête qui provoque l'exécution de la base de données à partir de l'espace temporaire est une mauvaise requête (par exemple, une condition de jointure manquante) ou résulte d'un mauvais plan d'exécution provoqué par des statistiques obsolètes. bien. Bien que cela puisse être aussi parce que la DB sur laquelle je travaille a un * lot * d'espace temp. Le plan d'explication peut vous indiquer la quantité d'espace temporaire qui doit être utilisée par la requête. –

Répondre

1

Vous pouvez ajouter un plan de ressources qui le limite.

+0

Des pointeurs sur la configuration d'un plan de ressources? – Arc

+0

http://www.databasejournal.com/features/oracle/article.php/3296961/Oracle-Database-Resource-Manager-Part-1Overview.htm – erbsock

1

Vous pouvez également créer un autre espace de table temporaire avec une taille fixe et affecter l'utilisateur exécutant la requête à celui-ci.