ZKX's LAB

oracle 如何查看表 高水位线 oracle怎么判断高水位表

2021-04-04知识16

如何降低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数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark,HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。

oracle设置水位线有什么作用,或者说有什么好处?请给解释一下,谢谢了。 高水位线的意思是oracle数据块历史使用空间的最高点,好处就是比如做全表扫描的话,有了高水位线,全表扫描只会扫描到水位线处,再向上就不会扫描了,因为根本没有数据,所以对oracle查询性能是有一定的帮助的,另外如果一个表做过大量的delete操作的话,需要定时shrink,因为delete不回收高水位,下次做全表扫描的时候还会扫描到高水位线,但其实高水位以下很多都是free的空间,会影响全表扫描的性能,这也是如果你想删除表中所有数据时最好用truncate的原因,因为truncate回收高水位。

#oracle怎么判断高水位表

随机阅读

qrcode
访问手机版