Oracle 快速找回被删除的表

简介: 很多情况下为了能快速找回被删除的表,可以利用回收站找到并重建被删除的表。(一)回收站里是否可以找到被删除的表,和undo的保留策略、空间大小有很大关系,超时或者空间不足都会导致无法闪回表,只能从备份中恢复。

很多情况下为了能快速找回被删除的表,可以利用回收站找到并重建被删除的表。
(一)
回收站里是否可以找到被删除的表,和undo的保留策略、空间大小有很大关系,超时或者空间不足都会导致无法闪回表,只能从备份中恢复。

# 查看当前undo 保留策略
SQL> show parameter undo_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 3600
undo_tablespace string UNDOTBS1

(二)

# 测试表
SQL> select table_name from dba_tables where owner='WORKING';
TABLE_NAME
------------------------------
DBA_OBJECTS

###被删除的对象可以在回收站中查看,现在没有内容
SQL> select count(*) from dba_recyclebin;
COUNT(*)
----------
0

(三)
drop 表

# 删除数据表
SQL> drop table working.DBA_OBJECTS;
Table dropped.

# 回收站中保留了刚删除的表的信息,原对象 working.DBA_OBJECTS 在回收站中有一个映射名字 BIN$NSM8ZSPA8vvgU2W8CgpvQg==$0

SQL> select owner,object_name,original_name from dba_recyclebin;
OWNER OBJECT_NAME
------------------------------ ------------------------------
ORIGINAL_NAME
--------------------------------
WORKING BIN$NSM8ZSPA8vvgU2W8CgpvQg==$0
DBA_OBJECTS

(四)
利用闪回特性,还原被删除的数据表,并重命名

# 可以直接闪回表,也可以rename 表名
SQL> flashback table working.DBA_OBJECTS to before drop rename to DBA_OBJECTS_bak;

Flashback complete.

SQL> select table_name from dba_tables where owner='WORKING';
TABLE_NAME
------------------------------
DBA_OBJECTS_BAK

SQL> select count(*),owner from working.DBA_OBJECTS_bak group by owner;
COUNT(*) OWNER
---------- ------------------------------
1 WORKING
10 OUTLN
3340 PUBLIC
512 RPTADM
609 SYSTEM
8 ORACLE_OCM
124 GWADM
55 DBSNMP
5 APPQOSSYS
9592 SYS
124 PORTALADM
11 rows selected.

(五)
误更新数据的恢复(update delete)
如果知道确切的误操作时间,可以闪回至某个时间点,比如20分钟之前

# 拿上一步恢复的表做测试
SQL> select object_name,owner from working.DBA_OBJECTS_bak where owner='WORKING';
OBJECT_NAME
--------------------------------------------------------------------------------
OWNER
------------------------------
DBA_OBJECTS
WORKING
 
###修改数据

SQL> update working.DBA_OBJECTS_bak set object_name = 'DBA_OBJECTS_UPDATE' where owner = 'WORKING';

1 row updated.

SQL> commit;

Commit complete.

###第二次更新

SQL> update working.DBA_OBJECTS_bak set object_type = 'TABLE_UPDATE' where owner = 'WORKING';

1 row updated.

SQL> commit;

Commit complete.

###查看更新后的数据

SQL> select object_name,owner,object_type from working.DBA_OBJECTS_bak where owner='WORKING';
OBJECT_NAME
--------------------------------------------------------------------------------
OWNER OBJECT_TYPE
------------------------------ -------------------
DBA_OBJECTS_UPDATE
WORKING TABLE_UPDATE

(六)
闪回数据到20分钟之前

SQL> flashback table WORKING.DBA_OBJECTS_BAK to timestamp(systimestamp-interval '20' minute);

Flashback complete.

SQL> select object_name,owner,object_type from working.DBA_OBJECTS_bak where owner='WORKING';
OBJECT_NAME
--------------------------------------------------------------------------------
OWNER OBJECT_TYPE
------------------------------ -------------------
DBA_OBJECTS
WORKING TABLE

超出回滚段保留的时效,可以通过备份文件进行恢复需要的对象。

目录
相关文章
|
9月前
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
74 0
|
19天前
|
Oracle 关系型数据库 数据库
Oracle查询优化-复制表的定义及数据
【1月更文挑战第5天】【1月更文挑战第14篇】在Oracle数据库中,复制表定义和复制表数据是两个常见的操作。
59 1
|
17天前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之oracle cdc 抽取新增一张表 可以从savepoint恢复吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11天前
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用合集之同步Oracle数据时,一张表产生了大量的连接数,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
19天前
|
SQL 存储 Oracle
Oracle中的Dual表:数据世界的“神奇小盒子”
【4月更文挑战第19天】Oracle的Dual表是一个虚拟表,仅含一行一列,常用于执行SQL函数、数据类型转换、测试语句和动态SQL。它是测试和便捷操作的工具,如获取当前日期(`SELECT SYSDATE FROM DUAL`)、数字转字符串(`SELECT TO_CHAR(12345) FROM DUAL`)。在存储过程、函数和触发器中也发挥重要作用,是数据库管理员的得力助手。
|
19天前
|
存储 Oracle 关系型数据库
Oracle系列之七:表的创建与管理
Oracle系列之七:表的创建与管理
|
6月前
|
Oracle 关系型数据库
Oracle - 表操作语句
Oracle - 表操作语句
27 0
|
9月前
|
Oracle 关系型数据库 数据库
Oracle数据库 查询所有表
Oracle数据库 查询所有表
124 1
|
11月前
|
Oracle 关系型数据库 索引
Toad Oracle Parttion表分析
当一个数据表的数据达到几十亿笔的时候,对整个表做表分析代价较大。
78 0
|
SQL Oracle 关系型数据库
PLSQL查询Oracle表中文乱码解决
PLSQL查询Oracle表中文乱码解决
182 0
PLSQL查询Oracle表中文乱码解决