Articles avec le tag ‘11G’

Introduction

Voilà c’est fait ! Après un mois intensif de bachotage, je suis Oracle Certified Associate (OCA) Database Administrator 11G. Durant mon mois de préparation, j’aurais aimé trouver un site avec plusieurs articles qui couvrait en détail tous les aspects techniques de la certification OCA et je n’ai rien trouvé !

C’est pour ça que je veux lancer cette série d’articles qui serviront aux futurs candidats à cette certification. Et je compte bien commencer cette série d’article par une présentation de cette certification en détail.

Est-ce que je dois faire quelque chose avant de passer l’OCA ?

Alors avant de passer cette certification, vous devez passer une certification en rapport avec le SQL. Il y en a trois qui sont envisageables :

  • 1Z0-007 – Introduction to Oracle 9i SQL
  • 1Z0-051 – Oracle DB 11G : SQL Fundamentals 1
  • 1Z0-047 – Oracle DB SQL Expert

Les deux premières peuvent être passées en mode non-surveillé. Ce qui implique que vous pouvez la passer chez vous, ou au travail, avec un accès aux ressources sans problème. La dernière, quant à elle, doit être forcément passée dans un centre d’examen PearsonVue.

Comment je prépare ma certification ?

Pour préparer cette certification, je vous conseille le bouquin officiel d’Oracle qui couvre ce cursus. Vous pouvez vous le procurer en cliquant ici (Amazon). Dans le livre, vous pourrez trouver un test blanc de 70 questions et vous avez un code pour avoir un deuxième test blanc sur Internet.

J’ai utilisé ce livre pendant un mois, à raison d’environ 2-3 chapitres par jour.

Autrement, vous pourrez bien sûr l’ensemble des cours que je ferai sur mon blog.

Combien coûte t-elle ?

Le passage de la certification coûte 140€. Si vous la ratez, vous devrez repayer la même somme.

Quel est le score à avoir ?

A l’heure actuelle, vous devez avoir 66% de bonnes réponses sur un total de 70 questions. Soit, après un vite calcul, 42 bonnes réponses. Je dis à l’heure actuelle, car les pools de questions sont renouvelés assez régulièrement et le score change d’un pool à l’autre.

Il est important de savoir qu’en cas de réponses multiples, il n’y a pas de demi-point. Si vous avez les 2 bonnes réponses, vous avez 1 point. Si vous avez choisi une bonne réponse et une mauvaise, vous avez 0 point.

Est-elle vraiment difficile ?

Réponse courte : relativement. Réponse longue : C’est toujours la même rengaine, si vous apprenez bien votre bouquin, que vous notez tous les points clés, que vous révisez bien tous les encadrés « Exam Watch » et que vous comprenez très bien tous les principes et la logique, vous l’aurez haut la main.

Il est important d’avoir de l’expérience de terrain avant d’attaquer votre certification. Déjà, parce que passer une certification sans expérience, ça n’a pas vraiment d’intérêt et deuxièmement parce que vous risquez d’avoir à assimiler trop d’informations et de manquer de recul sur certaines questions.

Est-elle vraiment « reconnue » ?

La 1Z0-052, couramment appelée OCA, est une certification « Premier pas » dans la vie d’un DBA. Elle aborde un panel de sujet assez large sans aller vraiment dans les détails. Cependant, elle reste très bien reconnue dans les entreprises pour des DBAs Juniors. Lorsque vous commencez à avoir de l’expérience, il est fortement conseillé de passer à l’OCP qui est beaucoup plus technique et pointilleuse.

Et pour toutes les autres questions ?

Pour toutes les autres questions, vous pouvez allez voir cet article (Tout ce qu’il faut savoir pour se préparer à une certification Oracle) qui retrace mon expérience sur les passages de certifications.

Introduction

Après avoir installé votre système Linux et que vous l’avez préparé pour accueillir votre base de données, vous devez installer Oracle.

Vous avez deux façons d’installer Oracle : L’installation graphique et l’installation silencieuse (sans interface graphique, juste avec la ligne de commande). Ici, nous verrons l’installation graphique mais vous retrouverez comment installer votre base de données sans interface graphique dans cet article.

Téléchargement de l’installeur

Avant toute chose, il faut télécharger l’archive qui vous permettra d’installer votre base de données. Pour ceci, allez sur la page de téléchargement de Oracle.com.

