Welcome 微信登录

首页 / 数据库 / MySQL / Oracle shell调用SQL操作DB

操作Oracle数据库可以使用sqlplus连接数据库之后,再交互式的使用数据库。另一种非交互的方式就是通过shell直接执行sql命令,可以直接在shell CLI端口执行命令,或者是通过shell脚本的方式。从sql命令的输入方式上,这种非交互的方式又可以分为两种,一种是命令行直接输入,另一种是sql文件输入。

1. 命令行直接输入方式


这种方式就是把要执行的命令直接传给sqlplus,-S是指silent模式。注意此处的反斜杠转义。
  1. sqlplus -S "/ as sysdba" << EOF
  2. set pagesize 0 feedback off verify off heading off echo off
  3. SELECT value FROM v$parameter WHERE name = "background_dump_dest";
  4. exit
  5. EOF
使用脚本的话,如下所示,注意反斜杠。
  1. if test $# -lt 1
  2. then
  3. echo You must pass a SID
  4. exit
  5. fi
  6. ORACLE_SID=$1; export ORACLE_SID
  7. DUMP_DIR=`sqlplus -S "/ as sysdba" << EOF
  8. set pagesize 0 feedback off verify off heading off echo off
  9. SELECT value FROM v\$parameter WHERE name = "background_dump_dest";
  10. exit
  11. EOF`
  12. echo ${DUMP_DIR}
 

2. 通过文件输入方式


这种方式是先把sql语句存储在一个文件中,这时就不需要反斜杠了,而且输入文件必须要以.sql为后缀。
  1. [oracle@node ~]$ cat /tmp/sqllines.sql
  2. set pagesize 0 feedback off verify off heading off echo off
  3. SELECT value FROM v$parameter WHERE name = "background_dump_dest";
  4. exit
  5. [oracle@node ~]$ sqlplus -s "/ as sysdba" @/tmp/sqllines
  6. /u01/app/oracle/diag/rdbms/live/live/trace
这种方式同样可以写成一个shell脚本。
  1. [oracle@node ~]$ cat /tmp/sql
  2. if test $# -lt 1
  3. then
  4. echo You must pass a SID
  5. exit
  6. fi
  7. ORACLE_SID=$1; export ORACLE_SID
  8. echo "
  9. set pagesize 0 feedback off verify off heading off echo off
  10. SELECT value FROM v$parameter WHERE name = "background_dump_dest";
  11. exit
  12. ">/tmp/plsql_scr.sql
  13. # --------------------------------
  14. # Execute plsql script
  15. # --------------------------------
  16. if [ -s /tmp/plsql_scr.sql ]; then
  17. echo -e "Running SQL script to find out bdump directory... "
  18. $ORACLE_HOME/bin/sqlplus -s "/ as sysdba" @/tmp/plsql_scr.sql >/tmp/plsql_scr_result.log
  19. fi
  20. echo " Check the reslut "
  21. echo "------------------------"
  22. cat /tmp/plsql_scr_result.log
  23. exit
 更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle 错误“ORA-19809: limit exceeded for recovery files”处理办法Oracle 11g数据库启动错误总结相关资讯      SQL  Oracle shell 
  • SQL 新手指南  (09/10/2015 10:57:53)
  • SQL导入txt以及SQL中的时间格式操  (01/25/2015 11:35:04)
  • SQL 事务及实例演示  (08/12/2014 10:36:37)
  • SQL 中的正则函数  (06/28/2015 15:59:48)
  • SQL 集合(笔记)  (01/15/2015 20:19:06)
  • SQL中varchar和nvarchar有什么区别  (02/23/2013 09:11:03)
本文评论 查看全部评论 (0)
表情: 姓名: 字数