DevTurtle logo DevTurtle

Oracle XE – Come avviare il database su Docker

Oracle Database Express Edition (XE) è una versione gratuita del famoso database Oracle, progettata per sviluppatori, studenti e appassionati che desiderano sperimentare con le funzionalità di Oracle Database senza dover investire in licenze costose. Docker è una piattaforma di containerizzazione che semplifica il processo di distribuzione delle applicazioni, inclusi i database. In questo articolo, esploreremo come avviare rapidamente Oracle XE utilizzando Docker.

Prerequisiti

Prima di iniziare, assicurati di avere Docker installato sul tuo sistema. Puoi scaricare Docker dal sito ufficiale e seguire le istruzioni di installazione specifiche per il tuo sistema operativo. Se cerchi una soluzione gratuita alternativa a Docker Desktop puoi installare Rancher Desktop che include nel suo installer anche il docker-engine e fornisce un’interfaccia grafica semplice ed user-friendly.

Una volta installato docker sul tuo computer o server, puoi verificarne la corretta configurazione lanciando in console il comando:

docker --help

Avviare Oracle XE su Docker

Il primo passo è scaricare l’ultima versione dell’immagine Docker di Oracle XE dal repository delle immagini di Oracle. Per farlo è sufficiente eseguire il seguente comando:

docker pull container-registry.oracle.com/database/express:latest

L’immagine pesa circa 3 GB pertanto è necessario attendere il completamento del download. Al termine, è possibile procedere con l’avvio del DB:

docker run --name <container-name> \
-p <db-host-port>:1521 \
-e ORACLE_PWD=<your-database-password> \
container-registry.oracle.com/database/express:latest

In grassetto abbiamo evidenziato le variabili da sostituire all’interno del comando:

  • container-name = Il nome che vogliamo dare al container. Se non specificato viene valorizzato di default dal sistema.
  • db-host-port = Porta su cui esporre la connessione al database.
  • your-database-password = Password per le utenze di default (SYS, SYSTEM e PDB_ADMIN).

Di seguito un esempio di comando già valorizzato:

docker run --name oracle-xe \
-p 1521:1521 \
-e ORACLE_PWD=testpwd \
container-registry.oracle.com/database/express:latest

Se il database si sarà avviato correttamente vedrete un messaggio come questo in console:

#########################
DATABASE IS READY TO USE!
#########################

Note per installazione su Apple Silicon

Se usate una macchina con processore Apple M1, potreste avere degli errori in avvio del container docker simili al seguente:

#####################################
########### E R R O R ###############
DATABASE SETUP WAS NOT SUCCESSFUL!
Please check output for further info!
########### E R R O R ###############
#####################################
The following output is now a tail of the alert.log:
Oracle instance running with ODM in SGA: FSDirect ODM Library Version 1.0 
Broadcast on commit is enabled and is using Message mode.
Starting background process PMON
Process PMON died, see its trace file
USER (ospid: 70): terminating the instance due to ORA error 443
2024-04-25T19:44:15.979745+00:00
Instance terminated by USER, pid = 70

Questo si verifica in quanto, al momento, Oracle XE non è compatibile con i processori ARM. L’unico modo per risolevere il problema è utilizzare Colima. Si tratta di un software di virtualizzazione che emula i processori Intel.

E’ possibile installarlo e poi avviarlo lanciando in sequenza due comandi:

brew install colima
colima start --memory 4 --arch x86_64

Successivamente all’avvio di Colima è possibile eseguire il comando docker run senza ottenere errori.

Altri parametri di configurazione Oracle XE

Il comando lanciato in precedenza è minimale ma è possibile aggiungere altri parametri di configurazione in input. Di seguito alcuni dei più utili:

Esposizione Express Database Administration

Express Database Administration è un tool molto utile per il monitoraggio delle performance del DB. Per usarlo è necessario esporre la porta 5500:

-p <host-port>:5500 

Impostazione charset

Il charset di default usato da Oracle XE è AL32UTF8. E’ possibile modificarlo mediante il seguente parametro:

-e ORACLE_CHARACTERSET=<your character set>

Mount volume esterno

Se volete che i dati salvati nel DB vengano persistiti anche in seguito allo spegnimento del container, è necessario montare un volume esterno usando il comando:

-v <host mount point>:/opt/oracle/oradata

Collegarsi al database Oracle XE

E’ finalmente arrivato finalmente il passo finale del nostro tutorial. Ovvero dobbiamo collegarci al database che abbiamo appena creato!

Per collegarsi al database è possibile usare un client a propria scelta. Nel nostro esempio useremo Oracle SQLDeveloper. Di seguito le configurazioni da impostare nel tool per creare la connessione:

Oracle XE connection parameters
Oracle XE connection parameters

La password da usare è quella impostata in precedenza sul parametro ORACLE_PWD. Da notare che questo parametro è facoltativo e se non specificato Oracle XE genererà delle password randomiche che è possibile modificare in un secondo momento mediante il seguente comando:

docker exec oracle-xe ./setPassword.sh <your_password>

Con le sue potenti funzionalità e la sua facilità d’uso, Oracle XE è una scelta popolare per coloro che desiderano sperimentare con Oracle Database senza dover investire in costose licenze. Se sei interessato a sviluppare applicazioni o imparare di più su Oracle Database, Oracle XE potrebbe essere la soluzione ideale per te.