<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GuiregCAPITAINE.com &#187; Tuning</title>
	<atom:link href="http://www.guiregcapitaine.com/tag/tuning/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.guiregcapitaine.com</link>
	<description>Mon blog, mes expériences ! Un fan incontesté des produits Oracle au p&#039;tit soin pour ses lecteurs !</description>
	<lastBuildDate>Tue, 07 Feb 2012 13:44:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Bien choisir son index avec Oracle</title>
		<link>http://www.guiregcapitaine.com/2010/08/29/bien-choisir-son-index-avec-oracle/</link>
		<comments>http://www.guiregcapitaine.com/2010/08/29/bien-choisir-son-index-avec-oracle/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 11:07:59 +0000</pubDate>
		<dc:creator>Guireg CAPITAINE</dc:creator>
				<category><![CDATA[Tuning]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle database 11G]]></category>

		<guid isPermaLink="false">http://www.guiregcapitaine.com/?p=702</guid>
		<description><![CDATA[Introduction &#171;&#160;Index&#160;&#187;, voilà un mot utilisé par tout le monde sans vraiment savoir comment ça fonctionne et pourquoi on l&#8217;utilise. On voit partout la remarque &#171;&#160;Ca marche mieux [..]]]></description>
			<content:encoded><![CDATA[<h1><a href="http://www.guiregcapitaine.com/wp-content/uploads/2010/05/5545.png" rel="lightbox[702]"><img class="alignright size-medium wp-image-705" title="5545" src="http://www.guiregcapitaine.com/wp-content/uploads/2010/05/5545-300x205.png" alt="" width="210" height="144" /></a></h1>
<h1>Introduction</h1>
<p>&laquo;&nbsp;Index&nbsp;&raquo;, voilà un mot utilisé par tout le monde sans vraiment savoir comment ça fonctionne et pourquoi on l&#8217;utilise. On voit partout la remarque &laquo;&nbsp;Ca marche mieux avec&nbsp;&raquo;, oui mais pourquoi ça marche &laquo;&nbsp;mieux&nbsp;&raquo; ? Y a t-il vraiment qu&#8217;un seul type d&#8217;index ? Vous pensez pas qu&#8217;un index contient des options spécifiques ? Autant de réponses auxquelles je vais essayer de répondre dans cet article.</p>
<h1>Pourquoi utiliser un index ?</h1>
<p>Par analogie, un index est une liste des termes utilisées dans un ouvrage et les numéros de pages qui y réfèrent. Un index dans une base de données aura globalement le même fonctionnement mais à l&#8217;échelle d&#8217;une colonne de table et ses valeurs.</p>
<p>Lorsque vous allez rechercher un terme dans une colonne, Oracle va regarder dans les indexs s&#8217;il ne trouve pas ce mot et le &laquo;&nbsp;numéro de page&nbsp;&raquo; de la table où il y a cette valeur.</p>
<p>Par exemple, vous avez une requête &laquo;&nbsp;SELECT * FROM customers WHERE customer_id=352 . Dans ce cas là, Oracle va regarder si il existe un index sur la colonne customer_id et s&#8217;il existe, va regarder dans l&#8217;index s&#8217;il trouve la valeur 352. S&#8217;il trouve cette valeur, il regarde l&#8217;emplacement indiqué par l&#8217;index.</p>
<p>Les indexs permet à Oracle de ne pas parcourir les tables entièrement à chaque requête SQL pour trouver des valeurs spécifiques. Cela améliore donc nettement la rapidité de vos requêtes. Cependant, nous allons voir plus tard qu&#8217;il ne faut trop en abuser non plus <img src='http://www.guiregcapitaine.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h1>J&#8217;en mets sur quelles colonnes alors les indexs ?</h1>
<p>C&#8217;est simple, vous allez positionner des indexs sur les colonnes où vous allez avoir besoin de rechercher des valeurs. Par exemple, si vous êtes souvent amené à faire des recherches sur les emails de vos employées (colonne email de la table employees) avec une requête du type SELECT user_id FROM users WHERE email LIKE &#8216;guireg%&#8217;, il serait judicieux de positionner un index sur la colonne email pour qu&#8217;Oracle puisse retrouver très rapidement la valeur du bloc où se trouve toutes les adresses email commençant par &laquo;&nbsp;guireg&nbsp;&raquo;.</p>
<p>Il est donc très conseillé de mettre des indexs sur les colonnes que vous utilisez souvent dans la clause WHERE de vos requêtes.</p>
<h1>Les deux types d&#8217;index</h1>
<h2>Les index B*Tree</h2>
<p>Lorsque vous créez un index sans vous souciez de son type, Oracle vous crée par défaut un index de type B*Tree. Comme son nom l&#8217;indique, c&#8217;est un arbre. Le &laquo;&nbsp;B&nbsp;&raquo; veut dire Balanced et non pas Binary comme le pense beaucoup de gens.</p>
<p>Imaginons, par exemple une table USERS contenant 200 lignes, 3 colonnes (id de 1 à 300,name,password) et un index B*Tree sur la colonne id.</p>
<p>L&#8217;index B*Tree ressemblera à un arbre de ce type :</p>
<p><a href="http://www.guiregcapitaine.com/wp-content/uploads/2010/05/btree.png" rel="lightbox[702]"><img class="size-medium wp-image-724 alignnone" title="Index B*Tree - Source : Apache.org" src="http://www.guiregcapitaine.com/wp-content/uploads/2010/05/btree-300x150.png" alt="" width="300" height="150" /></a></p>
<p>Il faut savoir que les index B*Tree n&#8217;indexent pas les valeurs NULL.</p>
<p>Les index B*Tree sont très efficaces lorsque la cardinalité (Le nombre de valeurs différentes)  est forte &#8211; très forte , que le nombre de lignes est très importante et bien sûr que la colonne soit utilisée dans des clauses WHERE ou JOIN.</p>
<p>Ils sont souvent très utilisés dans les bases de données de type OLTP (Transactionnel) contrairement à son rival l&#8217;index BITMAP.</p>
<h2>Les index Bitmap</h2>
<p>L&#8217;index Bitmap est un index très spécifique souvent utilisé en Datawarehousing et BI. Et pour cause, ce dernier est très coûteux à mettre à jour, ce qui rend son utilisation dans des environnements OLTP vraiment limité.</p>
<p>Comme son nom l&#8217;indique, les index Bitmap sont faits de bits. Ils prennent toutes les valeurs différentes d&#8217;une colonne et ensuite transforment en bits leurs dispositions.</p>
<p>Par exemple, une table USERS contenant un champ usergroups disposant de 3 valeurs différentes : Administrateurs, Modérateurs, Utilisateurs et contenant 5 lignes avec les valeurs : 1.Administrateurs, 2. Administrateurs 3.Utilisateurs, 4. Modérateurs 5.Utilisateurs</p>
<p>L&#8217;index Bitmap correspondant ressemblerait à ceci :</p>
<p><em>Administrateurs : 11000</em></p>
<p><em>Modérateurs : 00010</em></p>
<p><em>Utilisateurs : 00101</em></p>
<p>Dans ce cas là, vous pouvez imaginer qu&#8217;une clause AND ou OR entre deux colonnes  indexées est redoutablement efficaces car il suffit de faire un AND ou OR des bits correspondant à ces deux colonnes, ce qu&#8217;un ordinateur fait très rapidement.</p>
<p>De plus, le fait d&#8217;indexer toutes les valeurs possibles dans une colonne, les indexs Bitmap sont très performants lorsqu&#8217;une colonne a une sélectivité faible. C&#8217;est exactement là où les index B*Tree pêchaient.</p>
<p>Enfin, les indexs Bitmap indexent les valeurs NULL.</p>
<p>Les indexs Bitmap sont donc conseillés lorsque vos tables remplissent toutes ces conditions :</p>
<ul>
<li>La cardinalité des colonnes est faible (Très peu de valeurs différentes)</li>
<li>Il  y a beaucoup de lignes dans votre table</li>
<li>Lorsqu&#8217;il y a quasiment uniquement des activités de lecture sur la table</li>
</ul>
<h1>Les options des indexs</h1>
<h2>Unique</h2>
<p>Encore une fois, comme son nom l&#8217;indique, cet index permet de ne pas avoir de valeurs dupliquées dans une colonne.</p>
<h2>Composite</h2>
<p>Un index composite est un index qui est sur plusieurs colonnes de votre table. Si par exemple, vos requêtes SQL interrogent souvent deux colonnes à la fois dans une table (WHERE usergroup=&nbsp;&raquo;blabla&nbsp;&raquo; AND name=&nbsp;&raquo;haha&nbsp;&raquo; par exemple) , il serait judicieux de mettre un index composite sur les colonnes usergroup et name.</p>
<p><span style="color: #ff0000;">Attention :</span> Oracle utilisera l&#8217;index que si vos requêtes SQL respecte l&#8217;ordre des colonnes que vous avez donné sinon il fera un Skip Scan de votre table qui est beaucoup moins efficace.</p>
<h2>Clé inversé (Reversed Key)</h2>
<p>Cette option permet d&#8217;inverser l&#8217;ordre des valeurs indexés. Par exemple, &laquo;&nbsp;guireg&nbsp;&raquo; deviendra &laquo;&nbsp;geriug&nbsp;&raquo; lorsqu&#8217;il sera indexé par un index Reversed Key.</p>
<p>Cela permet d&#8217;être très efficace lorsque vous avez des requêtes avec des clauses WHERE du type LIKE &#8216;%eg&#8217;.</p>
<h2>Compressé</h2>
<p>Par défaut, Oracle crééera une entrée pour chaque valeurs avec son ROWID correspondant même s&#8217;il existe deux valeurs identiques. Cette option permettra de regrouper tous les ROWIDs des valeurs identiques ensemble. Cela peut-être efficace dans le cas de tables fréquemment mises à jour mais qui ont une colonne à cardinalité faible.</p>
<h2>Function based</h2>
<p>Lorsque vous intégrez une fonction à vos noms de colonnes dans vos requêtes (Par exemple : WHERE SUBSTR(username,0,5) =&#8217;BLABLA&#8217;, Oracle décidera de parcourir entièrement la table plutôt que de passer par votre index.</p>
<p>Pour remédier à ceci, vous pouvez mettre en place des indexs Function Based qui indexeront les valeurs précédemment passées par votre fonction (ici SUBSTR).</p>
<h2>Ascendant ou Descendant</h2>
<p>Cette option permet de régler l&#8217;ordre par défaut des lignes retournées dans les indexs. Par défaut, les indexs sont de type Ascendant mais si vous utilisez fréquemment un ORDER BY Desc, vous pouvez régler vos index en Descendant et enlever la clause ORDER BY.</p>
<p>Ceci peut apporter de très bons résultats en terme de performance car le tri est la bête noire de Oracle.</p>
<h1>Dans quel cas ne pas utiliser d&#8217;index ?</h1>
<p>Dans tous ces cas, il est déconseillé de poser des indexs :</p>
<ul>
<li>Majorité des requêtes ramènent plus de 5% des lignes d&#8217;une table</li>
<li>Enormément de mise à jour par rapport au nombre de lecture</li>
<li>Colonne pas utilisée dans les clauses WHERE des requêtes et dans les JOINS</li>
<li>Un nombre de lignes faible dans votre table</li>
</ul>
<p>Aussi, veillez à ne pas mettre trop d&#8217;indexs par table. Ceci peut être très fortement pénalisant lors des mises à jours de votre table.</p>
<p>Pour terminer, l&#8217;art de poser est un index n&#8217;est pas une science universelle. Chaque cas est une tâche unique à traiter singulièrement et pas à la légère. Il faut savoir bien dosé entre le coût de lecture et d&#8217;écriture,  la structure des données, le nombre de lignes etc&#8230; etc&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guiregcapitaine.com/2010/08/29/bien-choisir-son-index-avec-oracle/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Les paramètres de l&#8217;Optimizer d&#8217;Oracle</title>
		<link>http://www.guiregcapitaine.com/2009/10/04/les-parametres-de-loptimizer-doracle/</link>
		<comments>http://www.guiregcapitaine.com/2009/10/04/les-parametres-de-loptimizer-doracle/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 10:43:24 +0000</pubDate>
		<dc:creator>Guireg CAPITAINE</dc:creator>
				<category><![CDATA[Tuning]]></category>
		<category><![CDATA[Base de données]]></category>
		<category><![CDATA[Optimisation Oracle]]></category>
		<category><![CDATA[Optimizer]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[paramètres oracle]]></category>
		<category><![CDATA[Tuning Oracle]]></category>
		<category><![CDATA[Tuning SQL]]></category>

		<guid isPermaLink="false">http://www.guiregcapitaine.com/?p=335</guid>
		<description><![CDATA[Introduction L’Optimizer est la partie la plus importante d’une instance Oracle. C’est lui qui choisit quelle chemin il va prendre pour prendre/modifier les données que vous lui ordonnez. [..]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.guiregcapitaine.com/wp-content/uploads/2009/10/showmetheway.jpg" rel="lightbox[335]"><img class="alignright" title="Optimizer Oracle - Meilleur plan dexécution showmetheway" src="http://www.guiregcapitaine.com/wp-content/uploads/2009/10/showmetheway.jpg" alt="" width="314" height="209" /></a></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<h1>Introduction</h1>
<p>L’Optimizer est la partie la plus importante d’une instance Oracle. C’est lui qui choisit quelle chemin il va prendre pour prendre/modifier les données que vous lui ordonnez. Toutes les étapes qu’il va prendre s’appelle <strong>le plan d’exécution</strong>.</p>
<p>Exemple de plan d&#8217;exécution généré via SQL*Plus :</p>
<pre><span><span>Plan</span> d'exécution
<span>----------------------------------------------------------</span>
   0      <span>SELECT</span> <span>STATEMENT</span> Optimizer=CHOOSE (Cost=143 Card=1438 Bytes=503300)
   1    0   <span>TABLE</span> ACCESS (FULL) <span>OF</span> 'PS_PERSONAL_DATA' (Cost=143 Card=1438 Bytes=503300)
</span></pre>
<p>Sur celui-ci par exemple, on observe que l&#8217;Optimizer a choisi de scanner complètement la table <em>PS_PERSONAL_DATA</em> , qu&#8217;il a parcouru 1438 lignes soit 503,300 kiloBytes de données et que la requête a un coût estimé à 143.</p>
<p>Je paris que vous avez un certain nombre de questions qui vous viennent à la tête tout de suite :</p>
<h2>Comment il choisit son &laquo;&nbsp;chemin&nbsp;&raquo; ce fameux Optimizer ?</h2>
<p>Alors, il choisit en fonction de ce qu’on appelle « le coût ». Le coût est un indice qu’Oracle donne à certaines étapes du plan d’exécution. Plus le coût est grand, plus l’action est consommatrice de ressources/temps (dans l’idéal d’Oracle parce que ça se passe pas tout le temps comme ça). Par exemple, un balayage complet d’une table aura un coût plus élevé qu’une sélection partielle de lignes.</p>
<h2>Comment elle calcule le coût notre base de données ?</h2>
<p>Ca, c’est le jardin secret d’Oracle. C’est un algorithme que seules quelques personnes connaissent dans le monde entier. Pour avoir une migration d’Oracle 8i vers 10G,  le fait que ce soit secret est la principale cause des déboires des Administrateurs de bases de données lors des changements de version d’Oracle. On ne sait jamais vraiment si les performances seront très dégradées/améliorées lorsqu’on migre une application sur une nouvelle version d’Oracle.</p>
<h2>Peut-on influencer les choix de l’Optimizer ?</h2>
<p>Bien sûr qu’on peut ! C’est d’ailleurs le sujet de cet article. Influencer l’Optimizer est une des principales pistes de Tuning que vous devez explorer sur votre base de données.</p>
<h2>Y a-t-il eu des changements importants dans l’Optimizer ces dernières versions ?</h2>
<p>Beaucoup de changements. Depuis la version 10G, Oracle a &laquo;&nbsp;abandonné&nbsp;&raquo; (plutôt déprécié) les modes Rule et Choose et a tout misé sur le mode Cost-based. Vous pouvez choisir entre le mode ALL_ROWS qui privilégie le débit et le mode FIRST_ROWS(n) qui privilégie le temps pour les « n » premiers résultats. Bien sûr, vous pouvez toujours choisir le mode RULE mais l&#8217;Optimizer ne tiendra pas compte de ce mode et passera en mode Cost-Based si il juge que c&#8217;est mieux pour certaines requêtes.</p>
<p>Finis les questions ? On passe à la liste des paramètres ! Si vous avez d&#8217;autres questions, postez les en commentaire. J&#8217;ajouterai les réponses à la liste des questions ci-dessus.</p>
<p><a href="http://www.guiregcapitaine.com/2009/10/04/les-parametres-de-loptimizer-doracle-page-2/"><img class="alignright size-full wp-image-90" title="next" src="http://www.guiregcapitaine.com/wp-content/uploads/2009/05/next.png" alt="next" width="24" height="24" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.guiregcapitaine.com/2009/10/04/les-parametres-de-loptimizer-doracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les paramètres de l&#8217;Optimizer d&#8217;Oracle &#8211; Page 2</title>
		<link>http://www.guiregcapitaine.com/2009/10/04/les-parametres-de-loptimizer-doracle-page-2/</link>
		<comments>http://www.guiregcapitaine.com/2009/10/04/les-parametres-de-loptimizer-doracle-page-2/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 10:22:56 +0000</pubDate>
		<dc:creator>Guireg CAPITAINE</dc:creator>
				<category><![CDATA[Tuning]]></category>
		<category><![CDATA[Base de données]]></category>
		<category><![CDATA[Optimisation Oracle]]></category>
		<category><![CDATA[Optimizer]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tuning Oracle]]></category>
		<category><![CDATA[Tuning SQL]]></category>

		<guid isPermaLink="false">http://www.guiregcapitaine.com/?p=341</guid>
		<description><![CDATA[Je ne traiterai que des version 10G et 8i dans cette page car je n&#8217;ai pas beaucoup travaillé sur d&#8217;autres versions (9i et 11G). De plus, je n&#8217;évoque [..]]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0.21cm; widows: 2; orphans: 2;" lang="fr-FR">Je ne traiterai que des version 10G et 8i dans cette page car je n&#8217;ai pas beaucoup travaillé sur d&#8217;autres versions (9i et 11G). De plus, je n&#8217;évoque que des paramètres conseillés pour l&#8217;OLTP (environnement transactionnel) car je n&#8217;ai pas d&#8217;expériences en DatawareHouse.</p>
<h2 style="margin-top: 0.21cm; widows: 2; orphans: 2;" lang="fr-FR">OPTIMIZER_MODE</h2>
<p style="margin-bottom: 0cm;">C&#8217;est le mode de fonctionnement de l’Optimizer. 4 valeurs sont possibles : CHOOSE, RULE, ALL_ROWS, FIRST_ROWS. Le premier paramètre laisse l’Optimizer choisir entre le mode RULE et COST BASED. Le deuxième paramètre force le mode RULE . Les deux derniers paramètres forcent le mode COST BASED mais avec deux approches différentes :</p>
<ul>
<li>
<p style="margin-bottom: 0cm; page-break-inside: auto;">ALL_ROWS permet de 	privilégier le débit global</p>
</li>
<li>
<p style="margin-bottom: 0cm; page-break-inside: auto;">FIRST_ROWS permet de 	privilégier le débit des premiers résultats sortis par une 	requête</p>
</li>
</ul>
<p style="margin-bottom: 0cm;"><strong>Note :</strong> Le mode Rule est devenu obsolète en 10G</p>
<p style="margin-bottom: 0cm;"><strong>Rang de valeurs :</strong> RULE, ALL_ROWS, FIRST_ROWS, CHOOSE</p>
<p style="margin-bottom: 0cm;"><strong>Valeur par défaut :</strong> ALL_ROWS en 10G, CHOOSE en 8i</p>
<p style="margin-bottom: 0cm;"><strong>Valeur Recommandée pour l’OLTP :</strong> CHOOSE</p>
<h2 style="margin-top: 0.21cm; widows: 2; orphans: 2;" lang="fr-FR">OPTIMIZER_DYNAMIC_SAMPLING</h2>
<p style="margin-bottom: 0cm;">Contrôle le niveau de dynamic sampling, qui permet de calculer les statistiques automatiquement. Plus la valeur est grande, plus le « Dynamic Sampling » est agressif. A 0, le Dynamic Sampling est désactivé.</p>
<p style="margin-bottom: 0cm;"><strong>Note :</strong> Existe seulement en 10G</p>
<p style="margin-bottom: 0cm;"><strong>Rang de valeur :</strong> 0-10</p>
<p style="margin-bottom: 0cm;"><strong>Valeur par défaut :</strong> 2</p>
<p style="margin-bottom: 0cm;"><strong>Valeur recommandée pour l’OLTP :</strong> Ca dépend de la quantité de donnée mise à jour/insérées durant une journée. Si vous modifiez/ajoutez plus de 10% de vos données actuelles dans vos tables, Oracle conseille de mettre une valeur grande. Sinon, une valeur de 2 suffira.</p>
<h2 style="margin-top: 0.21cm; widows: 2; orphans: 2;" lang="fr-FR">OPTIMIZER_INDEX_CACHING</h2>
<p style="margin-bottom: 0cm;">Détermine en pourcentage de nombre de blocs d’index auxquels l’Optimizer peut s’attendre dans le cache.</p>
<p style="margin-bottom: 0cm;"><strong>Rang de valeur :</strong> 0 – 100</p>
<p style="margin-bottom: 0cm;"><strong>Valeur par défaut :</strong> 0</p>
<p style="margin-bottom: 0cm;"><strong>Valeur recommandée pour l’OLTP :</strong> 0</p>
<h2 style="margin-top: 0.21cm; widows: 2; orphans: 2;" lang="fr-FR">OPTIMIZER_SECURE_VIEW_MERGING</h2>
<p style="margin-bottom: 0cm;">Existe seulement en 10G</p>
<p style="margin-bottom: 0cm;">Permet d’autoriser ou pas l’Optimizer à vérifier si la vue viole des règles de sécurité.</p>
<p style="margin-bottom: 0cm;"><strong>Rang de valeur :</strong> True, False</p>
<p style="margin-bottom: 0cm;"><strong>Valeur par défaut :</strong> True</p>
<p style="margin-bottom: 0cm;"><strong>Valeur recommandée pour l’OLTP :</strong> False</p>
<h2 style="margin-top: 0.21cm; widows: 2; orphans: 2;" lang="fr-FR">OPTIMIZER_INDEX_COST_ADJ</h2>
<p style="margin-bottom: 0cm;">Ajuste le coût de parcours d’un index contre un Full Scan. Plus la valeur est petite, plus l’optimiseur est enclin à choisir un index dans le plan d’exécution.</p>
<p style="margin-bottom: 0cm;"><strong>Rang de valeur :</strong> 1 – 10 000</p>
<p style="margin-bottom: 0cm;"><strong>Valeur par défaut :</strong> 100</p>
<p style="margin-bottom: 0cm;"><strong>Valeur recommandée pour l’OLTP :</strong> 100</p>
<p style="margin-bottom: 0cm;">&nbsp;</p>
<h2 style="margin-top: 0.21cm; widows: 2; orphans: 2;" lang="fr-FR">OPTIMIZER_FEATURES_ENABLE</h2>
<p style="margin-bottom: 0cm;">Permet de forcer l’exécution du noyau comme il était dans une certaine version d’Oracle. Par exemple, si ce paramètre vaut 8.0.6, l’optimizer exécutera la requête comme sur une instance Oracle 8.0.6.</p>
<p style="margin-bottom: 0cm;"><strong>Rang de valeur :</strong> Tous les numéros de versions Oracle</p>
<p style="margin-bottom: 0cm;"><strong>Valeur par défaut :</strong> Numéro de version d’Oracle</p>
<p style="margin-bottom: 0cm;"><strong>Valeur recommandée pour l’OLTP :</strong> Valeur par défaut</p>
<p style="margin-bottom: 0cm;">&nbsp;</p>
<h2 style="margin-top: 0.21cm; widows: 2; orphans: 2;" lang="fr-FR">OPTIMIZER_PERCENT_PARALLEL</h2>
<p style="margin-bottom: 0cm;">Obsolète en 10G.</p>
<p style="margin-bottom: 0cm;">Plus la valeur est grande, plus l’Optimizer sera enclin à exécuter en parallèle des requêtes. Ce qui permet d’améliorer significativement les gros traitements, surtout les FULL TABLE SCAN. La valeur de 100 force l’Optimizer à exécuter constamment les requêtes en parallèles. Ce paramètre est surtout utile pour le datawarehousing. Il est plutôt conseillé de passer par des indexs en OLTP.</p>
<p style="margin-bottom: 0cm;"><strong>Rang de valeur :</strong> 0 &#8211; 100</p>
<p style="margin-bottom: 0cm;"><strong>Valeur par défaut : </strong>0</p>
<p style="margin-bottom: 0cm;"><strong>Valeur recommandée pour l’OLTP :</strong> 100 / Nombre d’utilisateurs simultanés</p>
<p style="margin-bottom: 0cm;">&nbsp;</p>
<h2 style="margin-top: 0.21cm; widows: 2; orphans: 2;" lang="fr-FR">OPTIMIZER_MAX_PERMUTATIONS</h2>
<p style="margin-bottom: 0cm;">Seulement en 8i. Paramètre caché en 10G.</p>
<p style="margin-bottom: 0cm;">Restreint le nombre de permutations de tables que l’Optimizer va prendre en compte dans les requêtes avec des jointures.</p>
<p style="margin-bottom: 0cm;"><strong>Rang de valeur :</strong> 4 – 80 000</p>
<p style="margin-bottom: 0cm;"><strong>Valeur par défaut :</strong> 80 000</p>
<p style="margin-bottom: 0cm;"><strong>Valeur recommandée pour l’OLTP : </strong>&lt; 1000</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guiregcapitaine.com/2009/10/04/les-parametres-de-loptimizer-doracle-page-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

