03 juillet 2017

SYS ne peut pas tout faire sous Oracle

          IntroductionSYS est le user le plus puissant sous Oracle! Mais cela ne signifie pas pour autant qu'il puisse TOUT faire! Même lui a des limites, fixées par les développeurs du SGBD et c'est l'objet de cet article. Points d'attentionEn tant que SYS vous pouvez facilement casser votre base, donc faites bien attention si vous vous connectez avec ce user. A noter que parmi les bonnes pratiques d'Oracle, il est dit qu'il ne faut quasiment jamais se connecter comme AS SYSDBA (user... [Lire la suite]
Posté par David DBA à 20:15 - - Commentaires [0] - Permalien [#]
Tags : ,

08 mai 2017

Un monitoring des index plus évolué que celui d'Oracle

IntroductionSi vous avez déjà utilisé l'outil de monitoring des index d'Oracle, vous avez dû être effarés devant la pauvreté de celui-ci. Oracle n'indique en effet que si Oui ou Non un index est utilisé durant la période de monitoring mais pas le nombre de fois qu'on l'utilise. Dans le cas où vous voulez supprimer des index d'une table qui en a trop parce qu'ils ralentissement les INSERT et DELETE, la première chose à faire est de voir si ces index sont utilisés ou non mais aussi combien de fois ils le sont avant de prendre une... [Lire la suite]
Posté par David DBA à 22:21 - - Commentaires [0] - Permalien [#]
Tags : , ,
02 avril 2017

Changer l'ordre des colonnes d'une table avec l'attribut Invisible

     IntroductionChez un client, un responsable développement est venu me voir avec un problème bien particulier. Il avait une table de 300 colonnes et, quand il voulait récupérer le nom de ses clients, au lieu de simplement faire un SELECT nom FROM clients, il récupérait toutes les données de la table puis faisait un extract du fichier .txt créé en se basant sur la position des caractères. En clair, pour lire le nom, il récupérait les caractères 50 à 99 dans ce fichier. OK, c'était une application ancienne,... [Lire la suite]
Posté par David DBA à 09:56 - - Commentaires [0] - Permalien [#]
Tags : ,
22 mars 2017

Tout le dictionnaire de données Oracle n'est pas dans DICT

       IntroductionUne base de données Oracle 11gr2 à sa création comporte à peu près 9000 tables et vues système différentes. Celles-ci composent le dictionnaire de données qui est la propriété du user SYS. Il va de soi qu'en cas de problème, trouver la bonne vue dans ce labyrinthe sera extrêmement difficile! Prenons l'exemple d'un message d'erreur relatif à un trigger. Vous connaissez la vue DBA_TRIGGERS mais saviez-vous qu'il existe les vues DBA_INTERNAL_TRIGGERS, DBA_TRIGGER_ORDERING,... [Lire la suite]
Posté par David DBA à 22:33 - - Commentaires [0] - Permalien [#]
Tags : ,
19 mars 2017

Evolution taille table : Insert, Delete, Truncate, Drop, Shrink, Move

          IntroductionUne légende tenace dans le monde Oracle dit qu'une fois les données d'une table supprimées, l'espace occupé par ces lignes est définitivement perdu! Oui, ça a l'air idiot mais on trouve encore cette histoire sur pas mal de forums. La réalité est plus complexe : une fois que des blocs de données ont été alloués à une table, ces blocs restent alloués à la table, même si l'intégralité des données est supprimée par un DELETE! Néanmoins ces blocs seront réutilisables lors... [Lire la suite]
Posté par David DBA à 12:33 - - Commentaires [0] - Permalien [#]
Tags : , , , , , ,
05 mars 2017

Comment le nom des structures mémoires Oracle X$ est construit

                           IntroductionDans mon article "Trouver les objets Oracle cachés : tables système xxx$, structures mémoire X$xxx, paramètres cachés, packages PL/SQL cachés" je parlais des structures mémoires X$xxx. Celles-ci ont des noms très particuliers comme X$KSDAFT ou X$KQFOPT et je vous mets au défi de deviner à quoi elles servent rien qu'avec leur nom! Malheureusement ces structures mémoires ne sont... [Lire la suite]

22 février 2017

DBMS_ADVANCED_REWRITE : intercepter et remplacer un ordre SQL

                             IntroductionParfois un ordre SQL mal écrit est exécuté sur une base de données sans qu'il soit possible de modifier son texte. Les raisons peuvent être multiples :           ordre SQL issu du logiciel d'un éditeur tiers disparu          ordre SQL venant d'un programme interne du client mais... [Lire la suite]
Posté par David DBA à 13:45 - - Commentaires [0] - Permalien [#]
Tags : ,
16 février 2017

Statistiques sur les SELECT des colonnes : package DBMS_FGA

IntroductionUn client est venu me voir avec un problème sur une table comprenant 300 colonnes... Oui, 300! Son problème a été rapidement résolu, il ne portait pas sur ce nombre de colonnes MAIS je me suis posé la question : est-ce que toutes les colonnes de cette table sont vraiment utilisées? Est-il possible de nettoyer la table en supprimant des colonnes et gagner ainsi de l'espace disque, voir de supprimer des index sur des colonnes devenues inutiles au fil des ans?La question est : où trouver les statistiques d'utilisation des... [Lire la suite]
Posté par David DBA à 18:44 - - Commentaires [0] - Permalien [#]
Tags : , , ,
11 février 2017

Les types d’objets d'une base de données Oracle

          IntroductionUne base de données Oracle renferme bien plus de types d'objets qu'un DBA débutant voir même confirmé peut imaginer. Nous manipulons tellement souvent les tables, vues, séquences et autres objets communs du bestiaire Oracle que nous pensons tout connaître de la base. Grave erreur car en réalité Oracle met à notre disposition des dizaines de types d'objets différents, du plus commun au plus exotique; oui, je dis bien des dizaines et c'est ce que nous allons voir. ... [Lire la suite]
Posté par David DBA à 11:30 - - Commentaires [0] - Permalien [#]
Tags : , ,
09 février 2017

Pourquoi ma session Oracle est bloquée? Tableau commençant à 0

IntroductionOracle met à notre disposition via le dictionnaire de données des milliers de vues. Cette richesse est aussi une faiblesse : où trouver les bonnes informations? Est-ce que je cherche dans les bonnes vues, est-ce qu'il n'y en aurait pas de plus pertinentes que celles que je regarde actuellement? Ceci est particulièrement vrai dans le cas de sessions bloquées. Identifier qui me bloque, quel objet, sur quelle ligne... il est compliqué de retrouver toutes ces infos car elles sont éparpillées dans N vues : V$SESSION,... [Lire la suite]
Posté par David DBA à 15:00 - - Commentaires [0] - Permalien [#]
Tags : , , , ,