Scripts en Oracle. Aprende a crearlos con ejemplos

Hola a todos. Hoy queríamos compartir con vosotros una forma de ejecutar comandos de Oracle dentro de scripts de Linux.

Una forma muy cómoda de cargar las variables de entorno es utilizando el comando oraenv. Por ejemplo, podemos ejecutar este script, para evitar que salga el prompt por pantalla:

export ORAENV_ASK=NO;
export ORACLE_SID=ORCL1;
. oraenv

echo $ORACLE_HOME
/datos/oracle/product/12.2.0/db1 

Una vez cargadas las variables de Oracle, podemos ejecutar queries de la siguiente forma:

echo "Select * from dual;" | sqlplus / as sysdba

El resultado es:

SQL*Plus: Release 12.2.0.1.0 Production on Wed Aug 21 14:13:12 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 12.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options  
SQL>
D
-
X 
SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 12.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 

Lo podemos complicar un poco más. Para cargar las variables y lanzar la query a la vez, ejecutamos:

export ORAENV_ASK=NO;export ORACLE_SID=ORCL2;. oraenv 1>/dev/null; echo "Select * from dual;" | sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Wed Aug 21 14:14:55 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.  

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 

SQL>
D
-
X 
SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 

Con estas funcionalidades ya tenemos el esqueleto para ejecutar nuestros scripts. Podemos programar scripts incluso como root y que ejecuten las sentencias con su – oracle:

scripts Oracle con oraenv gpsos

Como habéis podido observar, para que no se produzca un error de sintaxis hay que utilizar el caracter de escape \ delante de las comillas dobles:

\"Select * from dual;\"

De esta forma podemos incluso ejecutar scripts que pasen como parámetros valores con comillas simples y variables:

su - oracle -c "export ORAENV_ASK=NO;export ORACLE_SID=ORCL2;. oraenv 1>/dev/null; echo \"@script.sql '${fechainicio}'" | sqlplus / as sysdba"

Esperamos que os sea de utilidad la próxima vez que tengáis que programar algún script de Oracle en una máquina.

Nos vemos en próximas entradas. Si no quieres perderte ninguna, suscríbete a nuestra newsletter mensual para estar al tanto de nuestras entradas con un solo email al mes.