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 #将备份文件上传到远程服务器 如果不输人密码上传请参考

在这里插入图片描述
添加脚本执行权限

sudo chmod -R 755 /home/oraDataBAK/bakSh/SXGLDataBak.sh
-rw------- (600)      只有拥有者有读写权限。
-rw-r--r-- (644)      只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700)      只有拥有者有读、写、执行权限。
-rwxr-xr-x (755)      拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711)      拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666)      所有用户都有文件读、写权限。
-rwxrwxrwx (777)      所有用户都有读、写、执行权限。

添加crontab任务在这里插入图片描述

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

重启服务命令:[root@oracledb ~]# service crond restart
在这里插入图片描述
启动服务命令:[root@oracledb ~]# service crond start
停止服务命令:[root@oracledb ~]# service crond stop
查看crontab运行状态[root@oracledb ~]# service crond status
在这里插入图片描述
情况二:当linux发行的版本没有service这个命令时候,用如下命令进行停止启动:
停止服务:[root@oracledb ~]# /etc/init.d/cron空格stop
启动服务:[root@oracledb ~]# /etc/init.d/cron空格start

2、crontab 命令

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值