Télécharger les Disk1 et Disk2 de la base de données correspondant à votre architecture de processeur. Pour cet article, nous utiliserons l’architecture Linux x86.

Une fois téléchargées, placez les deux archives zip dans le dossier /tmp de votre serveur.

Décompression des archives

Avertissement : A partir de maintenant, toutes les actions sont faites sous l’utilisateur Oracle

Placez-vous dans le dossier /tmp

cd /tmp

Puis décompressez les deux archives

unzip linux_11gR2_database_1of2.zip

unzip linux_11gR2_database_2of2.zip

Un dossier database a été créé dans le dossier /tmp où sont situés tous les fichiers extraits des deux zips.

Lancement de l’installeur

Note : Les actions sont toujours réalisées avec l’utilisateur Oracle

A partir de maintenant, vous devez vous logger avec l’utilisateur Oracle sur votre serveur en physique et non en SSH.

Avertissement : Loggez-vous bien avec l’utilisateur Oracle et non l’utilisateur root sinon rien ne va marcher.

Vous arrivez sur un écran de ce type :

Un peu rudimentaire mais ça fait largement l’affaire. Vous avez deux éléments : une horloge et un terminal. Toutes les commandes ci-dessous seront à rentrer dans le terminal.

Pour lancer l’installeur, il suffit d’exécuter le script runInstaller

cd /tmp/database

./runInstaller

L’Universal Installer fait quelques vérifications de pré-requis (Espace temporaire, SWAP, et nombre de couleur du moniteur) puis démarre :

L’écran d’accueil vous demande d’entrer votre e-mail et votre mot de passe de support Oracle.

Si vous n’en avez pas, cliquez sur Next puis sur Yes au message d’avertissement.

A l’écran suivant, 3 options vous sont proposées :

  • Création et configuration d’une base
  • Installation seulement du logiciel de la base de données
  • Mise à jour d’une base de données

Vous vous demandez sûrement qu’elle est la différence entre la première et la deuxième option. Avec la première, vous allez créer tous les fichiers nécessaires à faire fonctionner une base de données Oracle et vous allez en créer une et la configurer par la suite. Avec la deuxième option, vous allez seulement créer les fichiers de base puis vous allez devoir créer votre base de données tout seul par la suite.

Note : Hé oui, vous l’avez deviné, il peut avoir plusieurs base de données sur un serveur Oracle.

Nous choisissons la première option et on clique sur Next.

L’installeur nous demande si la base de données sera installé sur un serveur ou sur une station de travail. Nous choisissons « Server Class » et nous continuons.

La base de données sera t-elle toute seule ou sera t-elle un noeud d’un cluster ? Nous n’avons pas installé de Cluster donc on choisit Single Instance. Comme d’habitude, on clique sur Next

On nous demande de choisir entre une installation basique ou complète. Pour ne pas compliquer les choses, nous allons choisir l’installation basique.

Voici la seule page de configuration technique que vous pourrez avoir dans cette installation. Voici les explications de tout ce qu’on peut vous demander :

Oracle Base : Répertoire de base où se trouveront tous les fichiers de votre logiciel Oracle.

Software Location : Répertoire de base de votre base de données où se trouveront tous les fichiers spécifiques à la base de données que vous venez de créer

Storage Type : Type de stockage. Peut-être le système de fichier ou une instance ASM. Ce dernier est un logiciel Oracle qui permet de gérer complètement votre stockage. Ici, nous choisirons FileSystem

Database File location : Répertoire où se trouveront tous les fichiers de données de vos bases de données. Les fichiers de données, comme son nom l’indique, contiennent toutes les données de vos bases.

Database Edition : Version de votre base de données. L’édition Enterprise est la plus aboutie mais c’est celle qui coûte la plus chère. Nous allons garder la version Enterprise pour cette installation.

OSDBA group : Tous les users qui seront dans ce groupe UNIX pourront se connecter et administrer de A à Z vos base de données.

Global database name : Nom que vous allez donner à votre base de données que vous êtes en train de configurer.

Administrative password : Mot de passe qui sera attribué à tous les utilisateurs créés lors de l’installation (sysman, sys, dbsnmp etc…)

Une fois remplis, cliquez sur Next

Cette étape vérifie que tout a été installé. Vérifiez qu’il n’y a aucun problème puis cliquez sur « Next ».

