脚本如下:
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文件内容