Asunto: Ejecutar SQL y mostrar resultado comando Oracle en Linux
Hola, tengo un servidor con Oracle 10g, tiene Linux Fedora sin modo gráfico. Lo que quisiera es comprobar el estado de la base de datos con un comando, de forma que ejecutando un comando me devuelva si está OPEN (select status from v$instance).
Lo que quiero es ejecutar la consulta SQL:
Código:
select status from v$instance
Y que solo me devuelva el OPEN (o el estado en el que esté Oracle), no quiero que me devuelva nada más, ni el nombre de la columna ni nada y necesito que se ejecute de forma automática, es decir, un script que se ejecute y devuelva ese OPEN por la línea de comandos.
Publicado:
Lun Ene 26, 2015 1:12 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Ejecutar SQL y mostrar resultado comando Oracle en Linux
Anuncios
Entendemos que lo que quieres básicamente es ponder ejecutar una consulta SQL contra el servidor Oracle desde la línea de comandos sin tener que introducir usuario, contraseña ni nada y que muestre el resultado en la propia línea de comandos.
Para esto, puedes crear un script con:
Código:
nano /tmp/ejecutar_sql.sh
(puedes usar nano o cualquier otro editor como vi), cambia "/tmp/ejecutar_sql.sh" por la ruta y nombre del script que generarás.
Añade lo siguiente al fichero:
echo "set feedback off verify off heading off pagesize 0
select status from v\$instance;
exit" | $ORACLE_HOME/bin/sqlplus -s usuario/contraseña | while read output;
do
echo $output
done
Ten en cuenta lo siguiente:
1. En la línea select status from v\$instance; hay una barra invertida antes del $, es necesaria en un script para que Linux no tome el $ como el inicio de una variable.
2. Puedes cambiar la consulta SQL select status from v\$instance; por la que quieras, obviamente debería devolver solo un registro y solo el valor del campo de un registro.
3. En la línea exit" | $ORACLE_HOME/bin/sqlplus -s usuario/contraseña | while read output; cambiaremos usuario/contraseña por el usuario y contraseña de tu base de datos Oracle.
4. El script funcionará si tienes la variable de entorno $ORACLE_HOME correctamente configurada en el bash del usuario con el que lo ejecutes.
Guarda los cambios en el fichero (en nano pulsando Control + O) y cierra la edición (en nano pulsando Control + X").
Por último debes convertir el fichero de script en ejecutable, para ello ejecuta el siguiente comando:
Código:
chmod a+x /tmp/ejecutar_sql.sh
Ahora ya podrás probarlo, para ejecutarlo:
Código:
./tmp/ejecutar_sql.sh
Si todo es correcto, en el caso de la consulta SQL del ejemplo que te hemos puesto, solo devolverá: OPEN.
Publicado:
Lun Ene 26, 2015 1:23 pm
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: [RESUELTO] Ejecutar SQL resultado comando Oracle Linux
Anuncios
alonsojpd escribió:
echo "set feedback off verify off heading off pagesize 0
select status from v\$instance;
exit" | $ORACLE_HOME/bin/sqlplus -s usuario/contraseña | while read output;
do
echo $output
done
Genial, me funciona perfecto, es lo que quería, ejecuta la consulta SQL y me devuelve el valor por la línea de comandos, así puedo monitorizar el estado de Oracle de forma fácil.
Una pequeña cuestión más, si en vez de escribir el usuario y la contraseña de Oracle en el Script quisiera que el script me lo solicitara se podría hacer?
Publicado:
Lun Ene 26, 2015 1:27 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: [RESUELTO] Ejecutar SQL resultado comando Oracle Linux
Anuncios
varios escribió:
Genial, me funciona perfecto, es lo que quería, ejecuta la consulta SQL y me devuelve el valor por la línea de comandos, así puedo monitorizar el estado de Oracle de forma fácil.
Una pequeña cuestión más, si en vez de escribir el usuario y la contraseña de Oracle en el Script quisiera que el script me lo solicitara se podría hacer?
Sí se puede, para que te solicite usuario y contraseña el script puedes añadir lo siguiente al contenido del fichero de script ejecutar_sql.sh:
Código:
echo "Introduzca usuario:"
read usuario
echo "Introduzca contraseña (no se mostrará)"
stty -echo
read contrasena
stty echo
echo "Introduzca consulta SQL"
read consultasql
echo "set feedback off verify off heading off pagesize 0
$consultasql
exit" | $ORACLE_HOME/bin/sqlplus -s $usuario/$contrasena | while read output;
do
echo $output
done
Con el script anterior también te solicitará que introduzcas la consulta SQL.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A