Il arrive qu’il y ait des bugs de vérification de Swap et de mémoire physique dans les machines virtuelles comme sur notre capture d’écran ci-dessus. Dans ce cas, cliquez sur Ignore All puis sur Next.

Un dernier écran vous fait un bilan des actions que l’installeur va faire. Jetez un coup d’oeil rapide puis une fois que vous êtes sûr que tout est bon, cliquez sur Finish.

Vous avez le temps de vous prendre un bon café le temps que votre base de données s’installe.

A la fin de l’installation, un écran vous donne quelques informations sur votre toute nouvelle base de données. Notez dans un coin ceux-ci puis cliquez sur OK.

Une dernière fenêtre vous demande d’exécuter deux scripts en tant que root. Pour ceci, ouvrez un nouveau terminal et rentrez ces commandes :

su

(rentrez votre mot de passe) puis Entrée

sh /app/oraInventory/orainstRoot.sh

sh /app/oracle/product/11.2.0/dbhome_1/root.sh

Une fois exécutés, cliquez sur Ok dans notre fenêtre et une nouvelle fenêtre nous informant que l’installation s’est bien passée apparaît. Fermez la en cliquant sur Close

Introduction

Maintenant que votre système Linux est bien installé, vous devez le préparer pour accueillir votre bijou de base de données.

C’est partit !

Téléchargement de Oracle

Tous les produits Oracle sont disponibles gratuitement sur leurs sites web Oracle.com. Deux versions pour Linux existent : une pour processeur 32 bits et une autre pour processeur 64 bits. Nous choisirons la version 32 bits dans le cadre de cet article.

Pour plus de facilités, mettez les deux zips d’installation dans le dossier /tmp de votre serveur.

Création de l’utilisateur Oracle et des groupes d’administration

Tout d’abord, il va vous falloir créer deux groupes : dba et oinstall. Les membres du groupe dba auront tous les privilèges sur la base de données tandis que les membres du groupe oinstall auront tous les privilèges sur les fichiers physiques de la base de données.

groupadd oinstall

groupadd dba

Une fois ceci fait, il vous faudra créer votre utilisateur oracle qui exécutera la base de données. Ensuite, on lui choisit un mot de passe.

useradd -m oracle

passwd oracle

Puis on place l’utilisateur oracle dans les deux groupes car il devra modifier les fichiers systèmes de votre base Oracle mais aussi pourra administrer la base de données.

usermod -g oinstall -G dba oracle

Création des répertoires de base

Pour l’installation, nous allons avoir besoin de créer les répertoires de base.

mkdir -p /app/oracle

Puis nous positionnons les permissions correctes dessus :

chown -R oracle:oinstall /app

chmod -R 0775 /app

Installation des packages nécessaires

Une base de données oracle nécessite quelques packages systèmes pour fonctionner. Pour les installer, insérer le DVD d’installation de Oracle Enterprise Linux 5 et montez-le dans votre système de fichiers :

mount /dev/cdrom /mnt

Ensuite, positionnez-vous dans le répertoire Server du lecteur DVD. Vous y trouverez tous les RPMs du DVD. Lancez ces commandes :

cd /mnt/Server

rpm -Uvh gcc-4.1.2-46.el5.i386.rpm libgomp-4.4.0-6.el5.i386.rpm elfutils-libelf-devel-static-0.137-3.el5.i386.rpm elfutils-libelf-devel-0.137-3.el5.i386.rpm glibc-devel-2.5-42.i386.rpm glibc-headers-2.5-42.i386.rpm gcc-c++-4.1.2-46.el5.i386.rpm libaio-devel-0.3.106-3.2.i386.rpm libstdc++-devel-4.1.2-46.el5.i386.rpm sysstat-7.0.2-3.el5.i386.rpm unixODBC-devel-2.2.11-7.1.i386.rpm unixODBC-2.2.11-7.1.i386.rpm kernel-headers-2.6.18-164.el5.i386.rpm

Note : Ces packages sont valables pour la version i386 de OEL 5. Si vous avez choisis la version 64 bits, il faudra remplacer i386 par x86-64 dans le nom des packages le nécessitant.

Modification de quelques paramètres

Certains paramètres dans le kernel sont bien trop restrictifs pour qu’une base de données Oracle puisse fonctionner correctement avec un grand nombre de connexions simultanées. Nous allons éditer les paramètres du kernel et les charger à chaud :

