自动备份oracle数据库

windows

制作脚本

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

basic
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
@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 打开“任务计划程序”

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

  1. 创建基本任务

填入任务基本信息

选择备份的时间周期

选择备份时间

执行的操作

选择需要执行的脚本

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

CentOS

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

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

建立存放文件夹

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

dos
  • 01
mkdir –p /home/oracle/backup

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

dos
  • 01
chown–R oracle:oinstall /home/oracle/backup

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

dos
  • 01
su oracle

进入SQLPLUS环境

dos
  • 01
sqlplus / as sysdba

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

dos
  • 01
create directory expdp_bak_dir as ‘/home/oracle/backup’;

授予SYSTEM权限

dos
  • 01
grant create any directory to system;

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

dos
  • 01
touch autobackup.sh

编辑文件

dos
  • 01
vim autobackup.sh

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

dos
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
以下这段是路径改成自己的即可 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保存退出

建立计划任务

建一个计划任务

dos
  • 01
crontab -e

内容为

dos
  • 01
30 23 * * * /home/oracle/autobackup.sh

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

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

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

数据恢复

同上,还是进入SQLPLUS环境

然后执行指令

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