oracle删除数据后表空间仍过大问题解决方法
-----亲测有效-------
--一、备份原始数据库库
--1、备份空表
--在plsql里面执行一下这句话 然后把结果集 再执行一把 再导数据
select 'alter table '||table_name||' allocate extent(size 64k);' from tabs t
where not exists (select segment_name from user_segments s where s.segment_name=t.table_name);
2、在cmd窗口(以管理员身份运行),执行如下备份数据库语句
exp userid=abc/abc@landdata222 file=D:\数据库备份\abc20170622.dmp log=D:\数据库备份\abc20170622.log
--二、降低每个表占用的大小
--在plsql命令窗口执行如下语句:
set heading off;
set echo off;
set feedback off;
set termout on;
spool C:\allocate.sql;
select 'ALTER TABLE ' || owner || '.' || table_name || ' MOVE TABLESPACE ' ||
tablespace_name || ' STORAGE(INITIAL 64K NEXT 1M);'
from dba_tables
where owner = 'abc'
and initial_extent > 1048576;
spool off;
--打开上一步的成果文件C:\allocate.sql,在plsql中执行
--由于以上过程虽然减少了表占用的大小,但是对应的索引和表空间大小没有减少,需要备份数据后重新还原即可解决问题。
三 、再次备份数据库
--1、备份空表
--在plsql里面执行一下这句话 然后把结果集 再执行一把 再导数据
select 'alter table '||table_name||' allocate extent(size 64k);' from tabs t
where not exists (select segment_name from user_segments s where s.segment_name=t.table_name);
2、在cmd窗口(以管理员身份运行),执行如下备份数据库语句
exp userid=abc/abc@landdata222 file=D:\数据库备份\abc20170622jianshao.dmp log=D:\数据库备份\abc20170622jianshao.log
四、还原第三步备份的数据库文件
1、在plsql中删掉用户abc、对应的表空间abc
a删除用户:在abc用户右键删除
b删除表空间:右键删除
2、创建新的表空间和用户
--创建表空间,用sys用户登录创建
Create tablespace abc datafile
'C:\Soft\app\lenovo\oradata\landdata222\abc.DBF'size 100m autoextend on next 100M maxsize 32000M;
(如果提示如下图,则在对应路径下先删除数据文件
)
---创建用户,权限包括dba、resource、connect
在plsql——users,右键“新建”
3、还原数据库
在cmd窗口(以管理员身份运行),执行如下还原数据库语句
imp userid=abc/abc@landdata222 file=D:\数据库备份\abc20170622jianshao.dmp fromuser=abc touser=abc log=D:\数据库备份\abc20170622huanyuan.log
四、释放表空间大小
----释放表空间大小-------
select a.file#,a.name,a.bytes/1024/1024 CurrentMB, ceil(HWM * a.block_size)/1024/1024 ResizeTo, (a.bytes - HWM * a.block_size)/1024/1024 ReleaseMB, 'alter database datafile '''||a.name||''' resize '|| ceil(HWM * a.block_size/1024/1024) || 'M;' ResizeCMD from v$datafile a, (select file_id,max(block_id+blocks-1) HWM
from dba_extents group by file_id) b where a.file# = b.file_id(+) and (a.bytes - HWM *block_size)>0 order by 5
--上述查询语句最后一个字段的内容复制出来执行一次
oracle删除数据后表空间仍过大问题解决方法的更多相关文章
- Mysql删除数据后磁盘空间未释放的解决办法【转】
转自 Mysql删除数据后,磁盘空间未释放的解决办法 - 今日头条(TouTiao.com)http://toutiao.com/a6303087712678412546/?tt_from=mobil ...
- mongoDB 删除集合后,空间不释放的解决方法
mongoDB 删除集合后,空间不释放,添加新集合,没有重新利用之前删除集合所空出来的空间,也就是数据库大小只增不减. 方法有: 1.导出导入 dump & restore 2.修复数据库 r ...
- Oracle 删除数据后释放数据文件所占磁盘空间
测试的时候向数据库中插入了大量的数据,测试完成后删除了测试用户以及其全部数据,但是数据文件却没有缩小.经查阅资料之后发现这是 Oracle “高水位”所致,那么怎么把这些数据文件的大小降下来呢?解决办 ...
- mysql优化, 删除数据后物理空间未释放(转载)
mysql优化, 删除数据后物理空间未释放(转载) OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTI ...
- 关于mysql 删除数据后物理空间未释放(转载)
转自 关于mysql 删除数据后物理空间未释放(转载) - NETDATA - 博客园http://www.cnblogs.com/shawnloong/archive/2013/02/07/2908 ...
- MySQL删除数据后磁盘空间的释放情况【转】
OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除 ...
- oracle删除用户及其表空间
oracle删除用户及其表空间 删除表空间:可以先将其offlinealter tablespace xx offline;将磁盘上的数据文件一同删除drop tablespace xxx inclu ...
- mysql 正确清理binlog 删除数据后磁盘空间的
(3条消息)MySQL删除数据后磁盘空间的释放情况 - ZERO - CSDN博客 https://blog.csdn.net/zero__007/article/details/51404091 m ...
- Oracle system表空间满的暂定解决方法
Oracle system表空间满的暂定解决方法 数据库用的是Oracle Express 10.2版本的.利用Oracle Text做全文检索应用,创建用户yxl时没有初始化默认表空间,在系统开发过 ...
随机推荐
- Redhat 安装ftp服务
介绍: 1 安装ftp服务端及客户端 2 ftp的使用
- mysql for windows(服务器)上的配置安装--实例
mysql for windows(服务器)上的配置安装 **** 下载 官网网址:https://www.mysql.com/downloads/ 选择左上角Community 再选择MySQL C ...
- 使用canvas进行图片裁剪简单功能
1.html部分 使用一个input[type="file"]进行图片上传: canvas进行图片的裁剪展示 <div> <input type="fi ...
- 如何使用angularJs
本期更新,博主将给大家分享一些AngularJs常用的一些属性和方法,AngularJS 是由 Google 的员工 Miško Hevery 从 2009 年开始着手开发.这是一个非常好的构想,该项 ...
- 通过js来设置cookie和读取cookie,实现登陆时记住密码的功能
function setCookie(){ //设置cookie var loginCode = $("#login_code").val(); //获取用户名信息 var pwd ...
- Java中处理二进制移位
我相信,这篇文章读起来会相当有趣. 文章中编程语言是Java,用Java的原因:第一,Java不做数据溢出校验,这样我们可以忽略溢出异常:第二,Java普及率比较高,就像是python或shell,几 ...
- c# 内存的具体表现- 通用类型系统 深拷贝 浅拷贝 函数传参
c# 通用类型系统 及变量在 深拷贝 浅拷贝 函数传参 中的深层次的表现 在编程中遇到了一些想不到的异常,跟踪发现,自己对于c#变量在内存上的表现理解有偏差,系统的学习并通过代码实验梳理了各种情况下, ...
- WinRAR5.01注册码附注册机
把下面的注册码复制到"记事本"中,另存为"rarreg.key"文件,放到WinRAR安装目录即完成注册.RAR registration datakjcy8U ...
- 数组的重排序方法reverse()和sort()
js数组中存在两个可以直接用来重排序的方法:reverse()和sort(). reverse()方法比较简单,直接反转数组项的顺序: var arr = [1, 3, 2, 4, 5]; arr.r ...
- 【2017-05-21】WebForm内置对象:Session、Cookie,登录和状态保持
1.Request -获取请求对象 string s =Request["key"]; 2.Response - 响应请求对象 Response.Redirect(" ...