echo ‘fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586′ >> /etc/sysctl.conf

/sbin/sysctl -p

Le nombre processus pouvant être lancés et de fichiers pouvant être ouverts par l’utilisateur Oracle simultanément sont trop petits pour fonctionner correctement à plein régime. Nous allons changer la limite dans le fichier /etc/security/limits.conf

echo ‘oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536′ >> /etc/security/limits.conf

Puis rajouter une ligne au fichier de configuration de pam.d :

echo ’session    required     pam_limits.so’ >> /etc/pam.d/login

Enfin, il vous faudra lever les protections sur le nombre de processus lancés à chaque login de l’utilisateur Oracle. Pour ceci, nous allons éditer le fichier /etc/profile

echo ‘if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi’ >> /etc/profile

Conclusion

C’est la fin de la configuration de votre serveur. Passons à l’installation de la base de données Oracle en cliquant sur la flêche verte.

Introduction

Vous en avez jamais eu marre d’installer Oracle avec le lourd Universal Installer en Java ? Ou alors vous voulez installer Oracle sur votre serveur mais vous ne voulez pas utiliser X ? Le silent mode est donc fait pour vous.

Le mode d’installation silencieux utilise des fichiers de réponses (Response files dans son appellation original) qui permet de spécifier toutes les informations nécessaires.

Créer votre response file

Un response file est un fichier texte qui porte par défaut l’extension .rsp . Vous pouvez en créer un vous-même avec toutes les informations que vous voulez ou en générer un à la fin d’une installation graphique de Oracle.

Voici un exemple de response file que j’utilise pour une installation d’Oracle Database toute simple : Le télécharger . Vous pouvez vous en inspirez et changer les valeurs pour que ça colle à votre installation.

L’installation en silent mode

L’installation en silent mode est très simple. Après avoir dézippé les deux archives d’installation que vous pourrez télécharger en cliquant ici , vous vous positionnez dans le répertoire créé

unzip linux_11gR2_database_1of2.zip

unzip linux_11gR2_database_2of2.zip

cd database

Vous devez définir la variable DISTRIB avant de commencer

export DISTRIB=`pwd`

Puis vous lancer l’Universal Installer avec quelques options supplémentaires

./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile /chemin/vers/responsefile

L’installation durera une petite dizaine de minute.

Par la suite, il ne vous restera plus qu’à exécuter les classiques deux scripts en tant que root comme indiqué lors de l’installation. Facile non ?

Introduction

Lorsqu’un serveur redémarre de façon brutale, il est toujours utile que votre base de donnée Oracle redémarre automatiquement lorsque le système s’initialise. Ceci peut vous éviter des downs très longs et de nombreuses interventions de votre part qui s’avèrent au final pas très utiles. En plus, Oracle vous as facilité la vie pour mettre ça en place ! Vous n’avez donc aucune raison pour ne pas lire le reste de l’article ;-)

Modification de /etc/oratab

Il va vous falloir modifier le fichier /etc/oratab . Le fichier est au format

$ORACLE_SID:$ORACLE_HOME:N|Y

La dernière colonne indique aux scripts dbstart et dbshut (vu par la suite) de démarrer (Y) ou pas (N) cette instance.

Exemple :

orcl:/app/oracle/product/11.2.0/dbhome_1:N

Il faut que vous changiez le « N » de la ligne de l’instance que vous voulez démarrer en « Y ». Ce qui donnera pour notre ligne en exemple :

orcl:/app/oracle/product/11.2.0/dbhome_1:Y

Création du script de démarrage

A partir de maintenant, nous allons créer un script bash qui sera exécuté à chaque démarrage. Ce script appellera les deux scripts dbstart et dbshut qui s’occuperont respectivement de lancer et d’arrêter votre base de données.

Vous pouvez télécharger ce script à cette addresse. Copiez le dans le dossier /etc/init.d en prenant soin de remplacer les valeurs {A remplacer} par le ORACLE_HOME et le ORACLE_SID respectivement.

Exécuter ce script au démarrage

Pour exécuter ce script au démarrage de votre système Linux, il faudra placer un alias dans les répertoires rc3.d et rc5.d (dépend de votre runlevel). Pour faire ceci :

ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracle

ln -s /etc/init.d/oracle /etc/rc.d/rc5.d/S99oracle

