mysql drop table and purge

一、drop表

执行drop table xx 语句

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

    通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句

                   flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_table_name>];

                   将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。

                   若要彻底删除表,则使用语句:drop table <table_name> purge; 

                   清除回收站里的信息

                   清除指定表:purge table <table_name>;

                   清除当前用户的回收站:purge recyclebin;

                   清除所有用户的回收站:purge dba_recyclebin;

    不放入回收站,直接删除则是:drop table xx purge;

举例如下:

===============================================================================

SQL> select * from test1;

A B C

-- -- ----------

11 5 

11 10 

2 rows selected

SQL> create table test2 as select * from test1;

Table created

SQL> select * from test2;

A B C

-- -- ----------

11 5 

11 10 

2 rows selected

SQL> drop table test2;

Table dropped

SQL> select object_name, original_name, operation, type from user_recyclebin;

OBJECT_NAME ORIGINAL_NAME OPERATION TYPE

------------------------------ -------------------------------- --------- -------------------------

BIN$vQwemDg4R9mK9fYJNdYzvg==$0 TEST2 DROP TABLE

SQL> flashback table test2 to before drop rename to test3;--【to test3】将表重命名

Done

SQL> select * from test3;

A B C

-- -- ----------

11 5 

11 10  

2 rows selected

SQL> select * from test2

ORA-00942: 表或视图不存在

--彻底删除表

SQL> drop table test3 purge;

Table dropped

二、清除表中的数据

truncate操作 同没有where条件的delete操作十分相似,只是把表里的信息全部删除,但是表依然存在。

例如:truncate table  XX

Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。

truncate table 后,有可能表空间仍没有释放,可以使用如下语句:

alter table 表名称 deallocate   UNUSED KEEP 0;

注意如果不加KEEP 0的话,表空间是不会释放的。

例如:

alter table F_MINUTE_TD_NET_FHO_B7 deallocate   UNUSED KEEP 0;

或者:

TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE才能释放表空间。

例如: truncate table  test1 DROP STORAGE;

三、查询分区表存在哪些分区:

查询分区表的情况,可以在USER_TAB_PARTITIONS中查询。例如:

    select ‘alter table ‘||t.table_name ||‘ truncate   partition ‘ || t.partition_name from USER_TAB_PARTITIONS t where t.table_name like ‘F_%‘

    清除指定某个分区表的分区数据:

    alter   table  表名称   truncate   partition   分区名称;

四、清除分区表占用的空间:

alter table 表名称  DROP    partition 分区名称;

    例如:

    alter table F_HOUR_TD_NET_MPVOICE  DROP    partition P_09121913         ;

五、查询表空间信息

    可以利用如下语句查询各表在存储空间的使用分情况:

    SELECT  TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),‘999G999D999‘)   CNT_MB   FROM   DBA_EXTENTS   WHERE   OWNER=‘&OWNER‘   AND   SEGMENT_NAME=‘&TABLE_NAME‘   AND   SEGMENT_TYPE   LIKE   ‘TABLE%‘   GROUP   BY   TABLESPACE_NAME;

可以使用如下语句,查询存储空间情况:

Select Tablespace_Name, Sum(bytes)/1024/1024 From Dba_Segments group By Tablespace_Name

六、查询用户下的表

    如果你的用户权限不是DBA:   

  那你用   

  select   *   from   user_tables;   

  可以查询到当前用户所拥有的表。   

  如果是DBA用户:   

  select   *   from   dba_tables;
时间: 2024-08-01 19:18:51

mysql drop table and purge的相关文章

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

drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 1.通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_table_name>]; 将回收站里的表恢复为原名称

Oracle tips:drop table和purge

在操作Oracle时,我们经常都会删除一个表,当删除错误后,我们希望能够恢复该表,有时也希望删除表之后能够立刻释放表的空间.下面将介绍在Oracle中表的删除.恢复和空间释放. DROP TABLE 当你drop一个表时,数据库不会立刻释放表的空间,而是重命名这个表然后将其放入回收站中,可以通过下面的方式查看一个删除的表: select object_name,original_name from user_recyclebin where original_name = 'TEMP'; OBJ

oracle数据库中drop table与purge使用实例

oracle 数据库中 drop table 与purge 实际示例: CREATE OR REPLACE PROCEDURE pro_droptable IS cursor cur is select table_name from user_tables where table_name like 'TEMPTABLE%'; drop_sql     varchar2(1000); table_number number; BEGIN SELECT COUNT(*) INTO table_n

MySQL DROP TABLE操作以及 DROP 大表时的注意事项

语法: 删表 DROP TABLE Syntax DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE] 可一次删除一张或多张表.需具有所删除表上的DROP权限. 表定义文件和数据文件均被移除.表被删除后表上的用户权限不会被自己主动删除. 參数里表中指定的表名不存在则报错,但对于存在的表仍会删除.可通过指定IF EXISTS阻止表不存在时引发的错误(此时对于不存在的表仅产生一个NOTE).

Oracle Flashback Drop: Undo a DROP TABLE Operation

7.4 Oracle Flashback Drop: Undoa DROP TABLE Operation Oracle Flashback Drop reverses theeffects of a DROP TABLE operation. It can be used to recover afterthe accidental drop of a table. Flashback Drop is substantially faster thanother recovery mechan

oracle 11g drop table 后闪回

--初始化数据 drop table test purge; create table test as select * from dba_objects; delete from test where object_id is null; alter table test add constraint pk_test_object_id primary key(object_id); create index ind_t_object_name on test(object_name); --

【转】MySQL Temporary Table相关问题的探究

本文转载自:http://itindex.net/detail/10901-mysql-temporary-table 问题的引入 让我们先来观察几条非常简单的MySQL语句: mysql> create temporary table tmp(id int, data char(20)); Query OK, 0 rows affected (0.00 sec) mysql> create table tmp(id int, data char(20)); Query OK, 0 rows

Hive drop table batched

if the hive version not support drop table tablename purge. your drop table command will move data to .Trash in hdfs. dfs .Trash; drop table tablename; dfs .Trash/Current; #batch drop tables you want in hive. hive --database databaseName -e "show tab

mysql5.5基础 drop table... 删除一个表或者多个表

礼悟:    公恒学思合行悟,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼养身心,诚劝且行且珍惜. 数据.数据,命根就在数据.操作数据库一定要谨慎小心.给最苦 这里的代码,看看就好,要有自己的判断.遇到抉择,要不耻上下问. mysql:5.5                     os:Windows7 x64 删除一个表 的代码及效果 mysql> show tables; +--------------------+ | Ta