29 mars 2018

Trouver des infos sur les tables du dictionnaire de données : exemple de DBA_TABLES et TAB$

IntroductionOn va voir aujourd'hui où trouver des informations sur les vues et tables du dictionnaire de données d'Oracle. Je prendrais comme exemple une vue fameuse, DBA_TABLES, et vous verrez que ces infos sont parfois bien cachées.   Points d'attentionNA.   Base de testsN'importe quelle base Oracle.     Exemples============================================================================================Trouver les infos basiques sur les vues du dictionnaire de... [Lire la suite]
Posté par David DBA à 20:37 - - Permalien [#]
Tags : ,

24 mars 2018

Oracle Internal Core : les scripts de création d'une base de données

IntroductionComment fait Oracle pour créer une base de données quand j'exécute un CREATE DATABASE, que ce soit en ligne de commandes ou via DBCA? La réponse est que des centaines de scripts sont appelés et ce sont eux qui créent cette base avec son dictionnaire de données. Ces scripts se trouvent dans $ORACLE_HOME/rdbms/admin et nous allons voir cela plus en détail. Points d'attentionAucun. Base de testsN'importe quelle base mais, dans mes tests, ma base est une 12.1. ... [Lire la suite]
Posté par David DBA à 22:02 - - Permalien [#]
Tags : ,
19 mars 2018

Oracle Internal Core : les types de données gérés par Oracle

IntroductionJe poursuis mon voyage au coeur d'Oracle pour comprendre un peu mieux comment celle-ci est construite. Cette fois, nous allons nous intéresser aux type de données gérés par Oracle, où trouver leur liste et comment ils sont définis. Points d'attentionAucun. Base de testsUne base 12c. Exemples============================================================================================Où trouver la liste des datatypes? ============================================================================================Le site... [Lire la suite]
Posté par David DBA à 19:27 - - Permalien [#]
Tags : ,
14 mars 2018

Oracle Internal Core : Les fonctions Oracle et le package PL/SQL STANDARD

IntroductionJe poursuis mon exploration des "entrailles" de la base Oracle (les américains parlent de "Oracle Internal" voir "Oracle Core Internal") pour comprendre un peu mieux comment elle fonctionne et surtout sur quels piliers elle repose. J'ai déjà fais des articles sur les structures mémoires X$xxx appelées Fixed Tables, les vraies tables du dictionnaire de données xxx$ (voir article "Trouver les objets Oracle cachés avec le dictionnaire de données"). Aujourd'hui je vais m'attaquer aux fonctions SQL telles qu'elles sont gérées... [Lire la suite]
Posté par David DBA à 21:01 - - Permalien [#]
Tags : ,
17 février 2018

Trace 10046 et base 12c CDB : ordres exécutés par Oracle lors d'un CREATE TABLE ?

IntroductionDans cet article "Quels sont les ordres exécutés par Oracle lors d'un CREATE TABLE ? Trace 10046 et base 12c non CDB", nous avons regardé quels ordres SQL Oracle exécutait lors d'un CREATE TABLE dans une base 12c non CDB. Maintenant, nous allons voir la même chose mais pour une base CDB. Je mettrais beaucoup moins de commentaires car ces ordres sont bien plus nombreux, certaines sont assez explicites (notamment quand Oracle donne le type des opérations) alors que d'autres restent totalement obscurs. Points... [Lire la suite]
Posté par David DBA à 22:36 - - Permalien [#]
Tags : ,
11 février 2018

Quels sont les ordres exécutés par Oracle lors d'un CREATE TABLE ? Trace 10046 et base 12c non CDB

IntroductionEst-ce que vous vous êtes déjà demandé ce que faisait réellement Oracle lors d'un ordre SQL? Quels sont les tests et contrôles internes qu'il effectue? Nous avons à notre disposition un très bon outil, la trace 10046, qui permet justement de voir ce travail effectué sous le capot. Dans cet article je vais examiner un ordre très basique, un CREATE TABLE d'une table avec une colonne, sans contrainte d'intégrité ni index, et en plus sur l'ancienne architecture Oracle, celle non PDB, pour avoir une trace plus simple. Points... [Lire la suite]
Posté par David DBA à 12:09 - - Permalien [#]
Tags : ,

03 février 2018

Plan d'exécution : utiliser une trace pour voir les sous-ordres SQL absents du plan

IntroductionLorsqu'on doit optimiser une requête SQL, il arrive parfois qu'on ne comprenne absolument pas comment elle est exécutée par Oracle. Une requête qui devrait se dérouler en une seconde prend en réalité trente minutes sans que le plan d'exécution ne nous renseigne sur ce qui se passe. Dans ce cas là, pas d'hésitation, il faut impérativement utiliser une trace pour, comme son nom l'indique, tracer ce qui se passe réellement dans la base.L'objectif de cet article est donc de bien vous faire prendre conscience de ce phénomène :... [Lire la suite]
Posté par David DBA à 17:56 - - Permalien [#]
Tags : , , ,
13 janvier 2018

Interdire dans SQL*Plus et UNIQUEMENT dans SQL*Plus des commandes SQL

IntroductionL'outil SQL*Plus est incontournable dans la panoplie d'un DBA. Outil historique d'Oracle, il est puissant, rapide, léger, pas toujours exempt de problèmes (ce satané LINESIZE!) mais c'est vers lui que vous devez vous tourner si vous voulez travailler au plus près de votre base. Il existe d'autres logiciels, plus conviviaux, avec une belle interface graphique mais qui parfois agrègent ou filtrent les données du dictionnaire de données, comme le Cloud Control, SQL Developer, Toad...Cet article va s'intéresser à un point de... [Lire la suite]
Posté par David DBA à 15:49 - - Permalien [#]
Tags : , ,
07 janvier 2018

Comment créer deux objets avec le même nom dans le même schéma

IntroductionQuand vous débutez en tant que DBA Oracle, on vous dit qu'il n'est pas possible de créer, pour un même user, deux objets avec le même nom. Nous allons voir que c'est faux, la vraie règle est "Deux objets ne peuvent pas avoir le même nom dans un même schéma s'ils appartiennent au même namespace".Petit rappel : le User est l'utilisateur qui se connecte à la base, le Schéma est l'espace du User connecté et l'ensemble des objets qu'il a créé alors que le namespace est une catégorie pour ranger les objets par leur type. ... [Lire la suite]
Posté par David DBA à 14:09 - - Permalien [#]
Tags : ,
23 décembre 2017

Comment bien présenter et formater le résultat d'un SELECT sous SQL*Plus

IntroductionQuoi de pire qu'un SELECT qui renvoie le bon résultat mais qui est si mal formaté qu'il en devient illisible? Nous allons voir comment mettre en page celui-ci avec de simples commandes SQL*Plus. Base de testsN'importe quelle base Oracle. Points d'attentionAucun.   Exemples============================================================================================Afficher des accents sous SQL*Plus============================================================================================Si des caractères... [Lire la suite]
Posté par David DBA à 14:32 - - Permalien [#]
Tags : ,