Inversement, pour arrêter vos bases proprement à chaque extinction de votre système :

ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/K01oracle

ln -s /etc/init.d/oracle /etc/rc.d/rc5.d/K01oracle

Vous pouvez dorénavant redémarrer votre système et vérifier que votre base de données se lance au démarrage !

Exemple de page APEX

Exemple de page APEX

Introduction

Oracle APEX est un portail web rattachée à la base de donnée Oracle qui permet de développer des applications web en un temps record.

Pour les initiés aux technologies Oracle, ça pourrait leur faire penser à un forms/reports en version web.

APEX est installable très facilement avec une base de donnée Oracle. Nous allons voir ici comment l’installer sur la version 11GR2 de Oracle.

Installation de Oracle APEX sur Oracle Database 11GR2

Pour installer Oracle APEX, rien de bien compliqué.

Connectez-vous en SYSDBA à votre base de données.

cd $ORACLE_HOME

bin/sqlplus / « as sysdba »

A l’invite de commande, lancez le script apxconf.sql

@ ?apex/apxconf.sql

Entrez un mot de passe pour l’utilisateur admin

Entrez le port sur lequel vous voulez que le serveur web tourne (par défaut 8080)

Débloquer l’utilisateur ANONYMOUS

Pour pouvoir vous connecter, il vous suffira de débloquer l’utilisateur ANONYMOUS à l’aide de la commande :

ALTER USER anonymous ACCOUNT UNLOCK ;

Créer un workspace

Maintenant que tout est bien installé et prêt, il est temps de vous connecter à l’administration d’APEX. Pour ceci, ouvrez un navigateur web et allez à l’adresse http://server-ip:port-choisit/apex/apex_admin. Cette page apparaît :

Ecran de login de l'administration APEX

Ecran de login de l'administration APEX

Rentrez le login Admin et votre mot de passe défini lors de l’installation. Vous arrivez sur cette page :

Ecran d'accueil Administration APEX

Ecran d'accueil Administration APEX

Cliquez sur la flêche à côté de l’icône Manage Workspaces => Manage Workspaces => Create Workspace . Vous arrivez sur cet écran.

Créer Workspace - Etape 1

Créer Workspace - Etape 1

Donnez un nom à votre workspace et un commentaire.

Créer un Workspace - Etape 2

Créer un Workspace - Etape 2

Oracle vous demande le schéma auquel est rattaché le workspace. Vous avez le choix entre utiliser un schéma existant ou en créer un nouveau.

Créer un workspace - Etape 3

Créer un workspace - Etape 3

Donner l’identité de l’utilisateur qui pourra administrer complètement ce workspace. Cet utilisateur est complètement indépendant d’un utilisateur Oracle ou de votre utilisateur Admin précédemment créé.

Créer un workspace - Etape 4

Créer un workspace - Etape 4

Comme à son habitude, Oracle vous fait un briefing de ce que vous allez créer. Cliquez sur Create et votre Workspace sera enfin créé !

Vous connecter à votre Workspace

Enfin, pour finir, voici comment vous connecter à votre workspace. En haut à droite de votre écran, cliquez sur Logout. Une page avec 3 champs apparaît :

Ecran login de votre Workspace

Ecran login de votre Workspace

Il ne vous reste plus qu’à rentrer le nom de votre workspace, votre login et votre mot de passe créé dans la partie précédente et vous voici prêt à créer un projet web avec Oracle APEX !

Note : Vous retrouverez cette interface sans forcément passer par l’admin en allant à l’url http://serveur-url:port-choisit/apex

Conclusion

Oracle APEX est très facile à installer et sa console d’administration web puissante vous permettra d’avoir un très rapide aperçu de tous les workspaces et de les gérer de façon très efficace.

Introduction

Votre instance peut vous poser de très nombreux problèmes. Parmi ceux-ci,il y en a que tous les débutants font les premiers jours en tant que DBA Oracle. Vous trouvez ici une liste non-exhaustive d’erreurs courantes et leurs solutions

Les erreurs

Error while loading shared libraries

Système : Oracle Enterprise Linux 5 / Oracle Database 11G

Cause : SELinux en mode Enforcing

Solution : Lancer la commande setenforce 0 . Vous pouvez vérifier l’état de SELinux avec la commande getenforce

SP2-0024 : Rien à modifier

