前些天给一家客户开发个接口,还原了正式数据库,由于数据库存储量太大,还原后基本没什么空间了,有个业务表使用频繁,决定删除前期数据,只留近两个月数据以便测试。

数据量太大,等待时间长,就分段删除的,删了一半左右吧,发现delete掉数据后空间不但没收缩,而且占用的存储空间还越来越大,于是乎决定看下怎么回事。

首先查了下表空间占用率:

select total.tablespace_name,Round(total.MB,2) as Total_MB, Round(total.MB-free.MB,2) as Used_MB, Round((1-free.MB/total.MB)*100,2) || '%' as Used_Rct

from (select tablespace_name,Sum(bytes)/1024/1024 as MB from dba_free_space group by tablespace_name) free, (select tablespace_name,Sum(bytes)/1024/1024 as MB from dba_data_files  group by tablespace_name) total

WHERE free.tablespace_name = total.tablespace_name;

发现UNDOTBS1这个表空间占了32G的存储空间,百度了下才知道这个是回滚段表空间,事物恢复、记录些日志什么的。知道用途后就放心删除了。

1、创建新的表空间:

create undo tablespace undotbs2 datafile '/oradata/ddptest/UNDOTBS1_01.dbf' size 100m reuse autoextend on next 100m maxsize unlimited;

2、更改splife配置:

alter system set undo_tablespace=undotbs2 scope=both;

3、删除原表空间:

drop tablespace undotbs2 including contents;

4、创建pfile:

create pfile from spfile;

这时发现存储空间并没有减少,重新查了下表空间占用率,已经没有UNDOTBS1的记录了,能查到UNDOTBS2的占用率。索性停掉oracle服务,直接去路径delete掉表空间,瞬间多了30多G空间。于是继续删除数据,删除了大半天终于删完了,回滚段表空间又重新建了一次,但是数据表空间占用率并没有下降。

手动释放表空间:

alter table tableName enable row movement;

alter tabletableName shrink space;

表空间占用率一下子就降下来了。

(清除回滚段表空间一定要慎重,尽量不要在正式数据库操作!)

oracle导数据不释放内存,关于ORACLE数据库delete后释放空间问题相关推荐

  1. oracle有哪两种内存结构,Oracle体系结构详解(物理构造,内存结构和逻辑结构)...

    当前位置:我的异常网» 数据库 » Oracle体系结构详解(物理构造,内存结构和逻辑结构 Oracle体系结构详解(物理构造,内存结构和逻辑结构) www.myexceptions.net  网友分 ...

  2. linux怎么释放内存占用,如何将linux占用的空间释放

    释放过度占用的空间 12/31 2008  安装配置 | Oracle 1835 次查看 上一条:给数据库管理员设定访问限制 下一条:Oracle10gR2自动检查点调整的新特性 - 环境: OS:R ...

  3. PHP如何释放内存之unset销毁变量并释放内存详解

    PHP的unset()函数用来清除.销毁变量,不用的变量,我们可以用unset()将它销毁.但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子: <?php $s = ...

  4. mysql 释放空间_07_MySQL delete后释放存储空间

    CREATE TABLE `wkj_Score` ( `Id` int(10) NOT NULL AUTO_INCREMENT COMMENT '编号', `Stu_id` int(10) NOT N ...

  5. C++ 之new和delete释放内存

    C++ -释放内存(new和delete) C++动态分配和释放内存 @c.biancheng.net/view/206.html 在C语言中,动态分配内存用 malloc() 函数,释放内存用 fr ...

  6. 研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...

    #---------------------------------指针-----------------------------------# #include <iostream> i ...

  7. CMAP是否可以使用RemoveAll()释放内存?CMAP如何释放内存?

    是否可以使用RemoveAll释放内存?CMAP如何释放内存? 1.映射表类(CMap) 2.CMap的格式: 3.CMAP头文件 4.CMAP是否可以使用RemoveAll()释放内存? 5.Rem ...

  8. C/C++申请和释放内存

    new 和 delete 是 C++ 用于管理堆内存的两个运算符,对应于C语言中的 malloc 和 free,但是 malloc 和 free 是函数,而new 和 delete 是运算符.除此之外 ...

  9. JNI内存方面说明以及相关类型手动释放内存

    JNI内存方面说明以及相关类型手动释放内存 一.Java内存 二.JNI内存和引用 三.Local Reference 四.Global Reference 五.Weak Global Referen ...

最新文章

  1. chrono 使用备注
  2. 鏖战双十一-阿里直播平台面临的技术挑战
  3. 微信小程序中嵌套html_微信小程序:web-view嵌套H5实现微信支付功能解决方案及填坑...
  4. 高级转录组分析和R数据可视化第十一期(报名线上课还可免费参加线下课)
  5. Kotlin学习笔记 第二章 类与对象 第十一节 枚举类 第八节密封类
  6. 远程同步修改云服务器上的文件
  7. 每日linux命令学习-历史指令查询(history、fc、alias)
  8. linux命令的帮助信息,Linux查询命令帮助信息(知道)
  9. USB免驱摄像头采集图像【VS2012+opencv+directShow(CcameraDS)实现】
  10. 四大组件之Activity(下)
  11. 初创公司几个投资人,各占多少股份合适
  12. centos 6.5 mysql 5.5 安装,centos6.5 安装mysql-5.5
  13. poi-tl导出word;自定义列表序号和表格宽度,表格合并,自定义标题,更新目录
  14. 对耳朵伤害最小的耳机类型是哪种?如何保护我们的耳朵?
  15. teamviewer检测为商业用途 5分钟后关闭解决方法
  16. 科普:什么是CPU?CPU和芯片关系?CPU怎么做的?CPU有什么用?不同CPU有什么区别?我们怎么选CPU?
  17. 2015级移动本面向对象课程主页
  18. pytorch 移植到Android平台(一)
  19. Qt入门-QLabel类
  20. java nio rewind_java.nio.ByteBuffer 以及flip,clear及rewind区别

热门文章

  1. php 2010excel,PHPExcel在php5.2.10上的bug
  2. mysql中起飞到达城市查询_让mysql慢慢起飞 - 初识慢日志
  3. android listview 自适应列宽_Android 开发技术周报 Issue#272
  4. statsmodels学习——使用多元回归拟合数据
  5. java l1 l2缓存,Java 两级缓存框架
  6. m不能被3整除c语言表达式,求mn-之间所有不能被3整除的整数之和求 – 手机爱问...
  7. 如何把开源项目发布到Jcenter
  8. Http实现文件下载
  9. 【bzoj1911】[Apio2010]特别行动队 斜率优化dp
  10. Oracle数据库的创建、数据导入导出