用Drop table(100000条记录)后磁盘可用空间没增大?怎样真正删除,以增大磁盘可用空间?

lingchenyidian 2008-04-09 01:55:06
如题
...全文
786 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingchenyidian 2008-05-16
  • 打赏
  • 举报
回复
比较趋向:alter database datafile 'your_file_path\file_name' resize xxxxM;

谢过各位参与,散分了..
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
不知,帮顶
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
等待牛人来答.
flycbx 2008-04-23
  • 打赏
  • 举报
回复
菜鸟学习了!
ll1314110 2008-04-22
  • 打赏
  • 举报
回复
菜鸟学习了!
hdevil 2008-04-21
  • 打赏
  • 举报
回复
需要的是磁盘空间

alter database datafile 'your_file_path\file_name' resize xxxxM;
jackiecheng001 2008-04-21
  • 打赏
  • 举报
回复
如果全表数据删除 ,建议用truncate table xx 这样程序会把该表磁盘空间复位,

doer_ljy 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 hdevil 的回复:]
需要的是磁盘空间

alter database datafile 'your_file_path\file_name' resize xxxxM;
[/Quote]
正解,既然已经删掉了那个表了,就只好resize一下datafile了。
truncate本身只能回缩表空间占用,不能回缩HWM。
回缩数据文件对磁盘占用的方法有修改datafile大小(如上),和把一些数据对象移动到其他表空间(Move)。
fangming 2008-04-18
  • 打赏
  • 举报
回复
如果该表所有的数据都不要了的话就用
truncate tableName;
senjor 2008-04-11
  • 打赏
  • 举报
回复
用TRUNCATE TABLE 表名

TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。
lingchenyidian 2008-04-10
  • 打赏
  • 举报
回复
原因已知道,不需重复。

要怎样删除表空间?是主要问题,要怎样做呢?我用了purge recyclebin;但也没见效。
ruihuahan 2008-04-10
  • 打赏
  • 举报
回复
可以通过修改数据文件的大小来回收空间

alter database datafile 'your_file_path\file_name' resize xxxxM;
Lt_smile 2008-04-10
  • 打赏
  • 举报
回复
3L
richard_2010 2008-04-09
  • 打赏
  • 举报
回复
3楼回答好像是对的啊
vc555 2008-04-09
  • 打赏
  • 举报
回复
你磁盘可用空间没增大,是因为表空间的大小没变。你只删除表,表空间又没变,所以磁盘可用空间没增大。
Liubinglin 2008-04-09
  • 打赏
  • 举报
回复
你直接在em工具中编辑表空间,把数据文件的大小改小就可以三,只要改后的大小大于现在表空间中数据占用的大小就OK
lingchenyidian 2008-04-09
  • 打赏
  • 举报
回复
我需要的是磁盘空间。请高人指点下该怎么做啊
rockfeng 2008-04-09
  • 打赏
  • 举报
回复
truncate,delete,drop的比较.


注意:这里说的delete是指不带where子句的delete语句


相同点:truncate和不带where子句的delete, 以及drop都会删除表内的数据


不同点:
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.


2.delete语句是DML,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是DDL, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.


3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).


4.速度,一般来说: drop> truncate > delete


5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
lingchenyidian 2008-04-09
  • 打赏
  • 举报
回复
目前已经drop table A
怎样释放A占用的空间?
小兽 2008-04-09
  • 打赏
  • 举报
回复
其实空间是已经释放了的,只不过由于高水位线的缘故,看起来仍然被占用。
如果想彻底删除并一次释放空间,可以加上PURGE选项。

drop table xxx PURGE;
加载更多回复(2)

17,378

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