Chinaunix首页 | 论坛 | 博客
  • 博客访问: 53945
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-11 11:29
个人简介

漂泊,流浪。

文章分类

全部博文(20)

文章存档

2013年(20)

我的朋友

分类: Oracle

2013-10-12 10:48:37

原文地址:Oracle shell调用SQL操作DB 作者:huaius

操作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.   
  7. ORACLE_SID=$1; export ORACLE_SID
  8. DUMP_DIR=`sqlplus -S '/ as sysdba' << EOF
  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. EOF`

  13. 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... \n"
  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

阅读(2674) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~