`

在oracle10g中如何恢复drop掉的表

 
阅读更多
  在oracle10g中如何恢复drop掉的表
在oracle10g中,如果不小心drop掉一张表,能不能恢复呢?
答案是肯定的,在oracle10g中,当使用命令drop table tablename 命令时,其实不会真正的删除该表,而是把表放到了回收站中(回收站的概念类似windows中的回收站),所以我们可以通过flashback命令来恢复drop掉的表,下面就该问题做一个小小的研究

我们先创建一张表
Create table test (
Id int,
Name varchar(20)
)
再插入几条数据
insert into test(id,name) values(1,'a');
insert into test(id,name) values(2,'b');
commit;
好了,为了更好观察,我们先执行下面的命令清空一下回收站
Purge recyclebin;
SQL> select original_name,dropscn from recyclebin;
未选定行
好了,回收站已经清空了
下面再把上面创建的test表drop掉,再看下回收站
SQL> drop table test;
表已删除。 
SQL> select original_name,dropscn from recyclebin;
ORIGINAL_NAME DROPSCN
-------------------------------- ----------
TEST 1742491
SQL> select * from test;
select * from test
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL>
这时候从回收站中查到了被drop表的,而且使用select语句也找不到表了,好了,下面我们再使用flashback恢复一下
SQL> flashback table test to before drop;
闪回完成。
SQL> select * from test;
ID NAME
---------- --------------------
1 a
2 b
恢复以后,表结构和数据都被找了回来
那么好,下面我们再出个考题,这是OCP考试里的题,在上面的实验基本上再执行下面的操作,想想会发生什么事呢?
drop table test; --drop表test表
以相同的名字再次创建test表,但字段不同
Create table test (
a int,
b varchar(20),
c varchar(30)
)
drop table test --然后再次drop掉test表
再执行flashback恢复
flashback table test to before drop;
这时候大家想想会恢复哪个表呢?是第一次创建的?还是第二次创建的?好了做实验,让实事来说话
SQL> drop table test;
表已删除。 
SQL> create table test(
2 a int,
3 b varchar(20),
4 c varchar(30)
5 );
表已创建。
SQL> drop table test;
表已删除。
SQL> select original_name,dropscn from recyclebin;
ORIGINAL_NAME DROPSCN
-------------------------------- ----------
TEST 1743515
TEST 1743435
SQL> flashback table test to before drop;
闪回完成。
SQL> select * from test;
未选定行
SQL> desc test;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
A NUMBER(38)
B VARCHAR2(20)
C VARCHAR2(30)
通过以上实验,我们可以看到,虽然名字相同,但flashback恢复的只是最后一次创建的表
请注意上面的查询回收站的语句,从回收站中,可以看到,共有两个test表,但dropscn不一样,使用flashback命令只恢复dropscn大的哪个表,以前的都是垃圾了
关于flashback命令还有一个需要注意的,如果在drop表时,加上了purge选项,则无法恢复,看下面实验
SQL> drop table test purge;  
表已删除。
SQL> select original_name,dropscn from recyclebin;
ORIGINAL_NAME DROPSCN
-------------------------------- ----------
TEST 1743435
SQL> flashback table test to before drop;闪回完成。
SQL> select * from test;
ID NAME
---------- --------------------
1 a
2 b
drop时使用了purge选项,所以该drop没有放入回收站,那为什么执行flashback table时又恢复成功了呢?
能过上面的实验可以看到,恢复的是我们第一次创建的test表,而第二次创建的test表就无法恢复了
分享到:
评论

相关推荐

    Oracle从回收站恢复删除的表

    在Oracle 10g及后续版本中,为了提供更高效的数据管理能力,引入了一个非常实用的功能——**回收站**(Recycle Bin)。这一特性使得数据库管理员能够在不慎删除表等数据库对象后,能够轻松地从回收站中恢复这些对象,...

    oracle10G创建用户和表空间

    本文将围绕“Oracle 10g创建用户和表空间”这一主题展开,深入探讨如何在Oracle 10g环境中创建、修改和删除用户及其相关的表空间。 ### 创建用户 在Oracle 10g中,创建用户是数据库管理员的一项基本任务。用户是...

    oracle 误删除表恢复

    Oracle自10g版本起引入了回收站(Recycle Bin)的概念,这一特性允许用户恢复已删除的对象,包括表、索引等。通过回收站机制,即使一个表被意外删除,也可以轻松将其恢复到删除前的状态。 #### 回收站的工作原理 当...

    Oracle 10g官方教程

    Oracle 10g是Oracle公司于2004年推出的一款企业级数据库管理系统,其中“g”代表“grid”,强调了其在网格计算环境中的高效能与灵活性。它在前代产品的基础上,进一步增强了数据安全性、可用性和可扩展性,同时引入...

    ORACLE10G全真试题

    Oracle 10G是Oracle公司推出的数据库管理系统的一个版本,它在数据库管理领域具有广泛的影响力,尤其是在企业级应用中。OCP(Oracle Certified Professional)是Oracle认证的专业资格,对于希望深入理解和掌握Oracle...

    Oracle 10g 快速入门学习

    Oracle 10g 是Oracle公司推出的数据库管理系统的一个版本,它在数据库领域有着广泛的应用,尤其在企业级数据存储和管理中占据重要地位。本套快速入门学习资源旨在帮助初学者迅速掌握Oracle 10g的基本操作和核心概念...

    oracle10g常用命令数据库的备份和恢复

    在深入探讨 Oracle 10g 数据库的备份与恢复之前,我们需要了解一些基本概念和环境配置。 ##### 1. 连接到 Oracle 10g 数据库 - **连接到 SYS 用户**: - 使用 SQL*Plus 工具,通过 `sys` 用户以 `SYSDBA` 角色登录...

    Oracle Database 10g 误删表,闪电恢复

    本篇文章将深入探讨Oracle 10g的闪回表特性及其在实际操作中的应用。 首先,我们需要理解什么是闪回表(Flashback Table)。闪回表是Oracle数据库闪回技术的一部分,它允许用户将表恢复到之前的一个状态,即使这个...

    Oracle Database 10g删除表的程序.rar_oracle 10g

    删除表是数据库管理中的常见操作,本压缩包包含的是关于在Oracle 10g中如何删除表的相关程序和资源。 在Oracle 10g中,删除表有几种不同的方法,主要通过SQL语句实现。最常用的是`DROP TABLE`语句,用于永久性地从...

    Oracle 10g 课件

    "第08章 Oracle支持的SQL.ppt"涵盖了SQL语言在Oracle 10g中的应用,包括DML(数据操作语言)如INSERT、UPDATE、DELETE,以及DDL(数据定义语言)如CREATE、ALTER、DROP等。 "第10章 数据管理.ppt"可能涵盖数据备份...

    oracle 10 Ora 10G 官方文档

    在Oracle 10g中,SQL被用来查询、插入、更新和删除数据,以及创建和修改数据库对象如表、视图、索引等。 - 支持高级查询功能,如联接(JOIN)、子查询、集合操作(UNION, INTERSECT, EXCEPT)以及分组和聚合函数...

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

    当表被删除时,Oracle 10g 并不会立即将表彻底删除,而是将其重命名,并放置在一个名为“回收站”的特殊逻辑容器中。被删除的表会保留其原有的结构、数据以及相关联的索引和触发器等对象。 - **表的重命名**:删除...

    oracle10g教程从入门到精通

    Oracle 10g 是 Oracle 公司推出的一款功能强大的关系型数据库管理系统,广泛应用于各种企业级应用中。与其他数据库如 MySQL、SQL Server 相比,Oracle 在数据处理能力、安全性以及稳定性方面具有明显的优势。 - **...

    利用 Oracle 系统触发器防止误删除表操作

    在Oracle 10g环境中,可以创建一个系统级别的触发器,用于阻止非`SYS`用户执行`DROP TABLE`或`TRUNCATE TABLE`命令。 #### 创建触发器脚本 ```sql CREATE OR REPLACE TRIGGER TRIGGER_UNDROPTABLE BEFORE DROP OR ...

    Oracle10g基础教程

    Oracle 10g是Oracle公司推出的数据库管理系统的一个版本,它在2003年发布,提供了许多增强功能和改进,使得数据库管理更加高效和安全。本教程将带你深入理解Oracle 10g的基础知识,适合数据库新手入门学习。 首先,...

    Oracle 10g 安装与使用

    《Oracle 10g安装与使用详解》 Oracle 10g是一款强大的关系型数据库管理系统,广泛应用于企业级数据管理。本文将详细讲解Oracle 10g的安装过程及日常使用技巧,帮助读者掌握这一重要工具。 一、Oracle 10g安装 1....

    Oracle11G数据库备份和恢复操作手册图片教学.pdf

    从给定的文件内容中,我们可以提取出与Oracle11G数据库备份和恢复相关的一些关键知识点。下面将对文件中提到的内容进行详细解读: 1. Oracle数据库环境设置 文件提到了一些环境变量和目录的设置。例如,`C:\app\...

    oracle 10G 实验手册

    本文将依据给定的实验手册内容,详细阐述Oracle 10G闪回功能的使用方法、工作原理及其在不同场景下的应用。 ### 闪回功能概述 Oracle的闪回功能允许用户回溯至数据库中的某一特定时间点或系统变更号(SCN),查看或...

    Oracle10G卸载教程-重点推荐

    如果第一次安装 Oracle Database 10g 并选择自动存储管理(ASM)作为存储和恢复选项,Oracle Universal Installer 则会配置创建并启动 Oracle 集群同步服务 OracleCSService;若没有选择自动存储管理,则可删除 ...

Global site tag (gtag.js) - Google Analytics