linux下怎么定时备份oracle数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下怎么定时备份oracle数据库相关的知识,希望对你有一定的参考价值。

如果是sql server,定期备份可以利用sql server的management studio来做,比较方便。但要做oracle的定期备份,那就需要我们写导出命令,并设置linux的定时任务。
首先创建一个数据库作为测试。
--创建数据表空间
create tablespace test_data
logging
datafile '/u01/app/oradata/test/TEST.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;

--创建用户并指定表空间
create user TEST identified by 123
default tablespace test_data
temporary tablespace temp;

--给用户授予权限
grant connect,resource to TEST;
用Test用户登录,创建一个表,并插入两条数据:
create table t1(
Id varchar(50) primary key,
title varchar(50)
);

insert into t1 values(sys_guid(),'t1');
insert into t1 values(sys_guid(),'t2');
commit;
先写一个导出的脚本文件:
export ORACLE_BASE=/u01/app
export ORACLE_HOME=/u01/app/oracle
export ORACLE_SID=TEST
export PATH=$ORACLE_HOME/bin:$PATH
d=$(date '+%Y%m%d')
exp TEST/123@TEST file=/home/oracle/backup/$d.dmp log=/home/oracle/backup/$d.log owner=TEST
zip -m /home/oracle/backup/$d.zip /home/oracle/backup/$d.dmp /home/oracle/backup/$d.log
前4句是设置环境变量,因为crontab定时调用时,不会使用oracle用户的环境变量,所以要先把它们导进来。第6行以当前日期作为导出的文件名,例如20120626.dmp和20120626.log。第7行把这两个文件打成一个zip包,并删掉这两个文件。
要用chmod命令把这个sh标记为可执行:
chmod +x backup.sh

用oracle用户,输入crontab -e命令,编辑oracle用户的任务计划:
[oracle@localhost backup]$ crontab -e
42 13 * * * /home/oracle/backup/backup.sh
这样就添加了一个计划,在每天的13点42分运行/home/oracle/backup/backup.sh。

另外,每天运行完之后,会收到mail通知,可以在mail里看出到底有没有正确运行。
参考技术A 楼主您好
新建sh文件中写一个exp命令
然后执行个cronttab命令定时执行这个文件即可

CentOS7下Oracle的自动备份

概述

  Linux下Oracle自动备份就没有MSSQL那么简单,在Linux下Oracle的备份需要借助crontab 指令,crontab 能够自动执行系统定时任务,通过配置crontab 指向Oracle定时备份指令完成数据的定时备份。

编写脚本

1、编写数据库备份脚本文件(backup.sh)

#引进执行数据备份的环境

export ORACLE_BASE=/data/oracle
export ORACLE_HOME=/data/oracle/product/11.2.0/db_1
export ORACLE_SID=MLUCDB
export PATH=$ORACLE_HOME/bin:$PATH

rq=$(date +%Y%m%d)
expdp hao123/[email protected] dumpfile=/data/back/$rq.dmp
zip -m /data/backup/$rq.zip /data/backup/$rq.dmp

2、编辑脚本文件为可执行文件

chmod +x /data/oracle_back.sh

3、编写定时任务crontab脚本

[[email protected] data]# crontab -e
42 16 * * * /data/oracle_back.sh

#每天的16点42分自动执行脚本文件

4、跟踪执行结果

tail -f /var/log/cron  #跟踪查询定时任务是否执行
cat /var/spool/cron/root #查询root下有那些定时任务

5、待续问题

 crontab执行完成可以发送Email,该功能的具体配置,还没研究....

以上是关于linux下怎么定时备份oracle数据库的主要内容,如果未能解决你的问题,请参考以下文章

Linux下自动备份Oracle数据库并删除指定天数前的备份

Linux下Oracle定时自动备份方案

Linux下定时备份数据库

CentOS7下Oracle的自动备份

ORACLE自动备份-压缩格式,定期删除.bat

linux系统下mySQL数据库 备份方法和脚本?