oracle基于时间点的不完全恢复

下面我们做一个实验,演示如何对oracle进行基于时间点的不完全恢复(在实验之前请确保数据库具有有效备份):
获取此时的时间并记录下来:
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
2014-08-23 00:47:49

把hh用户下的h2删除:
SQL> drop table h2;

Table dropped.

使用rman将数据库恢复到删除h2之前:
关闭数据库,启动rman,重启数据库到mount:
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

[oracle@localhost ~]$ rman target / nocatalog

Recovery Manager: Release 11.2.0.1.0 - Production on Sat Aug 23 00:55:12 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database (not started)

RMAN> startup mount;

Oracle instance started
database mounted

Total System Global Area     849530880 bytes

Fixed Size                     1339824 bytes
Variable Size                553651792 bytes
Database Buffers             289406976 bytes
Redo Buffers                   5132288 bytes

使用rman将数据库恢复到2014-08-23 00:47:49

RMAN> sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';

sql statement: alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"

RMAN> restore database until time '2014-08-23 00:47:49';

Starting restore at 23-AUG-14
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=18 device type=DISK

skipping datafile 6; already restored to file /u01/app/datafile/test01.dbf
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/orcl/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/orcl/example01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/backup/fulldb_0qpgkgjo_1_1
channel ORA_DISK_1: piece handle=/u01/app/backup/fulldb_0qpgkgjo_1_1 tag=FULLDB
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:06
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/orcl/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/orcl/hh01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/backup/fulldb_0ppgkgjo_1_1
channel ORA_DISK_1: piece handle=/u01/app/backup/fulldb_0ppgkgjo_1_1 tag=FULLDB
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:35
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/orcl/system01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/backup/fulldb_0opgkgjo_1_1
channel ORA_DISK_1: piece handle=/u01/app/backup/fulldb_0opgkgjo_1_1 tag=FULLDB
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:45
Finished restore at 23-AUG-14

RMAN> recover database until time '2014-08-23 00:47:49';

Starting recover at 23-AUG-14
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 1 is already on disk as file /u01/app/archivelog/dest1/1_1_856304357.dbf
archived log for thread 1 with sequence 2 is already on disk as file /u01/app/archivelog/dest1/1_2_856304357.dbf
archived log for thread 1 with sequence 3 is already on disk as file /u01/app/archivelog/dest1/1_3_856304357.dbf
archived log for thread 1 with sequence 1 is already on disk as file /u01/app/archivelog/dest1/1_1_856310126.dbf
archived log file name=/u01/app/archivelog/dest1/1_1_856304357.dbf thread=1 sequence=1
archived log file name=/u01/app/archivelog/dest1/1_2_856304357.dbf thread=1 sequence=2
archived log file name=/u01/app/archivelog/dest1/1_3_856304357.dbf thread=1 sequence=3
media recovery complete, elapsed time: 00:00:16
Finished recover at 23-AUG-14

使用resetlogs打开数据库:
SQL> alter database open resetlogs;

Database altered.

SQL> select * from hh.h2;

        ID
----------
         1
         2

时间: 2024-10-30 15:25:44

oracle基于时间点的不完全恢复的相关文章

基于时间点的不完全恢复的例子

说到不完全恢复,一般有三种场景,基于时间点的不完全恢复,基于scn的不完全恢复,基于cancel的不完全恢复. 三种情况都是不完全恢复采用的方式,而不完全恢复都是在完全恢复的过程中出现了这样那样的错误,数不胜数,基本就是归档,redo损坏丢失,控制文件丢失,备份的问题,手工失误等等. 我们可以举一个不完全恢复的案例,其实在实际操作的过程中还是有一些值得总结和学习的地方. 第一步准备基本的数据.目前我们可以看到在表空间data上只有一个表new_recover SQL> select owner,

Oracle基于用户管理的不完全恢复(二)恢复过去某个时间点误操作的表

案例1--恢复过去某个时间点误操作的table 1.基于时间点 SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='TB01'; USERNAME               SCN TIMESTAMP           SQL_REDO --------------- ---------- ------------------- -------------------------

