|
El siguiente ejemplo muestra como podemos ejecutar comandos en nuestros scripts de unix.
#!/bin/bash ORACLE_SID=DEV_DB rman target / <<EOF backup current controlfile; EOF
Como pueden observar, lo que se quiere ejecutar debe estar encerrado entre la marca EOF, no es obligatorio usar EOF puede ser cualquier nombre pero generlamente se utiliza la palabra EOF.
Este es otro ejemplo usando sqlplus
#!/bin/bash ORACLE_SID=DB1 sqlplus -s <<EOF / as sysdba select sysdate from dual; EOF
Capturando la salida en una variable
La siguiente técnica es utilizada para poder guardar el valor de un query en una variable y poder evaluarla posteriormente.
#/bin/bash bloqueados=$(sqlplus -s <<EOF usuario/password SET HEAD OFF FEED OFF SELECT count(*) FROM dba_users WHERE ACCOUNT_STATUS = 'LOCKED'; EXIT; EOF)
if [ $bloqueados -ne 0 ]; then mail -s "Existe usuarios bloqueados"
Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla
<<EOF Existen usuarios bloqueados. EOF else echo "No existen usuarios bloqueados." fi
Si queremos usar una vista por ejemplo v$datafile tenemos que escapar el signo ($) dentro de nuestro script.
#!/bin/bash valor=$(sqlplus -s << EOF / as sysdba set head off select count(*) from v\$datafile where status='OFFLINE'; EOF) echo "Datafiles en offline: $nf" | mailx -s "Datafiles fuera de línea"
Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla
Sino escapamos el signo el signo de dolar, el shell va a tomar datafile como una variable.
Algunos comentarios útiles.
Existen dos técnicas para poder guardar el resultado de un comando en una variable.
Por ejemplo si queremos guardar el valor del server en una variable podemos hacerlo de cualquiera de estas dos formas
servidor=$(uname -a | awk '{print$2}')
o
servidor=`uname -a | awk '{print$2}'`
|