一、windows脚本:
@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前日期命名备份文件。
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set TODAY=%date:~0,4%%date:~5,2%%date:~8,2%
::设置导出的路径
set NLS_LANG=american_america.AL32UTF8
set LANG=en_US
expdp username/username@username directory=eas1 dumpfile=username_"%TODAY%.dmp logfile=username_"%TODAY%.log EXCLUDE="TABLE:LIKE'VT%%'"
二、Linux脚本:
cd /backup/expdp
Dat=`date +%Y%m%d`
dat=`date +%Y-%m-%d-%H-%M-%S`
day=`date +%w`
if [ -e $day ]
then rm -rf $day
fi
mkdir $day;
sql (){
sql="select current_scn from v\$database;"
sqlplus /nolog <<EOF
conn / as sysdba;
$sql
EOF
}
cd /backup/expdp/$day
sql >sql.log 2>&1
scn=`cat sql.log |egrep -v "Release|Copyright|SQL|Disconnected|OLAP|Application|CURRENT_SCN|-"|sed '/^$/d'|awk '{print $1}'`
echo ${scn}
expdp username/'username123$'@usernameDB-BAK dumpfile=expdp_dir:username-${Dat}.dmp flashback_scn=${scn} logfile=expdp_dir:username-${Dat}.log cluster=n
cd /backup/expdp/
mv username*.dmp $day;
mv username*.log $day;
echo -e "\n end_dbaflag `date +%Y-%m-%d` `date +%H:%M:%S`"
三、备份失败job清理:
expdp username/username attach=SYS_EXPORT_SCHEMA_02 ; kill_job ---》YES
select 'drop table '||OWNER_NAME||'.'||JOB_NAME||' purge;' from dba_datapump_jobs where STATE='NOT RUNNING';
ps -ef|grep expdp|grep -v grep|awk '{print $2}'|xargs kill -9