由于各种因素,有的客户需要在操作系统层对数据库进行定期的逻辑或是物理的备份
物理备份
#!/bin/sh
#环境变量
export DM_HOME="home/dmdba/dmdbms" #数据库安装路径
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export PATH="$DM_HOME/bin:$PATH"
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#备份设置
fulldir=/dmbak/full #物理备份路径
startshdir=/dmbak
logdir=/dmbak/log
days=10 #设置删除10天前的数据
dburl=SYSDBA/SYSDBA
ntime=`date +%Y%m%d%H%M%S`
echo "conn $dburl">${startshdir}/a.sql
echo "select sysdate as StartTime from dual;">>${startshdir}/a.sql
echo "backup database full to DAMENG_FULL_${ntime} BACKUPSET '${fulldir}/DAMENG_FULL_${ntime}' compressed;">>${startshdir}/a.sql
echo "select sysdate as EndTime from dual;">>${startshdir}/a.sql
echo exit>>${startshdir}/a.sql
#删除过期备份
find $fulldir -name "DAMENG_FULL*" -mtime +$days -exec rm -rf {} \;
#执行备份
disql /nolog \`${startshdir}/a.sql>${logdir}/full_end_${ntime}.log
逻辑备份
#!/bin/sh
export bakdir=/dmbak_luoji #逻辑备份路径
#环境变量
export DM_HOME="home/dmdba/dmdbms" #数据库安装路径
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export PATH="$DM_HOME/bin:$PATH"
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#备份设置
date=$(date +%Y%m%d) #当前时间
days=10 #设置删除10天前的数据
dmid=192.168.1.19:5236 #要备份的DM数据库IP、端口
bakuser=SYSDBA #使用此用户来导出dmp
bakpass="SYSDBA" #用户密码
bakdir=/dmbak_luoji #备份文件路径
bakdata=$bakuser"_"$date.dmp #备份的dmp名称
baklog=$bakuser"_"$date.log #备份时产生的log名称
cd $bakdir
#删除过期备份文件
find $bakdir -type f -name "*.log" -mtime +$days -exec rm {} \; #删除log文件
find $bakdir -type f -name "*.dmp" -mtime +$days -exec rm {} \; #删除dmp文件
#导出dmp和log文件
dexp $bakuser/$bakpass@$dmid file=$bakdata log=$baklog directory=$bakdir full=y #可以编辑其他的备份条件
文章
阅读量
获赞