oracle 定时备份恢复操作手册

系统环境

  • 服务器系统版本为centos7 64位
  • oracle版本11gR2
源服务器1:192.168.1.2
	源服务器2: 192.168.1.3
	目标服务器:192.168.1.4
  • 两台oracle服务器

1、设置数据库启动模式为归档模式

1.1 查看数据库是否为归档模式

archive log list;
在这里插入图片描述

1.2 启动归档模式

SQL> shutdow immediate;

在这里插入图片描述

1.2.2 启动mount模式

SQL> startup mount;

在这里插入图片描述

1.2.3 设置归档模式

SQL> ALTER DATABASE ARCHIVELOG;

在这里插入图片描述

1.2.4 查看归档状态

SQL> archive log list;

在这里插入图片描述

2 备份

2.1 设置备份目录

mkdir /oracle/backup

2.2 配置自动备份控制文件

开启自动备份控制文件

CONFIGURE CONTROLFILE AUTOBACKUP ON;

设置自动备份控制文件的路径

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/backup/controlfile_%F.bak';

2.3 配置文件过期策略

设置文件7天后过期

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

2.4 全量备份

备份内容:数据文件、归档日志文件、参数文件、控制文件
使用RMAN连接目标数据库

$rman target /

备份参数文件

RMAN> backup spfile format '/oracle/backup/spfile_%T.bak';

备份数据库数据文件和归档日志文件

RMAN> backup incremental level 0
RMAN> database format '/oracle/backup/db_level0_%T_%U.bkp'
RMAN> plus archivelog format '/oracle/backup/archivelog_level0_%T_%U.bkp' delete input;

因为设置了自动备份控制文件,所以会自动生成备份文件到指定目录,无需手动备份。

2.5 增量备份

手动增加几条数据到自建的库的表中
例如:insert into t1 values(1,‘test’,222);commit;
备份增量数据文件和归档日志文件

RMAN> backup incremental level 1
RMAN> database format '/oracle/backup/db_level1_%T_%U.bkp'
RMAN> plus archivelog format '/oracle/backup/archivelog_level1_%T_%U.bkp' delete input;

3、全量恢复

3.1 将数据文件、参数文件、归档日志文件、控制文件拷贝到目标机器下的备份目录
#rsync -azvp * 139.224.17.170:/oracle/backup/

在这里插入图片描述

3.1 设置参数文件

将参数文件spfile拷到$ORACLE_HOME/dbs/并修改名字为.ora结尾的文件

cp spfile_20190530.bak /oracle/app/dbs/spfilezws.ora

将spfile文件转化成pfile文件
登录数据库

$sqlplus / as sysdba
SQL> create pfile from spfile;

生成pfile文件到默认目录下

在这里插入图片描述

3.1 设置DBID

关闭数据库

RMAN> shutdown immediate;

设置DBID
从源数据库查询DBID

在这里插入图片描述

设置DBID在新的数据库
RMAN>set dbid 4264323144;

3.2 启动数据库为nomount模式,默认以默认的pfile参数文件启动
RMAN>  startup nomount;  
Oracle 实例已启动
系统全局区域总计     780955648 字节
Fixed Size                     2257032 字节
Variable Size                553652088 字节
Database Buffers             201326592 字节
Redo Buffers                  23719936 字节
RMAN> startup nomount force;
Oracle 实例已启动
系统全局区域总计  213789655040 字节
Fixed Size                     2265864 字节
Variable Size              20937968888 字节
Database Buffers          192736657408 字节
Redo Buffers                 112762880 字节
3.3 恢复控制文件

RMAN> restore controlfile from '/oracle/backup/controlfile_c-4264323144-20190530-02.bak';

恢复成功后启动数据库为mount模式

RMAN> alter database mount;

3.4 恢复数据文件
RMAN>  restore database;
RMAN> recover database; 
启动 recover 于 23-9月 -16
使用通道 ORA_DISK_1
正在开始介质的恢复
通道 ORA_DISK_1: 正在开始将归档日志还原到默认目标
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=15
通道 ORA_DISK_1: 正在读取备份片段 /u01/backup/db_full_04rghdmh_1_1.bkp
通道 ORA_DISK_1: 段句柄 = /u01/backup/db_full_04rghdmh_1_1.bkp 标记 = 2011-09-23-FULL
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
归档日志文件名=/data/oracle/archivelog1_15_923216095.dbf 线程=1 序列=15
无法找到归档日志
归档日志线程=1 序列=16
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 09/23/2016 14:22:45 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 16 的归档日志以及起始 SCN 1051085

报错按下面执行步骤

SQL> conn /as sysdba  
SQL> recover database using backup controlfile until cancel; 
ORA-00279: 更改 1051085 (在 09/23/2016 13:12:49 生成) 对于线程 1 是必需的
ORA-00289: 建议: /data/oracle/archivelog1_16_923216095.dbf
ORA-00280: 更改 1051085 (用于线程 1) 在序列 #16 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00308: cannot open archived log '/data/oracle/archivelog1_16_923216095.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

SQL> alter database open resetlogs;
数据库已更改。

到此全量恢复已完毕

4 增量恢复

4.1 启动数据库为nomount模式
RMAN> shutdown immediate;
RMAN> startup nomount;
4.2 恢复最新的控制文件并启动为mount模式
RMAN> restore controlfile from '/oracle/backup/controlfile_c-4264323144-20190530-04.bak';
RMAN> startup mount;
4.3 查看scn最大的号

RMAN> list backup;

找到最后一个归档日志的最大scn号
在这里插入图片描述

4.4 恢复数据到该位置
RMAN> run {
 set until scn=1084796;
 restore database;
 recover database;
 }

成功后就恢复到最新数据库了
将数据库模式设置为open

SQL> alter database open resetlogs;

到此就恢复完毕

5 定时备份和异地备份

5.1 在两台源服务器上设置定时任务

登录139.224.43.135服务器上
切换到oracle用户

# su - oracle
$ crontab -l
0 1 * * * /data/script/oracle_bak_new.sh &> /dev/null

使用oracle用户进行每天凌晨1点的备份任务
切回root用户

# exit
# crontab -l
0 5 * * * /data/script/oracle_rsync.sh &> /dev/null

使用root用户进行每天5点的oracle数据传输任务,将输入传送到目标服务器
同理登录到47.100.94.8服务器上

# su - oracle
$ crontab -l
0 1 * * * /data/script/oracle_bak_new.sh &> /dev/null

使用oracle用户进行每天凌晨1点的备份任务
切回root用户

# exit
# crontab -l
0 8 * * * /data/script/oracle_rsync.sh &> /dev/null

使用root用户进行每天8点的oracle数据传输任务,将输入传送到目标服务器

5.2 将目标服务器的数据备份到异地服务器

登录到目标服务器

# crontab -l
0 12 * * * /data/script/oracle_rsync.sh

每天中午12点进行当天的数据文件异地灾备,将文件传输到192.168.1.4这台备份服务器上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值