Oracle Drop Table
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的更多相关文章
- 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: ...
- oracle drop table and purge
一.drop表 执行drop table xx 语句 drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 通过查询回收站 ...
- oracle drop table(表)数据恢复方法
今天不小心把系统用户表给drop掉了,正在运行的系统正式库啊,还好可以恢复 一.查看数据库回收站,看删除的表是否还在回收站select object_name,original_name,partit ...
- Oracle Drop表并未直接删除 drop table xx purge
drop表 执行drop table xx 语句 drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 通 ...
- ORACLE中Drop table cascade constraints之后果.
当你要drop一个table时,如果删除table的动作会造成trigger或constraint产生矛盾,系统会出现错误警告的讯息而不会允许执行..一个极简单的例子,例如你有一个员工基本资料表,上面 ...
- oracle delete t1;drop table t1;drop table t1 purge
Truncate tableTruncate table t1;Ddl语言,自动提交:不能回退:回收范围::挪动高水位线:将所有的数据清除,保留表结构:将表缩的最小:保留表的约束和权限. Drop t ...
- Oracle诊断:drop table失败[转]
转: From <http://blog.csdn.net/cyxlxp8411/article/details/7775113> 今天在drop一张表的时候报ORA-00054错误 SQ ...
- DROP TABLE ** CASCADE CONSTRAINTS PURGE删除表的时候级联删除从表外键
1.关于 cascade constraints 假设A为主表(既含有某一主键的表),B为从表(即引用了A的主键作为外键). 则当删除A表时,如不特殊说明,则 drop table A 系统会出现错误 ...
- Oracle10g 回收站及彻底删除table : drop table xx purge
drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 1.通过查询回收站user_recyclebin获取被删除的表信息, ...
随机推荐
- <div> <p> <span>的用法和区别
<div> 标签可以把文档分割为独立的.不同的部分.它可以用作严格的组织工具,并且不使用任何格式与其关联. 更重要的意义是在网页的动态实现过程中,对划分的区域统一处理,例如换背景色.字体等 ...
- Win10访问共享文件夹如何取消用户名密码
win10中,开启guest(来宾)账户的步骤是: 右击win10左下角Windows的图标->计算机管理->计算机管理(本地)->系统工具->本地用户和组->用户-&g ...
- rqalpha学习-2
conf = default_config()deep_update(user_config(), conf)deep_update(project_config(), conf) 三种不同级别的 ...
- JavaScript和Jquery个人笔记
目录 前言 价格 * 数量 = 金额 js计算时间差值 判断敲回车或Shift+回车 js控制textarea换行 $(this)选择当前元素 前端调试禁止其他js js添加a标签href属性和文本 ...
- PL/SQL无法显示字段可以为NULL还是不能为NULL
今天用mybatis操作oracle,用PL/SQL看到数据表的字段,明明都是可以为NULL的字段,各个字段都报错,ORA-01400 字段不能为NULL. 后面请教了同事和朋友,才知道这是PL/SQ ...
- 【Android Studio】Android实现跳转功能
最近在玩Esp32,需要APP,顺带学了下这方面的东西. 主要实现功能: 从主 mainActivity 跳转到otherActivity. 新建一个hello工程,添加 otherActivit ...
- k8s 集群 节点状态显示notready
一般情况下 我们是在maste节点上安装网络插件的,然后在join node 节点,这样导致node节点可能无法加载到这些插件 使用 journalctl -f -u kubelet 显示如下内容 N ...
- 问题二:appium 搞定权限弹框的一个小办法
public void permission() { for (int i=0; i <= 10; i++) { if (getPageSource().contains("允许&qu ...
- Qt deletelater函数分析(2)
夫唯不争,故天下莫能与之争 -- 老子 在C++中,delete 和 new 必须 配对使用,Qt作为C++的库,显然是不会违背C++原则.但是,qt有自己的内存管理,有时候虽然使用了new, ...
- CF1051D Bicolorings
题目描述 咳咳,懒得复制了上面是两张图:) 解题思路 这题是一道很好的题,感觉之前做过,一开始手推状态找规律,可以用状压但是没想到 借鉴了一下大佬的dp modify数组用以累加新增的状态数 dp数组 ...