实用存储过程--获取oracle用户下所有表的表名与其数据量

概述

作为DBA,对数据库中表段、索引段之类的数量,大概的级别是需要有个大致了解的,今天主要分享一个存储过程,可以很实用的获取到oracle用户下所有表的表名与其数据量。


查询当前用户名下所有表

select * from all_tables where owner='GZCSS_GZBH';

实用存储过程--获取oracle用户下所有表的表名与其数据量

存储过程

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;

实用存储过程--获取oracle用户下所有表的表名与其数据量

查询所有表的表名与其数据量

select * from TMP_TAB_CNT;

实用存储过程--获取oracle用户下所有表的表名与其数据量


关于oracle方面怎么去查所有表的表名与其数据量就介绍到这了,存储过程中的owner大家根据需要做对应调整就行,如果数据库数据量上T的话可能要收集半个小时,大家可以自己测试下。

后面会分享更多工作中常用的一些技巧和命令,感兴趣的朋友可以关注下!

实用存储过程--获取oracle用户下所有表的表名与其数据量

相关推荐