社区
基础和管理
帖子详情
oracle删除数据后,空间不释放如何解决???
yanminyansheng
2009-05-31 12:25:30
oracle删除数据后,空间不释放如何解决???
数据数据后,dbf文件还是很大,数据实际只占用了不到一半的空间.有什么方法让dbf文件变小点?
...全文
5355
31
打赏
收藏
oracle删除数据后,空间不释放如何解决???
oracle删除数据后,空间不释放如何解决??? 数据数据后,dbf文件还是很大,数据实际只占用了不到一半的空间.有什么方法让dbf文件变小点?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
eternal_hour
2009-06-09
打赏
举报
回复
你设置 pctfree 和 pctused 参数了么? 可能是这个导致的吧
yanminyansheng
2009-06-08
打赏
举报
回复
alter table move 也实验过了,不过没有移到其他空间去,只是在本数据空间内移动.
ks_reny
2009-06-08
打赏
举报
回复
alter table tb move
hotyxm
2009-06-08
打赏
举报
回复
truncate table table name
wangxin016
2009-06-08
打赏
举报
回复
直接删除dbf文件不就行了么
yanminyansheng
2009-06-05
打赏
举报
回复
truncate table 把所有数据都删除了啊 ?
我现在不是要清空,是删除一部分数据啊.
lbee286
2009-06-04
打赏
举报
回复
要清空表的可以用truncate table xxxx;命令
yanminyansheng
2009-06-04
打赏
举报
回复
20 楼 mmqingfeng 你好!
用你方法查了下我的hwm怎么基本和datafile大小是一致的,不是实际数据占有的大小.
难道这样的方式
move table 然后再重新见index
或者
创建临时表保存数据
create table tableback as select * from table_name;
然后清空主表
truncate table table_name;
重新导回数据
insert into table_nameselect * from tableback ;
丢掉临时表
drop table tableback
不能降低hwm吗?
那还有什么方式可以降低hwm.
bzcnc
2009-06-04
打赏
举报
回复
[Quote=引用 4 楼 yanminyansheng 的回复:]
resize datafile不行,不能使dbf文件变小,只能改大还可以.
[/Quote]
数据文件是可以变小的,尝试如下:
select * from dba_data_files;
/*
FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\USERS01.DBF 4 USERS 5242880 640
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\SYSAUX01.DBF 3 SYSAUX 272629760 33280
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\UNDOTBS01.DBF 2 UNDOTBS1 26214400 3200
4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\SYSTEM01.DBF 1 SYSTEM 503316480 61440
5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\DATA01.DBF 5 DATA 20971520 2560
6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\DATA02.DBF 6 DATA 31457280 3840
7 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\TEST1.DBF 7 TEST 10485760 1280
*/
alter database datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\TEST1.DBF' resize 5m;
---执行成功!
/*
FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\USERS01.DBF 4 USERS 5242880 640
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\SYSAUX01.DBF 3 SYSAUX 272629760 33280
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\UNDOTBS01.DBF 2 UNDOTBS1 26214400 3200
4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\SYSTEM01.DBF 1 SYSTEM 503316480 61440
5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\DATA01.DBF 5 DATA 20971520 2560
6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\DATA02.DBF 6 DATA 31457280 3840
7 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ASIAINFO_ZHENGZW\TEST1.DBF 7 TEST 5242880 640
*/
manchun
2009-06-03
打赏
举报
回复
[Quote=引用 8 楼 liuyi8903 的回复:]
如果是生产库,表之前非常大,那还是慎用shrink,会产生N多的归档.以及非常的慢
[/Quote]
说的没错!
TerryChenDX
2009-06-03
打赏
举报
回复
删除表数据时使用truncate就行了
yanminyansheng
2009-06-03
打赏
举报
回复
1
vc555
就是不能实现啊,
817,9i上都不能实现
上面说的 ALTER DATABASE DATAFILE '%ORADATADIR%\NETMAXU\UNDOTBS01.DBF' RESIZE 1G; 我只是举个例子.
我数据的dbf文件有2.6G,而数据实际使用只有1.3G;
我用resize 1.6G;1.8;2.0;2.5G都不行.
resize 完全不能变小啊.
mmqingfeng
2009-06-03
打赏
举报
回复
你先查查各个datafiel的hwm是多少,然后才能知道是否可以resize
select file_name, ceil((nvl(hwm, 1) * 8192) / 1024 / 1024) as "HWM(MB)"
from dba_data_files a,
(select file_id, max(block_id + blocks - 1) hwm
from dba_extents
group by file_id) b
where a.file_id = b.file_id(+);
killdaohoa82
2009-06-02
打赏
举报
回复
学习学习
vc555
2009-06-02
打赏
举报
回复
上面我说的那个方法就可以实现了。还有什么问题?
vc555
2009-06-02
打赏
举报
回复
数据库什么版本的?
yanminyansheng
2009-06-02
打赏
举报
回复
哪位近来继续探讨下这个问题.怎么能解决啊?急
gisoracle
2009-06-01
打赏
举报
回复
使用exp导出,删除后,导入imp
uj12_best
2009-06-01
打赏
举报
回复
删了数据库,表空间不会自动收缩,这也是为了节约资源
vc555
2009-06-01
打赏
举报
回复
[Quote=引用 10 楼 yanminyansheng 的回复:]
ALTER DATABASE DATAFILE '%ORADATADIR%\NETMAXU\UNDOTBS01.DBF' RESIZE 1G; 这个不行,报错说设定的值小于数据实际占有值(文件包含在请求的resize值以外使用的数据)
[/Quote]
你缩小到比你实际占有量大些就行了。别人写的1G,不是说你就也得写1g。
正确做法是先降低HWM,再确定实际占有大小,再resize数据文件。
注意操作时对业务的影响
加载更多回复(11)
Oracle
定时
删除
数据
并
释放
空间
Oracle
定时
删除
数据
并
释放
空间
,创建存储过程并使用job完成。
Oracle
使用delete
删除
部分表
数据
后,如何
释放
表
空间
??
Oracle
使用delete
删除
部分表
数据
后,如何
释放
表
空间
??亲测有效
oracle
删
空间
,
oracle
删除
数据
后,
空间
释放
Oracle
在
删除
数据
后,因为高水位线的问题,并不会 自动
释放
空间
。所有的
oracle
段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳
数据
的上限,我们把这个上限称为”high water...
Oracle
表
数据
删除
后表
空间
释放
指南
Oracle
表
数据
删除
后表
空间
释放
指南 去发现同类优质开源项目:https://gitcode.com/ 本文档详细介绍了
Oracle
数据
库中,当表
数据
已经
删除
但表
空间
无法
释放
的情况的处理方法。内容包括查询单表占用
空间
大小、
释放
无效...
Oracle
删除
表
数据
空间
未
释放
Oracle
数据
库管理-delete
数据
导致
空间
未
释放
优化
基础和管理
17,382
社区成员
95,118
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章