天天看点

Linux系统中的Oracle数据异地备份之OA系统数据备份

简介:本文主要介绍Linux系统中OA系统的Oracle数据库进行备份并异地存储的过程。涉及的内容包括:磁盘挂载、数据备份脚本编写,数据备份的清洗等内容。

详细情况请参考下文。

一、挂载磁盘

1、登录linux系统

Linux系统中的Oracle数据异地备份之OA系统数据备份

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

Linux系统中的Oracle数据异地备份之OA系统数据备份

二、编写数据库备份脚本

1、查看数据库版本

通过账号oralce登录linux系统,执行指令$ sqllpus /as sysdba

Linux系统中的Oracle数据异地备份之OA系统数据备份

2、查看数据库环境变量

执行指令$ cat .bash_profile查看数据库环境变量

Linux系统中的Oracle数据异地备份之OA系统数据备份

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 任务完成!

Linux系统中的Oracle数据异地备份之OA系统数据备份

三、制订备份计划

1、执行指令# crontab –e编写备份计划

执行指令# crontab -u username -e

Linux系统中的Oracle数据异地备份之OA系统数据备份

编写计划任务脚本如下:

30 02 * * * sh /usr/local/backup/backup.sh

Linux系统中的Oracle数据异地备份之OA系统数据备份

备注:上述计划任务意为每天凌晨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进行备份测试。如下图

Linux系统中的Oracle数据异地备份之OA系统数据备份

五、查看数据库的DIRECTORY

说明:如果测试过程出现expdp导出提示ORA-39002和ORA-39070的错误。如下图

Linux系统中的Oracle数据异地备份之OA系统数据备份

解决办法:一般是数据库的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。