`
ahuzl007
  • 浏览: 25735 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Flashback间接恢复被删除的tablespace

阅读更多

前提,数据库处于archivelog mode
场景如下:

1.开启flashback
SQL> startup mount
ORACLE instance started.

Total System Global Area 536870912 bytes
Fixed Size 1262812 bytes
Variable Size 520096548 bytes
Database Buffers 12582912 bytes
Redo Buffers 2928640 bytes
Database mounted.
SQL>
SQL>
SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
NO

SQL> alter database flashback on;
Database altered.

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

 

2. 准备试验数据
create tablespace test_rman_bak datafile '/oracle/oradata/monster/test_rman_bak.dbf' size 10M;
create user zhanglei identified by zhanglei default tablespace test_rman_bak;
grant dba to zhanglei;
conn zhanglei/zhanglei
create table A1
(id number(3),
name varchar2(20)
)
/

SQL> select * from zhanglei.a1;

        ID NAME
---------- --------------------
         1 test1
         2 test2
         3 test3
 
3.手动删除一个tablespace
--记录下删除前的SCN
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
8.7961E+12

SQL> col current_scn for 9999999999999
SQL> /

CURRENT_SCN
--------------
8796117159141



SQL> drop tablespace TEST_RMAN_BAK including contents and datafiles;
Tablespace dropped.
 
4.尝试直接flashback,看看结果如何
SQL> conn / as sysdba
Connected.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount
ORACLE instance started.
Total System Global Area 536870912 bytes
Fixed Size 1262812 bytes
Variable Size 520096548 bytes
Database Buffers 12582912 bytes
Redo Buffers 2928640 bytes
Database mounted.

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/oracle/oradata/monster/system01.dbf
/oracle/oradata/monster/pwrcard01.dbf
/oracle/oradata/monster/sysaux01.dbf
/oracle/oradata/monster/users01.dbf
/oracle/oradata/monster/logmnrts.dbf
/oracle/oradata/monster/tools.dbf
/oracle/oradata/monster/testcdc.dbf
/oracle/oradata/monster/undotbs01.dbf
/oracle/oradata/monster/rman.dbf

9 rows selected.

SQL> flashback database to scn 8796117159141;
flashback database to scn 8796117159141
*
ERROR at line 1:
ORA-38795: warning: FLASHBACK succeeded but OPEN RESETLOGS would get error
below
ORA-01245: offline file 10 will be lost if RESETLOGS is done
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: '/oracle/product/10.2.0/db_1/dbs/UNNAMED00010'

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01245: offline file 10 will be lost if RESETLOGS is done
ORA-01110: data file 10: '/oracle/oradata/monster/test_rman_bak.dbf'
 
5.手动建一个datafile,然后再次flashback
--从下面的结果可以看到,虽然上次的flashback没有成功完成,但是他却为我们生成了一个datafile
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/oracle/oradata/monster/system01.dbf
/oracle/oradata/monster/pwrcard01.dbf
/oracle/oradata/monster/sysaux01.dbf
/oracle/oradata/monster/users01.dbf
/oracle/oradata/monster/logmnrts.dbf
/oracle/oradata/monster/tools.dbf
/oracle/oradata/monster/testcdc.dbf
/oracle/oradata/monster/undotbs01.dbf
/oracle/oradata/monster/rman.dbf
/oracle/product/10.2.0/db_1/dbs/UNNAMED00010

10 rows selected.

--用[alter database create datafile as]重建被删除的datafile
SQL> alter database create datafile '/oracle/product/10.2.0/db_1/dbs/UNNAMED00010' as '/oracle/oradata/monster/test_rman_bak.dbf';

Database altered.

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/oracle/oradata/monster/system01.dbf
/oracle/oradata/monster/pwrcard01.dbf
/oracle/oradata/monster/sysaux01.dbf
/oracle/oradata/monster/users01.dbf
/oracle/oradata/monster/logmnrts.dbf
/oracle/oradata/monster/tools.dbf
/oracle/oradata/monster/testcdc.dbf
/oracle/oradata/monster/undotbs01.dbf
/oracle/oradata/monster/rman.dbf
/oracle/oradata/monster/test_rman_bak.dbf

10 rows selected.

--flashback成功完成
SQL> flashback database to scn 8796117159141;
Flashback complete.

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

--数据库正常打开
SQL> alter database open resetlogs;
Database altered.
 
6.确认实验数据是否被成功恢复
SQL> select * from zhanglei.a1;

        ID NAME
---------- --------------------
         1 test1
         2 test2
         3 test3
 

 

 

分享到:
评论

相关推荐

    oracle 10g flashback(数据恢复)

    **Oracle Flashback Drop** 允许用户恢复被删除的表或索引。当用户意外删除了一个表或索引时,可以利用此功能将其恢复。需要注意的是,在 Oracle 中,删除的表并不会立即从数据库中消失,而是会被移动到回收站...

    用oracle10g的flashback闪回功能快速恢复oracle中被删除的表

    ### 使用Oracle 10g的Flashback闪回功能快速恢复被删除的表 #### Oracle 10g Flashback 特性概述 Oracle Database 10g 引入了一项非常强大的特性——Flashback,该特性使得数据库管理员(DBA)能够轻松地恢复误删除...

    dba数据恢复flashback

    - **闪回删除 (Flashback Drop):** 用于恢复被误删除的表。 - **闪回查询 (Flashback Query):** 查看数据库在任意历史时间点的状态。 - **闪回版本查询 (Flashback Version Query):** 显示行的版本随时间变化的历史...

    flashback——oracle

    在本篇文章中,我们将深入探讨Flashback在Oracle数据库中的应用,以及如何利用它来恢复被删除的表。 首先,`FLASHBACK TABLE`是Oracle Flashback技术的一个关键组件,它用于恢复整个表到先前的状态。当用户意外地...

    Dataguard故障切换(Switchover和Failover)及利用Flashback进行恢复.docx

    4. **Flashback Database** 是 Oracle 提供的一种强大的恢复工具,允许你将数据库恢复到过去某个特定时间点或 SCN,这对于 Data Guard 的故障恢复至关重要。在启用 Flashback 后,即使主库不可用,也能基于已有的...

    Oracle 闪回特性 FLASHBACK & RECYCLEBIN

    Flashback Drop 是 Flashback 系列中的一种功能,允许用户恢复被删除的表。用户可以使用 Flashback Drop 来恢复表中的数据,或者恢复表的结构。Flashback Drop 的实现是基于 Oracle 的 RECYCLEBIN 机制,该机制可以...

    oracle flashback技术总结

    - 数据文件删除或使用Shrink技术缩小后,不能直接使用Flashback Database恢复到更改前状态,需先利用RMAN恢复文件,再使用Flashback Database完成剩余部分。 - 控制文件若从备份恢复或重建,则不能使用此技术。 -...

    flashback闪回技术

    - **数据文件变更**: 如果数据文件被删除或通过Shrink技术缩小了大小,那么无法使用Flashback Database技术恢复至更改前的状态。此时,需要先使用RMAN恢复数据文件,再使用Flashback Database完成后续操作。 - **...

    oracle11g flashback archive 资料整理

    CREATE FLASHBACK ARCHIVE flar1 TABLESPACE mytest RETENTION 1 YEAR; ``` 配置 Flashback Archive: ```sql ALTER FLASHBACK ARCHIVE flar1 SET RETENTION 2 YEARS; ``` 查询 Flashback Archive 信息: ```sql ...

    Oracle Flashback技术

    4. Flashback Data Archive(闪回数据归档):这是一个可选的特性,用于存储被删除或更新的行的历史版本,以便于长期的数据审计和恢复。创建闪回数据归档后,即使行已被删除或更新,也可以通过查询归档来恢复。 5. ...

    Oracle_Flashback_技术_总结.pdf

    - 数据文件被删除或使用Shrink技术缩小后,无法直接使用Flashback Database,需先用RMAN恢复原有文件,再执行Flashback Database操作。 - 控制文件如果是从备份中恢复或重建的,也不支持Flashback Database。 - ...

    Oracle_Flashback家族

    - **Flashback Drop**:允许用户恢复被删除的对象,如表或索引。 - **Flashback Query**:提供查询过去数据的能力。 - **Flashback Query**:基本的Flashback查询功能。 - **Flashback Version Query**:除了返回...

    oracle flashback特性(闪回语句,闪回表,闪回数据库).doc

    Oracle Flashback 是 Oracle 数据库中的一种功能强大的特性,可以让用户快速地恢复到过去的某个时间点,查看过去的数据状态,或者是回滚到某个特定的事务状态。Flashback 特性可以分为三个方面:Flashback Query、...

    Oracle Flashback在医院数据恢复中的应用.pdf

    Oracle Flashback技术的出现解决了这一问题,尤其对于误删除或逻辑错误导致的数据丢失,它可以快速恢复到错误发生之前的状态。 Oracle Flashback主要包括三种类型:Flashback Query、Flashback Transaction和...

    Oracle恢复误删除数据

    对于 drop 表的情况,也可以直接用闪回方法恢复数据(要保证被删除数据的块没有被覆写)。 Oracle 在删除表时,没有直接清空表所占的块,而是把这些已删除的表的信息放到了一个虚拟容器“回收站”中,而只是对该表的...

    oracle快速数据恢复技术研究.pdf

    除了恢复被删除的对象,Flashback技术还包括Flashback Query和Flashback Transaction。Flashback Query允许用户查看数据库在任意时间点的状态,例如,查询特定时间的数据行。这主要依赖于数据库的Undo Segment,...

    第16章Oracle闪回(Flashback)技术.pptx

    闪回丢弃可以从中恢复被 drop 的表或索引。该功能基于撤销数据,可以快速恢复丢弃的对象。 8. 闪回技术的特点 闪回技术的最大特点是实现自动备份与恢复,大大减小了管理开销。闪回技术可以快速恢复逻辑误操作,...

    Oracle Flashback 技术总结

    2. Flashback Drop:可以撤销已经删除的表或对象,如果在DROP操作后Undo信息仍然存在,用户可以通过Flashback Drop恢复。 3. Flashback Query:提供查看过去某一时刻数据的能力,包括: - Flashback Query:查询...

Global site tag (gtag.js) - Google Analytics