<!-- title: Installer Oracle Express sur Centos -->
<!-- category: GNU/Linux -->
<!-- tag: planet -->

Oracle est la base de données phare de l'éditeur du même nom, utilisée pour des
grosses applications et des gros volumes de données.<!-- more --> Toute une suite de
produits de l'éditeur existe autour de la base pour administrer, optimiser,
déployer... Oracle fournit aussi une version limitée de son produit pour les
développeurs, il s'agit de **Oracle Express**. C'est une base qu'on va utiliser
pour développer et distribuer de modestes applications ou pour mettre au point
du code déployé sur des *vraies bases* Oracle en production. Les limitations
sont les suivantes : un seul processeur exploité, 1 Go de RAM max utilisé et
stockage de 11 Go de données maximum.

Oracle Express est proposée pour Ms Windows et **GNU/Linux en 64 bits** en
paquet RPM. J'ai décrit ci-après l'installation type sur un serveur Centos. La
procédure n'est pas complexe mais il y a quelques écueils qui justifient cet
article.

J'ai effectué l'installation de base d'un Centos 6.6 en 64 bits. Un pré-requis
à respecter, sinon Oracle refuse de s'installer, est la création d'une partition
de swap au moins égale à 2x la quantité de RAM de la machine.

On télécharge Oracle Express depuis [le site
officiel](http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html).
On récupère un fichier ZIP qui contient le paquet RPM. On installe *unzip* sur
Centos et le paquet *bc* nécessaire à l'installeur Oracle.

    $ yum install unzip bc

Oracle a besoin que le nom du serveur (aka hostname) soit associé à une adresse
IP. La solution simple est d'éditer le fichier */etc/hosts* du serveur et
ajouter une entrée avec le nom du serveur et son adresse IP. Désormais, nous
sommes prêt à démarrer l'installation. On dézippe l'archive et on installe
paquet *rpm* :

    $ unzip oracle-xe-11.2.0-1.0.x86_64.rpm
    $ rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm

Quand le paquet *oracle-xe* est installé, il reste à configurer la base avec la
commande *configure* du service *oracle-xe* :

    $ /etc/init.d/oracle-xe configure

    Oracle Database 11g Express Edition Configuration
    -------------------------------------------------
    This will configure on-boot properties of Oracle Database 11g Express
    Edition.  The following questions will determine whether the database should
    be starting upon system boot, the ports it will use, and the passwords that
    will be used for database accounts.  Press <enter> to accept the defaults.
    Ctrl-C will abort.

    Specify the HTTP port that will be used for Oracle Application Express [8080]:

    Specify a port that will be used for the database listener [1521]:

    Specify a password to be used for database accounts.  Note that the same
    password will be used for SYS and SYSTEM.  Oracle recommends the use of
    different passwords for each database account.  This can be done after
    initial configuration:
    Confirm the password:

    Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:y

    Starting Oracle Net Listener...Done
    Configuring database...Done
    Starting Oracle Database 11g Express Edition instance...Done
    Installation completed successfully.</enter>

En laissant les choix par défaut, on confime le port HTTP, le port du Listener,
on choisit un mot de passe pour les comptes SYS et SYSTEM et on confirme le
démarrage de la base au boot du serveur.

A ce stade, la base est démarrée et accessible localement. Le pare-feu de
Centos est installé par défaut donc il faut ajouter des règles pour ouvrir l'accès
distant ou plus brutalement désactiver le pare-feu avec la commande :

    $ lokkit --disabled

L'accès local par SQLPlus nécessite de modifier l'environnement du Shell. On
peut s'éviter de le faire à chaque coup en rajoutant ce qui suit à la fin du
fichier */etc/profile* :

    export ORACLE_SID=XE
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe
    export ORACLE_TERM=xterm
    export NLS_LANG=FRENCH_FRANCE.utf8
    export TNS_ADMIN=$ORACLE_HOME/network/admin
    export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export PATH=$ORACLE_HOME/bin:$PATH

Finalement, on peut créer un utilisateur *normal* que l'on
utilisera dans notre développement depuis SQLPlus :

    SQL> connect
    SQL> create user joelafrite idenfied by <password-for-joe>;
    SQL> grant CREATE SESSION, ALTER SESSION, CREATE DATABASE LINK, -
       CREATE MATERIALIZED VIEW, CREATE PROCEDURE, CREATE PUBLIC SYNONYM, -
       CREATE ROLE, CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, -
       CREATE TRIGGER, CREATE TYPE, CREATE VIEW, UNLIMITED TABLESPACE -
       to joelafrite;

L'interface Web appelée "Application Express" permet d'effectuer les tâches
courantes d'administration. Je ne peux pas en dire grand chose, je ne l'ai pas
utilisé. Je me cantonne à SQLPlus et JDBC. Mais cette interface est accessible
depuis un navigateur à l'adresse
[http://localhost:8080/apex](http://localhost:8080/apex) avec les informations
de connexion suivantes :

-   Workspace: *ce que vous voulez*
-   Username: ADMIN
-   Pasword: *celui de l'utilisateur SYS et SYSTEM*

Les références pour écrire cet article :

-   [http://www.davidghedini.com/pg/entry/install_oracle_11g_xe_on](http://www.davidghedini.com/pg/entry/install_oracle_11g_xe_on)
-   [https://stackoverflow.com/questions/18028942/oracle-xe-database-configuration-failed](https://stackoverflow.com/questions/18028942/oracle-xe-database-configuration-failed)
-   [http://blog.warp11.nl/2011/05/fully-freeware-apex-environment-i-centos-oracle-xe-11g](http://blog.warp11.nl/2011/05/fully-freeware-apex-environment-i-centos-oracle-xe-11g)
