Comment garder une SHARED_POOL "propre" ?

Comment garder une SHARED_POOL "propre" ? - SQL/NoSQL - Programmation

Marsh Posté le 21-11-2005 à 11:01:41    

Bonjour :)
 
Je suis développeur d'une application qui permet de consulter une table contenant beaucoup de données via une IHM qui ressemble à un tableau Excel.
Sur chaque colonne du tableau (c'est à dire de la table) l'utilisateur peut appliquer un tri et/ou un filtre sur une valeur donnée (ex. : n'afficher que les lignes pour lesquelles le montant vaut 100).
L'utilisateur peut créer des tris et des filtres sur autant de colonnes qu'il le désire (au plus 1 critère de filtre et un critère de tri sur une colonne donnée).
De plus, les colonnes affichées ou non sont également au bon vouloir de l'utilisateur.
 
La requête sous-jacente est donc complètement dynamique et n'a rien de fixé : ni la liste des colonnes du SELECT, ni la clause WHERE ni la clause ORDER BY ! :ouch:
 
Du coup, je ne sais pas comment je pourrais optimiser quoi que ce soit et surtout éviter que ces requêtes (toujours différentes de l'une à l'autre) s'accumulent dans la SHARED_POOL, ce qui produit très rapidement un message du style
 
ORA-04031 : unable to allocate 8716 bytes of shared memory ("large pool", "unknown object","cursor work he","kllqas:kllsltba" )
 
N'étant pas un spécialiste Oracle, pardon par avance si mon exposé n'est pas très clair ou qu'il y a confusion de plusieurs notions.
 
Votre aide me serait infiniment précieuse !
Merci d'avance ! :jap:
 
PS
La version d'Oracle est la 8i, attaquée depuis une couche ADO.

Reply

Marsh Posté le 21-11-2005 à 11:01:41   

Reply

Marsh Posté le 21-11-2005 à 11:29:18    

Il existe une Bug oracle concernant "ORA-04031 : unable to allocate 8716 bytes of shared memory ("large pool", "unknown object","cursor work he","kllqas:kllsltba" )", sinon il est possible que la share pool soit fragmenté. Dans les deux cas, tu ne peut rien faire c'est au DBA d'intervenir.

Reply

Marsh Posté le 21-11-2005 à 12:32:00    

Il te faut un vrai DBA pour ce genre de pb.
 
Tu peux essayer d'augmenter le shared_pool_size, mais je ne serais pas étonné que cette erreur en cache une autre, genre ORA-00600. Des erreurs connexes ou source du pb ne sont pas forcément directement visibles (entends pas là : tu ne te les prends pas forcément en pleine poire; tu te ramasses un 04031 mais ce n'est que la partie visible de l'iceberg).
 
Tu as vérifié alert.log et les dumps Oracle ? Appliqué un patch ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 22-11-2005 à 02:09:48    

sircam a écrit :

Il te faut un vrai DBA pour ce genre de pb.
 
Tu peux essayer d'augmenter le shared_pool_size, mais je ne serais pas étonné que cette erreur en cache une autre, genre ORA-00600. Des erreurs connexes ou source du pb ne sont pas forcément directement visibles (entends pas là : tu ne te les prends pas forcément en pleine poire; tu te ramasses un 04031 mais ce n'est que la partie visible de l'iceberg).
 
Tu as vérifié alert.log et les dumps Oracle ? Appliqué un patch ?


Faut se méfier des 04 ou 00 parfois si tu te trompe t'appeles pas le bon destinataire :D
 
La confiture, la confiture ... (c)

Reply

Marsh Posté le 23-11-2005 à 12:03:04    

"Alert.log et les dumps Oracle" ?
Qu'est-ce que c'est ?

Reply

Marsh Posté le 23-11-2005 à 13:35:09    

Apsolu a écrit :

"Alert.log et les dumps Oracle" ?
Qu'est-ce que c'est ?


Mais... Mes connaissances en Oracle s'arrêtent là, j'étalais simplement le peu que je possède.
 
[:alph-one]
 
Non, sérieux, si tu n'es pas DBA Oracle - et on est pas DBA parce qu'on a installé le bousin et qu'on utilise OEM, soyons clairs - laisse tomber. Avec Oracle, la profession de DBA prend tout son sens. Il est vain de tenter de s'y attaquer comme on le ferait sur un SQL Server ou un MySQL.
 
Fais appel à un vrai DBA.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed