一、Oracle的Drop Table语句

首先,我们来看一下Oracle Drop Table的语法格式。

解释一下里面的参数:

schema
  • Schema表示方案名称,这里可以理解为用户名,缺省为当前用户下的表。比如,要删除scott用户下的emp表,drop table scott.emp
purge
  • purge可选项,如果开启了回收站(oracle 10g以后,回收站默认是开启的)功能,不带purge选项,表示删除的表放进回收站,空间不回收 。使用flashbask可以闪回该表。带purge选项,则表示将表删除,释放空间。
cascade constraints
  • 可选项,如果有其它表关联到要删除的表的主键列或唯一键列(要删除的表是主表(父表),从表(子表)有外键关联到这张表),那么,直接用drop table会报错,这时候如果想要强制删除这张表,就需要加上cascade constraints选项。

二、闪回删除:Flashback Drop

使用闪回删除功能,可以撤消 DROP TABLE 语句产生的影响,而不需要求助于传统时间点恢复。这是由回收站实现的,通过 DBA_RECYCLEBIN 视图可查询回收站。

  • 查看当前数据库的回收站功能是否开启
conn / as sysdba
select value from v$parameter where name='recyclebin';

  

  • 执行drop table语句
使用scott用户登录
SQL> conn scott/tiger
Connected. 查看当前用户下的表
SQL> select * from tab; TNAME TABTYPE CLUSTERID
-------------------- ------- ----------
BONUS TABLE
DEPT TABLE
EMP TABLE
EMP1 TABLE
SALGRADE TABLE 删除一张表
SQL> drop table emp1; Table dropped. 查看当前用户下的表
SQL> select * from tab; TNAME TABTYPE CLUSTERID
-------------------- ------- ----------
BIN$opkhRg3T0MPgVaUg TABLE
q/kbkw==$0
BONUS TABLE
DEPT TABLE
EMP TABLE
SALGRADE TABLE

  

  • 通过回收站中的对象名称查询表的数据
下面的方式是错误的:
select * from BIN$opkhRg3T0MPgVaUgq/kbkw==$0; 需要加上双引号:
select * from "BIN$opkhRg3T0MPgVaUgq/kbkw==$0";

  

  • 查看回收站
show recyclebin;

  

  • flashback table的语法格式

在执行闪回表操作期间,数据库获取闪回列表中所有指定的报表独立DML锁。当正在恢复到之前状态时,这些锁阻止对表的任何操作。闪回表操作在单个事物中执行,不管闪回表中指定表的数量。要么所有的表都恢复到早期状态,要么都没恢复。如果任何表的闪回表操作失败,那么整个语句都失败。闪回操作完成时,表中的数据与表之前的时间点一直。但是,FLASHBACK TABLE到SCN或时间戳不保存rowid,FLASHBACK TABLE TO BEFORE DROP不能恢复引用约束。数据库不能恢复与表关联的早期结构的统计信息。表当前的索引是恢复,并反映还原点表的状态。如果该索引在还原点不存在,数据更新索引里来反映还原点表的状态。然而,如果索引是在当前时间和还原点之间被删除,是不能恢复。

  • 执行闪回删除
flashback table emp1 to before drop;

也可以通过回收站中的名字执行闪回:
flashback table “BIN$opkhRg3T0MPgVaUgq/kbkw==$0” to before drop;

  

  • 清空回收站
purge recyclebin;

  

