1. Introduction générale

Une DB, à quoi ça sert?

A stocker de l'information, des données. Dans le cas qui nous occupe, Oracle, fait partie de ce qu'on appelle les bases de données relationnelles (RDBMS). On parle plutôt de données structurées en ce qui concerne un RDBMS. Pour le côté structuré, j'aime assez l'analogie avec les fiches de bibliothèque. En gros on pourrait dire que dans une base de données on stocke beaucoup de données qui ont une certaine structure. Avec le temps, leur champ d'action s'est étendu et on peut dire que l'on y stocke tout et n'importe quoi. En Oracle, il y a même un type qui s'appelle BLOB. Rien à voir avec le film éponyme, on n'y stocke pas le monstre mais une ou des photos du monstre peuvent faire l'affaire.

Pour résumer, une DB sert à stocker beaucoup d'information, de préférence structurée (comme des fiches ou des formulaires). Stocker c'est bien, questionner c'est mieux (pour paraphraser ce proverbe italien bien connu: "Avoir confiance c'est bien, ne pas avoir confiance c'est mieux"). La base de données est ensuite questionnée, le gros de sa force vient de là. On peut lui poser des questions complexes sur des quantités monstrueuses d'information et avoir la réponse dans un délai raisonnable.

On s'en sert aussi pour centraliser l'information. Plusieurs personnes peuvent interroger la même base de données en même temps et y apporter des modifications. La DB possède un mécanisme pour gérer les accès concurrents et résoudre les conflits.

Où est-elle installée?

De préférence sur un serveur, une belle grosse machine bien protégée et peu conviviale. Maintenant on peut installer une base de donnée Oracle sur une machine normale, un simple PC.

Qui l'utilise?

En général des gros consommateurs de ressources informatiques tels que les banques, les institutions, les grosses entreprise. Mais le temps à permis de démocratiser leur usage et les petites entreprise ainsi que le particulier l'utilisent parfois. Oracle dispose même d'une version gratuite "Oracle Database Express Edition".

 

Quels sont les objets que l'on y trouve?

Au début de l'introduction, je parlais de donnée structurée. Essayez d'imaginer une entreprise d'avant l'informatique. Elle devait avoir un registre de ses employés, surement une farde dans laquelle on pouvait trouver une fiche pour chaque employé. Sur chaque fiche, un minimum d'information tel que: le nom, le prénom, la date de naissance, la date d'engagement, le poste occupé, le salaire. On y trouvera ausi une farde (ou une armoire) pour les factures, les commandes et plein d'autres choses du même genre.

Les éléments de base dans une DB sont les tables. Voyez-les comme des fardes, vou aurez une table pour les employés, une table pour les factures, une table pour les clients... Une table contiendra autant de lignes que d'éléments, pour reprendre les employés, nous aurons dans la table "EMPLOYE" une ligne pour chaque employé. Cette ligne aura autant de colonnes que de caractéristiques que nous voulons conserver, par exemple:

- colonne 1: NOM;

- colonne 2: PRENOM;

- colonne 3: Date de naissance;

-colonne 4: Fonction;

Mais revenons un instant à nos fardes et notre papier:

La farde, un exemple de fiche et d'un tableau récapitulatif.

Tout va très bien tant que le nombre d'employés reste petit mais quand il devient grand? Finalement, l'informatique n'est qu'un outil destiné à faciliter la vie des utilisateurs. Alors tout commence par l'expression d'un besoin: "je voudrais stocker quelque part, la liste de mes employés et être capable de la consulter et de la modifier facilement". La réponse informatique à cette question a été la base de données.

Sans trop d'imagination, l'objet central est la TABLE. La table, est la représentation informatique du tableau récapitulatif présenté précédemment. Une table est composée de colonnes, les attributs (ou caractéristiques de mes éléments). Les éléments de ma table sont les lignes, une ligne par élément.

