简介:本文主要介绍Linux系统中OA系统的Oracle数据库进行备份并异地存储的过程。涉及的内容包括:磁盘挂载、数据备份脚本编写,数据备份的清洗等内容。
详细情况请参考下文。
一、挂载磁盘
1、登录linux系统
2、挂载FTP服务器的磁盘为备份目录
执行脚本:
mount -t cifs -o "rw,dir_mode=0777,file_mode=0777,username=**db,password=**db@v1P,vers=2.0" //172.*.*.*/BACKUP/OADB /usr/local/databackup
二、编写数据库备份脚本
1、查看数据库版本
通过账号oralce登录linux系统,执行指令$ sqllpus /as sysdba
2、查看数据库环境变量
执行指令$ cat .bash_profile查看数据库环境变量
3、编写数据库备份脚本
执行指令# vim backup.sh编写备份脚本
#!/bin/bash
. /etc/profile
. ~/.bash_profile
days=$(date '+%Y%m%d')
#echo $days
echo 执行数据库备份任务
#备份数据
expdp ***user/******188# directory=datadir dumpfile=OA_$days.dmp logfile=OA_$days.log schemas=***user compression=ALL
cd /usr/local/databackup
# tar命令打包并删除原文件
tar -zcvf OA_$days.tar.gz OA_$days.dmp OA_$days.log --remove-files
#删除10天前的备份数据
find /usr/local/databackup -name "*.*" -mtime +10 -exec rm -rf {} \;
echo 任务完成!
三、制订备份计划
1、执行指令# crontab –e编写备份计划
执行指令# crontab -u username -e
编写计划任务脚本如下:
30 02 * * * sh /usr/local/backup/backup.sh
备注:上述计划任务意为每天凌晨2:30执行/usr/local/backup/backup.sh备份脚本。
格式说明:第1列为分钟,0~59;第2列为小时,0~23;第3列为日期,1~31;第4列为月份,1~12;第5列为星期,0~7(0和7表示星期天);第6列为要运行的命令(如果有多个命令用 && 隔开)。
2、crontab命令使用说明
crontab命令格式如下:
crontab [-u user] [ -e | -l | -r ]
备注:命令参数
-u user:用来设定某个用户的crontab服务,例如,“-u xyz”表示设定xyz用户的crontab服务,此参数一般由系统管理员账号root运行。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
四、备份测试
执行指令# sh backup.sh进行备份测试。如下图
五、查看数据库的DIRECTORY
说明:如果测试过程出现expdp导出提示ORA-39002和ORA-39070的错误。如下图
解决办法:一般是数据库的DIRECTORY路径有问题,执行以下命令
SQL> col OWNER format a6
SQL> col DIRECTORY_NAME for a20
SQL> col DIRECTORY_PATH for a30
SQL> select * from dba_directories;
检查datadir路径是否对应系统目录/usr/local/databackup。