Finalmente è arrivato a casa il Raspberry Pi. Settimane di attesa per poter smanettare un pò vicino a questo fantastico “giocattolino”.
Assieme a mio fratello abbiamo cercato di installare subito vncserver, ma le soluzioni che si trovano online : running-vncserver-at-startup , hanno bisogno dell’avvio del server grafico per poter lanciare correttamente il demone di vncserver.
Per ovvirare a questa limitazione, la mia soluzione avvia il demone di vncserver tramite lo script di avvio: /etc/rc.local
[sourcecode language=”bash”]
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
#Start Vnc Server
export USER=pi
vncserver :1
exit 0
[/sourcecode]
Prima di lanciare il comando di avvio del server, ho dovuto esportare la variabile globale USER altrimenti il demone non riusciva a leggere correttamente i file di configurazione che avevo editato in /home/pi/.vnc e mi dava il seguente errore:
"Starting vncserver: Starting VNC server: 3: root vncserver: The USER
environments variable is not set"
Al primo avvio vi chiederà di inserire la password di accesso, poi la setterà in automatico ad ogni riavvio.
Da buoni smanettoni, figli della Slackware Philosophy , dei “veri” Sistemi Operativi UNIX-Like e della Command- Shell, non potevamo certo usare l’utility dbca messa a disposizione da Oracle per la creazione tramite interfaccia grafica del nostro nuovo Database Oracle 11g.
A noi piace complicarci la vita… le scelte più semplice le lasciamo agli altri 😀
Per l’esame di Sistemi Distribuiti assieme al mio efficientissimo ed affiatatissimo gruppo di lavoro ( Cara Angela, Maddalena, Mario e Rita non fate caso alle mie divagazioni …. di solito sono una persona normale, che fa cose normali 😀 ) abbiamo deciso di estendere/enhanced il progetto presentato in Laboratorio di Ingegneria del Software, implementando una Struttura del sistema a 3 livelli con:
La distribuzione del Database ( tramite Oracle e l’uso della Synonyms e dei Database Link )
il Load Balancing del carico dal Web-Server ( Apache ) verso il Servlet-Engine ( Tomcat ) utilizzando JK ,
La suddivisione dei vari Servizi su più macchine Host.
… dopo questo preambolo sembra (quasi) un progetto serio 😛
Ho sempre avuto una “insana” debolezza per i Database Distribuiti, per questo motivo, non avendo prima d’ora visto nulla, ho deciso di cimentarmi nella creazione di uno di essi…. e sembra quasi che ci sia riuscito 😀
Vabbè… credo di avervi già annoiato troppo, magari siete alla ricerca di qualche utile comando… ed io vi stò costringendo a leggere queste stupidaggini 😛
I Step:
Iniziamo con il download della Macchina Virtuale che Oracle ci mette già a disposizione con all’interno il Database e gli strumenti di sviluppo pronti per essere utilizzati ( P.s. l’utility dbca in questa versione non funziona 😛 )
prima di procedere con il prossimo passo specifichiamo per i For-Dummies, come me, alcuni concetti base dei Database Oracle.
La variabile d’ambiente ORACLE_SID deve contenere il nome del Db che vogliamo creare/utilizzare. Nel mio caso il Database avrà il nome “db1“, per cui…
[sourcecode language=”bash”]
[oracle@localhost ~]$ export ORACLE_SID=db1
[/sourcecode]
II Step
Passiamo alla creazione del SPFILE, il file responsabile dell’inizializzazione dei parametri del nostro nuovo Database( da posizione in %ORACLE_HOME/dbs ), esso deve essere posizionato nella seguente Directory:
Bene… ora non ci resta altro che lanciare l’istanza ( con l’opzione nomount ) del Database ed incrociare le dita che tutto vada bene 😀
IV Step
Attenzione: controllare sempre che la variabile ORACLE_SID abbia sempre il valore del vostro Database
Logghiamoci tramite l’utility sqlplus come sysdba, e lanciamo l’istanza senza montare il Database
[sourcecode language=”bash”]
[oracle@localhost ~]$ sqlplus / as sysdba
SQL > startup nomount
[/sourcecode]
A questo punto la macchina virtuale potrebbe darvi questo errore (almeno nel mio caso mi restituisce questo)
[sourcecode language=”bash”]
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00130: invalid listener address ‘(ADDRESS=(PROTOCOL=TCP)(HOST=new-host)(PORT=1521))’
[/sourcecode]
basta solamente aggiungere in /etc/hosts il dns new-host all’indirizzo IP 127.0.0.1, dato che il Listener non riconosce hostname
V Step
Passiamo alla creazione vera e proprio del Database inserendo direttamente in sqlplus i seguenti comandi
[sourcecode language=”bash”]
SQL> create database db1
logfile group 1 (‘/home/oracle/app/oracle/oradata/db1/redo1.log’) size 100M,
group 2 (‘/home/oracle/app/oracle/oradata/db1/redo2.log’) size 100M,
group 3 (‘/home/oracle/app/oracle/oradata/db1/redo3.log’) size 100M
character set WE8ISO8859P1
national character set utf8
datafile ‘/home/oracle/app/oracle/oradata/db1/system.dbf’ size 500M autoextend on next 10M maxsize unlimited extent management local
sysaux datafile ‘/home/oracle/app/oracle/oradata/db1/sysaux.dbf’ size 100M autoextend on next 10M maxsize unlimited
undo tablespace undotbs1 datafile ‘/home/oracle/app/oracle/oradata/db1/undotbs1.dbf’ size 100M
default temporary tablespace temp tempfile ‘/home/oracle/app/oracle/oradata/db1/temp01.dbf’ size 100M;
[/sourcecode]
Anche in questo caso potrebbe restiturvi il seguente errore, causato dalla mancata creazione della cartella dove saranno posizionati i redofile
[sourcecode language=”bash”]
ERROR at line 1:
ORA-01501: CREATE DATABASE failed
ORA-00200: control file could not be created
ORA-00202: control file: ‘/home/oracle/app/oracle/oradata/db1/control1.ctl’
ORA-27040: file create error, unable to create file
Linux Error: 2: No such file or directory
Per completare l’installazione del Database lanciamo i seguenti script che Oracle ci mette a disposizione per la creazione delle views di default , synonyms e PL/SQL packeges
dell’utente che avra’ accesso ad esso e dei permessi per accedervi
[sourcecode language=”bash”]
SQL> create user flavio identified by flavio default tablespace school20 quota unlimited on school20;
SQL> grant all privilege to flavio;
[/sourcecode]
VIII Step
Se tutto sara’ andato per il meglio, lanciamo l’istanza del Database e poi proviamo a collegarci ( Ricordate sempre che ORACLE_SID abbia come valore il nome del vostro Db)