Prima di iniziare, vorrei ringraziare Adriano Pochini nell'avermi fornito il ".profile" per la configurazione
dell'enviroment dell'utente "oracle" su piattaforma Unix like. Vorrei ringraziarlo per avermi dato l'opportunità
ed il permesso di pubblicarlo.
Ma soprattutto devo dirgli grazie per avermi aiutato quando,
con le pochissime conoscenze che avevo di Oracle e di Unix, ho iniziato il percorso da DBA. Ricordo di essere stato
buttato nella mischia senza esserne all'altezza. Con grande pazienza, mi ha aiutato nei momenti
in cui credevo di non farcela.
Grazie.
Per comprendere appieno le potenzialità del .profile, credo che la cosa migliore da fare sia mostrare come l'ambiente sarà
modificato. Ecco cosa appare a seguito del login come utente oracle:
*---------JDK Environments----------------------------------*
JAVA_HOME------------> /opt/java1.4
CLASSPATH------------> /opt/java1.4:.:
LD_LIBRARY_PATH------> /opt/java1.4/lib::/usr/lib:/usr/shlib
LD_LIBRARY_PATH_64 --> /opt/java1.4/lib::/usr/lib:/usr/shlib
SHLIB_PATH-----------> /opt/java1.4/lib::/usr/lib:/usr/shlib
LIBPATH--------------> /opt/java1.4/lib::/usr/lib:/usr/shlib
PATH-----------------> /opt/java1.4/bin::/export/home/sbrdbms/oracle/bin:.:/usr/
ccs/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/bin/X11
Java VM in use is ** java is /bin/java **
*-----------------------------------------------------------*
*-----ORACLE Environments-----------------------------------*
ORACLE_BASE---------> /export/home/sbrdbms/app/oracle
ORACLE_HOME---------> /export/home/sbrdbms/app/oracle/product/9.2.0
ORACLE_SID----------> ORA9IR2
TWO_TASK------------>
NLS_LANG------------> american_america.we8iso8859p9
LD_LIBRARY_PATH-----> /opt/java1.4/lib:/export/home/sbrdbms/app/oracle/product/9
.2.0/lib32:/usr/lib:/usr/shlib
LD_LIBRARY_PATH_64--> /opt/java1.4/lib:/export/home/sbrdbms/app/oracle/product/9
.2.0/lib:/usr/lib:/usr/shlib
SHLIB_PATH----------> /opt/java1.4/lib::/usr/lib:/usr/shlib
LIBPATH-------------> /opt/java1.4/lib::/usr/lib:/usr/shlib
PATH----------------> /opt/java1.4/bin:/export/home/sbrdbms/app/oracle/product/9
.2.0/bin:/export/home/sbrdbms/app/oracle/product/9.2.0/opmn/bin:/export/home/sbrdbms/
app/oracle/product/9.2.0/dcm/bin:/export/home/sbrdbms/oracle/bin:.:/usr/ccs/bin:/bin:
/usr/bin:/sbin:/usr/sbin:/usr/bin/X11
Oracle Kernel in use is ** oracle is /export/home/sbrdbms/app/oracle/product/9.2.0/
bin/oracle **
** Oracle dcmctl is not available **
** Oracle opmnctl is not available **
*-----------------------------------------------------------*
[antares.ORA9IR2]/export/home/sbrdbms/oracle->
Come si vede, viene riepilogata la configurazione dell'enviroment di JDK sia quella di Oracle. Una cosa
interessante poi è il prompt Unix in cui viene mostrato l'hostname della macchina, ma soprattutto il nome
dell'istanza a cui stiamo puntando. Viene inoltre mostrata la directory corrente.
Il punto di forza del profile, sono le funzioni messe a disposizione oltre agli alias
utilizzati per spostarsi velocemente nelle directory.
Prima di vedere l'utilizzo delle funzioni, vorrei un'attimo dare uno sguardo agli alias:
[antares.ORA9IR2]/export/home/sbrdbms/oracle-> alias
alias dir='ls -la | more'
alias goa='cd $ORACLE_BASE/admin'
alias gob='cd $ORACLE_BASE'
alias goh='cd $ORACLE_HOME'
alias gol='cd $ORACLE_BASE/local'
alias gos='cd $ORACLE_BASE/admin/$ORACLE_SID'
alias lt='ls -lat | more'
alias rm='rm -i'
Alcuni sono particolarmente interessanti. La redifinizione dell'"rm", ad esempio, permette di eliminare le cancellazioni
dovute a distrazione: l'opzione "-i", rende l'"rm" interattivo, costringendo in questo modo l'utetnte a rispondere "yes" o "no"
a seguito di un remove.
[antares.ORA9IR2]/export/home/sbrdbms/oracle-> touch pippo
[antares.ORA9IR2]/export/home/sbrdbms/oracle-> rm pippo
rm: remove pippo (yes/no)? yes
[antares.ORA9IR2]/export/home/sbrdbms/oracle->
Di particolare utilità tuttavia, sono le funzioni. "showdb", consente la visualizzazione dell'ambiente di oracle
utilizzato, così come "showjdk", mostra l'ambiente jdk utilizzato. Tali funzioni oltre ad poter essere chiamate
in qualunque momento, lo sono all'atto del login. L'output che abbiamo visto all'inizio di quest'articolo, è fornito proprio
dall'invocazione delle funzioni menzionate.
[antares.ORA9IR2]/export/home/sbrdbms/oracle-> showdb
*-----ORACLE Environments-----------------------------------*
ORACLE_BASE---------> /export/home/sbrdbms/app/oracle
ORACLE_HOME---------> /export/home/sbrdbms/app/oracle/product/9.2.0
ORACLE_SID----------> ORA9IR2
TWO_TASK------------>
NLS_LANG------------> american_america.we8iso8859p9
LD_LIBRARY_PATH-----> /opt/java1.4/lib:/export/home/sbrdbms/app/oracle/product/9.2.0/lib32:/usr/lib:/usr/shlib
LD_LIBRARY_PATH_64--> /opt/java1.4/lib:/export/home/sbrdbms/app/oracle/product/9.2.0/lib:/usr/lib:/usr/shlib
SHLIB_PATH----------> /opt/java1.4/lib::/usr/lib:/usr/shlib
LIBPATH-------------> /opt/java1.4/lib::/usr/lib:/usr/shlib
PATH----------------> /opt/java1.4/bin:/export/home/sbrdbms/app/oracle/product/9.2.0/bin:
/export/home/sbrdbms/app/oracle/product/9.2.0/opmn/bin:/export/home/sbrdbms/app/oracle/pr
oduct/9.2.0/dcm/bin:/export/home/sbrdbms/oracle/bin:.:/usr/ccs/bin:/bin:/usr/bin:/sbin:/u
sr/sbin:/usr/bin/X11
Oracle Kernel in use is ** oracle is /export/home/sbrdbms/app/oracle/product/9.2.0/bin/oracle **
** Oracle dcmctl is not available **
** Oracle opmnctl is not available **
*-----------------------------------------------------------*
[antares.ORA9IR2]/export/home/sbrdbms/oracle->
Questo puó essere molto utile quando dopo diverse operazioni, nasce l'esigenza di conoscere alcune informazioni
sull'enviroment che stiamo utilizzando.
La funzione che tuttavia ritengo molto utile è "setdb". Con questa è possibile passare da un ambiente ad un altro
in modo semplicissimo. Se ad esempio abbiamo 3 istanze ORA817, ORA9IR2 ed ORA102, possiamo spostarci tra di esse con la
funzione setdb, come mostrato di seguito. Ovviamente, il profile è configurato in modo tale che al login una delle n istanze
presenti sulla macchiana è impostata come defautl. In questo caso lo è l'istanza 9i.
[antares.ORA9IR2]/export/home/sbrdbms/oracle-> setdb ORA102
*-----ORACLE Environments-----------------------------------*
ORACLE_BASE---------> /export/home/sbrdbms/app/oracle
ORACLE_HOME---------> /export/home/sbrdbms/app/oracle/product/10.2.0
ORACLE_SID----------> ORA102
TWO_TASK------------>
NLS_LANG------------> american_america.we8iso8859p9
LD_LIBRARY_PATH-----> /opt/java1.4/lib:/export/home/sbrdbms/app/oracle/product/10.2.0/lib32:/usr/lib:/usr/shlib
LD_LIBRARY_PATH_64--> /opt/java1.4/lib:/export/home/sbrdbms/app/oracle/product/10.2.0/lib:/usr/lib:/usr/shlib
SHLIB_PATH----------> /opt/java1.4/lib::/usr/lib:/usr/shlib
LIBPATH-------------> /opt/java1.4/lib::/usr/lib:/usr/shlib
PATH----------------> /opt/java1.4/bin:/export/home/sbrdbms/app/oracle/product/10.2.0/bin:
/export/home/sbrdbms/app/oracle/product/10.2.0/opmn/bin:/export/home/sbrdbms/app/oracle/product/10.2.0/dcm/bin:
/export/home/sbrdbms/oracle/bin:.:/usr/ccs/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/bin/X11
Oracle Kernel in use is ** oracle is /export/home/sbrdbms/app/oracle/product/10.2.0/bin/oracle **
** Oracle dcmctl is not available **
** Oracle opmnctl is not available **
*-----------------------------------------------------------*
[antares.ORA102]/export/home/sbrdbms/oracle-> setdb ORA817
*-----ORACLE Environments-----------------------------------*
ORACLE_BASE---------> /export/home/sbrdbms/app/oracle
ORACLE_HOME---------> /export/home/sbrdbms/app/oracle/product/8.1.7
ORACLE_SID----------> ORA817
TWO_TASK------------>
NLS_LANG------------> american_america.we8iso8859p9
LD_LIBRARY_PATH-----> /opt/java1.4/lib:/export/home/sbrdbms/app/oracle/product/8.1.7/lib32:/usr/lib:/usr/shlib
LD_LIBRARY_PATH_64--> /opt/java1.4/lib:/export/home/sbrdbms/app/oracle/product/8.1.7/lib:/usr/lib:/usr/shlib
SHLIB_PATH----------> /opt/java1.4/lib::/usr/lib:/usr/shlib
LIBPATH-------------> /opt/java1.4/lib::/usr/lib:/usr/shlib
PATH----------------> /opt/java1.4/bin:/export/home/sbrdbms/app/oracle/product/8.1.7/bin:/export/home/sbrdbms/
app/oracle/product/8.1.7/opmn/bin:/export/home/sbrdbms/app/oracle/product/8.1.7/dcm/bin:/export/home/sbrdbms/o
racle/bin:.:/usr/ccs/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/bin/X11
Oracle Kernel in use is ** oracle is /export/home/sbrdbms/app/oracle/product/8.1.7/bin/oracle **
** Oracle dcmctl is not available **
** Oracle opmnctl is not available **
*-----------------------------------------------------------*
[antares.ORA817]/export/home/sbrdbms/oracle->
Insomma, in un ambiente in cui convivono molte istanze, un profile come questo è sicuramente di grande aiuto.
Senza tener conto che è pensato anche per IAS. In ogni caso tutto quello che dobbiamo fare è personalizzarlo,
inserendo (dove necessario) il nome delle nostre istanze e modificando i path delle ORACLE_HOME dove abbiamo eseguito le
installazioni. A tal proposito, faccio notare che intorno alle righe 78 e 79, occorre far attenzione a quanto segue:
78 #ORA_MOUNT=sbias
79 ORA_MOUNT=sbrdbms
Quì la variabile ORA_MOUNT, non indica un "mount point", quanto bensì la directory da cui inizia l'installazione di Oracle
che può assumere soltanto 2 valori. Ecco cosa mi ha detto Adriano, quando gli ho fatto notare che il nome ORA_MOUNT mi aveva
portato fuori strada:
In realta’ nel mio standard ORA_MOUNT, può e deve assumere solo 2 valori: "sbrdbms" e "sbias"
ORA_MOUNT=sbrdbms
ORA_MOUNT=sbias
Serve solo a rendere il profile indipendente dalla installazione rdbms o IAS. Lo / non e’ previsto !!!
ed in fatti alla riga 293 (così come alla riga 308, ovvero ovunque compare la variabile ORACLE_BASE), troviamo che:
ORACLE_BASE=/$ORA_MOUNT/app/oracle
Lo standard di Adriano prevede infatti che l'installazione di Oracle database inizi dalla directory /sbrdbms (Oracle, nella
documentazione ufficiale la chiama /u01, che ovviamente non ha alcun senso).
Ovviamente tale profile va personalizzato secondo le proprie esigenze. Io ad
esempio ho aggiunto diversi alias, ho aggiunto
altre variabili d'ambiente (SQLPATH, ad esempio), e modificato anche il promt.
Vorrei ringraziare ancora una volta Adriano, che mi ha dato la possibilità di condividere con tutti il ".profile".