大概思路:
1,分不同的用户进行exp,每个用户一个exp执行文件。
2,保留策略
3,用一个总文件调用(1,2)二个文件。
on linux
/u02/orabak:用于存放DMP文件的目录
/u02/scripts/autoexp:用于存放exp这些sh脚本的目录
记得对目录,文件赋于相应的WRX权限。
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文件,分用户备份
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
2,delete.bat
最后,就是让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备份
3.autoexp.bat
::执行exp备份
set scriptspath=D:\scripts\autoexp
call %scriptspath%\exp_plms.bat
call %scriptspath%\delete.bat
最后,新建windows下面的执行计划,第天执行一次。
最后,新建windows下面的执行计划,第天执行一次。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11990065/viewspace-709027/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11990065/viewspace-709027/