Pourquoi passer par Docker
Oracle Express Edition (ou xe de son petit nom) est disponible gratuitement, mais son installation simple, sous linux, nécessite d’être sur une distribution compatible RedHat comme CentOS ou sans surprise Oracle Linux (OL), la distribution proposée par Oracle. Si vous êtes sous une autre distribution, l’installation devient compliquée. Ce n’est vraiment pas très fair-play de la part d’Oracle, quand on compare avec Microsoft SQL Server Developer qui peut s’installer très facilement sur différentes distributions Linux.
Bref.
Si comme moi, vous utilisez une distribution Ubuntu, par chance, une image Docker très pratique permet l’utilisation d’Oracle XE dans un conteneur, et en plus, la prise en main est aisée.
Installation
Pour ce qui suit, je me base sur une Ubuntu 20.04 LTS et sur Oracle Database XE 21c.
Je passe les détails sur l’installation de Docker sur votre système, un article de Digital Ocean l’explique très bien.
L’image Docker qui nous intéresse ici est celle de gvenzl/oracle-xe
, disponible
sur Docker Hub.
Récupérez cette image ainsi :
docker pull gvenzl/oracle-xe
Vous aurez alors la dernière version disponible. Au moment d’écrire ces lignes, il s’agissait d’Oracle Database 21c. Si vous souhaitez installer une autre version, utilisez le système des tags de Docker. Par exemple, pour avoir la version 11g2, faites ainsi :
docker pull gvenzl/oracle-xe:11.2.0.2
Lancement
Maintenant que nous avons l’image, préparons un peu le terrain pour avoir une persistance des données : ce serait bien de pouvoir les conserver d’une fois sur l’autre non ?
Qui dit persistance, dit volume : pour cela, créons un volume Docker et
appelons-le volora
en tapant la commande suivante :
docker volume create volora
Vous avez maintenant un volume pour garder vos modifications en base de données.
Définissons maintenant un mot de passe pour les utilisateurs SYS
et SYSTEM
ainsi que pour un utilisateur normal, arbitrairement dénommé TEST
:
- Pour
SYS
etSYSTEM
, pour l’exemple, choisissonsoracle
comme mot de passe. - Pour l’utilisateur normal, son nom sera
TEST
et son mot de passe seraelcaro
.
Il va de soi qu’il vous faudra choisir des mots de passe plus robustes.
Nous avons l’image, les mots de passe, le volume, il n’y a plus qu’à mettre
tout ça ensemble ! Lançons Docker ainsi, en nommant notre container oracle_xe
:
docker run -d -p 1521:1521 \
--name=oracle_xe \
-e ORACLE_PASSWORD=oracle \
-e APP_USER=TEST \
-e APP_USER_PASSWORD=elcaro \
-v volora:/opt/oracle/oradata \
gvenzl/oracle-xe
Si vous avez un problème de droit, utilisez sudo
devant la commande.
Notez bien le chemin associé au volume : il correspond à celui des versions d’Oracle postérieure à 11g2. Si vous avez spécifié un tag pour installer l’image Docker pour Oracle XE 11g2, alors la commande sera la suivante :
docker run -d -p 1521:1521 \
--name=oracle_xe \
-e ORACLE_PASSWORD=oracle \
-e APP_USER=TEST \
-e APP_USER_PASSWORD=elcaro \
-v volora:/u01/app/oracle/oradata \
gvenzl/oracle-xe
Le chemin change de /opt/oracle/oradata
à /u01/app/oracle/oradata
.
Par défaut, le service name
est défini à XEPDB1
.
Utilisation
Testons maintenant la connexion à la base avec SQLcl et avec DBeaver.
SQLcl
Testons la connexion avec l’utilisateur TEST
:
sqlcl TEST/elcaro@localhost:1521/XEPDB1
On se connecte bien comme le montre la capture suivante :
Testons la création d’une table :
CREATE TABLE THING (
NAME VARCHAR2 ( 100 ) NOT NULL,
CREATED_AT DATE DEFAULT SYSDATE NOT NULL
);
Et insérons-y une donnée :
INSERT INTO THING (NAME) VALUES ('Foo');
Tout se déroule bien comme le montre la capture suivante :
Une sélection de la table le confirme :
Bien.
Maintenant, arrêtons notre conteneur Docker, et relançons-le, pour vérifier la persistance des données :
docker stop oracle_xe
docker start oracle_xe
En se reconnectant et en effectuant le SELECT
à nouveau, on a bien la table qui
est toujours présente et avec du contenu :
Il reste un petit test à faire : quid de l’utilisateur SYSTEM
? Peut-il bien
se connecter ? Réponse :
Verdict : tout fonctionne.
DBeaver
Pour ajouter la connexion à DBeaver, assurer vous d’avoir les données au bon endroit, comme sur la capture suivante :
Une fois la connexion créée, vous aurez remarqué que ce qui a été fait avant est bel et bien présent.
Conclusion
Si vous n’êtes pas sur une distribution linux RHEL like, alors l’utilisation d’un conteneur Docker est une franche bonne idée pour travailler avec Oracle Database XE. Facile et rapide, c’est l’idéal.