背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份。

实验环境:RHEL6.4 + Oracle 11.2.0.4 单实例.

二、常规恢复之不完全恢复:部分数据丢失

二、常规恢复之不完全恢复:部分数据丢失

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 - 常规恢复之不完全恢复的更多相关文章

  1. Oracle Recovery 01 - 常规恢复之完全恢复

    背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份. 实验环境:RHEL6.4 + Oracle 11.2.0.4 DG primary. 一.常规恢复之完全恢复:不丢失数据 1.1 单 ...

  2. 本文将详细介绍oracle 10g OEM常规错误

    本文将详细介绍oracle 10g OEM常规错误-------Unknown host specified解决方法,需要了解的朋友可以参考下 详细出处参考:http://www.jb51.net/a ...

  3. Oracle数据库02

    EXISTS子查询 特征:将主查询中的数据带到子查询中进行验证,如果验证成功则子查询返回true,当主查询接收到true的时候被验证的数据就显示,如果在子查询中验证失败则返回false,当主查询接收到 ...

  4. Oracle recovery manager failed to restore

    解决办法: 1:清理过期失效的备份, 2:增加recovery_file_dest_size参数值即可: SQL> show parameter db_recover NAME          ...

  5. Oracle案例02——ORA-12034: "SCOTT"."USER_TABLE" 上的实体化视图日志比上次刷新后的内容新

    最近同事在交接工作时,发现有几个schedule job没有执行成功,我这边给看了下,其中一个是由于数据库迁移,调用dblink的host主机IP在tnsnames中没有变更导致,还有一个是无法视图的 ...

  6. Oracle基础 02 临时表空间 temp

    --查看临时文件的使用/剩余空间 SQL> select * from v$temp_space_header; --查看SCOTT用户所属的临时表空间 SQL> select usern ...

  7. Oracle使用中的常规操作总结

    写一篇在使用Oracle过程中一些常用的操作,以便于忘记的时候查看 一.创建用户和给用户赋予权限 create user 用户名 identified by 密码; --12c一下版本 create ...

  8. OCP考点实战演练01-备份恢复篇

    本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练01-备份恢复篇 1.数据库开启归档 2. ...

  9. Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)

    Oracle 数据库可以实现数据库不完全恢复与完全恢复.完全恢复是将数据库恢复到最新时刻,也就是无损恢复,保证数据库无丢失的恢复.而不完全恢复则是根据需要特意将数据库恢复到某个过去的特定时间点或特定的 ...

随机推荐

  1. phpcms 服务器安全认证错误

    本人将图片的js.images.css路径转移到CDN上了,上传附件的时候就出现了 “服务器安全认证错误”的提示.   找到文件 D:\wamp\www\phpcms\phpcms\modules\a ...

  2. Kafka设计解析(三)- Kafka High Availability (下)

    本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/06/08/KafkaColumn3 摘要 本文在上篇文章基础上,更加深入讲解了Kafka的HA机 ...

  3. shell去除换行和空格2

    #!/bin/bash if [ -f str.txt ] ## 如果str.txt存在,则返回true then strval=$(cat str.txt|awk '{printf "%s ...

  4. Hibernate框架使用案例

    Hibernate是对JDBC进行了轻量级封装的ORM框架,充当项目的持久层 Hibernate依赖的库: 创建一个工程,添加jar包: hibernate.cfg.xml: <!DOCTYPE ...

  5. 有Maple T.A.自有试题图so easy

    对于想完全控制试题库的用户而言,Maple T.A.是最好的选择.不论您是要利用现有的题库,还是要创建自己的题库,Maple T.A.都可以为您提供功能强大.操作便捷的工具创建数学内容. 1) Ste ...

  6. 协议分析 - DHCP协议解码详解

    协议分析 - DHCP协议解码详解 [DHCP协议简介]         DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 ...

  7. Third Day:正式编程第三天,学习实践内容TextView跑马灯、AutoCompleteTextView、multiAutoCompleteTextView以及ToggleButton、checkedBox、RadioButton等相关实践

    2.针对Focused的TextView跑马灯(文字较多一行无法显示)效果 针对单个TextView的跑马灯效果,可直接在TextView控件参数中添加三个属性: android:singleLine ...

  8. 微软“.Net社区虚拟大会”dotnetConf2015 第二天 无处不在的Xamarin

    今天,微软召开了“.Net 社区虚拟大会”(dotnetConf),包括微软的 Scott Hanselman 和 Xamarin 的 Miguel De Icaza 在内的知名人士,都将在 Chan ...

  9. 为首次部署MongoDB做好准备:容量计划和监控

    如果你已经完成了自己新的MongoDB应用程序的开发,并且现在正准备将它部署进产品中,那么你和你的运营团队需要讨论一些关键的问题: 最佳部署实践是什么? 为了确保应用程序满足它所必须的服务层次我们需要 ...

  10. ASP.NET MVC 控制器激活(一)

    ASP.NET MVC 控制器激活(一) 前言 在路由的篇章中讲解了路由的作用,讲着讲着就到了控制器部分了,从本篇开始来讲解MVC中的控制器,控制器是怎么来的?MVC框架对它做了什么?以及前面有的篇幅 ...