Oracle如何通过删除表中的记录来释放表和表空间大小?
执行
涂改?桌子?jk_test?搬家还是?
涂改?桌子?jk_test?搬家?存储(初始?64k)或
涂改?桌子?jk_test?解除分配?没用过还是?
涂改?桌子?jk_test?缩水?空间。注意:由于alter table jk_test move通过消除行迁移、清除空间碎片和删除空闲空间来减少占用的空间,所以会导致该表上的索引无效(因为ROWID已经改变,找不到了),所以需要重新构建索引来执行move。
查找对应于该表的索引
选择?索引名,表名,表空间名,索引类型,状态?从哪里?dba_indexes?在哪里?Table_owner='SCOTT '根据status的值,只重建无效的。SQL = ' alter index ' | | index _ name | | ' rebuild ';用存储过程来执行,有点安慰。
还要注意,在alter table move的过程中会产生锁,要避免在业务高峰时段操作!
另外注意:truncate table jk_test执行起来会更快,占用的空间也会被释放,这应该是因为truncate语句执行后不会进入oracle recylebin。如果删除一个表并添加purge,它将不会进入回收站(其中的数据可以通过闪回检索)。
无论是删除还是截断,相应数据文件的大小都不会改变。如果想改变数据文件所占用的空间,可以执行下面的语句:
涂改?数据库?数据文件?文件名?调整大小?8g重新定义数据文件的大小(不小于数据文件已用空间的大小)。
补充一些整肃知识。清洗操作:
1).清除表空间tablespace _ name:用于清空表空间的回收站。
2).清除表空间表空间名用户用户名:在指定表空间的回收站中清空指定用户的对象。
3).清除回收站:删除当前用户回收站中的对象。
4).清除dba _回收站:删除所有用户回收站中的对象。该命令需要sysdba权限。
5).删除表table_name清除:?删除对象,不放入回收站,即永久删除,不能用闪回恢复。
6).清除索引recycle _ bin _ object _ name:当你想释放回收站的空间,恢复表时,可以通过释放对象的索引所占用的空间来缓解空间压力。因为索引可以重建。
2.如果一些表占用了数据文件的最后一块,您需要首先将这些表导出或移动到其他表空间,然后删除这些表并收缩它们。但是,如果移动到另一个表空间,就需要重建它的索引。
1、
SQL & gt?涂改?桌子?t_obj?搬家?表空间?t _ TBS 1;-也可以使用exp和imp直接将表移动到其他表空间。
2、
SQL & gt涂改?owner.index_name?重建;?-重建索引3。删除原始表空间。