Cause: Oracle n’arrive pas à trouver le .sql que vous spécifiez

Solution: Mettre le chemin complet dans la commande. Exemple : @/app/oracle/scripts/script.sql au lieu de @script.sql

ORA-32017: failure in updating SPFILE

Autre : ORA-16179: incremental changes to « log_archive_dest_2″ not allowed with SPFILE

Cause : Erreur fréquente. Lors de l’ALTER SYSTEM, vous avez oublié la clause LOCATION

Solution : ALTER SYSTEM SET log_archive_dest_2=’LOCATION=/app/oracle/oradata/arch’ scope=both

Tkprof - I've got an idea

Introduction

Comme vous avez pu dans le voir dans l’article Générer des traces sur votre instance Oracle , les traces en elle-même sont globalement illisibles :)

Pour vous éviter un mal de tête, Oracle a développer un outil très pratique nommé Tkprof qui se chargera de vous décoder vos traces et de vous fournir quelques éléments pratiques comme le plan d’exécution des requêtes.

Utilisation de TkProf

TkProf est inclut dans Oracle Client et Oracle Database. C’est un outil en ligne de commande que vous pouvez via une invite de commande sous Windows ou un terminal sous Linux.

Sans plus attendre, voici la syntaxe :

Windows :

tkprof  C:/oracle/…./trace.trc output=C:/oracle/…./trace_output.txt

Linux :

$ORACLE_HOME/bin/tkprof  /app/oracle/…/trace.trc output=/app/oracle/…/trace_output.txt

Attention : La version de TkProf doit être impérativement la même que celle de la base de donnée où vous avez généré vos traces. Si elles sont différentes, vous aurez à coup sûr des valeurs aberrantes dans votre output file.

Les options indispensables

Pour que vos rapports TkProf soient plus lisibles, quelques options sont indispensables.

  • SYS=no : Ne pas afficher les ordres SQL exécutés par l’utilisateur SYS
  • EXPLAIN=user/password : Permet de spécifier le schéma dans lequel tkprof va générer les explain plan. Inutile si vous générez vos traces directement avec le compte oracle en local sur votre base de donnée
  • AGGREGATE=no : Permet de ne pas regrouper les ordres SQL similaires
  • SORT= : Permet de triées les instructions selon l’option désirée

Et comment je les utilise ces options ?

Simple comme bonjour ! Par exemple, pour des traces sans ordres SQL exécutées par SYS et pas de regroupements d’ordres SQL similaires sous Linux :

$ORACLE_HOME/bin/tkprof  /app/oracle/…/trace.trc sys=no aggregate=no output=/app/oracle/…/trace_output.txt

Comment lire mon rapport ?

Pour mieux illustrer, prenons la trace qui avait été générée dans mon article Générer des traces sur votre instance Oracle.

********************************************************************************

SELECT e.last_name, j.job_title from oracle.employees e
    JOIN oracle.jobs j ON (e.job_id=j.job_id)

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.01       0.13          0          4          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0         15          0         107
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.01       0.14          0         19          0         107

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS

Rows     Row Source Operation
-------  ---------------------------------------------------
    107  HASH JOIN  (cr=15 pr=0 pw=0 time=5798 us)
     19   TABLE ACCESS FULL JOBS (cr=7 pr=0 pw=0 time=187 us)
    107   TABLE ACCESS FULL EMPLOYEES (cr=8 pr=0 pw=0 time=796 us)

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  SQL*Net message from client                     2        0.14          0.15
********************************************************************************

Nous pouvons distinguer trois parties :

  • Un tableau avec plein de nombres. (On reviendra dessus après)
  • L’explain plan de la requête
  • Les Wait events générés par la requête

Comment je le lis le tableau ?

Ce fameux tableau est découpé en trois lignes :

  • Parse : Cette étape détermine le plan d’exécution de votre requête
  • Execute : Pour les ordres INSERT, UPDATE, DELETE : modifie les données. Pour l’ordre SELECT : Identifie les lignes à extraire
  • Fetch : Extraction des lignes et opérations de tri. Concerne uniquement l’ordre SELECT.

