[转]oracle在删除表表空间用户时,如何释放磁盘空间

摘要:
通过查询回收站user_Recyclebin获取删除的表信息,然后使用flashbackup语句tobeforedrop[renameto];将回收站中的表还原为原始名称或指定新名称,表中的数据将不会丢失。可截断后,表空间可能尚未释放。可以使用以下语句:可分配表名deallocateUNUSEDKEEP0;请注意,如果未添加KEEP 0,则不会释放表空间。例如:变量F_ MINUTE_TD_ NET_ FHO_ B7deallocateUNUSEDKEEP0;或者:TRUNCATETABLEtable_NameDROPSTORAGE可以释放表空间。
一、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;

免责声明:文章转载自《[转]oracle在删除表表空间用户时,如何释放磁盘空间》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【赵强老师】Redis的RDB持久化Python 相对导入attempted relative import beyond top-level package下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle数据库的迁移(从一台服务器到另一个台服务器,从oracle 10g到oracle 11g)

这个过程呢,还是蛮艰难的。。。。 一、最初我使用的是Navicat中的数据传输来迁移的,虽说整个数据库的迁移没有成功,但传输指定的对象时还是传输成功了。所以还是记录一下吧。 1.前提连接好数据库。在指定的数据库上右击,选择“数据传输”。 2.在弹出的框内选择源库和目的库以及模式和你要传输的对象,如下图所示 3.点击开始便可传输 二、在利用Navicat只...

Oracle的分条件计数COUNT(我的条件),由浅入深

@ 目录 本文涉及COUNT 、CASE WHEN 、DECODE 介绍的关键字Oracle-COUNT内置函数 复杂计数 常规操作 中级操作 中级操作的反思 高级操作 高级操作修正版本(需要你根据自己的业务知识灵活转动) 总结 本文涉及COUNT 、CASE WHEN 、DECODE 介绍的关键字Oracle-COUNT 一下所有的操作...

九、oracle 事务

一、什么是事务事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml(数据操作语言,增删改,没有查询)语句要么全部成功,要么全部失败。如:网上转账就是典型的要用事务来处理,用于保证数据的一致性。 二、事务和锁当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户修改表的结构。这里对我们的用户来讲是非常重要的。 三、提交...

ubuntu下jdk的安装

ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 1.使用ppa/源方式安装 1.添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get up...

el-table表格高度自适应

<el-table stripe ref="table" :data="table.tableData" border size="mini" : :header-cell-style="{'text-align':'center'}" :cell-style="{'text-alig...

查看SQL Server Resource Database以及修改系统表

参考文献: SQL 2005修改系统表 SQL Server 2005中修改系统表的方法 如何登入DAC(SQL Server 2005)  ResourceDB Location Changes ResourceDB Location Changes 1.What is resourcedb?(from msdn) The Resource databa...