DROP TABLE

使用DROP TABLE语句将表或对象表移动到回收站或从数据库中完全删除表及其所有数据。

注:除非指定purge子句,否则drop table语句不会将表占用的空间释放回表空间供其他对象使用,占用空间继续计入用户的空间配额。

对于外部表,此语句只删除数据库中的表元数据。它不会影响实际数据,实际数据位于数据库之外。

删除属于群集的表时,该表将移动到回收站。但是,如果随后除去集群,那么表将从回收站清空,不能再使用FLASHBACK TABLE进行恢复操作。

删除表将使依赖对象失效,并删除表上的对象特权。如果要重新创建表,则必须重新授予表的对象权限,重新创建表的索引、完整性约束和触发器,并重新指定其存储参数。TRUNCATE没有这些效果。因此,使用truncate语句删除行比删除和重新创建表更有效。

先决条件

该表必须在您自己的模式中,或者您必须具有 DROP ANY TABLE系统权限。

只有在没有会话绑定到临时表时,才能对其执行DDL操作(如更改表、删除表、创建索引)。通过对表执行插入操作,会话将绑定到临时表。通过发出runcate语句或在会话终止时,或者对于事务特定的临时表,通过发出commit或rollback语句,会话将解除与临时表的绑定。

语义

模式

指定包含表的模式。如果省略了模式,那么Oracle数据库假定表在您自己的模式中。

指定要删除的表的名称。Oracle数据库自动执行以下操作:

  • 删除表中的所有行。
  • 删除所有表索引和域索引,以及表上定义的任何触发器,无论是谁创建的索引或是谁的模式包含这些索引。如果是分区表,那么任何相应的本地索引分区也将删除。
  • 删除嵌套表的所有存储表和表的LOB。
  • 删除一个 range-, hash-, 或 list-分区表时,数据库将删除所有表分区。如果删除一个复合分区表,那么所有分区和subpartitions也将被删除。
  • 当使用purge关键字删除分区表时,该语句将作为一系列子事务执行,每个子事务都会删除分区或子分区的子集及其元数据。这种将删除操作分为子事务的划分优化了内部系统资源消耗的处理。(例如,库缓存),尤其是用于删除非常大的分区表。一旦第一个子事务提交,表就被标记为UNUSABLE。如果有subtransactions失败,那么表上唯一允许的操作是另一个DROP TABLE ... PURGE语句。这样的语句将从上一个drop table语句失败的位置恢复工作,假定您已更正了上一个操作遇到的任何错误。您可以通过查询数据字典视图(视情况而定) *_TABLES, *_PART_TABLES, *_ALL_TABLES, 或*_OBJECT_TABLES的status列,列出此类删除操作标记为UNUSABLE的表。
  • 对于索引组织表,删除索引组织表上定义的任何映射表。
  • 对于域索引,调用适当的删除例程。有关这些例程的详细信息,请参阅《Oracle Database Data Cartridge Developer's Guide》。
  • 如果有任何统计类型与表关联,则数据库将使用force子句取消统计类型的关联,并删除使用统计类型收集的任何用户定义的统计。
  • 如果表不是集群的一部分,那么数据库会将分配给该表的所有数据块及其索引返回到包含该表及其索引的表空间。要除去一个集群及其所有表,请将drop cluster语句与including tables子句一起使用,以避免单独除去每个表。请参见DROP CLUSTER。
  • 如果表是视图、容器或物化视图的主表的基表,或者如果它在存储过程、函数或包中引用,则数据库会使这些依赖对象失效,但不会删除它们。你不能使用这些对象,除非您重新创建表或删除并重新创建对象,以便它们不再依赖于表。如果选择重新创建表,则它必须包含最初用于定义物化视图的子查询所选的所有列以及存储过程、函数或包中引用的所有列。以前授予视图、存储过程、函数或包不需要重新授予这些特权。如果该表是物化视图的主表,则仍然可以查询物化视图,但除非重新创建该表,以便包含物化视图定义查询所选的所有列,否则无法刷新该表。如果表具有物化视图日志,那么数据库将删除此日志以及与该表关联的任何其他直接路径 INSERT 刷新信息。

删除表的限制

  • 不能直接删除嵌套表的存储表。相反,必须使用 ALTER TABLE ... DROP COLUMN子句删除嵌套表列。
  • 不能删除引用分区表的父表。必须首先删除所有引用分区子表。
  • 不能删除使用回闪数据存档进行历史跟踪的表。必须首先禁用该表使用回闪数据存档。

级联约束

