Linux脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可少的技能之一。本文针对Linux/Unix shell脚本调用sql, rman 脚本给出了相关示例。
一、由shell脚本调用sql,rman脚本
- 1、shell脚本调用sql脚本
- #首先编辑sql文件
- oracle@SZDB:~> more dept.sql
- connect scott/tiger
- spool /tmp/dept.lst
- set linesize 100 pagesize 80
- select * from dept;
- spool off;
- exit;
- #编辑shell脚本文件,在shell脚本内调用sql脚本
- oracle@SZDB:~> more get_dept.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
- sqlplus -S /nolog @/users/oracle/dept.sql #注意此处执行sql脚本的方法 -S 表示以静默方式执行
- exit
- #授予脚本执行权限
- oracle@SZDB:~> chmod 775 get_dept.sh
- -->执行shell脚本
- oracle@SZDB:~> ./get_dept.sh
- DEPTNO DNAME LOC
- ---------- -------------- -------------
- 10 ACCOUNTING NEW YORK
- 20 RESEARCH DALLAS
- 30 SALES CHICAGO
- 40 OPERATIONS BOSTON
- 2、shell脚本调用rman脚本
- #首先编辑RMAN脚本
- oracle@SZDB:~> more rman.rcv
- RUN {
- CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
- CONFIGURE BACKUP OPTIMIZATION ON;
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
- ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
- ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
- SET LIMIT CHANNEL CH1 READRATE=10240;
- SET LIMIT CHANNEL CH1 KBYTES=4096000;
- SET LIMIT CHANNEL CH2 READRATE=10240;
- SET LIMIT CHANNEL CH2 KBYTES=4096000;
- CROSSCHECK ARCHIVELOG ALL;
- DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
- BACKUP
- DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
- SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
- BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;
- DELETE NOPROMPT OBSOLETE;
- RELEASE CHANNEL CH1;
- RELEASE CHANNEL CH2;
- }
- #编辑shell脚本文件,在shell脚本内调用rman脚本
- oracle@SZDB:~> more rman_bak.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
- $ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rman.rcv log=/users/oracle/bak/rman.log
- exit
- #授予脚本执行权限
- oracle@SZDB:~> chmod 775 rman_bak.sh
- #执行shell脚本
- oracle@SZDB:~> ./rman_bak.sh
二、嵌入sql语句及rman到shell脚本
- 1、直接将sql语句嵌入到shell脚本
- oracle@SZDB:~> more get_dept_2.sh
- #!/bin/bash
- # Author : Robinson Cheng
- # Blog : http://blog.csdn.net/robinson_0612
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
- sqlplus -S /nolog <<EOF #EOF在此表示当输入过程中碰到EOF后,整个sql脚本输入完毕
- connect scott/tiger
- spool /tmp/dept.lst
- set linesize 100 pagesize 80
- select * from dept;
- spool off;
- exit; #退出sqlplus 环境
- EOF
- exit #推出shell脚本
- #授予脚本执行权限
- oracle@SZDB:~> chmod u+x get_dept_2.sh
- #执行shell脚本
- oracle@SZDB:~> ./get_dept_2.sh
- DEPTNO DNAME LOC
- ---------- -------------- -------------
- 10 ACCOUNTING NEW YORK
- 20 RESEARCH DALLAS
- 30 SALES CHICAGO
- 40 OPERATIONS BOSTON
- 2、直接将sql语句嵌入到shell脚本(方式二,使用管道符号>代替spool来输出日志)
- oracle@SZDB:~> more get_dept_3.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
- sqlplus -S /nolog 1>/users/oracle/dept.log 2>&1 <<EOF
- connect scott/tiger
- set linesize 80 pagesize 80
- select * from dept;
- exit;
- EOF
- cat /users/oracle/dept.log
- exit
- #另一种实现方式,将所有的sql语句输出来生成sql脚本后再调用
- oracle@SZDB:~> more get_dept_4.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
- echo "conn scott/tiger
- select * from dept;
- exit;" >/users/oracle/get_dept.sql
- sqlplus -silent /nolog @get_dept.sql 1>/users/oracle/get_dept.log 2>&1
- cat get_dept.log
- exit
- 3、将rman脚本嵌入到shell脚本
- oracle@SZDB:~> more rman_bak_2.sh
- #!/bin/bash
- # set environment variable
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- export ORACLE_SID=CNMMBO
- $ORACLE_HOME/bin/rman log=/users/oracle/bak/rman.log <<EOF
- connect target /
- RUN {
- CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
- CONFIGURE BACKUP OPTIMIZATION ON;
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
- ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
- ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
- SET LIMIT CHANNEL CH1 READRATE=10240;
- SET LIMIT CHANNEL CH1 KBYTES=4096000;
- SET LIMIT CHANNEL CH2 READRATE=10240;
- SET LIMIT CHANNEL CH2 KBYTES=4096000;
- CROSSCHECK ARCHIVELOG ALL;
- DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
- BACKUP
- DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
- SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
- BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;
- DELETE NOPROMPT OBSOLETE;
- RELEASE CHANNEL CH1;
- RELEASE CHANNEL CH2;
- }
- EXIT;
- EOF
- exit
- #授予脚本执行权限
- oracle@SZDB:~> chmod u+x rman_bak_2.sh
- #执行shell脚本
- oracle@SZDB:~> ./rman_bak_2.sh
- 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:~>
Linux脚本中调用SQL,RMAN脚本的更多相关文章
- Linux/Unix shell 脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...
- Shell脚本中调用另外一个脚本的方法
(转载): 在Linux平台上开发,经常会在console(控制台)上执行另外一个脚本文件,经常用的方法有:./my.sh 或 source my.sh 或 . my.sh:这三种方法有什么不同呢?我 ...
- shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)
fork ( /directory/script.sh) fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本. 运行的时候开一个sub- ...
- 在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)——转载
原文链接:http://blog.chinaunix.net/uid-22548820-id-3181798.html fork ( /directory/script.sh) :如果shell中包含 ...
- 在shell脚本中调用sql语句
查询员工信息 -S:静默登录 [oracle@localhost shells]$ cat shell1.sh #!/bin/bash #查询员工信息 sqlplus -S /nolog <&l ...
- 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)
如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...
- django系列5.4--ORM中执行原生SQL语句, Python脚本中调用django环境
ORM执行原生sql语句 在模型查询API不够用的情况下,我们还可以使用原始的SQL语句进行查询. Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回 ...
- Python--day69--pythonDjango终端打印SQL语句、在Python脚本中调用Django环境
Django终端打印SQL语句 在Django项目的settings.py文件中,在最后复制粘贴如下代码: LOGGING = { 'version': 1, 'disable_existing_lo ...
- Shell脚本中执行sql语句操作mysql
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
随机推荐
- grep过滤目录或文件方法
在使用grep在指定目录下查找包含指定字符串的文件是,我们想过滤(即不递归查询指定目录)时!可以使用 –exclude-dir 参数 单个目录实例 搜索.目录但不搜索在.目录下的.svg目录中包含&q ...
- 常用的几个JQuery代码片段
1. 导航菜单背景切换效果 在项目的前端页面里,相对于其它的导航菜单,激活的导航菜单需要设置不同的背景.这种效果实现的方式有很多种,下面是使用JQuery实现的一种方式: //注意:代码需要修饰完善 ...
- 洛谷 P2279 [HNOI2003]消防局的设立
题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状 ...
- 动态规划:POJ2576-Tug of War(二维费用的背包问题)
Tug of War Time Limit: 3000MS Memory Limit: 65536K Description A tug of war is to be arranged at the ...
- Git-Git基本操作
先来合个影 马上就要和之前实践遗留的数据告别了,告别之前是不是要留个影呢?在Git里,"留影"用的命令叫做tag,更加专业的术语叫做"里程碑"(打tag,或打标 ...
- Mybatis一个参数判断
一:List<UserVo> list(@Param("nickName") String nickName); <select id="list&qu ...
- [原]sencha touch之布局
今天记录一下关于sencha touch中的几种布局,其实很简单的,还是直接上代码,一目了然 1:box布局,其实就是vbox和hbox,说白了一个是横着摆放,一个是竖着摆放 Ext.applicat ...
- 1010: [HNOI2008]玩具装箱toy(斜率优化)
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 12280 Solved: 5277[Submit][S ...
- MySQL之索引(四)
压缩索引 MyISAM使用前缀压缩来减少索引的大小,从而让更多的索引可以放入内存中,这在某些情况下能极大地提高性能.默认只压缩字符串,但通过参数设置也可以对整数做压缩. MyISAM压缩每个索引块的方 ...
- day 17 jQuery
什么是jQuery? 可以把它认为是python中的模块,导入就可以使用模块中的功能. jQuery 的版本: 1.xx 系列 2.xx 系列 3.xx 系列 最常用的为1 系列,1系列最新版为1.1 ...