一个冷备份的自动执行脚本
2016-05-22 22:36
253 查看
花了一天多时间,捣鼓出一个SQL 脚本,用于执行ORACLE自动冷备份。记录如下:
说明:1.SQL下获取当前日期值,并应用到SQLPLUS命令的目录中是一个难点,折腾了一天。
2.sed命令可以用sed -i来简化生成的过渡性sql脚本。
3.应该可以在SQLPLUS下定义变量并赋予当天日期值,再运用到其他备份命令中,暂时没搞成功,回头有时间再研究。
4.这是为了学习而搞得一个SQL脚本,或许用系统shell脚本来做,会更简洁有效。下一步再做一个系统shell脚本。
set echo off --关闭命令回显,但会显示执行后的命令。 set serveroutput on --返回结果,如果关闭,将无法把结果传到下一个文件。 set escape on --打开转义符功能,否则遇到/无法进行。 set heading off --关闭结果标题行显示 set line 300 --设置返回结果显示宽度,避免遇到结果跨行后sed命令取结果不完整。 ho mkdir $ORACLE_HOME/`date +%Y_%m_%d` --创建存放备份文件的目录,以当天日期命名。要保证与下面SQL中目录一致。 spool /tmp/bak1.sql declare --声明一个变量。用于接收当前日期的值。 v_time varchar2(30); begin select to_char(sysdate,'yyyy_mm_dd') into v_time --获取当天日期。 from dual; dbms_output.put_line('select ''ho cp ''\|\|name\|\|'' $ORACLE_HOME\/'||v_time||''' from v$controlfile;'); dbms_output.put_line('select ''ho cp ''\|\|name\|\|'' $ORACLE_HOME\/'||v_time||''' from v$datafile;'); dbms_output.put_line('select ''ho cp ''\|\|member\|\|'' $ORACLE_HOME\/'||v_time||''' from v$logfile;'); dbms_output.put_line('select ''ho cp ''\|\|name\|\|'' $ORACLE_HOME\/'||v_time||''' from v$tempfile;'); dbms_output.put_line('create pfile=''$ORACLE_HOME\/'||v_time||'\/init$ORACLE_SID.ora'' from spfile;'); dbms_output.put_line('ho cp $ORACLE_HOME\/dbs\/orapw$ORACLE_SID $ORACLE_HOME\/'||v_time); end; / spool off --以上通过获取日期后,得到带有日期值的完整的SQL原始语句和一些结果说明语句。 --以下获取纯净的用来执行的原始SQL语句。 ho sed -n '/select/p' /tmp/bak1.sql >/tmp/bak2.sql ho sed -n '/^create/p' /tmp/bak1.sql >>/tmp/bak2.sql ho sed -n '/^ho cp/p;' /tmp/bak1.sql >>/tmp/bak2.sql --以下用来将原始SQL语句执行得到SQLPLUS语句,并备份了参数文件和密码文件,以及结果说明语句。 spool /tmp/bak3.sql start /tmp/bak2.sql spool off ho sed -n '/^ho cp/p' /tmp/bak3.sql >$ORACLE_HOME/back.sql --过滤掉无用的结果说明语句。获取最终有用的SQLPLUS命令。 shutdown immediate --关闭数据库进行冷备。 start $ORACLE_HOME/back.sql startup ho rm /tmp/bak*.sql $ORACLE_HOME/back.sql --删除临时生成的执行脚本。
说明:1.SQL下获取当前日期值,并应用到SQLPLUS命令的目录中是一个难点,折腾了一天。
2.sed命令可以用sed -i来简化生成的过渡性sql脚本。
3.应该可以在SQLPLUS下定义变量并赋予当天日期值,再运用到其他备份命令中,暂时没搞成功,回头有时间再研究。
4.这是为了学习而搞得一个SQL脚本,或许用系统shell脚本来做,会更简洁有效。下一步再做一个系统shell脚本。
相关文章推荐
- leetcode:binary-tree-postorder-traversal
- 如何打造高颜值PPT——小鱼儿何艳老师ppt课-课堂笔记
- 【01】《响应式Web设计:HTML5和CSS3实战》
- 两阶段提交和三阶段提交的理解
- 【2016杭电女生赛1005】【暴力 bfs or dfs or 模拟】girlcat 数女生数和猫咪数
- Spring中Bean的使用
- 二叉树的层次遍历
- hdu 1092 A+B for Input-Output Practice (IV)
- 移动直播技术秒开优化经验
- adb logcat 查看日志命令行用法(祥版)
- 1019 Problem S
- C#面向对象理解
- 课程练习三-1008-problem H
- 了解Web Uploader
- Linux下部署项目的一些注意事项
- 求最长回文字符串
- 数据挖掘算法说明
- Virtaulbox虚拟机添加磁盘
- oracle数据库之入门级语句(DOS命令符)
- 欢迎使用CSDN-markdown编辑器