Oracle shell调用SQL操作DB
操作Oracle数据库可以使用sqlplus连接数据库之后,再交互式的使用数据库。另一种非交互的方式就是通过shell直接执行sql命令,可以直接在shell CLI端口执行命令,或者是通过shell脚本的方式。从sql命令的输入方式上,这种非交互的方式又可以分为两种,一种是命令行直接输入,另一种是sql文件输入。
1. 命令行直接输入方式
这种方式就是把要执行的命令直接传给sqlplus,-S是指silent模式。注意此处的反斜杠转义。
- sqlplus -S '/ as sysdba' << EOF
- set pagesize 0 feedback off verify off heading off echo off
- SELECT value FROM v\$parameter WHERE name = 'background_dump_dest';
- exit
- EOF
使用脚本的话,如下所示,注意反斜杠。
- if test $# -lt 1
- then
- echo You must pass a SID
- exit
- fi
- ORACLE_SID=$1; export ORACLE_SID
- DUMP_DIR=`sqlplus -S '/ as sysdba' << EOF
- set pagesize 0 feedback off verify off heading off echo off
- SELECT value FROM v\\$parameter WHERE name = 'background_dump_dest';
- exit
- EOF`
- echo ${DUMP_DIR}
2. 通过文件输入方式
这种方式是先把sql语句存储在一个文件中,这时就不需要反斜杠了,而且输入文件必须要以.sql为后缀。
- [oracle@node ~]$ cat /tmp/sqllines.sql
- set pagesize 0 feedback off verify off heading off echo off
- SELECT value FROM v$parameter WHERE name = 'background_dump_dest';
- exit
- [oracle@node ~]$ sqlplus -s "/ as sysdba" @/tmp/sqllines
- /u01/app/oracle/diag/rdbms/live/live/trace
这种方式同样可以写成一个shell脚本。
- [oracle@node ~]$ cat /tmp/sql
- if test $# -lt 1
- then
- echo You must pass a SID
- exit
- fi
- ORACLE_SID=$1; export ORACLE_SID
- echo "
- set pagesize 0 feedback off verify off heading off echo off
- SELECT value FROM v\$parameter WHERE name = 'background_dump_dest';
- exit
- ">/tmp/plsql_scr.sql
- # --------------------------------
- # Execute plsql script
- # --------------------------------
- if [ -s /tmp/plsql_scr.sql ]; then
- echo -e "Running SQL script to find out bdump directory... \n"
- $ORACLE_HOME/bin/sqlplus -s "/ as sysdba" @/tmp/plsql_scr.sql >/tmp/plsql_scr_result.log
- fi
- echo " Check the reslut "
- echo "------------------------"
- cat /tmp/plsql_scr_result.log
- exit
相关推荐
tianhuak 2020-11-24
huha 2020-10-16
lianshaohua 2020-09-23
laisean 2020-11-11
zhangjie 2020-11-11
大牛牛 2020-10-30
firefaith 2020-10-30
liguojia 2020-10-20
wangzhaotongalex 2020-10-20
以梦为马不负韶华 2020-10-20
CARBON 2020-10-20
彼岸随笔 2020-10-20
lianshaohua 2020-10-20
yutou0 2020-10-17
JohnYork 2020-10-16
xiaonamylove 2020-10-16
Julyth 2020-10-16
applecarelte 2020-10-16
ourtimes 2020-10-16