Nous y reviendront plus tard mais sachez que le client le plus simple pour une base de données Oracle est SQLPLUS. A titre informatif, voici comment nous pourrions créer et peupler notre première table. Nous verrons plus loin comment installer et configurer tout ce qui nous est nécessaire, pour l'instant supposons que c'est déjà fait.

Les grandes étapes sont:

Pour l'exemple, la manipulation se passe sous Windows VISTA et ORACLE 11g. Ne vous inquiétez pas si tout n'est pas aussi limpide que de l'eau de roche, nous reviendrons sur tout cela en détail plus tard. Quelques petits inconvénients de configuration sont présent, nous les résoudrons en temps utiles.

Se connecter

Comme vous pouvez le voir, l'utilitaire en ligne de commande pour se connecter à une base de données Oracle est "SQLPLUS".

La syntaxe la plus commune est: "sqlplus USER/PASSWORD@DATABASE". Dans l'exemple, la chose est un peu plus complexe, la résolution locale n'étant pas bien configurée, j'utilise ici "EASY CONNECT".

Remarquez au passage que les messages renvoyés par Oracle ne sont pas correctement affichés: "ConnectÚ Ó :" au lieu de "Connecté à :".

Créer la table

SQLPLUS parait un peu primaire de premier abort mais vous apprendrez à l'apprécier. Notez le "--" pour indiquer un commentaire. La première commande "DROP TABLE EMPLOYEE" supprime une éventuelle table EMPLOYEE déjà présente. Le "CREATE TABLE" crée ma nouvelle table avec les colonnes dont j'ai besoin. Ces instructions, "CREATE TABLE" et "DROP TABLE" sont du SQL (Structured Query Language).

Insérer les valeurs

La commande "INSERT INTO" me permet d'insérer des valeurs dans ma nouvelle table. Notez le "COMMIT" après la dernière insertion, Oracle gère ce qu'on appèle des transactions, si j'avais tapé "ROLLBACK", Oracle aurait simplement annulé mes opérations d'insertion. De plus, mes modifications ne sont mises à disposition des autres sessions qu'après le COMMIT. Attention, par défaut, quand je quitte SQLPLUS (avec la commande EXIT) un COMMIT est automatiquement exécuté.

Vérifier que nos valeurs sont bien là

La commande qui me permet de questionner Oracle est "SELECT". Notez les quelques commandes optionnelles de formattage avant mon SELECT.

Mais Oracle connait bien plus que les tables, en plus des tables nous pourrons trouver:

D'une vision objet à un diagramme de DB

La notion d'objet est maintenant fort diffusée dans le domaine informatique. Au bout du compte on aurait tendance à oublier que l'informatique vient d'un besoin humain. L'informatique est donc une réponse humaine à un besoin humain. De là, il n'y a pas vraiment de raison de ne pas utiliser des concepts qui sont ceux de l'humain. Nous avons une nette tendance à la catégorisation. Pour revenir à "Lulu notre chat", elle appartient à la classe des chats avec qui elle partage une série de caractéristiques: 4 pattes, des poils, un goût immodéré pour les petits volatiles, des cannines fort pointues,... Et elle a des caratéristiques qui permettent de l'identifier parmis ses compagnons: elle est noire, il lui manque quelques dents, elle préfère la nourriture à base de vollaille, elle répond au nom de "Lulu notre chat",...

Certains outils, PowerDesigner de Sybase en fait partie, permettent de passer directement d'une représentation objet (diagramme de classe UML) à un modèle physique. En clair, à partir d'un diagramme de classe que vous avez construit, il génèrera le code nécessaire à la création de vos tables et autres artifices pour un modèle de base de données déterminé. En illustration, un cas simplissime avec Sybase comme cible:

Notez comme la syntaxe de création de table est proche de celle d'Oracle. En fait, en utilisant cette syntaxe Oracle crée la table, merci SQL.

Et la sécurité?

