Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle
的相关工作,也是DBA必不可少的技能之一。本文针对Linux/Unix shell脚本调用sql, rman 脚本给出了相关示例。

一、由shell脚本调用sql,rman脚本

  1. 1、shell脚本调用sql脚本
  2. #首先编辑sql文件
  3. oracle@SZDB:~> more dept.sql
  4. connect scott/tiger
  5. spool /tmp/dept.lst
  6. set linesize 100 pagesize 80
  7. select * from dept;
  8. spool off;
  9. exit;
  10. #编辑shell脚本文件,在shell脚本内调用sql脚本
  11. oracle@SZDB:~> more get_dept.sh
  12. #!/bin/bash
  13. # set environment variable
  14. if [ -f ~/.bashrc ]; then
  15. . ~/.bashrc
  16. fi
  17. export ORACLE_SID=CNMMBO
  18. sqlplus -S /nolog @/users/oracle/dept.sql #注意此处执行sql脚本的方法 -S 表示以静默方式执行
  19. exit
  20. #授予脚本执行权限
  21. oracle@SZDB:~> chmod 775 get_dept.sh
  22. -->执行shell脚本
  23. oracle@SZDB:~> ./get_dept.sh
  24. DEPTNO DNAME          LOC
  25. ---------- -------------- -------------
  26. 10 ACCOUNTING     NEW YORK
  27. 20 RESEARCH       DALLAS
  28. 30 SALES          CHICAGO
  29. 40 OPERATIONS     BOSTON
  30. 2、shell脚本调用rman脚本
  31. #首先编辑RMAN脚本
  32. oracle@SZDB:~> more rman.rcv
  33. RUN {
  34. CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
  35. CONFIGURE BACKUP OPTIMIZATION ON;
  36. CONFIGURE CONTROLFILE AUTOBACKUP ON;
  37. CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
  38. ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
  39. ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
  40. SET LIMIT CHANNEL CH1 READRATE=10240;
  41. SET LIMIT CHANNEL CH1 KBYTES=4096000;
  42. SET LIMIT CHANNEL CH2 READRATE=10240;
  43. SET LIMIT CHANNEL CH2 KBYTES=4096000;
  44. CROSSCHECK ARCHIVELOG ALL;
  45. DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
  46. BACKUP
  47. DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
  48. SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
  49. BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE  INPUT;
  50. DELETE NOPROMPT OBSOLETE;
  51. RELEASE CHANNEL CH1;
  52. RELEASE CHANNEL CH2;
  53. }
  54. #编辑shell脚本文件,在shell脚本内调用rman脚本
  55. oracle@SZDB:~> more rman_bak.sh
  56. #!/bin/bash
  57. # set environment variable
  58. if [ -f ~/.bashrc ]; then
  59. . ~/.bashrc
  60. fi
  61. export ORACLE_SID=CNMMBO
  62. $ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rman.rcv log=/users/oracle/bak/rman.log
  63. exit
  64. #授予脚本执行权限
  65. oracle@SZDB:~> chmod 775 rman_bak.sh
  66. #执行shell脚本
  67. oracle@SZDB:~> ./rman_bak.sh

二、嵌入sql语句及rman到shell脚本

  1. 1、直接将sql语句嵌入到shell脚本
  2. oracle@SZDB:~> more get_dept_2.sh
  3. #!/bin/bash
  4. # Author : Robinson Cheng
  5. # Blog : http://blog.csdn.net/robinson_0612
  6. # set environment variable
  7. if [ -f ~/.bashrc ]; then
  8. . ~/.bashrc
  9. fi
  10. export ORACLE_SID=CNMMBO
  11. sqlplus -S /nolog  <<EOF     #EOF在此表示当输入过程中碰到EOF后,整个sql脚本输入完毕
  12. connect scott/tiger
  13. spool /tmp/dept.lst
  14. set linesize 100 pagesize 80
  15. select * from dept;
  16. spool off;
  17. exit;                       #退出sqlplus 环境
  18. EOF
  19. exit                        #推出shell脚本
  20. #授予脚本执行权限
  21. oracle@SZDB:~> chmod u+x get_dept_2.sh
  22. #执行shell脚本
  23. oracle@SZDB:~> ./get_dept_2.sh
  24. DEPTNO DNAME          LOC
  25. ---------- -------------- -------------
  26. 10 ACCOUNTING     NEW YORK
  27. 20 RESEARCH       DALLAS
  28. 30 SALES          CHICAGO
  29. 40 OPERATIONS     BOSTON
  30. 2、直接将sql语句嵌入到shell脚本(方式二,使用管道符号>代替spool来输出日志)
  31. oracle@SZDB:~> more get_dept_3.sh
  32. #!/bin/bash
  33. # set environment variable
  34. if [ -f ~/.bashrc ]; then
  35. . ~/.bashrc
  36. fi
  37. export ORACLE_SID=CNMMBO
  38. sqlplus -S /nolog 1>/users/oracle/dept.log 2>&1 <<EOF
  39. connect scott/tiger
  40. set linesize 80 pagesize 80
  41. select * from dept;
  42. exit;
  43. EOF
  44. cat /users/oracle/dept.log
  45. exit
  46. #另一种实现方式,将所有的sql语句输出来生成sql脚本后再调用
  47. oracle@SZDB:~> more get_dept_4.sh
  48. #!/bin/bash
  49. # set environment variable
  50. if [ -f ~/.bashrc ]; then
  51. . ~/.bashrc
  52. fi
  53. export ORACLE_SID=CNMMBO
  54. echo "conn scott/tiger
  55. select * from dept;
  56. exit;" >/users/oracle/get_dept.sql
  57. sqlplus -silent /nolog  @get_dept.sql 1>/users/oracle/get_dept.log 2>&1
  58. cat get_dept.log
  59. exit
  60. 3、将rman脚本嵌入到shell脚本
  61. oracle@SZDB:~> more rman_bak_2.sh
  62. #!/bin/bash
  63. # set environment variable
  64. if [ -f ~/.bashrc ]; then
  65. . ~/.bashrc
  66. fi
  67. export ORACLE_SID=CNMMBO
  68. $ORACLE_HOME/bin/rman log=/users/oracle/bak/rman.log <<EOF
  69. connect target /
  70. RUN {
  71. CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
  72. CONFIGURE BACKUP OPTIMIZATION ON;
  73. CONFIGURE CONTROLFILE AUTOBACKUP ON;
  74. CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
  75. ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
  76. ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
  77. SET LIMIT CHANNEL CH1 READRATE=10240;
  78. SET LIMIT CHANNEL CH1 KBYTES=4096000;
  79. SET LIMIT CHANNEL CH2 READRATE=10240;
  80. SET LIMIT CHANNEL CH2 KBYTES=4096000;
  81. CROSSCHECK ARCHIVELOG ALL;
  82. DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
  83. BACKUP
  84. DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
  85. SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
  86. BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE  INPUT;
  87. DELETE NOPROMPT OBSOLETE;
  88. RELEASE CHANNEL CH1;
  89. RELEASE CHANNEL CH2;
  90. }
  91. EXIT;
  92. EOF
  93. exit
  94. #授予脚本执行权限
  95. oracle@SZDB:~> chmod u+x rman_bak_2.sh
  96. #执行shell脚本
  97. oracle@SZDB:~> ./rman_bak_2.sh
  98. RMAN> RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15> 16> 17> 18> 19> 20> 21> RMAN> oracle@SZDB:~>
 
