oracle之三rman 完全恢复
rman 完全恢复
8.1 recover 恢复:
1)归档 : 完全恢复和不完全恢复
2)非归档:只能恢复到最后一次备份状态(还原)
8.2 完全恢复:
----先对数据库做一个备份(如果是archived模式就做热备)
换一种形式,我们将下面的run{}写到linux的脚本中,叫做/u01/oradata/timran11g/myrman.rcv
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database format '/u01/myrman/%d_%s.bak';
}
然后以rman登录时执行这个脚本。语法如下:
rman target / @/u01/oradata/timran11g/myrman.rcv
可以监控RMAN备份,RMAN使用字符串rman 和通道名称填充v$session中client_info列,每个RMAN通道有一行信息, 备份结束后进程信息
消失.也可以使用 set command id to 'XXX'做一个标识,再结合v$session观察通道和进程之间的对应关系。
SQL>
select sid,spid,client_info from v$process p join v$session s on (p.addr=s.paddr)
where client_info like 'rman%';
SID SPID CLIENT_INFO
---------- ------------------------ ----------------------------------------------------------------
113 12992 rman channel=ORA_DISK_1
111 12995 rman channel=ORA_DISK_2
范例1:system表空间损坏,使用EM的DRA恢复
1)在线删除system01.dbf,模拟关键表空间损坏,然后启动数据库,报system01.dbf读写错误
[oracle@timran ~]$ rm /u01/oradata/timran11g/system01.dbf
SQL> startup froce
2) 使用EM恢复...
范例2:恢复表空间(数据库open状态)。因非关键数据文件介质损坏,需要将其表空间恢复到一个新的物理位置。
1)环境
create table scott.t1(id int);
insert into scott.t1 values(1);
commit;
2)模拟users表空间损坏,删除数据文件。
[oracle@timran ~]$ rm /u01/oradata/timran11g/users01.dbf
3) 清除db buffer ,查证访问数据文件失败
SQL> alter system flush buffer_cache;
SQL> alter system checkpoint; //实验中为防备rman登录不正常,可以尝试先做个检查点切换
4)建个目录,假设介质损坏了,更换需要时间,先把数据文件恢复到一个新的目录下(不同的物理位置),
[oracle@timran timran11g]$ mkdir /u01/oradata/timran11g/dir1
5)使用RMAN恢复表空间
RMAN>run{
sql 'alter database datafile 4 offline';
set newname for datafile 4 to '/u01/oradata/timran11g/dir1/users01.dbf';
restore tablespace users;
switch datafile 4;
recover tablespace users;
sql 'alter database datafile 4 online';
}
说明:
set newname for 告诉RMAN还原数据文件的新位置在哪里。这个命令在restore前出现。
switch datafile 更新controlfile,记录这个新位置。这个命令要在recover前出现。
5)验证
SQL> select * from scott.t1;
ID
----------
1
6)待介质更换完成后,可以将表空间迁移回原来位置。
SQL> alter tablespace users offline;
[oracle@timran11g]mv /u01/oradata/timran11g/dir1/users01.dbf /u01/oradata/timran11g
SQL>alter tablespace users rename datafile '/u01/oradata/timran11g/dir1/users01.dbf' to '/u01/oradata/timran11g/users01.dbf';
SQL> alter tablespace users online;
7)再验证
SQL> select * from scott.t1;
范例3:新建表空间(rman备份没有这个表空间),datafile被破坏
1)环境
SQL> create tablespace lx datafile '/u01/oradata/timran11g/lx01.dbf' size 5m;
SQL> create table scott.t2(id int) tablespace lx;
SQL> insert into scott.t2 values (1);
SQL> commit;
SQL> select * from scott.t2;
ID
----------
1
2) 删除t2表所在的数据文件
[oracle@timran ~]$rm /u01/oradata/timran11g/lx01.dbf
3)清除db buffer,查证访问数据文件失败。
SQL> alter system flush buffer_cache;
4)利用rman 恢复数据文件(注意:rman备份里没有lx01.dbf)
RMAN>run {
sql 'alter database datafile 7 offline';
restore datafile 7;
recover datafile 7;
sql 'alter database datafile 7 online';
}
5)验证
SQL> select * from scott.t2;
ID
----------
1
删除lx表空间,为了使数据库和RMAN备份一致
SQL> drop tablespace lx including contents and datafiles;
oracle之三rman 完全恢复的更多相关文章
- oracle之三rman 不完全恢复
rman 不完全恢复 9.1 rman 不完全恢复的三个标准模式:基于time.基于scn和基于sequence: 范例1:恢复过去某个时间点误操作,一般使用基于time或scn. 1)环境:有一套全 ...
- oracle之三RMAN概述
RMAN概述 6.1 rman的定义和功能: 1) Recovery Manager 2)建立备份和恢复的server process,在oracle server上做备份和恢复 3)rman 备份d ...
- oracle之三手工完全恢复
手工完全恢复 3.1 完全恢复:通过备份.归档日志.current log ,将database恢复到failure 前的最后一次commit状态. 3.2 完全恢复的步骤 1)restore: OS ...
- oracle之三rman 备份
rman 备份 7.1 归档方式下rman备份常用语法: 7.1.1 backup 备份 1)备份全库:1.1 RMAN> backup database format='/u01/myrman ...
- oracle之三rman 维护
rman 维护 11.1 rman 使用和维护 11.2 list 命令一览 1)RMAN> list backup; 2)RMAN> list backup of tablespace ...
- Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)
Oracle 数据库可以实现数据库不完全恢复与完全恢复.完全恢复是将数据库恢复到最新时刻,也就是无损恢复,保证数据库无丢失的恢复.而不完全恢复则是根据需要特意将数据库恢复到某个过去的特定时间点或特定的 ...
- Oracle—RMAN完全恢复
一.RMAN完全恢复的相关概念 1.在RMAN完全恢复中主要使用两个命令,一个是restore,另一个是recover. 2.可以在三个级别恢复,数据库,表空间,数据文件. 3.RMAN中应对于各种情 ...
- oracle数据库rman备份计划及恢复
1.rman完全恢复的前提条件:历史的datafile,controlfile和spfile备份,加上完整的archivelog和完好的redolog. 2.rman备份脚本: a.RMAN 0级备份 ...
- Oracle单机Rman笔记[5]---脱机异地还原
脱机异地还原(安装一个原环境相同的linux,并安装数据库,注意不要配置安装实例) .检查/home/oracle下的.bashrc .bash_profile内容是否与原环境一致(具体看情况而定), ...
随机推荐
- Java 语法 try catch使用容易忽略的细节 BigDecimal
try catch使用细节 一. try catch的使用方式容易理解,两者最终都要执行finally中的代码,而当return在try和catch中又会有什么效果? 如果我们做一个简单的例子就会发现 ...
- 文件上传控件bootstrap-fileinput中文设置没有效果的情况
1.引入zh.js顺序错误 zh.js需放到fileinput.js下面 2. 组件创建语法错误 (class=“file”) 如果你使用js初始化fileinput组件,那么在html元素中应删除 ...
- JavaScript中的正则表达式详解
摘要:javascript中的正则表达式作为相当重要的知识,本文将介绍正则表达式的相关知识和用法. 正则表达式(Regular Expression)是一门简单语言的语法规范,是强大.便捷.高效的文本 ...
- 2w字 + 40张图带你参透并发编程!
并发历史 在计算机最早期的时候,没有操作系统,执行程序只需要一种方式,那就是从头到尾依次执行.任何资源都会为这个程序服务,在计算机使用某些资源时,其他资源就会空闲,就会存在 浪费资源 的情况. 这里说 ...
- ms14-064漏洞复现
本博客最先发布于我的个人博客,如果方便,烦请移步恰醋的小屋查看,谢谢您! 这是我在实验室学习渗透测试的第五个漏洞复现,一个多小时便完成了.学长给的要求只需完成查看靶机信息.在指定位置创建文件夹两项操作 ...
- Windows 下mysqldump备份1045错误解决办法
一.我写的备份脚本如下 set d=%date:~0,4%%date:~5,2%%date:~8,2% C:\mysqldump -uroot -ptest@2018 --all-databases ...
- 单元测试利器Mockito框架
什么是Mock Mock 的中文译为仿制的,模拟的,虚假的.对于测试框架来说,即构造出一个模拟/虚假的对象,使我们的测试能顺利进行下去. Mock 测试就是在测试过程中,对于某些 不容易构造(如 Ht ...
- 科赫雪花利用python海龟绘图代码
#KochDraw.py import turtle //海龟绘图 def koch(size, n): if n == 0: turtle.fd(size) else: for angle in [ ...
- Redis秒杀实战-微信抢红包-秒杀库存,附案例源码(Jmeter压测)
导读 前二天我写了一篇,Redis高级项目实战(点我直达),SpringBoot整合Redis附源码(点我直达),今天我们来做一下Redis秒杀系统的设计.当然啦,Redis基础知识还不过关的,先去加 ...
- k8s-1.15.0集群部署+dashboard
环境:外网环境硬件master-centos7.4 2核4G node1-centos7.4 2核4Gnode2-centos7.4 2核4G软件:三台服务器 :docker-19. ...