Installation rapide d’une base de données Oracle 12c

Oracle Database 12c

Je vous propose dans cet article une recette rapide pour installer une base de données Oracle 12c dans une machine virtuelle Linux (Oracle Linux 7) pour réaliser des tests.

La recette utilise les ingrédients suivants :

  • Une base de données Oracle 12c (12.2.1.0)
  • Une VM Linux sous Oracle Linux 7
  • Vagrant
  • VirtualBox

L’environnement créé permettra de réaliser ensuite facilement des tests nécessitant une base de données Oracle 12c.

Installation de VirtualBox

Oracle VirtualBox est disponible en téléchargement libre ici.

Il vous faudra également le pack d’extensions.

Une fois téléchargés, installez-ces 2 produits.

Installation de Vagrant

Vagrant est un projet open source qui facilite la gestion des machines virtuelles en encapsulant les logiciels de virtualisation tel que VirtualBox. La pierre angulaire du produit est le « vagrant file » qui est un document écrit en Ruby qui décrit la configuration d’une ou de plusieurs machines virtuelles. Plus besoin de manipuler manuellement la console VirtualBox pour créer, démarrer, modifier… les VMs, tout se fait à l’aide de commandes Vagrant et du Vagrant File.

Plus d’infos directement chez Vagrant.

Téléchargez et installez Vagrant sur la machine.

Téléchargement des scripts Vagrant

Oracle propose depuis quelques temps maintenant des Vagrant files pour ses produits, ce qui en simplifie grandement l’installation. C’est le cas pour notre base de données 12c.

Les Vagrant files sont disponibles sous GitHub.

Clonez ou téléchargez le repository sur votre machine.

[pastacode lang= »bash » manual= »git%20clone%20https%3A%2F%2Fgithub.com%2Foracle%2Fvagrant-boxes » message= » » highlight= » » provider= »manual »/]

Téléchargement de l’installateur Oracle Database 12c pour Linux

La page GitHub relative à l’installation de la box Vagrant Oracle DataBase 12.2.1.0 vous donnera les détails de l’installation.

Pour réaliser l’installation il faut télécharger un dernier élément, le zip d’installation de la base de données.

Téléchargez le fichier correspondant à votre système d’exploitation et copiez-le dans le répertoire OracleDatabase\12.2.0.1 du repository local des vagrant files Oracle.

Création de la VM

A ce stade, vous êtes prêt pour lancer la création de la VM. Le script Vagrant s’ocuppera de tout, depuis la création de la VM jusqu’à l’initialisation de la base de données.

Lancer un shell sur la machine.

Déplacez vous dans le répertoire où se trouve le vagrant file : <Oracle Vagrant Repo>/OracleDatabase/12.2.0.1

Lancez la commande

[pastacode lang= »bash » manual= »vagrant%20up » message= » » highlight= » » provider= »manual »/]

Maintenant, faut laisser mijoter tout seul, ça peut prendre un peu de temps…

Ne vous précipitez par pour fermer le shell une fois l’installation terminée, il y a des informations importantes écrites à la fin de la procédure d’installation de la base de données. En effet, la procédure génère aléatoirement un mot de passe pour les comptes SYS, SYSTEM et PDBADMIN.

Il faut évidement le noter !

[pastacode lang= »bash » manual= »%20%20%20%20oracle-12201-vagrant%3A%20SQL%3E%0A%20%20%20%20oracle-12201-vagrant%3A%20Disconnected%20from%20Oracle%20Database%2012c%20Enterprise%20Edition%20Release%2012.2.0.1.0%20-%2064bit%20Production%0A%20%20%20%20oracle-12201-vagrant%3A%20INSTALLER%3A%20Database%20created%0A%20%20%20%20oracle-12201-vagrant%3A%20INSTALLER%3A%20Oratab%20configured%0A%20%20%20%20oracle-12201-vagrant%3A%20Created%20symlink%20from%20%2Fetc%2Fsystemd%2Fsystem%2Fmulti-user.target.wants%2Foracle-rdbms.service%20to%20%2Fetc%2Fsystemd%2Fsystem%2Foracle-rdbms.service.%0A%20%20%20%20oracle-12201-vagrant%3A%20INSTALLER%3A%20Created%20and%20enabled%20oracle-rdbms%20systemd’s%20service%0A%20%20%20%20oracle-12201-vagrant%3A%20INSTALLER%3A%20setPassword.sh%20file%20setup%0A%20%20%20%20oracle-12201-vagrant%3A%20INSTALLER%3A%20Running%20user-defined%20post-setup%20scripts%0A%20%20%20%20oracle-12201-vagrant%3A%20INSTALLER%3A%20Done%20running%20user-defined%20post-setup%20scripts%0A%20%20%20%20oracle-12201-vagrant%3A%20ORACLE%20PASSWORD%20FOR%20SYS%2C%20SYSTEM%20AND%20PDBADMIN%3A%20XXXXXXXXXXX%0A%20%20%20%20oracle-12201-vagrant%3A%20INSTALLER%3A%20Installation%20complete%2C%20database%20ready%20to%20use! » message= » » highlight= »10″ provider= »manual »/]

Pas de panique si vous le perdez, la VM dispose d’un script pour re-générer un nouvea mot de passe :

