17 décembre 2017

Les fonctions SQL selon les versions d'Oracle dans V$SQLFN_METADATA

IntroductionLe dictionnaire de données d'Oracle renferme des milliers et des milliers de vues, certaines fondamentales comme DBA_TABLES, DBA_USERS alors que d'autres sont beaucoup plus anecdotiques voir quasi inconnues, comme V$SQLFN_METADATA.Selon la doc Oracle "V$SQLFN_METADATA contains metadata about operators and built-in functions." De façon plus précise, elle contient l'historique d'apparition des opérateurs et fonctions SQL selon les versions d'Oracle!OK, cette vue n'est pas importante mais c'est intéressant de fouiner dans ces... [Lire la suite]
Posté par David DBA à 18:51 - - Permalien [#]
Tags : ,

06 décembre 2017

Oracle et les modes de lecture des blocs de données : Read, Get, Touch, Fetch, Arraysize...

IntroductionOracle a tendance à multiplier les expressions pour parler des mêmes opérations ou objets. Par exemple, pour le mot Verrou en français, Oracle utilise les termes Lock, Latch, Mutex, Enqueue, Pin. Chacun de ces verrous a ses propres caractéristiques, il est donc pertinent d'avoir des termes précis pour les différencier et être plus efficace mais, revers de cela, ça complexifie leur approche. Lorsqu'il s'agit de parler de la lecture de blocs de données, Oracle multiplie là-encore les termes : lecture sur disque dur, lecture... [Lire la suite]
Posté par David DBA à 22:01 - - Permalien [#]
Tags : ,
24 novembre 2017

Quels sont les produits, composants, options, packs, advisors, features, occupants ... installés sur ma base?

IntroductionEst-ce qu'un jour vous vous êtes demandé ce qui était installé sur votre base Oracle? J'entends par là : produits, composants, options, packs, advisors, features ...? Si oui, vous aurez compris qu'Oracle ne donne pas toutes ces réponses dans une seule vue mais dans plusieurs et c'est ce que nous allons voir. Points d'attentionAucun. Base de testsN'importe quelle base Oracle. Exemples============================================================================================Les... [Lire la suite]
Posté par David DBA à 20:23 - - Permalien [#]
Tags : , ,
19 novembre 2017

Oracle peut utiliser un index avec LIKE '%texte%' : idées reçues sur les fonctions et les index

IntroductionUne idée courante sous Oracle est qu'une fonction utilisée sur un champ indexé empêche l'utilisation de cet index. Nous allons prouver que c'est plus complexe que cela et que même avec le fameux LIKE '%texte%' ou la sélection de 100% des données, Oracle peut utiliser un index. Il faut néanmoins distinguer comment Oracle traite les fonctions de groupes telles que MIN, MAX, COUNT des fonctions comme SUBSTR, UPPER. Il faut aussi tenir compte si le SELECT se fait uniquement sur la colonne indexée ou non, que la fonction est... [Lire la suite]
Posté par David DBA à 18:03 - - Permalien [#]
Tags :
16 octobre 2017

ORDER BY et déduplication SQLNet : un ORDER BY ne ralentit pas toujours une requête

IntroductionDans mon précédent article "ORDER BY et Consistents gets réduits par 10 : un ORDER BY ne ralentit pas toujours une requête!", je parlais du fait qu'un ORDER BY ne ralentit pas toujours un SELECT, voir même peut l'accélérer en divisant considérablement le nombre de Consistents gets. Dans cet article nous allons voir que le ORDER BY peut aussi diminuer la taille des données échangées entre le client et le serveur via de la déduplication des données identiques et que cela contribue à rendre le SELECT plus rapide. Points... [Lire la suite]
Posté par David DBA à 23:13 - - Permalien [#]
Tags : , ,
08 octobre 2017

ORDER BY et Consistents gets réduits par 10 : un ORDER BY ne ralentit pas toujours une requête!

IntroductionVous savez qu'un ORDER BY dans une requête SQL va générer au niveau d'Oracle un SORT des données. Cette opération de tri est très consommatrice en terme de ressources mais, sur le coût total du plan d'exécution, ce coût peut être annulé en gagnant sur d'autres opérations. Nous allons voir qu'une requête avec un ORDER BY peut être aussi rapide voir même plus rapide qu'une requête sans le ORDER BY. Points d'attentionRéfléchissez bien avant de faire un ORDER BY car cette opération est très lourde pour Oracle et dans... [Lire la suite]
Posté par David DBA à 14:21 - - Permalien [#]
Tags : , ,

15 septembre 2017

Les informations affichées par Oracle ne sont pas toujours fiables

IntroductionUn problème agaçant avec Oracle est que les informations recherchées sont parfois difficiles à trouver voir même sont incomplètes. Soit ces infos sont dispersées dans plusieurs vues sans point d'entrée unique, soit des paramètres de niveau base sont écrasés par des paramètres de niveau local soit les infos ne sont pas où le DBA junior pensent qu'elles devraient être. Oracle est devenu au fil des versions de plus en plus complexe et des règles d'anciennes versions sont obsolètes pour les nouvelles versions, comme par... [Lire la suite]
Posté par David DBA à 12:35 - - Permalien [#]
Tags : , , ,
08 septembre 2017

Oracle et les ordres DDL : empêcher le COMMIT implicite du DDL d'avoir lieu avec un trigger

IntroductionSous Oracle tout ordre DDL a un COMMIT implicite; c'est une règle d'or qu'on vous a enseigné dès qu'on commence à travailler avec ce SGBD. Néanmoins ce COMMIT implicite peut-être évité même après que l'ordre DDL ait réussi; nous allons tester cela avec l'exemple du CREATE TABLE. Points d'attentionN/A. Base de testsN'importe quelle base Oracle.  Exemples============================================================================================Le COMMIT implicite d'un ordre DDL : modes de... [Lire la suite]
Posté par David DBA à 13:11 - - Permalien [#]
Tags : , ,
24 août 2017

Les services Oracle : où trouver la liste complète?

IntroductionPour se connecter à une base Oracle via le fichier TNSNAMES.ora, Oracle recommande d'utiliser le nom d'un service avec le paramètre SERVICE_NAME. On peut aussi utiliser le nom de l'instance avec INSTANCE_NAME mais Oracle met depuis plusieurs versions en avant cette notion de services. Entre le client et le serveur Oracle, il s'agit d'un maillon supplémentaire dans la chaîne de connexion et il est fondamental de pouvoir identifier les services disponibles dans une base pour s'y connecter et de savoir à quelle PDB ce service... [Lire la suite]
Posté par David DBA à 17:37 - - Permalien [#]
Tags : ,
04 août 2017

Les tablespaces sous Oracle - article 3 : modifications

IntroductionCet article est le troisième et dernier d'une série consacrée aux tablespaces. Le premier concernait la recherche d'informations sur les tablespaces, le deuxième la création et la suppression de ces mêmes tablespaces et celui-ci leur modification.Partie 1 : afficher les informations sur les tablespaces Partie 2 : création et suppression de tablespacesPartie 3 : modifications de tablespaces (cet article) Points d'attentionN/A. Base de testsUne base Oracle 12c. ... [Lire la suite]
Posté par David DBA à 09:10 - - Permalien [#]
Tags : ,