如何降低Oracle表的高水位 1.执行表重建指令 alter table table_name move(验证不可行,不降低水位线,但可释放表空间)当你创建了一个对象如表以后,不管你有没有插入数据,它都会占用一些块,ORACLE也会给它分配必要的空间.同样,用ALTER TABLE MOVE释放自由空间后,还是保留了一些空间给这个表.ALTER TABLE.MOVE 后面不跟参数也行,不跟参数表还是在原来的表空间,Move后记住重建索引.查询失效索引语句:select index_name,table_name,tablespace_name,status From dba_indexes Where owner='HNUNICOM' And status<;>;'VALID';重建索引语句:alter index INDEX_NAME rebuild tablespace TABLESPACE_NAME;如果以后还要继续向这个表增加数据,没有必要move,只是释放出来的空间,只能这个表用,其他的表或者segment无法使用该空间。2.执行alter table table_name shrink space;(已经验证成功,推荐使用,可释放数据库和磁盘空间空间,大表可同时降低表自身和表空间的高水位线,小表则只可以降低表自身的高水位线,原因不详)注意,此命令为Oracle 10g新增功能,执行该指令之前必须允许行移动 alter table table_name enable row movement;3.复制要保留的数据到临时表t,drop原表,然后rename。
oracle删除一张表里面的数据之后,在往这个表里面插数据,那删除的空间是不是可以用
Oracle的表空间过一段时间就100%了,老是增加数据文件的大小也不是个办法,能有什么解决方案吗?具体情况具体分析。哪个表空间用的多。如果确实数据量大,那必然要扩空间加。
什么是Oracle高水位线 在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark,HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。
oracle数据库,怎么降低高水位线
Oracle的表空间过一段时间就100%了,老是增加数据文件的大小也不是个办法,能有什么解决方案吗? 具体情况具体分析。哪个表空间用的多。如果确实数据量大,那必然要扩空间加数据文件。如果数据库高水位线过高,浪费空间,那就在线回缩高水位,然后清表。如果不会的话,教你一招,把你当前用户或者全库exp导出dmp,数据库清空,再imp导入dmp进库,库就会压缩很多。
请问TRUNCATE TABLE 与 DELETE在删除整个表的所有记录时的区别 TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而TRUNCATE则不会被撤销。TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比Delete操作后的表要快得多。TRUNCATE不能触发任何Delete触发器。当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。不能清空父表。在oracle里,使用delete删除数据以后,数据库的存储容量不会减少,而且使用delete删除某个表的数据以后,查询这张表的速度和删除之前一样,不会发生变化。解答拓展:因为oralce有一个HWM高水位,它是oracle的一个表使用空间最高水位线。当插入了数据以后,高水位线就会上涨,但是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。除非使用truncate删除数据。那么,这条高水位线在日常的增删操作中只会上涨,不会下跌,所以数据库容量也只会上升,不会下降。而使用select语句查询数据时,数据库会扫描高水位线以下的数据块,因为高。
请问TRUNCATE TABLE 与 DELETE在删除整个表的所有记录时的区别 TRUNCATE TABLE 和不带2113 WHERE 的 DELETE 功能是一样的,都是删5261除表中的所有数据,不4102过 TRUNCATE TABLE 速度更快,占用的日1653志更专少,这是因为 TRUNCATE TABLE 直接释放数据页属并且在事务日志中也只记录数据页的释放,而 DELETE 是一行一行地删除,在事务日志中要记录每一条记录的删除。