我是靠谱客的博主 动人电灯胆,最近开发中收集的这篇文章主要介绍linux sh执行sql语句,Shell中执行SQL,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在shell脚本执行sql脚本的两种方法

第一种方式是先生成一个sql脚本,在这个sql脚本里面执行连接数据库、执行sql语句,然后再退出。

#!/bin/bash

# deadlock_alert.sh

echo "conn / as sysdba

set linesize 200;

set pagesize 20;

set heading off;

set feedback off;

set echo off;

set termout off;

set trimout on;

set trimspool on;

spool /u01/lock.alert;

select * from v$lock where (request>0 or block>0);

spool off;

exit;" > /u01/sql.log

sqlplus /nolog @/u01/sql.log

if [ `cat /u01/lock.alert | wc -l` -gt 0 ];then

mail -s "deadlock alert" < /u01/lock.alert

fi

第二种方式是使用输入重定向的方法,把要执行的sql语句全部放入到重定向的块中。

#!/bin/bash

# deadlock.sh

sqlplus / as sysdba

set pagesize 20;

set heading off;

set feedback off;

set echo off;

set termout off;

set trimout on;

set trimspool on;

spool /u01/lock.alert;

select * from v$lock where (request>0 or block>0);

spool off;

exit;

EOF!

if [ `cat /u01/lock.alert | wc -l` -gt 3 ];then

mail -s "deadlock alert" < /u01/lock.alert

fi

注意:

1、因为这里是在oracle用户执行的,所以在前面没有导入ORACLE_HOME和PATH环境变量,如果要做的通用,需要在前面导入环境变量。

2、执行的最后一条语句一定是"exit;",否则后果很严重,就是脚本永远退不出来,导致挂死。

3、执行的结果需要重定向到日志文件。sql语句的成功与否,我们没有办法通过返回值来判断。

#!/bin/bash

# dbstart

export ORACLE_SID=+ASM

sqlplus / as sysdba

exit;

EOF!

export ORACLE_SID=ora10

sqlplus / as sysdba

exit;

EOF!

最后

以上就是动人电灯胆为你收集整理的linux sh执行sql语句,Shell中执行SQL的全部内容,希望文章能够帮你解决linux sh执行sql语句,Shell中执行SQL所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部