ITPub博客

首页 > 数据库 > Oracle > oracle高水位线处理

oracle高水位线处理

原创 Oracle 作者:wanglinghua0907 时间:2023-12-29 10:48:44 0 删除 编辑

简单概念:

高水位线简单理解可以理解成放过水的木桶中留下的水痕,告诉别人它曾经有这么多水,类比到数据库,

某a表曾经存放0数据,那高水位线就在0这里,如果存放10000,那高水位线就在10000这,如果delete

(truncate不会保留高水位线)了后,那高水位线还是在10000这,代表曾经到达的最高位。全表扫描会

一直扫到高水位线,即使里面全是空的,所以会延长全表扫描的时间。

判断高水位线:

1.定性的方法,数据块多、行数少,表的块数量与表大小比对,必定存在高水位线

select owner,tablespace_name,TABLE_NAME,BLOCKS,NUM_ROWS*AVG_ROW_LEN/1024/1024 "m",NUM_ROWS,EMPTY_BLOCKS,
AVG_SPACE_FREELIST_BLOCKS,AVG_ROW_LEN,NUM_FREELIST_BLOCKS from dba_tables where
TABLE_NAME='LIS_INSPECTION_RESULT';


2.存储过程判断

网上有很多可以搜索。


3.查找数据库中某个表空间下,可以实际存储和需要的表空间差别最大的前10张表

从统计信息的出平均每行的长度和总行数

AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9=判断的存储size(AVG_ROW_LEN*NUM_ROWS),

建议收集统计信息后查比较准确,90%的使用率,所以算大小再/0.9。Dba_tables中的AVG_ROW_LEN

以字节(b)为单位 BLOCKS*8/1024=块数x每个块8k/1024


语句(替换表)

SELECT NUM_ROWS,AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9 NEED, BLOCKS*8/1024 TRUE,(BLOCKS*8/1024-AVG_ROW_LEN*
NUM_ROWS/1024/1024/0.9) RECOVER_MB,TABLE_NAME FROM dba_tables WHERE TABLESPACE_NAME='BB' AND BLOCKS*8/
1024-AVG_ROW_LEN*NUM_ROWS/1024/1024/0.9>100 AND rownum<11 order by RECOVER_MB desc;

不准确的可能性:

1.统计信息未收集,dba_tables视图里记录的不是最新的数据。

2.可能lob字段的原因,lob的信息不记录在dba_tables里。


处理方法:

1.重建表(不建议使用,整个表会锁住,且索引需要重建)

alter table table_name move;

Rebuild index

收集统计信息


2.shrink(收缩表)(建议使用)

时间较短,过程中部影响使用,开始和结束的时候会有锁,建议晚上业务低峰期操作


shink表空间必须为ASSM管理

select TABLESPACE_NAME,BLOCK_SIZE,SEGMENT_SPACE_MANAGEMENT,ALLOCATION_TYPE from dba_tablespaces;

Auto为是assm管理


需要先开启行迁移

alter table TEST_TAB enable row movement;

再收缩

alter table table_name shrink space;

关闭

alter table test_stud1 disable row movement;


1.对表的shrink space并不会导致其上的索引一并收缩空间。

2.SHRINK SPACE不支持对存在函数索引的表的操作。

3.SHRINK SPACE COMPACT只对目标对象做空间碎片整理,但并不调整高水位标志,也不会回收空间。但SHRINK SPACE则还会调整高水位标志,并回收空间。


假如 要同时压缩表的索引:ALTER TABLE TEST_TAB SHRINK SPACE CASCADE


3.expdp/impdp

导入导出一遍


4.复制到另个表,换名字

复制要保存 的数据到临时表t,drop原表,然后rename临时表t为原表


5.Alter table table_name deallocate unused

注:这证明,DEALLOCATE UNUSED为释放HWM上面的未运用 空间,但是并不会释放HWM下面的自由空间,也不会移动HWM的位置.


6.在线重定义

略


7.truncate(不现实)


8.等等方法

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980685/viewspace-3002074/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE、sql server、oceanbase数据库专家,拥有7年以上的大型数据库运维经验,主方向oracle,擅长故障排除、诊断,大体量(TB)迁移,异常故障修复等。拥有丰富主导大型项目经验。服务行业包括:运营商、银行、金融业、政府单位、医疗、制造业、高校等等。

注册时间:2020-07-31

  • 博文量
    116
  • 访问量
    88788