`

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

 
阅读更多
一、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定时删除表空间的数据并释放表空间

    "Oracle定时删除表空间的数据并释放表空间" Oracle数据库定时删除表空间的数据并释放表空间是通过创建存储过程和定时任务来实现的。下面详细讲解该知识点: 一、创建存储过程 首先,需要创建一个存储过程来删除...

    oracle 在删除表,表空间,用户时 如何释放磁盘空间.pdf

    在Oracle数据库管理中,释放磁盘空间是一项关键任务,特别是在处理大型数据表、表空间或用户时。以下是一些关于如何在Oracle中有效地删除表、表空间和用户以释放磁盘空间的详细步骤: 1. **删除表**: - **DROP ...

    oracle 在删除表,表空间,用户时 如何释放磁盘空间.docx

    本文将详细介绍如何在删除表、表空间和用户时有效地释放磁盘空间。 首先,我们来看如何删除表并释放空间。当执行`DROP TABLE`命令时,默认情况下,Oracle会将表移至回收站(`USER_RECYCLEBIN`),而不是立即释放空间...

    oracle快速删除表空间

    在管理Oracle数据库时,有时需要删除不再使用的表空间,以释放磁盘空间或优化数据库结构。本篇文章将详细介绍如何在Oracle数据库中快速删除表空间,以及相关的重要知识点。 首先,理解表空间在Oracle中的角色至关...

    Oracle表分区 建表空间 创建用户

    在Oracle中,**用户**(User)代表数据库中的一个登录身份,每个用户都有自己的默认表空间。 ##### 创建用户 创建用户`JPA`并指定其默认表空间为`JPA_TAB`的SQL语句如下: ```sql CREATE USER JPA IDENTIFIED BY ...

    oracle temp表空间不足解决方法

    这样,当表空间满时,数据文件会自动增大,但要注意设置合理的增长限制,避免无节制地占用磁盘空间。 6. **定期清理临时段**: - 清理会话:结束不再需要的会话,以释放它们占用的临时空间。 - 设置全局临时表:...

    oracle表空间操作详解

    通过表空间,可以控制用户对磁盘空间的使用,限制用户可以使用的磁盘空间大小,避免硬盘空间耗竭。 一、表空间的重要性 在大型数据库应用中,控制用户对磁盘空间的使用是非常重要的。表空间可以实现这个目的,限制...

    oracle-临时表空间

    与永久表空间不同的是,临时表空间中的数据不会被持久化保存,在会话结束时会被自动清除。因此,临时表空间非常适合用于那些不需要长期保留的数据处理场景。 #### 三、查询与管理临时表空间 ##### 1. 查询用户及其...

    Oracle 删除用户和表空间详细介绍

    Oracle数据库管理中,删除用户和表空间是常见的维护任务,特别是在开发环境中,为了保持数据库的整洁和高效运行,定期清理无用的用户和表空间至关重要。以下是对标题和描述中涉及知识点的详细解释: 1. **Oracle ...

    Oracle压缩表表空间

    从 Oracle 9iR2 开始,Oracle 提供了表/表空间压缩技术,以减少磁盘开销,节省空间,并在某些情况下提高查询性能。 表压缩的工作原理是删除在数据库表中发现的重复数据值,以节省空间。压缩是在数据库的数据块级别...

    ORACLE表空间的回收脚本.rar

    - 回收可以释放被删除对象占用的空间,优化存储利用率,避免无谓的磁盘空间浪费。 3. **表空间回收方法** - **段压缩**:对表、索引等进行压缩,减少它们在表空间中的物理占用。 - **重分布数据**:通过移动对象...

    Linux下Oracle删除用户和表空间的方法

    在Linux环境下管理Oracle数据库时,有时需要删除不再使用的用户及其关联的表空间。这通常涉及到数据库的安全性和资源优化。本文将详细介绍如何在Linux下的Oracle环境中删除用户和表空间,以及处理可能遇到的问题。 ...

    Oracle创建删除用户、角色、表空间、导入导出命令总结.txt

    - 在执行任何创建或删除操作之前,请确保有足够的磁盘空间以及所有相关数据的安全备份。 - 对于表空间的操作,特别是删除操作,请务必确认表空间不再被使用,以免导致数据丢失。 - 在进行权限授予时,请确保遵循最小...

    Oracle数据库优化之数据库磁盘IO

    在优化数据库磁盘IO时,需要监控数据库的性能,检查系统的I/O问题,使用V$FILESTAT确定oracle文件I/O的进程,分布I/O减少磁盘竞争,避免动态空间管理,确定动态扩展,分配分区,避免回滚段的动态空间管理,减少迁移...

    如何解决Oracle8i数据库临时表空间满的问题.pdf

    4. Oracle临时表空间满的问题:当临时表空间的磁盘空间被全部占用后,可能会出现错误消息,例如“ORA-1652: unable to extend temp segment by %s in tablespace %s”。这会导致用户无法完成如排序、并行查询等操作...

    oracle表空间学习整理,包括常用sql

    在Oracle数据库中,表空间是逻辑存储单元,用于组织数据库对象,如表、索引和视图等。它将多个物理磁盘上的数据文件(Data File)集合起来,为数据库提供更大的存储容量。表空间可以分为系统表空间和非系统表空间,...

    关于oracle11g数据库备份存在空间不足解决办法.docx

    使用管道可以将备份文件分成多个小文件,以便在磁盘空间不足时进行备份。例如,可以使用以下命令创建管道: exp jtkg/Jtkg_2017 owner=jtkg rows=y indexes=y compress=n buffer=65536feedback=100000 volsize=0...

    oracle表空间变动注意事项

    2. **磁盘管理**:合理规划磁盘空间,避免单个磁盘空间不足。 3. **数据迁移**:实现数据的物理位置转移,便于数据备份或迁移至更高性能的存储设备。 #### 操作: 1. **增加数据文件**:使用`ALTER TABLESPACE ADD ...

    释放TEMP表空间占用硬盘空间

    然而,在高并发或大容量数据处理场景下,临时表空间可能迅速膨胀,导致磁盘空间不足,从而影响数据库性能和稳定性。 ### 二、检查与评估 在进行任何操作前,首先需要了解当前数据库的默认临时表空间以及其占用情况...

    oracle 表空间

    7. 清理源表空间:在确认数据正确无误后,可以删除atf_ygj表空间中的对象,释放空间。 在整个过程中,还需要注意以下几点: - 确保有足够的权限执行这些操作,通常需要DBA权限。 - 在进行数据迁移时,尽量在低峰...

Global site tag (gtag.js) - Google Analytics