博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle下rman备份和还原到数据库任意一个时间点
阅读量:5140 次
发布时间:2019-06-13

本文共 2708 字,大约阅读时间需要 9 分钟。

 

 

 

Rman备份为物理备份,启用rman备份必须开启数据库归档,开启归档后相当于给数据库加了一层双保险。Rman备份主要备份数据库的数据文件,控制文件,归档日志。

 

 RMAN 备份

一、 检查数据库是否启用归档状态。服务器上在Cmd下用sysdba身份登录。查询数据库是否启用归档模式。

 

Sqlplus / as sysdba

 

Select dbid,name,log_mode from v$database;

如果log_mode处于archivelog状态则代表已经处于归档状态。

如果处于noarchivelog模式则代表非归档,此时需要用sysdba身份开启数据库归档,依次步骤如下:

Shutdown immediate--关闭实例和数据库

Startup mount;--启动实例,不开启数据库

Alter database archivelog;---更改非归档为归档

 

Alter database open;--启动数据库

一、 创建RMAN用户,RMAN用户的表空间,授权,创建恢复目录,注册数据库。步骤依次如下:

创建用户的数据表空间:

Create tablespace rman_ts datafile ‘E:\app\Administrator\oradata\ydhldb\rman_ts.dbf’ sise 200M;

创建用户并授权:

Create user rman identified  by rman tablespace rman_ts temporary tablespace temp;

Grant connect ,recovery_catalog_owner,resource to rman;

创建恢复目录

Rman catalog rman/rman target ydhldb;

Create catalog tablespace rman_ts;

接下来即可创建RMAN的run块的配合批处理命令,内容如下:run {backup database format 'D:/backup/rman_full_db_%T_%U.dbf';configure controlfile autobackup format for device type disk to 'D:/backup/rman_full_conf_%F.ctl';configure retention policy to recovery window of 7 days;crosscheck backupset;delete noprompt expired backupset;backup spfile format 'D:/backup/rman_full_sp_%T_%U.dbf';backup archivelog all format 'D:/backup/rman_full_arc_%T_%U.dbf';crosscheck archivelog all; delete noprompt archivelog all completed before 'sysdate-7'; delete noprompt obsolete;}代表全库备份数据文件,控制文件以及归档日志,因国庆最长假期为7天,故只保留7天备份,并自动删除7天之前的备份数据。将以上内容保存到记事本,命名backup_rman.rman。保留至一个固定路径,如图。保留在C:\Users\Administrator\Desktop\Rman。

接下来需要拟写批处理去自动调取rmanrun块内容。保留至同一路径内容如下:

set ORACLE_SID=YDHLDB

RMAN TARGET / LOG C:\Users\Administrator\Desktop\Rman\logs\bak_%date%.log CMDFILE=C:\Users\Administrator\Desktop\Rman\backup_rman.rman

将这段内容单独写成批处理,后缀为.BAT格式。并建立logs文件夹,用于存放RMAN备份时的日志。Bat批处理中已经配置了日志路径。如下图:

此时即可采用win上的计划任务排程来调用RMAN批处理来备份数据库了,生产库建议一天一备,放于半夜23点执行。 如下图:

设置完成后,即可半夜执行备份数据库。

如图:

备份后:d盘的backup文件夹下生成了备份,如图:

此时备份完成。

 

RMAN还原

 

如果现场数据库故障,出现奔溃,则采用RMAN进行还原。还原时RMAN会自动选择就近的备份去进行还原并且还原时RMAN 会去自动识别备份片及通道。还原过程如图:

还原的时候数据库必须启动到mount状态,在open状态下会报错无法获取队列。

cmd下执行rman target /

Rman 下执行 shutdown immediate;

Startup mount;

Restore database;

 

 

Recover database;

 

 

此时还原完成,开启数据库。

 

 

注意:rman在还原时对应两个操作,数据库修复restore和数据库恢复recoverrestorerecover的区别,先restorerecoverrestore为修复,recover为恢复。

Restore时会利用建立的恢复目录来获取备份信息从而选择去获取备份信息。 Recover是将数据库恢复到奔溃前的状态,采用介质恢复的形式,恢复过程中主要应用归档和redo日志。

 

—————————————————————————RMAN还原数据库到任意一个时间点——————————————————————————————————

1、 启动数据库到mount状态。依次步骤如下:

Shutdown immediate;

Startup mount;

sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";

restore database until time '2018-02-23 14:00:00';

recover database until time '2018-02-23 14:00:00';

sql 'alter database open resetlogs';

 

还原完成。

转载于:https://www.cnblogs.com/tigergaonotes/p/11086673.html

你可能感兴趣的文章
LeetCode 538. Convert BST to Greater Tree
查看>>
@JoinColumn
查看>>
22_传智播客iOS视频教程_类的定义
查看>>
HDU 1856
查看>>
[HDU 2102] A计划(搜索题,典型dfs or bfs)
查看>>
推荐给4.3.3越狱用户的安全漏洞修复工
查看>>
用HTML的select+option标签实现下拉框
查看>>
[改善Java代码]asList方法产生的List对象不可更改
查看>>
ACM题目————Find them, Catch them
查看>>
LeetCode Weekly Contest 119
查看>>
Angular2-之开发环境搭建/调试环境配置
查看>>
DDA, Bresenham line's algorithm and Voxel Traversal used in the Grid-Accelerator in PBRT
查看>>
执行p4 submit后,perl文件丢了可执行属性
查看>>
数字电路中表示频率误差的ppm是什么意思?
查看>>
获取当前焦点所在元素
查看>>
11.8输入一个整数,求它是几位数
查看>>
你不知道的parseInt
查看>>
python基础之python基本数据类型
查看>>
vue中-webkit-box-orient:vertical打包放到线上不显示
查看>>
[Swift通天遁地]一、超级工具-(20)图片面部聚焦:使图像视图自动聚焦图片人物的面部位置...
查看>>