概述
作为DBA,对数据库中表段、索引段之类的数量,大概的级别是需要有个大致了解的,今天主要分享一个存储过程,可以很实用的获取到oracle用户下所有表的表名与其数据量。
查询当前用户名下所有表
select * from all_tables where owner='GZCSS_GZBH';
存储过程
CREATE TABLE TMP_TAB_CNT(TABLE_NAME VARCHAR2(50),TABLE_CNT_O INT);begin for tb in (select table_name from dba_tables where owner = 'GZCSS_GZBH' and TEMPORARY='N' AND TABLE_NAME NOT LIKE '%?%') LOOP execute immediate 'insert into TMP_TAB_CNT(table_name,table_cnt_o) select ''' ||tb.table_name ||''',(select count(*) from ' ||'"' ||tb.table_name ||'"' ||') from dual'; END LOOP; COMMIT;END;
查询所有表的表名与其数据量
select * from TMP_TAB_CNT;
关于oracle方面怎么去查所有表的表名与其数据量就介绍到这了,存储过程中的owner大家根据需要做对应调整就行,如果数据库数据量上T的话可能要收集半个小时,大家可以自己测试下。
后面会分享更多工作中常用的一些技巧和命令,感兴趣的朋友可以关注下!