linux下oracle数据库自动备份脚本,打包,并上传到远端服务器上

export ORACLE_HOSTNAME=oracledb
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=ORCL
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib: /usr/local/lib


dateTime=`date +%Y_%m_%d_%H_%M` #当前系统时间
days=7 #删除7天前的备份数据s
orsid='数据库地址:1521/orcl' #oralce连接信息
orowner=数据库用户名 # 备份此用户下面的数据
bakuser=数据库用户名 #用此用户来执行备份,必须要有备份操作的权限
bakpass=数据库密码    #执行备注的用户密码
bakdir=/oraDataBAK/bakData #备份文件路径,需要提前创建好
bakdata=$orowner"_"$dateTime.dmp #备份数据库名称
baklog=$orowner"_"$dateTime.log #备份执行时候生成的日志文件名称
ordatabak=$orowner"_"$dateTime.tar.gz #最后保存的Oracle数据库备份文件
remotePath=/data/database/backup/SXLL/ #上传到远程服务器的路径

cd $bakdir #进入备份目录
mkdir -p $orowner #按需要备份的Oracle用户创建目录
cd $orowner #进入目录
exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog #执行备份
tar -zcvf $ordatabak $bakdata $baklog #压缩备份文件和日志文件

find $bakdir/$orowner -type f -name "*.log" -exec rm {} \; #删除备份文件
find $bakdir/$orowner -type f -name "*.dmp" -exec rm {} \; #删除日志文件
find $bakdir/$orowner -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #删除7天前的备份(注意:{} \中间有空格)
sshpass -p !QAZ2wsx.? scp $bakdir/$orowner/$ordatabak 远端服务器地址:$remotePath #将备份文件上传到远程服务器 如果不输人密码上传请参考

linux下oracle数据库自动备份脚本,打包,并上传到远端服务器上_第1张图片
添加脚本执行权限
chmod +x /backup/oracledata/ordatabak.sh

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件

情况一:正常情况(系统有service命令)

重启服务命令:[root@oracledb ~]# service crond restart
在这里插入图片描述
启动服务命令:[root@oracledb ~]# service crond start
停止服务命令:[root@oracledb ~]# service crond stop
查看crontab运行状态[root@oracledb ~]# service crond status
linux下oracle数据库自动备份脚本,打包,并上传到远端服务器上_第2张图片
情况二:当linux发行的版本没有service这个命令时候,用如下命令进行停止启动:
停止服务:[root@oracledb ~]# /etc/init.d/cron空格stop
启动服务:[root@oracledb ~]# /etc/init.d/cron空格start

2、crontab 命令

crontab -e 编写定时执行脚本命令执行命令
crontab -l 显示某个用户的crontab文件内容

你可能感兴趣的:(linux下oracle数据库自动备份脚本,打包,并上传到远端服务器上)