Concernant les lignes, voici leurs significations :

  • Count : Nombre de fois que le Parse/Execute/Fetch a été exécuté
  • CPU (Seconde) : Temps total de traitement CPU
  • Elapsed (Seconde) : Temps total pris par le Parse/Execute/Fetch.
  • Disk : Nombre total de blocs lus physiquement dans les fichiers de données
  • Query : Nombre de buffers exploités en mode cohérent
  • Current : Nombre de buffers exploités en mode courant
  • Rows : Nombre de lignes affectés par la requête.

Quelques consignes pour bien commencer

  1. Vérifier qu’il n’y a pas de grosses différences entre CPU et Elapsed
  2. N’oubliez jamais de diviser vos valeurs par la valeur de Count
  3. Prenez l’habitude d’additionner Current et Query pour connaître le nombre total de buffers extraits
  4. Comparer le nombre de blocs parcourus aux nombre de lignes fetchées pour vérifier s’il ne manque pas un index. (Inutile si vous avez l’explain plan)
  5. Ne perdez pas de temps à trop décoder, ça se parcoure vraiment très rapidement

Conclusion

TkProf est un outil très facile à utiliser mais néanmoins indispensable à tous les DBAs. Il vous permettra de comprendre et résoudre de nombreux problèmes en très peu de temps.

Introduction

Imaginez-vous dans cette situation : un programmeur vous appelle « Monsieur CAPITAINE, j’ai des problèmes avec un de mes traitements sur l’instance de Dèv, c’est très lent. Pouvez-vous me dire ce qui est lent ? ». Qu’allez-vous faire ? Vous allez lancer des traces.

C’est un des outils les plus pratiques du DBA Oracle. Une trace est un fichier plat qui recense tous les ordres SQL passés entre un laps de temps que vous définirez. Dans l’exemple plus haut, l’intervalle serait Début du traitement – Fin du traitement .

Un peu de technique

Voici une trace : Cliquez ici pour la voir

Première impression : « Gné ? » . Vous avez tout à fait raison. Les traces, en elle-même, sans être parsées par l’utilitaire tkprof sont globalement illisibles sauf pour les DBA très expérimentés qui se feront une joie de vous les déchiffrer.

Pour satisfaire votre curiosité, voici la même trace qu’au dessus mais à la différence d’être parsées par TKPROF : Cliquez ici pour la voir

Comment on trace ?

Il y a plusieurs façons de générer des traces. Vous pouvez les générer pour « vous » au niveau session, mais vous pouvez aussi les générer pour une session différente de la vôtre.

Tracer votre propre session

Tout d’abord au niveau de votre de votre session, la solution la plus simple est l’ALTER SESSION :

ALTER SESSION SET EVENTS ‘10046 trace name context forever,level 12′;

Vous n’avez plus qu’à exécuter votre traitement qui pose des soucis de performance. Une fois terminée, vous n’avez qu’à entrer cette commande :

ALTER SESSION SET EVENTS ‘10046 trace name context off’;

Tiens d’ailleurs en parlant de ça je pourrais les trouver où mes traces ?

Pour trouver l’emplacement de vos traces, il suffit d’ouvrir SQL*plus et de copier la commande

show parameter user_dump_dest

Le résultat est le dossier exact où se trouve toutes vos traces générées.

Tracer une session distante

Maintenant, pour tracer des sessions distantes, vous pouvez utiliser le package DBMS_SYSTEM comme ceci :

EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION (sid=>[sid],serial#=>[serial],sql_trace=>TRUE);

Exécutez votre traitement puis pour stopper les traces :

EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION (sid=>[sid],serial#=>[serial],sql_trace=>FALSE);

Attention : Votre utilisateur doit avoir le droit EXECUTE sur le package DBMS_SYSTEM pour faire ceci.

Je fais comment pour récupérer le SID et le SERIAL ?

Le SID (Session ID) et le Serial# sont des identifiants uniques attachés à chaque session sur votre base de données Oracle. Pour récupérer le SID de la session visée, exécutez cette requête :

SELECT SYS_CONTEXT('userenv','SID') SID FROM DUAL;

Ensuite, avec un utilisateur qui a les privilèges de SELECT sur la vue V$SESSION, vous pouvez retrouver le serial avec cette requête :

SELECT serial# FROM V$SESSION WHERE sid=[SID précédemment trouvé];

Conclusion

Maintenant que vous savez lancer des traces de votre session et d’une distante, il vous faut les rendre lisibles. Pour ceci, la page suivante vous apprendra à manipuler l’utilitaire tkprof.