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 : ,
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 : , ,
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 : ,