Raspberry Pi: Eseguire vncserver all’avvio

Raspberry Pi

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.

Oracle: Creazione Manuale di un Database

Oracle 11g - Database manual Creation

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 😛 )

http://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html

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:

[sourcecode language=”bash”]

[oracle@localhost ~]$ echo $ORACLE_HOME/dbs

/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs

[/sourcecode]

il nome deve essere formato da init$ORACLE_SID.ora, nel mio caso e’:    initdb1.ora

[sourcecode language=”bash”]

control_files = (/home/oracle/app/oracle/oradata/db1/control1.ctl,/home/oracle/app/oracle/oradata/db1/control2.ctl,/home/oracle/app/oracle/oradata/db1/control3.ctl)
undo_management = AUTO
undo_tablespace = UNDOTBS1
db_name = db1
db_block_size = 8192
sga_max_size = 1073741824 #one gig
sga_target = 1073741824 #one gig

[/sourcecode]

III Step

Creiamo il file con la password di accesso al Db

[sourcecode language=”bash”]

[oracle@localhost ~]$ $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/pwddb1.ora password=flavio entries=5

[/sourcecode]

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

[/sourcecode]

Per risolvere, basta creare la cartella:

[sourcecode language=”bash”]

[oracle@new-host ~]$ mkdir /home/oracle/app/oracle/oradata/db1

[/sourcecode]

VI Step

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

[sourcecode language=”bash”]

SQL> @?/rdbms/admin/catalog.sql

SQL> @?/rdbms/admin/catproc.sql

[/sourcecode]

VII Step

Creazione del tablespace
[sourcecode language=”bash”]
SQL> create tablespace school20
datafile ‘/home/oracle/app/oracle/oradata/db1/school20_01.dbf’
size 50m;

[/sourcecode]

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)

[sourcecode language=”bash”]
SQL> startup

[/sourcecode]

[sourcecode language=”bash”]
[oracle@localhost root]$ sqlplus flavio/flavio
[/sourcecode]

Buon smanettamento con il vostro Database Oracle 😀

Reference:

http://docs.oracle.com/cd/B10501_01/server.920/a96521/create.htm#1000691

http://www.adp-gmbh.ch/ora/admin/creatingdbmanually.html

http://www.dba-oracle.com/oracle_create_database.htm