本文介绍了“如何删除表和Oracle的回收站”的知识。很多人在实际案例的操作中会遇到这样的困难。让边肖带领你学习如何处理这些情况。希望大家认真阅读,学点东西!
00-1010首先,我们来看看Oracle Drop Table的语法格式。
解释里面的参数:
1schemaSchema表示模式名,这里可以理解为用户名,默认为当前用户下的表。例如,要删除scott user下的emp表,请删除表scott.emp
1purgepurge选项,如果打开回收站(oracle 10g之后,默认打开回收站),没有清除选项,意味着删除的表放入回收站,空间不回收。用闪光灯闪回到桌子上。使用清除选项,意味着删除表并释放空间。
1cascade constraints选项,如果有其他表与要删除的表的主键列或唯一键列相关联(要删除的表是主表(父表),而辅助表(子表)有与此表相关联的外键),那么直接使用drop table会报错。此时,如果要强制删除此表,则需要添加级联约束选项。
00-10: 10使用闪回删除功能,您可以撤消DROP TABLE语句的影响,而无需求助于传统的时间点恢复。这是由回收站,实现的,可以通过DBA_RECYCLEBIN视图查询回收站。
检查当前数据库的回收站功能是否打开。
12conn/as sysdbaselect值来自v $参数,其中name=' recyclebin
执行删除表语句。
134567891011213141516171819202122232425262728293031使用scott用户登录SQL Conn scott/Tiger。
bash plain">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
-
通过回收站中的对象名称查询表的数据
12345 | 下面的方式是错误的: select * from BIN$opkhRg3T0MPgVaUgq /kbkw ==$0; 需要加上双引号: select * from "BIN$opkhRg3T0MPgVaUgq/kbkw==$0" ; |
-
查看回收站
1 | show recyclebin; |
-
flashback table的语法格式
在执行闪回表操作期间,数据库获取闪回列表中所有指定的报表独立DML锁。当正在恢复到之前状态时,这些锁阻止对表的任何操作。闪回表操作在单个事物中执行,不管闪回表中指定表的数量。要么所有的表都恢复到早期状态,要么都没恢复。如果任何表的闪回表操作失败,那么整个语句都失败。闪回操作完成时,表中的数据与表之前的时间点一直。但是,FLASHBACK
TABLE到SCN或时间戳不保存rowid,FLASHBACK TABLE TO BEFORE
DROP不能恢复引用约束。数据库不能恢复与表关联的早期结构的统计信息。表当前的索引是恢复,并反映还原点表的状态。如果该索引在还原点不存在,数据更新索引里来反映还原点表的状态。然而,如果索引是在当前时间和还原点之间被删除,是不能恢复。
-
执行闪回删除
1234 | flashback table emp1 to before drop; 也可以通过回收站中的名字执行闪回: flashback table “BIN$opkhRg3T0MPgVaUgq /kbkw ==$0” to before drop; |
-
清空回收站
1 | purge recyclebin; |
“怎么删除表和Oracle的回收站”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/67436.html