exp自动备份on linux and on windows

大概思路:
1,分不同的用户进行exp,每个用户一个exp执行文件。
2,保留策略
3,用一个总文件调用(1,2)二个文件。


on linux

/u02/orabak:用于存放DMP文件的目录
/u02/scripts/autoexp:用于存放exp这些sh脚本的目录

记得对目录,文件赋于相应的WRX权限。

autoexp.sh:自动备份的总文件,用crontab里面的sh文件。
exp_plms.sh:每个用户一个sh文件,分用户备份
exp_weishi.sh:每个用户一个sh文件,分用户备份
delete.sh:保留策略,可以保留30天,任意设置
autoexp.log:自动备份,每天按用户写一个日志
autoexp.del.log:保留策略日志,会把删除的文件日志写到这里。

[oracle@SR0002SZ autoexp]$ cat exp_plms.sh
#!/bin/sh

#oracle environment
ORACLE_BASE=/ora01; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=dbstd; export ORACLE_SID
NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';export NLS_DATE_FORMAT
NLS_LANG=American_America.ZHS16GBK;export NLS_LANG
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export PATH

#exp variable
userid=oracle
pwd=iamdba
oraclesid=dbstd
bakpath=/u02/orabak
vtoday=`date +%Y%m%d`

#run exp scripts log
logpath=/u02/scripts/autoexp
logfile=autoexp.log


#exp command belong to,this should be changed using oracle user
owner=plms

#exp combination
datatype=full
data_name=${oraclesid}_${owner}_${datatype}_${vtoday}.dmp
log_name=${oraclesid}_${owner}_${datatype}_${vtoday}.log

#exp log
echo -e "\n" >>${logpath}/${logfile}
echo "------start@${oraclesid}_${owner}---------" >>${logpath}/${logfile}
echo `date` start exp backup:$bakpath/$data_name >>${logpath}/${logfile}

#exp command
exp $userid/$pwd@$oraclesid file=$bakpath/$data_name wner=$owner direct=y compress=y  rows=n consistent=y buffer=100000000 log=$bakpath/$log_name

#exp log 
echo `date` end exp backup:$bakpath/$log_name >>${logpath}/${logfile}
echo "-------end@${oraclesid}_${owner}----------" >>${logpath}/${logfile}



[oracle@SR0002SZ autoexp]$ cat exp_weishi.sh
#!/bin/sh

#oracle environment
ORACLE_BASE=/ora01; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=dbstd; export ORACLE_SID
NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';export NLS_DATE_FORMAT
NLS_LANG=American_America.ZHS16GBK;export NLS_LANG
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export PATH

#exp variable
userid=oracle
pwd=iamdba
oraclesid=dbstd
bakpath=/u02/orabak
vtoday=`date +%Y%m%d`

#run exp scripts log
logpath=/u02/scripts/autoexp
logfile=autoexp.log


#exp command belong to,this should be changed using oracle user
owner=weishi

#exp combination
datatype=full
data_name=${oraclesid}_${owner}_${datatype}_${vtoday}.dmp
log_name=${oraclesid}_${owner}_${datatype}_${vtoday}.log

#exp log
echo -e "\n" >>${logpath}/${logfile}
echo "------start@${oraclesid}_${owner}---------" >>${logpath}/${logfile}
echo `date` start exp backup:$bakpath/$data_name >>${logpath}/${logfile}

#exp command
exp $userid/$pwd@$oraclesid file=$bakpath/$data_name wner=$owner direct=y compress=y  rows=n consistent=y buffer=100000000 log=$bakpath/$log_name

#exp log 
echo `date` end exp backup:$bakpath/$log_name >>${logpath}/${logfile}
echo "-------end@${oraclesid}_${owner}----------" >>${logpath}/${logfile}


[oracle@SR0002SZ autoexp]$ cat delete.sh
#!/bin/sh

#set backup path
bakpath=/u02/orabak

#set delete files log path and file log
delpath=/u02/scripts/autoexp
dellog=autoexp.del.log

#run,keep 30 days
find ${bakpath} -mtime +30 -exec ls -la {} \; >>${delpath}/${dellog}
find ${bakpath} -mtime +30 -exec rm {} \; >>${delpath}/${dellog}

[oracle@SR0002SZ autoexp]$ cat autoexp.sh
#!/bin/sh

#set exp command path
scriptspath=/u02/scripts/autoexp

#oracle exp backup
sh ${scriptspath}/exp_weishi.sh
sh ${scriptspath}/exp_plms.sh

#backup retention policy
sh ${scriptspath}/delete.sh

最后,就是让autoexp.sh每天执行一次。使用crontab。
基本格式 :
*  *  *  *  * user command
分 时 日 月 周 用户 命令

su - root
vi /etc/crontab,添加
00 23 * * * oracle /u02/scripts/autoexp/autoexp.sh >/u02/scripts/autoexp/autoexp.cron.log 2>&1
每天晚上23:00执行。

on windows

思路一样,只是windows的command命令有点不一样。
1,exp_plms.bat
::设置oracle环境变量
set userid=oracle
set pwd=iamdba
set raclesid=dbstd
set bakpath=D:\orabak
::设置导出用户
set wner=plms
:: 设置时间格式vtoday=YYYYMMDDhh24mi
set vtoday=%DATE:~0,4%%date:~5,2%%date:~8,2%
::%time:~0,2%%time:~3,2%
::
::
:: 导出用户所有数据
set datatype=full
exp %userid%/%pwd%@%oraclesid% file=%bakpath%\%oraclesid%_%owner%_%datatype%_%vtoday%.dmp wner=%owner% direct=y compress=y  rows=y consistent=y buffer=100000000 log=%bakpath%\%oraclesid%_%owner%_%datatype%_%vtoday%.log
::

2,delete.bat
::删除备份前N天的数据
forfiles /p "D:\orabak" /s /m *.* /d -7 /c "cmd /c del @path"

3.autoexp.bat
::执行exp备份
set scriptspath=D:\scripts\autoexp
call %scriptspath%\exp_plms.bat
call %scriptspath%\delete.bat

最后,新建windows下面的执行计划,第天执行一次。





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11990065/viewspace-709027/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11990065/viewspace-709027/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值