社区
基础和管理
帖子详情
oracle删除数据后,空间不释放如何解决???
yanminyansheng
2009-05-31 12:25:30
oracle删除数据后,空间不释放如何解决???
数据数据后,dbf文件还是很大,数据实际只占用了不到一半的空间.有什么方法让dbf文件变小点?
...全文
5414
31
打赏
收藏
oracle删除数据后,空间不释放如何解决???
oracle删除数据后,空间不释放如何解决??? 数据数据后,dbf文件还是很大,数据实际只占用了不到一半的空间.有什么方法让dbf文件变小点?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
解决
表
空间
不
释放
空间
本文介绍了如何
解决
数据
库中日志表占用大量磁盘
空间
的问题,包括彻底
删除
表、使用TRUNCATE和DELETE操作瘦身表、以及利用row movement和shrink space来调整高水位。通过行移动和
空间
压缩,提供了一种有效的方法来清理日志
数据
并
释放
空间
。
Oracle
删除
数据
后
释放
数据
文件所占磁盘
空间
探讨
Oracle
数据
库中DELETE操作不
释放
空间
的问题,分析高水位线概念及其实战模拟,提供
解决
方法并讨论DELETE操作的潜在影响。
关于
Oracle
数据
库
删除
表
空间
后磁盘
空间
不
释放
的问题
本文介绍如何查询表
空间
使用率,调整表
空间
数据
文件大小及
删除
表
空间
的方法,避免
数据
库服务器磁盘
空间
浪费。
【
Oracle
专栏】
删除
用户
释放
表
空间
本文围绕
Oracle
数据
库展开实验,主要验证
删除
用户
释放
表
空间
、
删除
表收缩表
空间
及降低表
空间
高水位线。实验发现
删除
用户后表
空间
已使用
空间
减小,但大表
空间
文件未自动收缩,需收缩
空间
。还介绍了单表
删除
后表
空间
收缩方法及相关SQL语句。
oracle
删除
数据
释放
表
空间
流程
本文详细介绍
Oracle
数据
库中表
空间
的管理和优化策略,包括
解决
空间
不足的问题,通过move和shrinkspace操作降低高水位,以及如何安全地
删除
和重建索引。同时,提供了实用的SQL语句和注意事项。
基础和管理
17,377
社区成员
95,113
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章