温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ORACLE高水位表的查找方法

发布时间:2020-08-17 14:33:11 来源:ITPUB博客 阅读:270 作者:运维之路 栏目:关系型数据库

 

  1. 高水位的介绍

数据库运行了一段时间,经过一些列的删除、插入、更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩;

  1. 查找高水位线的表

  1. 查找表需要的存储空间:表以数据块的形式存储在数据文件中,表的存储结构是:行×行数,如果知道了总共有多少行,每行的平均长度,两者相乘,再除于90%的使用率,那么就可以知道实际需要存储的空间;

    表的存储结构;

            
            
            
            

    从统计信息得出平均每行的长度和总共的行数,从而知道存储的SIZE;

  2. 查找表实际存储的空间:数据实际存储在数据文件中是以块的形式存储的,每个数据文件8K,块的数量乘于8k,就可以知道实际已经存储的空间是多少了;

    c) 查找数据库中某个表空间下,可以实际存储和需要的表空间差别最大的表,查找脚本如下:

    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='PSAPSR3' 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,表的信息是根据统计信息得到的,所以如果统计信息不准确,那么整个搜索的结果都可能是错误的;

统计信息的脚本:exec dbms_stats.gather_table_stats('user','table_name');

  1. 回收的操作

a) 启动行迁移:alter table table_name enable row movement ;

b)进行表的收缩:alter table table_name shrink space ;

  1. 检查结果

SQL> select t.table_name,BLOCKS,EMPTY_BLOCKS,NUM_ROWS

from user_tables

where table_name = upper('table_name');

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN

ORACLE技术博客:ORACLE 猎人笔记               数据库技术群:367875324 (请备注ORACLE管理 )  

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI