Oracle Recovery 02 - 常规恢复之不完全恢复
背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份。
实验环境:RHEL6.4 + Oracle 11.2.0.4 单实例.
- 2.1 重做日志文件丢失或损坏
- 2.2 重做日志文件,数据文件丢失或损坏
- 2.3 控制文件丢失或损坏
- 2.4 控制文件,数据文件丢失或损坏
- 2.5 控制文件,重做日志文件,数据文件丢失或损坏
- 2.6 控制文件,重做日志文件丢失或损坏
- 2.7 控制文件,重做日志文件,参数文件丢失或损坏
- 2.8 控制文件,重做日志文件,参数文件,数据文件丢失或损坏
- 2.9 把数据库恢复到某个SCN
- 2.10 把数据库恢复到某个时间点
- 2.11 表空间基于时间点的恢复
二、常规恢复之不完全恢复:部分数据丢失
Oracle 数据库常规恢复的几个概念:
常规恢复之完全恢复:不丢失数据。
比如数据文件丢失,临时文件丢失,参数文件丢失。可以通过RMAN备份完全恢复数据库。
示例:Oracle Recovery 01 - 常规恢复之完全恢复
常规恢复之不完全恢复:部分数据丢失。
一般是有控制文件或是在线重做日志文件丢失。通过RMAN备份恢复,resetlogs会导致丢失数据。
示例:Oracle Recovery 02 - 常规恢复之不完全恢复
注意事项:每次不完全恢复完成后,按照规范,数据库应立即做一次全备,防止意外发生。
/bin/bash /usr2/backupsh/full_backup.rman
2.1 重做日志文件丢失或损坏
启动数据库报错:
SQL> startup
ORACLE instance started.
Total System Global Area 1620115456 bytes
Fixed Size 2253704 bytes
Variable Size 939527288 bytes
Database Buffers 671088640 bytes
Redo Buffers 7245824 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u02/oracle/JINGYU/onlinelog/o1_mf_1_bwjsmn50_.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-00312: online log 1 thread 1: '/u02/oracle/JINGYU/onlinelog/o1_mf_1_bwjsmn1l_.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
恢复方法:
SQL> shutdown immediate
SQL> startup mount
SQL> recover database until cancel;
SQL> alter database open resetlogs;
恢复完成后,数据库做一次全备。
2.2 重做日志文件,数据文件丢失或损坏
### 启动数据库报错: ###
SQL> startup
ORACLE instance started.
Total System Global Area 1620115456 bytes
Fixed Size 2253704 bytes
Variable Size 939527288 bytes
Database Buffers 671088640 bytes
Redo Buffers 7245824 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1:
'/u02/oracle/JINGYU/datafile/o1_mf_system_bwjsmpcw_.dbf'
恢复方法:
RMAN> restore database;
SQL> recover database until cancel;
SQL> alter database open resetlogs;
# DRA建议:database point-in-time recovery
RMAN> restore database until scn 344834;
RMAN> recover database until scn 344834;
RMAN> alter database open resetlogs;
恢复完成后,数据库做一次全备。
2.3 控制文件丢失或损坏
启动数据库报错:
SQL> startup
ORACLE instance started.
Total System Global Area 1620115456 bytes
Fixed Size 2253704 bytes
Variable Size 939527288 bytes
Database Buffers 671088640 bytes
Redo Buffers 7245824 bytes
ORA-00205: error in identifying control file, check alert log for more info
恢复方法:
查看alert.log, 是否所有的控制文件都丢失了?
第一种情况:并非所有的控制文件都丢失
这种情况其实并不算是不完全恢复,因为并没有丢失控制文件的信息。
可以直接从完好的控制文件拷贝到初始化参数文件中指定的控制文件的各个路径。
第一种情况恢复方法:
cp xxx01.ctl xxx02.ctl
SQL> alter database mount;
SQL> alter database open;
第二种情况:所有的控制文件都丢失
那么就只能从RMAN备份中恢复控制文件。
第二种情况恢复方法:
RMAN> restore controlfile from '/u02/BACKUP/20150812/controlfilec-3589019315-20150812-07';
RMAN> alter database mount;
RMAN> recover database;
RMAN> alter database open resetlogs;
恢复完成后,数据库做一次全备。
2.4 控制文件,数据文件丢失或损坏
启动数据库报错:
SQL> startup
ORACLE instance started.
Total System Global Area 1620115456 bytes
Fixed Size 2253704 bytes
Variable Size 939527288 bytes
Database Buffers 671088640 bytes
Redo Buffers 7245824 bytes
ORA-00205: error in identifying control file, check alert log for more info
恢复方法:
RMAN> restore controlfile from '/u02/BACKUP/20150812/controlfilec-3589019315-20150812-07';
RMAN> alter database mount;
RMAN> restore database;
SQL> recover database using backup controlfile until cancel;
cancel
SQL> alter database open resetlogs;
恢复完成后,数据库做一次全备。
2.5 控制文件,重做日志文件,数据文件丢失或损坏
参考`2.4 控制文件,数据文件丢失或损坏`。
恢复完成后,数据库做一次全备。
2.6 控制文件,重做日志文件丢失或损坏
参考`2.3 控制文件丢失或损坏`,如果是控制文件有其他备份,同时参考`2.1 重做日志文件丢失或损坏`。
恢复完成后,数据库做一次全备。
2.7 控制文件,重做日志文件,参数文件丢失或损坏
启动数据库报错:
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/initjingyu.ora'
恢复方法:
#恢复参数文件:
vi /u01/app/oracle/product/11.2.0/db_1/dbs/initjingyu.ora
SQL> startup pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initjingyu.ora'
RMAN> restore spfile from '/u02/BACKUP/20150813/controlfilec-3589191014-20150813-0b';
RMAN> shutdown immediate;
RMAN> startup nomount;
#恢复控制文件
RMAN> restore controlfile from '/u02/BACKUP/20150813/controlfilec-3589191014-20150813-0b';
RMAN> alter database mount;
#恢复数据库
RMAN> restore database;
SQL> recover database using backup controlfile until cancel;
auto
SQL> recover database using backup controlfile until cancel;
cancel
SQL> alter database open resetlogs;
##DRA的建议(启动到mount后,恢复到SCN 834531,测试也可行)
RMAN> restore database until scn 834531;
RMAN> recover database until scn 834531;
RMAN> alter database open resetlogs;
恢复完成后,数据库做一次全备。
2.8 控制文件,重做日志文件,参数文件,数据文件丢失或损坏
参考`2.7 控制文件,重做日志文件,参数文件丢失或损坏`。
恢复完成后,数据库做一次全备。
2.9 把数据库恢复到某个SCN
误操作truncate了表:
SQL> create table t_scn as select * from user_objects;
Table created.
SQL> select count(1) from t_scn;
COUNT(1)
----------
4
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1025158
SQL> truncate table t_scn;
Table truncated.
SQL> select count(1) FROM T_SCN;
COUNT(1)
----------
0
注意:这里用到的select dbms_flashback.get_system_change_number from dual;,在现实情况这个scn或者下面的时间点都是需要通过Logmnr分析日志获取的。
关于Logmnr的使用,后续会单独整理一篇文章。
恢复方法:
run {
shutdown immediate;
startup mount;
allocate channel c1 type disk;
allocate channel c2 type disk;
set until scn 1025158;
restore database;
recover database;
alter database open resetlogs;
}
验证t_scn的表记录已经恢复回来:
SQL> select count(1) from t_scn;
COUNT(1)
----------
4
恢复完成后,数据库做一次全备。
2.10 把数据库恢复到某个时间点
误操作truncate了表:
SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
2015-08-14 10:10:16
SQL> select count(1) from t_scn;
COUNT(1)
----------
4
SQL> truncate table t_scn;
Table truncated.
恢复方法:
run {
shutdown immediate;
startup mount;
allocate channel c1 type disk;
allocate channel c2 type disk;
sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
set until time '2015-08-14 10:10:16';
restore database;
recover database;
alter database open resetlogs;
}
恢复完成后,数据库做一次全备。
2.11 表空间基于时间点的恢复(TSPITR)
参考:表空间基于时间点的恢复(TSPITR)
恢复完成后,数据库做一次全备。
Oracle Recovery 02 - 常规恢复之不完全恢复的更多相关文章
- Oracle Recovery 01 - 常规恢复之完全恢复
背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份. 实验环境:RHEL6.4 + Oracle 11.2.0.4 DG primary. 一.常规恢复之完全恢复:不丢失数据 1.1 单 ...
- 本文将详细介绍oracle 10g OEM常规错误
本文将详细介绍oracle 10g OEM常规错误-------Unknown host specified解决方法,需要了解的朋友可以参考下 详细出处参考:http://www.jb51.net/a ...
- Oracle数据库02
EXISTS子查询 特征:将主查询中的数据带到子查询中进行验证,如果验证成功则子查询返回true,当主查询接收到true的时候被验证的数据就显示,如果在子查询中验证失败则返回false,当主查询接收到 ...
- Oracle recovery manager failed to restore
解决办法: 1:清理过期失效的备份, 2:增加recovery_file_dest_size参数值即可: SQL> show parameter db_recover NAME ...
- Oracle案例02——ORA-12034: "SCOTT"."USER_TABLE" 上的实体化视图日志比上次刷新后的内容新
最近同事在交接工作时,发现有几个schedule job没有执行成功,我这边给看了下,其中一个是由于数据库迁移,调用dblink的host主机IP在tnsnames中没有变更导致,还有一个是无法视图的 ...
- Oracle基础 02 临时表空间 temp
--查看临时文件的使用/剩余空间 SQL> select * from v$temp_space_header; --查看SCOTT用户所属的临时表空间 SQL> select usern ...
- Oracle使用中的常规操作总结
写一篇在使用Oracle过程中一些常用的操作,以便于忘记的时候查看 一.创建用户和给用户赋予权限 create user 用户名 identified by 密码; --12c一下版本 create ...
- OCP考点实战演练01-备份恢复篇
本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练01-备份恢复篇 1.数据库开启归档 2. ...
- Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)
Oracle 数据库可以实现数据库不完全恢复与完全恢复.完全恢复是将数据库恢复到最新时刻,也就是无损恢复,保证数据库无丢失的恢复.而不完全恢复则是根据需要特意将数据库恢复到某个过去的特定时间点或特定的 ...
随机推荐
- C代码实现数组
直接上代码,没有什么说的 # include <stdio.h> # include <malloc.h> # include <stdlib.h> //用C实现数 ...
- System.Dynamic.ExpandoObject 类型的简单使用
该类型可以实现的是动态添加属性和移除属性,有点类似 js 中对象的操作,非常灵活 static void Main(string[] args) { dynamic obj = new System. ...
- 2016/11/16 周三 <Web SQL Database基本使用方法(入门) >
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- 今年第一季全球PC出貨量同比下降5.2%
市場調研公司Gartner上周發佈報告稱,隨著企業支出的下滑,今年第一季全球PC出貨量同比下降5.2%迪士尼美語評價.英特爾稱,第一季筆記本晶片出貨量同比增長3%,但是筆記本晶片的平均銷售價格下降了3 ...
- Unity学习疑问记录之坐标体系
[Unity3D的四种坐标系] 1.World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的.transform.position可以获得该位置坐标. ...
- 生成Json文件
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- IE7中使用Jquery动态操作name问题
问题:IE7中无法使用Jquery动态操作页面元素的name属性. 在项目中有出现问题,某些客户的机器偶尔会有,后台取不到前台的数据值. 然开发和测试环境总是不能重现问题.坑爹之处就在于此,不能重现就 ...
- 微软CMS项目 Orchard 所用到的开源项目
研发了Orchard一年左右了,时常遇到瓶颈,总觉得力不从心,其实并不是基础不够,关键还是概念性的东西太多,一会儿这个概念名词,一会那个,关于Orchard的技术文档也的确很少,每次看起来总是焦头烂额 ...
- Linux 定时任务
200 ? "200px" : this.width)!important;} --> 介绍 本篇主要介绍Linux定时任务命令crontab的用法,crontab是定时任务 ...