Vou imaginez facilement que des données sensibles sont introduites dans les bases de données. Et forcément nous voulons les protéger contre des accès malintentionnés ou encore nous voulons garder certaines choses confidentielles.

Le premier niveau de sécurité est l'utilisateur. Pour se connecter à une DB Oracle il faut un nom d'utilisateur et un mot de passe. Notez au passage que depuis la version 11g, il est possible que le mot de passe soit sensible à la casse (distinction majuscules/ minuscules). L'administrateur associe à l'utilisateur certains droits, pour Oracle on parle de privilèges. Ces privilèges déterminent ce que l'utlisateur peut consulter et faire.

Oracle prévoit aussi des mécanismes moins courants comme le chiffrement des données ou encore l'audit sélectif des accès.

Un langage pour les DB, SQL

C'est en 1970 que nait le langage SQL (voir Wikipedia). Ce langage permet la manipulation et le stockage des données sous RDBMS. Fort heureusement pour les utilisateurs, de nos jours, SQL est masqué par une interface utilisateur souvent beaucoup plus conviviale. Il est important de savoir que bien qu'il s'agisse d'une norme, les différents constructeurs utilisent des dialectes différents. Parfois sans conséquence, comme le français qui s'adresse à un belge et lui demande: "Vous pouvez me donner soixante-dix Euros?". Le belge comprendra qu'il s'agit de septante Euros. Parfois difficile, comme la québécoise qui demande à son nouvel ami français dans la salle de bain: "Passe-moi la débarbouillette.". Parfois avec de facheuses conséquences comme le belge qui demande à sa nouvelle collègue québécoise "une sucette pour mes gosses".

Mais pas de panique, la base SQL est commune aux grands éditeurs de base de données. Au fil de cette discussion sur Oracle vous verrez du SQL mais il sera simple. Si vous voulez tout savoir sur le SQL, vous pouvez consulter la documentation Oracle ou un des très nombreux ouvrages sur le sujet.

La documentation Oracle

Oracle fournit toute la documentation dont vous pouvez avoir besoin: Oracle documentation 11g. Les téléchargements, depuis le site d'Oracle, sont gratuits. Il vous sera nénmoins demandé de vous enregistrer. La procédure ne coute rien alors n'hésitez pas à le faire.

La littérature sur Oracle, c'est comme le démon, son nom est Légion car ils sont nombreux (REF1). J'essaierai, au fil des explications, de donner le titre des ouvrages dans la librairie Oracle. Si vous voulez vraiment vous servir de la DB Oracle, il est utile de vous sentir à l'aise dans la documentation officielle.

La version Oracle que nous utiliserons

Nous utiliserons le 11g Release 2.

Structure du document

La DB Oracle est le fruit d'un grand nombre d'années d'évolution. Comme on peut s'y attendre, elle offre énormément de fonctionnalités et sa structure est devenue assez complexe. A la fin de chaque chapitre, je fournirai un petit résumé qui reprendra ce qu'il faut en retenir. J'essaierais d'y inclure un petit chapitre "Usage". Au cours de ma carrière, j'ai eu l'occasion de voir pas mal de chose et de travailler avec d'autres DBA. Il en ressort certaines habitudes qui ont tendance à faciliter les choses. Au passage, je voudrais remercier Sameer Deshpande, Vincent Belli et Stan Gabriel, d'autres DBA pour qui j'ai beaucoup de respect et d'admiration.

Jusqu'où irons-nous?

Pour tout vous dire, je n'en sais encore rien. J'aimerais couvrir les tâches principales d'un DBA ainsi qu'une série de notions qui tournent autour de la base de données en général.

La suite

Le prochain chapitre présentera quelques petites choses qu'il me semble utile de connaître avant d'aller plus loin. Ensuite il sera temps, enfin, de mettre les mains dans le cambouis.

 

>> 2. Architecture minimaliste d'un serveur et d'un client Oracle