Installazione

La versione Express di Oracle è liberamente scaricabile da

http://www.oracle.com/technology/products/database/xe/index.html

Le limitazioni principali sono 4GB di area dati, 1GB di memoria utilizzata, una sola CPU utilizzata, e un unico database. E' presente un comodo pacchetto Debian.

# apt-get install libaio1
# dpkg -i /home/tiziano/oracle-xe_10.2.0.1-1.0_i386.deb
# /etc/init.d/oracle-xe configure

Per installare (e far funzionare) il wrapper Python verso Oracle è necessario settare qualche variabile d'ambiente

# export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/
# export LD_LIBRARY_PATH=$ORACLE_HOME/lib
# export PATH=$ORACLE_HOME/bin:$PATH
# easy_install cx_Oracle

Generazione del database

Come primo passo impostiamo per l'utente system la password 'oracle' (altrimenti sarà necessario modificare il Makefile), e lanciamo la generazione del db.

$ cd docs/oracle
$ make scratch

Avvio applicazione

Per ora sono state convertite (e parzialmente) solo le form dell'amministrazione, a titolo di esempio. Possiamo avviarle in questo modo:

$ cd ../../apps
$ python pypapi-suite.py -c ../lib/pypapisuite/app/conf/amministrazione.conf -d "oracle://%(username)s:%(password)s@127.0.0.1:1521/xe"

Lo switch '-d' ha la precedenza rispetto al database definito in amministrazione.conf.

Possiamo quindi autenticarci come admin/pypapi (l'unico utente presente), creare un paio di uffici e di utenti.

Note di sviluppo

Poiché in Oracle il concetto di schema si discosta parecchio da Postgres, tutte le tabelle sono definite nello schema PyPaPi, e collegate come sinonimi agli schemi anagrafiche, protocollo, etc, che l'ORM si aspetta.

I tipi di dato definiti dall'utente (type ... as object) in Oracle non possono essere utilizzati come chiavi (ARGH!), quindi per ora i vari campi sono definiti utilizzando i tipi primitivi.

Oracle non supporta l'ereditarietà nelle tabelle (doppio ARGH!): i campi timestamped sono stati riportati a manina in ogni tabella, e per ora la loro gestino non è implementata.


Attachments