oracle导数据不释放内存,关于ORACLE数据库delete后释放空间问题
前些天给一家客户开发个接口,还原了正式数据库,由于数据库存储量太大,还原后基本没什么空间了,有个业务表使用频繁,决定删除前期数据,只留近两个月数据以便测试。
数据量太大,等待时间长,就分段删除的,删了一半左右吧,发现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后释放空间问题相关推荐
- oracle有哪两种内存结构,Oracle体系结构详解(物理构造,内存结构和逻辑结构)...
当前位置:我的异常网» 数据库 » Oracle体系结构详解(物理构造,内存结构和逻辑结构 Oracle体系结构详解(物理构造,内存结构和逻辑结构) www.myexceptions.net 网友分 ...
- linux怎么释放内存占用,如何将linux占用的空间释放
释放过度占用的空间 12/31 2008 安装配置 | Oracle 1835 次查看 上一条:给数据库管理员设定访问限制 下一条:Oracle10gR2自动检查点调整的新特性 - 环境: OS:R ...
- PHP如何释放内存之unset销毁变量并释放内存详解
PHP的unset()函数用来清除.销毁变量,不用的变量,我们可以用unset()将它销毁.但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子: <?php $s = ...
- mysql 释放空间_07_MySQL delete后释放存储空间
CREATE TABLE `wkj_Score` ( `Id` int(10) NOT NULL AUTO_INCREMENT COMMENT '编号', `Stu_id` int(10) NOT N ...
- C++ 之new和delete释放内存
C++ -释放内存(new和delete) C++动态分配和释放内存 @c.biancheng.net/view/206.html 在C语言中,动态分配内存用 malloc() 函数,释放内存用 fr ...
- 研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...
#---------------------------------指针-----------------------------------# #include <iostream> i ...
- CMAP是否可以使用RemoveAll()释放内存?CMAP如何释放内存?
是否可以使用RemoveAll释放内存?CMAP如何释放内存? 1.映射表类(CMap) 2.CMap的格式: 3.CMAP头文件 4.CMAP是否可以使用RemoveAll()释放内存? 5.Rem ...
- C/C++申请和释放内存
new 和 delete 是 C++ 用于管理堆内存的两个运算符,对应于C语言中的 malloc 和 free,但是 malloc 和 free 是函数,而new 和 delete 是运算符.除此之外 ...
- JNI内存方面说明以及相关类型手动释放内存
JNI内存方面说明以及相关类型手动释放内存 一.Java内存 二.JNI内存和引用 三.Local Reference 四.Global Reference 五.Weak Global Referen ...
最新文章
- chrono 使用备注
- 鏖战双十一-阿里直播平台面临的技术挑战
- 微信小程序中嵌套html_微信小程序:web-view嵌套H5实现微信支付功能解决方案及填坑...
- 高级转录组分析和R数据可视化第十一期(报名线上课还可免费参加线下课)
- Kotlin学习笔记 第二章 类与对象 第十一节 枚举类 第八节密封类
- 远程同步修改云服务器上的文件
- 每日linux命令学习-历史指令查询(history、fc、alias)
- linux命令的帮助信息,Linux查询命令帮助信息(知道)
- USB免驱摄像头采集图像【VS2012+opencv+directShow(CcameraDS)实现】
- 四大组件之Activity(下)
- 初创公司几个投资人,各占多少股份合适
- centos 6.5 mysql 5.5 安装,centos6.5 安装mysql-5.5
- poi-tl导出word;自定义列表序号和表格宽度,表格合并,自定义标题,更新目录
- 对耳朵伤害最小的耳机类型是哪种?如何保护我们的耳朵?
- teamviewer检测为商业用途 5分钟后关闭解决方法
- 科普:什么是CPU?CPU和芯片关系?CPU怎么做的?CPU有什么用?不同CPU有什么区别?我们怎么选CPU?
- 2015级移动本面向对象课程主页
- pytorch 移植到Android平台(一)
- Qt入门-QLabel类
- java nio rewind_java.nio.ByteBuffer 以及flip,clear及rewind区别
热门文章
- php 2010excel,PHPExcel在php5.2.10上的bug
- mysql中起飞到达城市查询_让mysql慢慢起飞 - 初识慢日志
- android listview 自适应列宽_Android 开发技术周报 Issue#272
- statsmodels学习——使用多元回归拟合数据
- java l1 l2缓存,Java 两级缓存框架
- m不能被3整除c语言表达式,求mn-之间所有不能被3整除的整数之和求 – 手机爱问...
- 如何把开源项目发布到Jcenter
- Http实现文件下载
- 【bzoj1911】[Apio2010]特别行动队 斜率优化dp
- Oracle数据库的创建、数据导入导出