Oracle备份恢复三(手动不完全恢复)

简介:
 平台:redhat linux as5,oracle10g
    不完全恢复是指把数据库恢复到备份点和失败点之间某个时刻的状态,而且不完全恢复只适用于archivelog模式,不完全恢复可以基于时间点,基于SCN,基于控制文件或基于取消.下面用实例演示一下四种不完全恢复的用法.

1.基于时间的不完全恢复

    一般当用户误删除表,误载断表,提交了错误数据后,DBA可以基于时间把数据库恢复到提交数据前的某一个状态
现在数据库中有一个表chenxy
SQL> select * from chenxy;
         I
----------------------
        10
        20
先做个全备份(数据文件)
SQL> shutdown immediate;
SQL> ! cp /u01/oradata/denver/*.dbf /u01/backup
现看当前时间并载断表
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2009-05-05 23:23:11
SQL> truncate table t;
Table truncated.
现在我们把表chenxy恢复到2009-05-05 23:23:11
1.关闭数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
2.装载数据库
SQL> startup mount;
ORACLE instance started.
Total System Global Area  420549952 bytes
Fixed Size                   451904 bytes
Variable Size             385875968 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
3.复制所有数据文件备份
SQL> ! cp /u01/backup/*.dbf /u01/oradata/denver/
注意备份的时间点要在2009-05-05 23:23:11之前,查看备份时间
SQL> select file#,to_char(time,'yyyy-mm-dd hh24:mi:ss') from v$recover_file;
  FILE#   TO_CHAR(TIME,'YYYY-
------------- -------------------
        2009-05-05 23:20:18
     2    2009-05-05 23:20:18
     3    2009-05-05 23:20:18
     4    2009-05-05 23:20:18
        2009-05-05 23:20:18
     6    2009-05-05 23:20:18
4.恢复到特定时间点
SQL> recover database until time '2009-05-05 23:23:24';
Media recovery complete.
5.resetlogs方式打开数据库,并查看表chenxy
SQL> alter database open resetlogs;
Database altered.
SQL> select * from chenxy;
         I
--------------------
        10
        20
    当以resetlogs方式打开数据库时,会重新建立重做日志,清空原有重做日志的内容(同时归档日志也全部删除了),而且过去的备份也不能直接使用了,现在重新备份所有数据文件和控制文件,并归档当前日志组
SQL> shutdown immediate;
SQL> ! cp /u01/oradata/denver/*.dbf /u01/backup
SQL> ! cp /u01/oradata/denver/*.ctl /u01/backup
SQL>startup
SQL> alter system switch logfile;
6.简单排错
    因为选项resetlogs要清空重做日志,当出现如下错误ORA-00338时可用resetlogs打开数据库
SQL> startup
ORACLE instance started.
Total System Global Area  420549952 bytes
Fixed Size                   451904 bytes
Variable Size             385875968 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
ORA-00338: log 2 of thread 1 is more recent than controlfile
ORA-00312: online log 2 thread 1: '/u01/oradata/denver/redo02.log'
使用resetlogs打开后一定要做备份.
SQL> alter database open resetlogs;
Database altered.
SQL> select status from v$instance;
STATUS
------------
OPEN

2.基于SCN恢复

1.查看当前SCN
SQL> select current_scn from v$database;
#
SQL> select dbms_flashback.get_system_change_number scn from dual;
       SCN
--------------------
     1673513
1.关闭数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
2装载数据库
SQL> startup mount;
ORACLE instance started.
Total System Global Area    420549952 bytes
Fixed Size                451904 bytes
Variable Size              385875968 bytes
Database Buffers           33554432 bytes
Redo Buffers              667648 bytes
Database mounted.
3.复制所有数据文件备份
SQL> ! cp /u01/backup/*.dbf /u01/oradata/denver/
注意备份的SCN号要小于1673513,查看备份的SCN
SQL> select file#,change# from v$recover_file;
     FILE#    CHANGE#
---------- ----------
       1      1673087
       2      1673087
       3      1673087
       4      1673087
       5      1673087
       6      1673087
       7      1673087
4.恢复到特定SCN
SQL> recover database until change 1673513;
Media recovery complete.
5.resetlogs方式打开数据库,并查看表chenxy
SQL> alter database open resetlogs;
Database altered.
SQL> select * from chenxy;
         I
--------------------
        10
        20
6.重新备份所有数据文件和控制文件,并归档当前日志组
SQL> shutdown immediate;
SQL> ! cp /u01/oradata/denver/*.dbf /u01/backup
SQL> ! cp /u01/oradata/denver/*.ctl /u01/backup
SQL>startup
SQL> alter system switch logfile;

3.基于取消不完全恢复

    其于取消恢复主要适用于因归档日志丢失,只能恢复到某一个时间的情况,恢复方法和前面两种一样,只是恢复时点不同.
恢复
SQL>shutdown immediate;
SQL>startup mount;
SQL>! cp /u01/backup/*.dbf /u01/oradata/denver/
SQL> recover database until cancel;
Media recovery complete.
SQL>alter database open resetlogs;

4.基于备份控制文件恢复

    原理:当用户误删除一个表空间时,当前的控制文件就把此表空间的信息都删了,但是在备份的控制文件里还是它的信息,所以可以用备份的控制文件恢复表空间
删除一个表空间
SQL> drop tablespace chenxy including contents;
Tablespace dropped.
SQL> select * from chenxy;
select * from chenxy
ERROR at line 1:
ORA-00942: table or view does not exist
alter日志找到删除时间
SQL> show parameter background_dump_dest
NAME                           TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest              string      /u01/admin/denver/bdump
 
SQL>! less /u01/admin/denver/bdump/alert_denver.log
Wed May  6 00:10:19 2009
drop tablespace chenxy including contents
Completed: drop tablespace chenxy including contents
恢复
SQL>shutdown immediate;
SQL>startup mount;
#把控制文件也
SQL>! cp /u01/backup/*.dbf /u01/oradata/denver/
SQL>! cp /u01/backup/*.bak /u01/oradata/denver/
SQL>recover database until time '2009-05-05 23:50:24' using backup controlfile
SQL>alter database open resetlogs
最后最好再做一个全备份.




本文转自 vfast_chenxy 51CTO博客,原文链接:http://blog.51cto.com/chenxy/170540,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
10月前
|
Oracle 关系型数据库 MySQL
Oracle OCP 19c 考试(1Z0-083)中关于Oracle不完全恢复的考点
下面是Oracle 19c OCP考试(1Z0-083)中关于Oracle不完全恢复的题目:
168 0
|
Oracle 关系型数据库 数据库
ORACLE不完全恢复的几种情况
ORACLE不完全恢复的几种情况 1、介绍        RMAN不完全恢复的三个标准模式:基于time、基于scn和基于sequence,与手工不完全恢复相比原理类似,语法稍有不同: 2、不完全恢复的几种情况 ### 1)不完全恢复用于最小化测试备份 ###①备份一部分数据文件 .
7305 0
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库
|
SQL Oracle 关系型数据库
oracle基于时间点的不完全恢复
下面我们做一个实验,演示如何对oracle进行基于时间点的不完全恢复(在实验之前请确保数据库具有有效备份): 获取此时的时间并记录下来: SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;...
1079 0
|
Oracle 关系型数据库 数据库
Oracle之不完全恢复
整理自《Oracle database 11g RMAN 备份与恢复》 001 概述     顾名思义,不完全恢复就是指不完全的数据库恢复。不完全恢复与完全恢复在许多方面是相同的,它们基本的命令集相同,但不完全恢复添加了一些其它命令。
1231 0
|
Oracle 关系型数据库 数据库
记录一次ORACLE的不完全恢复
前言:之前说过一句话,备份有时候就是用于数据库的恢复,虽然很多时候都用不上。但是你永远不知道什么时候会用上,这就是备份的意义; 昨天晚上10点多的时候,突然朋友打电话过来,要帮忙做一个数据库基于时间点的恢复。
757 0
|
5天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
39 7