Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2010, 21h42   #1
Invité de passage
 
Inscription : avril 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 4
Points : 0
Points : 0
Par défaut [Oracle 11g] Mise en place automatique des statistiques

Bonjour à tous,

Je travaille actuellement sur l'optimisation des performances d'une application Siebel couplée à un moteur Oracle 11g. L'éditeur préconise un certain nombre de choses pour la mise en place des statistiques qui ne paraissent pas évidentes pour un dba en herbe comme moi. Je m'explique :

Les statistiques doivent être calculées sur la majorité des tables avec la méthode 'FOR ALL INDEXED COLUMNS SIZE AUTO'.

Pour trois des tables de l'application (S_POSTN_CON, S_ORG_BU et S_ORG_GROUP) les statistiques doivent être calculées avec la méthode 'FOR ALL COLUMNS SIZE 254'.

Pour finir, les statistiques ne doivent pas être calculées pour les tables de moins de 15 enregistrements (en "lockant" les statistiques sur ces tables j'imagine ?).

Savez-vous s'il est possible d'implémenter une telle chose dans oracle et si possible de façon automatique (toutes les semaines voir toutes les nuits) ?

D'avance merci pour votre aide !

Thomas
tomk41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 22h12   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 680
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 680
Points : 10 473
Points : 10 473
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Sur les dernières versions, Oracle sait quelles sont les stats à jour ou pas à jour.
Il y a plein d'options pour que celles-ci soit rafraîchies de manière semi automatique.

Si vous lisez l'anglais, suivez ce lien :
http://asktom.oracle.com/pls/asktom/...88300346992024
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 07h52   #3
Invité de passage
 
Inscription : avril 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 4
Points : 0
Points : 0
Bonjour Waldar,

J'ai déjà eu l'occasion de parcourir la doc que tu as cité. J'ai bien conscience qu'avec la 11g, le calcul des stats peut se faire de façon automatique. Seulement, j'ai l'impression que c'est tout ou rien. Non ?

Mon plus gros problème et de savoir comment exécuter le calcul de façons différentes en fonction du nombre d'enregistrements ou du nom de la table.

Une idée ?

Encore merci.
tomk41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 15h58   #4
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Vous pouvez utilisez le verrouillage des statistiques pour personnaliser le calcul des statistiques de la façon suivante:
  • verrouiller les stats que vous voulez personnaliser
  • garder le calcul général de stats que propose Oracle
  • écrire un job DBMS_SCHEDULER pour les objets dont les stats doivent être personnalisées qui va:
  1. déverrouiller les stats
  2. calculer les stats
  3. verrouiller les stats
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/11/2010, 13h55   #5
Rédacteur
 
Inscription : décembre 2002
Messages : 2 374
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 374
Points : 3 247
Points : 3 247
Depuis Oracle 10, par défaut, les statistiques sont collectées automatiquement toutes les nuits, avec des options par défaut.
Et puisque vous êtes en V11, autant profiter des apports de cette version !

Pour connaître les paramètres généraux en vigueur, on a DBMS_STATS.GET_PREFS.
Le paramètre qui nous intéresse ici est METHOD_OPT.

Code :
1
2
3
4
5
6
col METHODE format A40
SELECT dbms_stats.get_prefs('METHOD_OPT') METHODE FROM dual;
 
METHODE
------------------------------
FOR ALL COLUMNS SIZE AUTO
Donc il faut modifier cette valeur par défaut :
Code :
exec dbms_stats.set_global_prefs('METHOD_OPT', 'FOR ALL INDEXED COLUMNS SIZE AUTO');
Ensuite, on peut désormais définir des préférences individuelles pour des tables particulières.
Code :
1
2
3
4
5
6
7
8
9
begin
dbms_stats.set_table_prefs(
	ownname => 'SCOTT', 
	tabname => 'EMP', 
	pname => 'METHOD_OPT',
	pvalue => 'FOR ALL COLUMNS SIZE 254'
	);
end;
/
La dernière exigence (pas de recalcul pour les tables de moins de 15 lignes) est pour moi satisfaite par défaut, et il n'y a rien de particulier à faire.
En effet, depuis Oracle 10, les tables sont surveillées automatiquement (attribut MONITORING implicite), et leurs modifications sont tracées dans DBA_TAB_MODIFICATIONS. Cette vue est prise en compte lors du calcul des stats : si une table a subi moins de n % de modifications depuis le dernier calcul, elle est ignorée et on passe à la suivante.
Ainsi, on ne recalcule pas inutilement des stats sur une table qui n'aurait pas bougé, et ce indépendamment de son nombre de lignes.

Ce seuil de n % est défini automatiquement par défaut.
On peut le connaître table par table en consultant SAMPLE_SIZE (nombre de lignes lues pour calculer les stats) et NUM_ROWS (nombre de lignes estimées) dans DBA_TABLES.

Il est aussi paramétrable, globalement ou individuellement :
Code :
exec dbms_stats.set_global_prefs('ESTIMATE_PERCENT', 10);
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h31.


 
 
 
 
Partenaires

Hébergement Web