由于数据库中有一个日志表记录7000万条日志,造成数据库占用磁盘283G之多,所以现在要求给磁盘瘦身,但是直接用DELETE语句删除,不能释放空间,经过查资料学习,得知这是"HWM"(高水位)造成.经过查找资料总结解决方案有两种.

一 彻底删除表(没测试,因为不符合我的情况)

flashback table tablename1 to before drop rename to tablename2;--【to test3】将表重命名

drop table tablename2 purge; --彻底删除表

二、清除表中的数据

① 使用truncate(没测试)

truncate删除不用加条件,直接删除数据,不可找回数据,也不能有外键关联,如果有外键关联,先取消关联,然后在删除,truncate table  tablename1

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;

引自:

https://www.cnblogs.com/sl-shilong/p/3625153.htmlhttps://www.cnblogs.com/sl-shilong/p/3625153.htmlhttps://www.cnblogs.com/sl-shilong/p/3625153.html

②DELETE数据(本人使用)

因为是日志,所以我想留最近一个月的数据,所以不能直接删表,当然也可以把表中要保留的数据备份,然后操作①中的操作,但是我还是选择了古老的方法.但是DELETE删除后是可以找回数据,为什么可以找回数据,那就是因为数据又存到了另外一个地方,就类似电脑中的回收站,要把回收站清空才能释放空间.

a:  move (引自:oracle删除数据释放表空间流程_诚的博客-CSDN博客_oracle释放表空间)

优点:可以移动表到其他表空间,在执行命令时不需要执行alter table table_name enable row movement

缺点:表move 会导致表中的索引失效,要rebuild;同时表会产生行级锁......;在此如果表中有LOB字段 时要用一下命令来实现表空间移动:alter table owner.table_name move tablespace tablespace_name lob (lob_column) store as lob segment  tablespace tablespace_name;也可以单独move lob,index要rebuild

b:shrink space (引自:oracle删除数据释放表空间流程_诚的博客-CSDN博客_oracle释放表空间)

优点:降低高水位时索引不会失效

缺点:不能将表移动到其他表空间;高水位降低效果没有move明显;同时在执行命令前要先执行(alter table table_name enable row movement允许行移动)也会表会产生行级锁.......,shrink比move更耗费cpu,产生很多current block这样生成巨大的redo与undo 如果表中索引很少可以建议使用move降低高水位

shrink space常用操作命令(引自:Oracle 删除数据后释放数据文件所占磁盘空间_ulvge0的博客-CSDN博客)

下面的语句也是本人使用的语句,亲测有效

alter table tablename enable row movement;--打开行移动

alter table tablename shrink space cascade;--压缩表及相关数据段,并下调HWM

alter table tablename shrink sapce compact;--只压缩,不下调HWM

alter table tablename shrink sapce ;--下调HWM

alter table tablename disable row movement;--关闭行移动

如有不对,请多多指教

ORACLE解决表空间不释放空间相关推荐

  1. 解决RM删除没有释放空间问题

    www@172-18-8-12 log]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 120G 101G 20G 84% / ...

  2. oracle查表占的物理空间,查询Oracle表实际物理使用大小

    Oracle中有两种含义的表大小 一种是分配给一个表的物理空间数量,而不管空间是否被使用.可以这样查询获得字节数: select segment_name, bytes from user_segme ...

  3. oracle 查看表所占用的空间大小

    http://luobeng.blogbus.com/logs/36329526.html 1.查看表所占空间 SELECT   TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/ ...

  4. 走进C++程序世界-----指针(动态申请空间和释放空间)

    使用关键字NEW分配内存 在讲解分配内存之前,首先来理解下内存区划分.内存分配.常量存储区.堆.栈.自由存储区.全局区这些也是初学者容易混淆的地方.我的博客中有一篇文章描述C语言中代码分配情况,点击链 ...

  5. oracle解决表空间不足问题

    ORA-00604: 递归sql级别1出现错误 ORA-01654:索引SYS.I_COL1 无法通过 128 (在表空间SYSTEM中) 扩展 这种情况是表空间不够需要查看表空间的容量,和表空间所对 ...

  6. MySQL 删除表数据,释放空间

    近期整理数据库堆积了三年多的数据,将19年之前的数据(大概十几万条,也不是很多居然--)删除,只保留今年的数据,也仅仅释放出了500MB左右. 第一步:先查看了一下占用磁盘空间较多的几张表 SELEC ...

  7. C/C++申请空间与释放空间的两种方法

    1.   C语言的函数malloc和free (1) 函数malloc和free在头文件<stdlib.h>中的原型及参数 void * malloc(size_t size) 动态配置内 ...

  8. oracle如何避免表锁定,Oracle 解决表锁定的问题

    1. 通过v$session,v$locked_object查看谁锁定了资源 select t1.sid, t1.serial#, t1.username, t1.logon_time fromv$s ...

  9. oracle 查询表物理大小,oracle查看表实际物理空间使用大小

    一种是分配给一个表的物理空间数量,而不管空间是否被使用.可以这样查询获得字节数: select segment_name, bytes from user_segments where segment ...

  10. Oracle数据库表空间整理回收与释放操作

    文章目录 前言 一.降低表空间高水位 1.查看表空间和对应物理文件名 2.清空回收站 3.整理表空间 4.生成RESIZE代码 二.在删除时进行释放 1.清空表数据并释放表空间 2.迁移表数据 参考文 ...

最新文章

  1. 聊聊nginx报错499问题
  2. 【大佬漫谈】5G对AI反欺诈行业提出更高要求——谢映莲
  3. 为什么要用动态代理?静态代理与动态代理详解
  4. 2015山东春考计算机分数排名,2015-2017年山东春季高考分数线.docx
  5. 利用qsort二级排序
  6. 攻占CNS!4篇Science+2篇Nature+1篇Cell,2019年内地学者开门红
  7. 音视频开发(31)---H264 视频信息与压缩编码
  8. Spring @Bean @Scope @Qualifier
  9. 苹果发布无人车安全报告,内容竟只有7页?
  10. select时尽可能少使用as对性能很有好处
  11. 可行性研究报告计算机,台式计算机项目可行性研究报告范文.doc
  12. Android MediaPlayer播放raw资源封装类
  13. 利用python将excel导入SQL Server数据库
  14. 欧几里得算法和扩展欧几里得算法
  15. 计算机网络hdcp是什么意思,HDCP技术_百科..doc
  16. MATCH和INDEX函数
  17. 火云邪神ddos使用_ddos攻击器怎么用
  18. 计算机考试网页制作演示视频教程,一级计算机考试网页制作怎么办!求操作步骤!...
  19. Python OpenCV 裁剪身份证正反面
  20. Establishing SSL connection without server‘s identity verification is not recommended.

热门文章

  1. PyTorch的参数固定以及detach clone
  2. 批量生成奖状的简单程序
  3. 如何用电脑录制视频?图文教学,快速学会
  4. linux下的网络管理命令,【linux】常见的网络管理命令
  5. 锋迷商城spring-vue项目流程和笔记
  6. 【POJ 3580】 SuperMemo
  7. Orcad Capture CIS出BOM表
  8. 如何创建像 Quora 这样的问答网站:技术堆栈、用户获取等
  9. 心态-《当下的力量》书中的精髓:了解我们痛苦的根源,学会让自己活在当下,摆脱痛苦。
  10. 敲黑板!5G消息、富媒体消息、一键登录知识点汇总