社区
基础和管理
帖子详情
oracle删除数据后,空间不释放如何解决???
yanminyansheng
2009-05-31 12:25:30
oracle删除数据后,空间不释放如何解决???
数据数据后,dbf文件还是很大,数据实际只占用了不到一半的空间.有什么方法让dbf文件变小点?
...全文
5380
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 mark”或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的
数据
块分配给这个segment。HWM通常增长的幅度为一次5个
数据
块,原则上HWM只会...
Oracle
删除
表
数据
空间
未
释放
Oracle
数据
库管理-delete
数据
导致
空间
未
释放
优化
【免费下载】
Oracle
表
数据
删除
后表
空间
释放
指南
本文档详细介绍了
Oracle
数据
库中,当表
数据
已经
删除
但表
空间
无法
释放
的情况的处理方法。内容包括查询单表占用
空间
大小、
释放
无效
空间
以及批量生成
释放
脚本,以便
释放
空表占用的表
空间
。 ## 功能概述 - **查询单表占用
空间
大小**:提供SQL查询语句,用于查看指定表占用的
空间
大小。 - **
释放
无效
空间
**:提供SQL脚本,用于
释放
已经
删除
数据
所占用但未被
释放
的无效
空间
。 - **批量生成
释放
脚...
基础和管理
17,382
社区成员
95,118
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章