转:http://blog.csdn.net/leshami/article/details/7965916

Linux/Unix shell 脚本中调用SQL,RMAN脚本的更多相关文章

  1. Linux脚本中调用SQL,RMAN脚本

    Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...

  2. Shell脚本中调用另外一个脚本的方法

    (转载): 在Linux平台上开发,经常会在console(控制台)上执行另外一个脚本文件,经常用的方法有:./my.sh 或 source my.sh 或 . my.sh:这三种方法有什么不同呢?我 ...

  3. shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)

    fork ( /directory/script.sh) fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本. 运行的时候开一个sub- ...

  4. 在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)——转载

    原文链接:http://blog.chinaunix.net/uid-22548820-id-3181798.html fork ( /directory/script.sh) :如果shell中包含 ...

  5. 在shell脚本中调用sql语句

    查询员工信息 -S:静默登录 [oracle@localhost shells]$ cat shell1.sh #!/bin/bash #查询员工信息 sqlplus -S /nolog <&l ...

  6. Linux/Unix shell sql 之间传递变量

    灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考. Lin ...

  7. Linux/Unix shell 监控Oracle实例(monitor instance)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...

  8. Linux/Unix shell 监控Oracle监听器(monitor listener)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...

  9. Linux/Unix shell 监控Oracle告警日志(monitor alter log file)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...

随机推荐

  1. 知问前端——对话框UI(一)

    对话框(dialog),是jQuery UI非常重要的一个功能.它彻底的代替了JavaScript的alert().prompt()等方法,也避免了新窗口或页面的繁杂冗余. 开启多个dialog 我们 ...

  2. spring_150803_service

    实体类: package com.spring.model; public class DogPet { private int id; private String name; private in ...

  3. jquery easyUi 配置默认页码

    jquery easyUI用pagenation 属性如果修改其默认加载页面显示,配置该怎样写? 注意区分datagrid的pagenation分页的区别,代码如下. if ($.fn.paginat ...

  4. Junit单元测试学习笔记一

    我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的.但是,我们同时应该确保每一个函数 ...

  5. hashmap理解总结

    1.hashmap是通过存放对象的hash算法进行对象的存储的,其查询,put,get方法均是. 所以将对象存储进hashmap,set啥时候,要重写hashcode方法. 2.hash算法存储,查询 ...

  6. iOS 开发--添加工程

    文/Bison(简书作者)原文链接:http://www.jianshu.com/p/dd71e15df5d0著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 第一部分,配置项目 在此只 ...

  7. MVC新手指南

    MVC新手指南 2010-04-06 09:54:23 18839 次阅读 0 条评论   本文感谢东西提供 模型-视图-控制器(MVC)可能是近年来网络编程圈子里最常被提及的模式之一.目前与网络应用 ...

  8. Linux命令-free

    显示系统内存使用情况 free  [-m / -g / -h] [root@localhost test]# free -m total used free shared buff/cache ava ...

  9. OSI

    1.物理(硬:HUB位) *****************信道接口型状.尺寸.引脚.排列电压.电流.阻抗.波形.速率及平衡单.半双.全双工RS232,RS422,RS423,RS485X.25.X. ...

  10. Model的绑定

    ReflectedControllerDescriptor:ControllerDescriptor Controller的 public override ActionDescriptor Find ...