指定 CASCADE CONSTRAINTS 以删除引用已删除表中的主键和唯一键的所有引用完整性约束。如果省略此子句,并且存在此类引用的完整性约束,那么数据库将返回一个错误,而不会删除表。

PURGE

如果要在单个步骤中删除表并释放与其关联的空间,请指定purge。如果指定了purge,则数据库不会将表及其依赖对象放入回收站。

注:不能回滚用purge子句删除的表,也不能恢复该表。

使用这个子句相当于首先删除表,然后从回收站清除它。这个子句在删除过程中省去了一个步骤。它还提供了增强的安全性,防止敏感材料出现在回收站。

Oracle Drop Table的更多相关文章

  1. Oracle drop table 和 truncate table对grant授权的影响

    [oracle@crl ~]$ rlwrap sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue May 16 14: ...

  2. oracle drop table and purge

    一.drop表 执行drop table xx 语句 drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 通过查询回收站 ...

  3. oracle drop table(表)数据恢复方法

    今天不小心把系统用户表给drop掉了,正在运行的系统正式库啊,还好可以恢复 一.查看数据库回收站,看删除的表是否还在回收站select object_name,original_name,partit ...

  4. Oracle Drop表并未直接删除 drop table xx purge

    drop表 执行drop table xx 语句     drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除.     通 ...

  5. ORACLE中Drop table cascade constraints之后果.

    当你要drop一个table时,如果删除table的动作会造成trigger或constraint产生矛盾,系统会出现错误警告的讯息而不会允许执行..一个极简单的例子,例如你有一个员工基本资料表,上面 ...

  6. oracle delete t1;drop table t1;drop table t1 purge

    Truncate tableTruncate table t1;Ddl语言,自动提交:不能回退:回收范围::挪动高水位线:将所有的数据清除,保留表结构:将表缩的最小:保留表的约束和权限. Drop t ...

  7. Oracle诊断:drop table失败[转]

    转: From <http://blog.csdn.net/cyxlxp8411/article/details/7775113> 今天在drop一张表的时候报ORA-00054错误 SQ ...

  8. DROP TABLE ** CASCADE CONSTRAINTS PURGE删除表的时候级联删除从表外键

    1.关于 cascade constraints 假设A为主表(既含有某一主键的表),B为从表(即引用了A的主键作为外键). 则当删除A表时,如不特殊说明,则 drop table A 系统会出现错误 ...

  9. Oracle10g 回收站及彻底删除table : drop table xx purge

    drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 1.通过查询回收站user_recyclebin获取被删除的表信息, ...

随机推荐

  1. tensorflow到底难不难写

    发信人: xhsoldier01 (风大人), 信区: ITExpress 标 题: Re: 没有GPU,tensorflow,AI公司都得死掉 发信站: 水木社区 (Thu Oct 10 20:25 ...

  2. explain结果总结

    id: SELECT查询序列号(SELECT识别符),也就是一条语句中,该select是第几次出现.在此语句中,select就只有一个,所以是1. select_type:SELECT查询类型 常见取 ...

  3. MySQL之Xtrabackup使用

    Xtrabackup对使用innodb存储引擎的mysql数据库进行备份时,不会影响数据库的读写操作(网上是这么说的,我还没验证过) 1.安装yum源 yum install https://repo ...

  4. 算法练习之二叉树的最大深度,二叉树的层次遍历 II

    1.二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,n ...

  5. springboot2 配置 https

    package cn.xiaojf.aibus.configure; import org.apache.catalina.Context; import org.apache.catalina.co ...

  6. ztree取消之前选中状态并设置新的选中

    var zTreeObject = $.fn.zTree.getZTreeObj("treeId"); var node = zTreeObject.getNodeByParam( ...

  7. LeetCode 84. 柱状图中最大的矩形(Largest Rectangle in Histogram)

    84. 柱状图中最大的矩形 84. Largest Rectangle in Histogram

  8. kube-proxy运行机制分析【转载】

    转自:http://blog.itpub.net/28624388/viewspace-2155433/ 1.Service在很多情况下只是一个概念,而真正将Service的作用实现的是kube-pr ...

  9. INV*账户别名接收发放

    DECLARE --p_old_new_flag OLD 为导出 NEW 为导入 l_iface_rec inv.mtl_transactions_interface%ROWTYPE; l_iface ...

  10. Kafka Schema Registry | 学习Avro Schema

    1.目标 在这个Kafka Schema Registry教程中,我们将了解Schema Registry是什么以及为什么我们应该将它与Apache Kafka一起使用.此外,我们将看到Avro架构演 ...