查看原文
其他

RMAN备库还原|找正确的男人|荐号

高永亮 说点特别的 2018-12-06

本文大概

3500字

阅读需要

7分钟

Oracle下RMAN备库还原

很久没更新技术贴了,是因为后来越来越觉得一辈子不能光靠技术吃饭,T字型原理,前期注重画好这一竖,后期应该画好最后一横。换句话说就是前期注重精度,后期注重广度。最近项目中刚好需要,故整理了一下文档,分享在这里,方便你们。(如有需要,请在公众号消息框中输入备份还原领取)。

RMAN备份


RMAN顾名思义,right man 。找正确的男人。备份为物理备份,启用rman备份必须开启数据库归档,开启归档后相当于给数据库加了一层双保险。Rman备份主要备份数据库的数据文件,控制文件,归档日志。


1、 检查数据库是否启用归档状态。服务器上在Cmd下用sysdba身份登录(Linux

上也一样)。查询数据库是否启用归档模式。

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;--启动数据库

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

创建用户的数据表空间:

Create tablespace rman_ts datafile ‘E:appAdministratororadataydhldb man_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;

3、接下来即可创建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天之前的备份数据。


linux下的脚本:(可灵活定义)


4、将以上内容保存到记事本,命名backup_rman.rman。保留至一个固定路径,如图。保留在C:UsersAdministratorDesktopRman。


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

set ORACLE_SID=YDHLDB

RMAN TARGET / LOG C:UsersAdministratorDesktopRmanlogsak_%date%.log CMDFILE=C:UsersAdministratorDesktopRmanackup_rman.rman

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


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


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


如图:

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

备份完成。


RMAN还原


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

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

在cmd下执行rman target /

Rman 下执行 shutdown immediate;

Startup mount;

Restore database;

Recover database;

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

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

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

 RMAN还原数据库到任一时刻内


启动数据库到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';

还原完成。

推荐几个值得关注的大牛公众号

PM 小 曹

▲长按图片识别二维码关注


整合项目管理知识集锦以及技术干货、职场经验心得,每日为您呈现你想看到的和你想知道的精品文章,与您一起随时随地学习新知识、分享新经验,让您的成长之路不再孤单,小编随时欢迎各位小伙伴关注交流。



猿 媛 牧 场

▲长按图片识别二维码关注


吃好晚饭看新闻,听我小胖讲IT。猿/媛的生活百态、资源共享、原创内容、工作经验、面试技巧等。《猿媛恋》为单身猿媛提供一个机会。《猿食记》提供/接受猿媛们的美食日记。 每月至少一次送书福利。这里聚集了BAT、JD、世界500强的技术大牛们。快来关注我们吧~让我们的生活不在因 code 而 code。



成 猿 之 路

▲长按图片识别二维码关注


一个分享编程技术,电脑技术和读者福利共存的公众号,每天给大家分享实用的编程技术,优秀文章,开源项目,实用工具,热门电影。我们的target就是做最好的推送平台,服务热爱技术的你们。欢迎关注老铁!



程 序 圈 LT

▲长按图片识别二维码关注


程序圈LT ,是个有态度、有梦想的公众号,致力于分享Android、Java技术文章、面试经验、职业道路发展等文章,以及珍藏的视频资源、送书福利等。我们的态度是:每天进步一点点,理想终会被实现。欢迎志同道合的老铁关注。



Python_Rick


▲长按图片识别二维码关注


世与俗,致敬之。我们有太多的僵化思维,它在我们的认知体系中加入太多错误的东西,继而连微小的进步都变得极其困难。让菜鸟的我们认识自己,继续思考下去。



暗 星 涌 动

▲长按图片识别二维码关注


在这里,一切皆有可能。编程技术,学习资源,优秀文章,实用工具,生活经验,在这里你都能有所收获。暗星涌动,期待你的关注。



程 序 员 阿 凯

▲长按图片识别二维码关注


阿凯不错,来自成都的非著名程序员,专注Java开发,懂点大数据分析。这里有我的学习笔记,资料分享,面试经验,工作心得,人生思考...感谢你的关注,让我们一起实现人生的小目标吧。



高 永 亮 的 笔 记 大 全

▲长按图片识别二维码关注


一名不羁的it砖瓦工,不只有coding!听我讲故事「有位置,来,搬个小板凳,喝酒听故事!」,认真扯淡,认真生活!


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存