[pastacode lang= »bash » manual= »%2Fhome%2Foracle%2FsetPassword.sh%20%3CYour%20new%20password%3E » message= » » highlight= » » provider= »manual »/]

Vous disposez maintenant d’une VM Oracle Linux 7 qui fait tourner une base de données Oracle 12c.

Pour arrêter la VM :

[pastacode lang= »bash » manual= »vagrant%20halt » message= » » highlight= » » provider= »manual »/]

Pour démarrer la VM :

[pastacode lang= »bash » manual= »vagrant%20up » message= » » highlight= » » provider= »manual »/]

Pour détruire la VM :

[pastacode lang= »bash » manual= »vagrant%20destroy » message= » » highlight= » » provider= »manual »/]

Pour vous connecter en SSH sur la VM :

[pastacode lang= »bash » manual= »vagrant%20ssh%0A%0A%23changer%20d’utilisateur%0Asudo%20su%20oracle » message= » » highlight= » » provider= »manual »/]

Création d’un utilisateur

Pour le fun, je vous propose de créer un utilisateur puis de tester la connexion à la base de données.

Se connecter en SSH à la VM et passez sur l’utilisateur oracle.

[pastacode lang= »bash » manual= »vagrant%20ssh%0A%0Asudo%20su%20oracle » message= » » highlight= » » provider= »manual »/]

Lancement de sqlplus, connexion et basculement vers la Plugable Database (PDB) pré-configurée.

[pastacode lang= »bash » manual= »%5Boracle%40oracle-12201-vagrant%20admin%5D%24%20sqlplus%20%2F%20as%20sysdba%0A%0ASQL*Plus%3A%20Release%2012.2.0.1.0%20Production%20on%20Mon%20Nov%2025%2023%3A21%3A29%202019%0A%0ACopyright%20(c)%201982%2C%202016%2C%20Oracle.%20%20All%20rights%20reserved.%0A%0A%0AConnected%20to%3A%0AOracle%20Database%2012c%20Enterprise%20Edition%20Release%2012.2.0.1.0%20-%2064bit%20Production%0A%0ASQL%3E%20CONN%20system%2FXXXXXXXXXX%0AConnected.%0ASQL%3E%20ALTER%20SESSION%20SET%20CONTAINER%3DORCLPDB1%3B%0A%0ASession%20altered.%0A%0ASQL%3E%20CREATE%20USER%20new_user%20identified%20by%20new_password%20CONTAINER%3DCURRENT%3B%0A%0AUser%20created.%0A%0ASQL%3E%20GRANT%20CONNECT%2CCREATE%20TABLE%2C%20CREATE%20VIEW%2C%20CREATE%20TRIGGER%2C%20CREATE%20SEQUENCE%2C%20CREATE%20SESSION%2C%20UNLIMITED%20TABLESPACE%20TO%20vigie%20CONTAINER%3DCURRENT%3B%0A%0AGrant%20succeeded.%0A%0ASQL%3E%20commit%3B%0A%0ACommit%20complete.%0A%0ASQL%3E » message= » » highlight= » » provider= »manual »/]

Test de connexion à la base de données via un client JDBC

Si vous tentez une connexion JDBC avec ce nouvel utilisateur vous obtiendrez l’erreur suivante :

[pastacode lang= »bash » manual= »ORA-12505%2C%20TNS%3Alistener%20does%20not%20currently%20know%20of%20SID%20given%20in%20connect%20descriptor » message= » » highlight= » » provider= »manual »/]

Pour corriger le problème il y a une petite modification à faire sur la configuration du listener de la base de données :

[pastacode lang= »bash » manual= »vagrant%20ssh%0A%0A%0A%5Boracle%40oracle-12201-vagrant%20admin%5D%24%20sudo%20su%20oracle%0A%0A%5Boracle%40oracle-12201-vagrant%20admin%5D%24%20vi%20%24ORACLE_HOME%2Fnetwork%2Fadmin%2Flistener.ora%0A%0A%23%20Ajouter%20la%20ligne%20suivante%20dans%20le%20fichier%20listener.ora%0AUSE_SID_AS_SERVICE_listener%3Don%0A%0A%23%20red%C3%A9marrage%20du%20listener%0A%5Boracle%40oracle-12201-vagrant%20admin%5D%24%20lsnrctl%20reload%0A%0ALSNRCTL%20for%20Linux%3A%20Version%2012.2.0.1.0%20-%20Production%20on%2025-NOV-2019%2023%3A32%3A54%0A%0ACopyright%20(c)%201991%2C%202016%2C%20Oracle.%20%20All%20rights%20reserved.%0A%0AConnecting%20to%20(DESCRIPTION%3D(ADDRESS%3D(PROTOCOL%3DIPC)(KEY%3DEXTPROC1)))%0AThe%20command%20completed%20successfully%0A%5Boracle%40oracle-12201-vagrant%20admin%5D%24″ message= » » highlight= » » provider= »manual »/]

Lancez maintenant votre client JDBC sur l’url : jdbc:oracle:thin:@localhost:1521:ORCLPDB1 et authentifiez-vous avec l’utilisateur préalablement créé.

Un grand merci à mon ami Yahya pour son aide sur le sujet.

The end.