Oracle基于用户管理的不完全恢复(一)不完全恢复的特性

Oracle 数据恢复从恢复类型来说,抛开具体的文件,总共可分为两大类型的恢复,一是完全恢复,一个是不完全恢复.其实,熟悉了Oracle体系结构之后,对于 Oracle恢复就会有一个总体的概念.因为Oracle组成的外围部分,主要由不同的文件来组成,每种不同类型的文件有不同的作用,因此只要了解了其作 用,更利于了解与掌握Oralce数据库的备份与恢复.言归正传,完全恢复即是把数据库恢复到最新的SCN,出故障前的那一刻,是无损恢复.而不完全恢复即是有损恢复,多用于恢复用户误操作,归档日志丢失等情形

Oracle基于用户管理的不完全恢复

Oracle 数据恢复从恢复类型来说,抛开具体的文件,总共可分为两大类型的恢复,一是完全恢复,一个是不完全恢复.其实,熟悉了Oracle体系结构之后,对于Oracle恢复就会有一个总体的概念.因为Oracle组成的外围部分,主要由不同的文件来组成,每种不同类型的文件有不同的作用,因此只要了解了其作用,更利于了解与掌握Oralce数据库的备份与恢复.言归正传,完全恢复即是把数据库恢复到最新的SCN,出故障前的那一刻,是无损恢复.而不完全恢复即是有损恢复,多用于恢复用户误操作,归档日志丢失等情形.本

Oracle 基于用户管理的不完全恢复

    Oracle 数据恢复从恢复类型来说,抛开具体的文件,总共可分为两大类型的恢复,一是完全恢复,一个是不完全恢复.其实,熟悉了Oracle体系结构之后,对于Oracle恢复就会有一个总体的概念.因为Oracle组成的外围部分,主要由不同的文件来组成,每种不同类型的文件有不同的作用,因此只要了解了其作用,更利于了解与掌握Oralce数据库的备份与恢复.言归正传,完全恢复即是把数据库恢复到最新的SCN,出故障前的那一刻,是无损恢复.而不完全恢复即是有损恢复,多用于恢复用户误操作,归档日志丢失等

Oracle基于用户管理的不完全恢复(五)误删除表空间

案例4--误删除表空间(有备份) 通过备份的控制文件找到与表空间有关的信息进行恢复,因为新的控制文件里面已经没有该表空间的信息了.实际上在整个恢复过程中还是利用归档日志进行恢复,如果删除表空间之前的操作有及时写入到归档信息,就会全部恢复出来.下面的案例分切换日志和不切换日志两种. 1.基于backup control 的不完全恢复 SQL> select file_id,file_name,tablespace_name from dba_data_files; FILE_ID FILE_NAM

Oracle基于用户管理的不完全恢复(三)恢复过去某个时间点误操

案例2--恢复过去某个时间点误操作的表(DML) 1.基于change (scn) SQL> conn scott/tiger Connected. SQL> select * from tb01; ID ---------- 1 2 3 SQL> drop table tb01 purge; Table dropped. SQL> create table tb01(id int) tablespace test; Table created. SQL> insert in

Oracle基于用户管理的不完全恢复(四)完全恢复时丢失部分归档日志

案例3--在做完全恢复时,丢失了部分归档日志 (recover database until cancel;) 1.基于cancel 的不完全恢复 --模拟环境 SQL> col table_name for a20 SQL> col tablespace_name for a10 SQL> select table_name,tablespace_name from user_tables; TABLE_NAME           TABLESPACE ---------------

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

      Oracle 数据库可以实现数据库不完全恢复与完全恢复.完全恢复是将数据库恢复到最新时刻,也就是无损恢复,保证数据库无丢失的恢复.而不完全恢复则是根据需要特意将数据库恢复到某个过去的特定时间点或特定的SCN以及特定的Sequence.我们可以通过基于用户管理的不完全恢复实现,也可以通过基于RMAN方式来实现.本文主要描述是基于RMAN的不完全恢复的几种情形并给出示例.有关数据库备份恢复,RMAN备份恢复的概念与实战可以参考文章尾部给出的链接.   一.不完全恢复的步骤    a.关闭