Skip to main content

Oracle Database 18c Express Edition Release

Installiamo una versione containerizzata di Oracle Database 18c Express Edition Release.

Il registry ufficiale Oracle è linkato in alto.

Il comando per il download dell'immagine è docker pull container-registry.oracle.com/database/express:18.4.0-xe. E' un'immagine corposa, poco più di 6GB, quindi abbiate pazienza. Una volta terminato il pulling dell'immagine, per creare il vostro container è sufficiente lanciare il seguente comando:

docker run --name {CONTAINER NAME} \
-p {HOST PORT}:1521 -p {HOST PORT}:5500 \
-e ORACLE_PWD={PASSWORD} \
-e ORACLE_CHARACTERSET={CHR SET} \
-v {HOST PATH TO VOLUME}:/opt/oracle/oradata \
container-registry.oracle.com/database/express:18.4.0-xe

La password specificata nel comando sarà quella usata per gli utenti Oracle SYS, SYSTEM e PDBADMIN. Container name sarà il nome del vostro container, sceglietene uno a vostro piacimento. E' necessario fare poi il binding delle porte 1521 e 5500 del container a 2 porte della macchina Host, potrete tranquillamente usare -p 1521:1521 -p 5500:5500 se le porte 1521 e 5500 sul vostro server sono libere. Impostate poi il character set, per esempio AL32UTF8. Infine, per rendere il vostro Oracle persistente, nel caso in cui doveste ricreare il container per qualsiasi motivo, è necessario associare un volume o una directory del file system del server host alla directory /opt/oracle/oradata del container. I preferisco usare i Docker Volumes, quindi createne uno e poi chiudete il comando con NON_DEL_VOLUME:/opt/oracle/oradata.

Configurazione di Oracle

La creazione del container impiega qualche minuto, al termine avrete a disporizione una istanza di Oracle in ascolto sulla porta 1521 del vostro server (se avete mantenuto la porta di default in fase di binding). Occorrono solo alcuni comandi sql da lanciare, collegandovi al database come SYS, ruolo SYSDBA e SID (non service name) XE:

  1. create pluggable database DBNAME admin user ORACLE_USER identified by "PASSWD" file_name_convert=('/opt/oracle/oradata/XE/pdbseed','/opt/oracle/oradata/XE/DBNAME');
  2. alter pluggable database DBNAME open;
  3. alter pluggable database DBNAME save state;

Collegandovi al database come SYS, ruolo SYSDBA e Service Name (non SID) DBNAME:

  1. grant dba to ORACLE_USER;

La spiegazione dei comandi:

  1. creiamo un nuovo satabase DBNAME amministrato dall'utente Oracle ORACLE_USER, con password PASSWD
  2. apriamo il database
  3. salviamo lo stato del database, in modo da trovarlo aperto in read write e non solo mounted al prossimo riavvio del Docker Host o del container Oracle

E per la grant:

  1. grandiamo all'utente ORACLE_USER il ruolo DBA

A questo punto abbiamo a disposizione un database Oracle XE e un utente con cui lavorare.