自动备份oracle数据库

windows

制作脚本

​ 新建一个.txt文本文件,将以下指令复制过去并进行修改。完成后保存,并将文本文件的后缀名改为.bat,文件类型将会变成“Windows 批处理文件”。

@echo on
@REM 用于oracle数据自动备份
REM oracle开始备份

REM 备份位置
set prefix=D:\bk

set yyyy=%date:~0,4%
set /a last=%yyyy%-1
set lastdel= %prefix%%last%
set mm=%date:~5,2%
set dd=%date:~8,2%
set dest=%prefix%\%yyyy%\%mm%\
set name=%dest%%yyyy%_%mm%_%dd%.dmp
if not exist %dest% md %dest%
REM 删除旧的备份
if exist %lastdel% rmdir /s/q %lastdel%
REM 开始备份
exp account/password@127.0.0.1/ORCL indexes=n statistics=none file=%name%

设置定时任务

  1. 打开“任务计划程序”窗口。

    win + R 输入 taskschd.msc 打开“任务计划程序”

    右击“计算机”,点击“管理”进入任务计划程序界面。

Snipaste_20210325_140342.png

  1. 创建基本任务

Snipaste_20210325_140433.png

填入任务基本信息

Snipaste_20210325_140611.png

选择备份的时间周期

Snipaste_20210325_140628.png

选择备份时间

Snipaste_20210325_140642.png

执行的操作

Snipaste_20210325_140654.png

选择需要执行的脚本

Snipaste_20210325_140720.png

创建完成后,可以在“任务计划程序库”看到该条任务

Snipaste_20210325_140822.png

CentOS

以下是Centos 7下,Oracle 11G备份流程: 首先得用ORACLE帐户建一个文件夹用于存放备份文件(建在那个位置你自己决定) mkdir –p /home/oracle/backup 设置文件夹权限为oinstall用

以下是Centos 7下,Oracle 11G备份流程:

建立存放文件夹

首先得用ORACLE帐户建一个文件夹用于存放备份文件(建在那个位置你自己决定)

mkdir –p /home/oracle/backup

设置文件夹权限为oinstall用户组的oracle用户

chown–R oracle:oinstall /home/oracle/backup

创建目录对象,切换到Oracle用户下

su oracle

进入SQLPLUS环境

sqlplus / as sysdba

进入环境后,制定EXPDP输出目录

create directory expdp_bak_dir as ‘/home/oracle/backup’;

授予SYSTEM权限

grant create any directory to system;

在oracle用户下创建脚本文件,进入home/oracle目录下创建(或者可以选择别的地方创建)

touch autobackup.sh

编辑文件

vim autobackup.sh

在autobackup.sh这个文件内输入以下命令(把以下中文注释部分去掉即可)

以下这段是路径改成自己的即可  
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=/home/oracle/product/11.2.0/dbhome_1
export ORACLE_SID="orcl"
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=/home/oracle/backup

时间
rq=`date +%Y%m%d`

清除1 month ago指一个月之前的,可以改成自己所需的
cleardate=`date -d "1 month ago" +%Y%m%d`
这个是清除指令   
rm -rf /home/oracle/backup/ERP$rq.dmp

导出数据,compression=all为压缩,这里的压缩不是文件压缩,而是数据压缩,也可以去掉
expdp 帐号/密码@库名 dumpfile=ERP$rq.dmp logfile=ERP$rq.log directory=expdp_bak_dir schemas=库名 compression=all

最后按ESC然后:号wq保存退出

建立计划任务

建一个计划任务

crontab -e

内容为

30 23 * * * /home/oracle/autobackup.sh

每天23点30分执行这个脚本,具体可以根据个人需求而定

*****command
取值范围 0 - 59取值范围 0 - 23取值范围 1 - 31取值范围 1 - 12取值范围 0 - 7需要执行的命令
分钟小时几号月份星期几

编辑好后,按ESC然后:号wq保存,可以按crontab -l查看计划任务

数据恢复

同上,还是进入SQLPLUS环境

然后执行指令

impdp 用户/密码 directory=expdp_dir dumpfile=备份文件.dmp logfile=ERP.log;