oracle数据库逻辑备份,通过 expect 自动转移到其他服务器

来源:互联网 发布:sql server恢复数据库 编辑:程序博客网 时间:2024/06/05 11:45

首先需要安装expect

# rpm -ihv expect-5.43.0-8.el5.i386.rpm
# rpm -ihv expect-devel-5.43.0-8.el5.i386.rpm

例子:

#! /usr/bin/expect -f 
spawn scp 1 koven@192.168.0.2: 
expect "*password:" 
send "your password\r"

expect "100%" 加上这个scp才能正常结束
expect eof 


下面是我在工作中用于公司测试环境的数据库逻辑备份脚本

dbback.sh

#!/bin/bash

cd /home/oracle/expd
timemv=$(date +%Y%m%d)
export timemv
echo $timemv >/home/oracle/expd/script/cn.conf
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export ORACLE_SID=hnkfkpi
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
expdp ctuni_pub/ctunipub directory=dump_dir dumpfile=hnkpipub_%U.dmp schemas=ctuni_pub   parallel=4 logfile=ctuni_hnkpipub.log
rm -rf *.log
tar -zcvf hndbback.$(echo $timemv).tar.gz *.dmp
rm -rf *.dmp
/home/oracle/expd/script/mv_file.sh
panduan=$(echo $?)
if [ $panduan -eq 0 ];then
echo "mv_file finish at `date`">>/home/oracle/expd/log/mv.log
rm -rf hndbback*.tar.gz
else
echo "mv_file failed at `date`">>/home/oracle/expd/log/mv.log

fi

dbback脚本调用 mv_file.sh 移动导出后打包好的逻辑备文件

mv_file.sh

#!/usr/bin/expect 
set password "oracle"
set timemv [exec cat /home/oracle/expd/script/cn.conf]
set hnb1 "hndbback.$timemv.tar.gz"
set hnb "/home/oracle/expd/hndbback.$timemv.tar.gz"
spawn scp $hnb oracle@10.95.3.112:/tcdata1/dbback/$hnb1
expect {
     "(yes/no)?"
         {
             send "yes\n"
             expect "*password*" { send "$password\n"}
         }
     "*password*"
         {
            send "$password\n"
 }
}
expect "100%"
expect eof


cn.conf

作为传递变量的媒介将时间变量在两个脚本中传递


希望对大家有所帮助

0 0
原创粉丝点击