oracle 删除表找回

表版本和闪回功能

  用户可能会经常多次创建和删除同一个表,如:

  CREATE TABLE TEST (COL1 NUMBER);

  INSERT INTO TEST VALUES (1);

  commit;

  DROP TABLE TEST;

  CREATE TABLE TEST (COL1 NUMBER);

  INSERT INTO TEST VALUES (2);

  commit;

  DROP TABLE TEST;

  CREATE TABLE TEST (COL1 NUMBER);

  INSERT INTO TEST VALUES (3);

  commit;

  DROP TABLE TEST;

  此时,如果您要对表 TEST 执行闪回操作,那么列 COL1 的值应该是什么?常规想法可能认为从回收站取回表的第一个版本,列 COL1 的值是 1。实际上,取回的是表的第三个版本,而不是第一个。因此列 COL1 的值为 3,而不是 1。

  此时您还可以取回被删除表的其他版本。但是,表 TEST 的存在不允许出现这种情况。您有两种选择:

  使用重命名选项:

  FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;

  FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;

  这些语句将表的第一个版本恢复到 TEST1,将第二个版本恢复到 TEST2。 TEST1 和 TEST2 中的列 COL1 的值将分别是 1 和 2。或者,

  使用表的特定回收站名称进行恢复。为此,首先要识别表的回收站名称,然后执行:

  FLASHBACK TABLE "BIN$04LhcpnoanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST2;

  FLASHBACK TABLE "BIN$04LhcpnqanfgMAAAAAANPw==$0" TO BEFORE DROP RENAME TO TEST1;

  这些语句将恢复被删除表的两个版本。

时间: 2024-11-05 22:38:09

oracle 删除表找回的相关文章

Oracle删除表、字段之前判断表、字段是否存在

这篇文章主要介绍了Oracle删除表.字段之前判断表.字段是否存在的相关资料,需要的朋友可以参考下 在Oracle中若删除一个不存在的表,如 “DROP TABLE tableName”,则会提示: ORA-00942:表或视图不存在 若在程序中执行该语句则会报异常,这就需要我们在删除表前先判断该表是否存在,若存在则删除. ? 1 2 3 4 5 6 7 8 9 10 11 DECLARE num NUMBER; BEGIN SELECT COUNT(1) INTO num FROM USER_

Oracle删除表的几种方法

drop table books;的指令会将表放到回收站里, 用   flashback table "BIN$1Oiy3qm/QJubov1BwBUOgw==$0" to before drop;  就能恢复. 删除表:   drop table books purge;是绕过回收站,彻底删除    建议你先   purge recyclebin; 清除当前用户的回收站,不会影响其他用户的回收站  或者   purge table 表名: 清除回收站内指定的表 正文:  删除表(记录

oracle删除表字段和oracle表增加字段

这篇文章主要介绍了oracle表增加字段.删除表字段修改表字段的使用方法,大家参考使用吧 添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除字段的语法:alter table tablenam

oracle删除表数据的两种的方式

转自:https://blog.csdn.net/qq_37840993/article/details/82490787 平时写sql中我们都会用到删除语句,而平时删除表数据的时候我们经常会用到两种方式: 在oracle中,truncate.delete都可以删除表数据,具体的区别以及sql语法如下: truncate table [表名]; delete from [表名]; delete与truncate的区别:delete:会产生rollback,如果删除大数据量的表速度会很慢,而且同时

oracle 删除表空间及数据文件方法

drop tablespace tablespace_name;--删除非空表空间,但是不包含物理文件drop tablespace tablespace_name including contents;--删除空表空间,包含物理文件drop tablespace tablespace_name including datafiles;--删除非空表空间,包含物理文件drop tablespace tablespace_name including contents and datafiles;

oracle删除表

转https://blog.csdn.net/qq_40087415/article/details/78812019 删除表(记录和结构)的语名:delete —— truncate —— drop      delete (删除数据表里记录的语句) delete from 表名 where 条件;     注意:删除记录并不能释放Oracle里被占用的数据块表空间.它只把那些被删除的数据块标成unused  如果确实要删除一个大表里的全部记录, 可以用 truncate 命令, 它可以释放占

Oracle 删除表分区

删除表分区(drop partition)    删除表分区包含两种操作,分别是:   Ø 删除分区:alter table [tbname] drop partition [ptname]; Ø 删除子分区:alter table [tbname] drop subpartition [ptname];   除hash分区和hash子分区外,其它的分区格式都可以支持这项操作.   例如,删除分区: JSSWEB> select table_name,partition_name   2  fr

oracle删除表的方式

当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍. 一.delete语句 (1)有条件删除    语法格式:delete [from]  table_name  [where condition]; 如:删除users表中的userid为‘001’的数据:delete from users where userid='001'; (2)无条件删除整个表数据 语法格式:delete  table_name; 如:

oracle 删除表、数据

truncate ddl语句,删除表中数据,速度要比delete快:且所有自增字段重新开始计数:删除数据保留表结构:删除的数据不进入rollback segment,无法恢复.例: truncate table emp_tmp; drop    ddl语句,删除和该表相关的所有信息,包括表结构.数据. delete    dml语句,删除表中数据,但是并不删除表结构.