【赵渝强老师】删除表和Oracle的回收站的更多相关文章

  1. spool命令、创建一个表,创建而且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站

      1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建 ...

  2. Oracle 创建/删除 表空间、用户、授权

    首先以DBA连接到数据库:sqlplus / as sysdba; --创建表空间 create tablespace test_tablespace datafile 'D:\developer\o ...

  3. oracle创建表空间、创建用户、授权、夺权、删除用户、删除表空间

    表空间定义 表空间是为了统一ORACLE物理和逻辑上的结构而专门建立的,从物理上来说,一个表空间是由具体的一个或多个磁盘上数据文件构成的(至少1对1,可以1对多),从逻辑上来说一个表空间是由具体的一个 ...

  4. oracle学习 六 删除表空间,数据文件的语句以及导入导出dmp文件的方法(持续更新中)

    要想删除表空间就要先删除数据文件 例如这个例子 CREATE TABLESPACE STHSGIMGDB_SPACE11 DATAFILE 'D:\ORACLEDATABASE\JinHuaDataB ...

  5. Linux环境下oracle创建和删除表空间及用户

    #su - oracle $ sqlplus /nolog SQL> connect / as sysdba --//创建临时表空间 create temporary tablespace te ...

  6. oracle删除表语句

    删除表(记录和结构)的语名delete   ————   truncate      ———— drop DELETE (删除数据表里记录的语句) DELETE FROM表名 WHERE 条件; 注意 ...

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

    这篇文章主要介绍了Oracle删除表.字段之前判断表.字段是否存在的相关资料,需要的朋友可以参考下 在Oracle中若删除一个不存在的表,如 “DROP TABLE tableName”,则会提示: ...

  8. oracle删除表的方法

    1. 删除oracle表中的所有数据而不删除表: 语法: TRUNCATE TABLE table_name; 使用这条语句只是删除表中的全部数据,不是删除表,这种方式也叫做截断表,这种方式比使用de ...

  9. oracle中的rowid--伪列-删除表中的重复内容-实用

    1.rowid是一个伪列,是用来确保表中行的唯一性,它并不能指示出行的物理位置,但可以用来定位行. 2.rowid是存储在索引中的一组既定的值(当行确定后).我们可以像表中普通的列一样将它选出来. 3 ...

  10. oracle 数据库删除表或表数据恢复问题

    oracle恢复误删除的数据:使用闪回,ORACLE 10G及以上版本! 1. flashback table table_name to timestamp systimestamp-1; (sys ...

随机推荐

  1. 【DataBase】MySQL 03 基本命令 & 语法规范

    参考至视频:P12 - P15 https://www.bilibili.com/video/BV1xW411u7ax?p=82 SHOW 和相关的基本命令 查看所有的数据库 SHOW DATABAS ...

  2. 国产首款IDE环境:数字广东公司联合麒麟软件打造的国内首款适配国产操作系统、蜘蛛创新的集成开发环境CEC-IDE正式亮相

    参考: https://www.youtube.com/watch?v=fOpBEWZVKU0 在中国it历史上继"木兰编程语言(实际上套壳Python),红旗操作系统(实际上套壳Chrom ...

  3. [USACO22FEB] Paint by Rectangles P 题解

    前言 没用线段树的小常数.小短码. 题目链接:洛谷. 题意简述 给出 \(n\) 个平行于坐标轴的矩形,各边所在直线互不重合,钦定最外面为白色,对这个平面图黑白染色,分别求黑色块数和白色块数. 题目分 ...

  4. Sentry For Vue 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!

    内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...

  5. 【LCA 树上两点的距离 判定点是否在某条边中】洛谷P3398 仓鼠找sugar

    题目链接:P3398 仓鼠找 sugar - 洛谷 | (luogu.com.cn) 题目大意:判定一棵树上的两条边是否相交 Tag: [LCA] [树上两点间距离的计算] [如何判断与点在某条路径上 ...

  6. FreeSWITCH对接http协议的tts服务

    操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9   FreeSWITCH里面有个mod_tts_commandline模块,可以用来对接http协议的tts服务,今 ...

  7. CF1697C

    C. awoo's Favorite Problem 首先,检查两个字符串中所有字母的计数是否相同. 然后考虑下面的重述.字符串s中的字母 b是静止的.而字母a和c则在字符串中移动.第一种移动是将字母 ...

  8. Linux环境变量,知识点汇总

    一.什么是环境变量? 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数. 环境变量本质就是一张表,保存在内存当中. 该表在用户登录系统的时候 ...

  9. bazel简介(二)——从makefile向bazel转变(使用genrule)

    0x01 背景 上篇中已经介绍了bazel的基本工作原理和相关的概念.这篇将继续介绍下,现有的makefile构建工程如何切换到bazel构建系统. bazel提供了丰富的扩展方式,当然也支持从目前的 ...

  10. 全志T113s3工业开发板文章汇总

    全志T113s3工业开发板 T113开发交流QQ群:120575746 交流论坛:https://forums.100ask.net/c/aw/ 文章目录汇总 教程共计7章,下面是章节汇总:第0章_T ...