我是靠谱客的博主 动人电灯胆,这篇文章主要介绍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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部