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

TopHost: Redistribuire Spazio tra i servizi Web MySql Mail

E’ già da qualche mese che il blog è online ( esattamente dal 24/10/2010 ) e deve dire che di solito mi “scoccio” abbastanza presto dei capricci che spesso mi vengono in mente, questa volta devo dire che la cosa mi appassiona e mi spiace per te, malcapitato lettore, ma dovrai sopportami per un bel pò 😛

Ritornando al titolo del post, senza divagare ulteriormente, ho fatto accesso al Pannello di Amministrazione di TopHost ( devo ammettere un servizio low-cost impeccabile fino ad ora ) per controllare lo stato dei servizi e la distribuzione dei 500 MB messi a disposizione dal provider ed ho notato che lo spazio del database MySql era in esaurimento

Guardando la linea rossa lampaggiante in basso alla schermata mi sono subito preoccupato credendo di aver esaurito lo spazio totale del mio Database. Infine facendo una piccolisissima ricerca sul web mi sono accorto che il provider permette la re-distribuzione dello spazio dei servizi ( di default lo spazio Mysql è 5000 KB pari a 5 MB ) e per tale motivo basta solo aumentare lo spazio dedicato al database, ovviamente rispettando sempre il limite totale dei 500 MB messi a disposizione per ogni host.

Leggi tutto “TopHost: Redistribuire Spazio tra i servizi Web MySql Mail”