怎么统计oracle数据库表的数据量

怎么统计oracle数据库表的数据量,第1张

在oracle10g中统计所有表的数据量可以使用如下语句:

select sum(NUM_ROWS) from dba_tables where owner like 'SCHEMA'

说明一下,以上语句必须用dba账户登录才可以使用,其中的SCHEMA参数就是当前用户名

chema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。

一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。

最简单的理解:以你计算机的用户为例,如果你的计算机有3个用户,那么每个用户登录系统看到的(使用的)功能是可以不相同的!

如果是oracle9i版本,可以考虑如下两步实现:

(10g直接执行第二步就可以了)

统计一个用户下所有表的行数:

1.exec

dbms_stats.gather_schema_stats(owner=>'用户名')

2.select

sum(num_rows)

from

user_tables

统计全库所有表的行数:

1.exec

dbms_stats.gather_database_stats(estimate_percent=>'30')

2.select

sum(num_rows)

from

dba_tables

生产环境中需谨慎考虑收集新的统计信息后对应用产生的影响。

用一个过程

create or replace procedure procedure_name as

begin

insert into 统计表

select 字段名1,count(1) from 表 group by 字段名1

--统计表中的字段。(字段名1,数量)。如果有其它字段,请加入到下面select语句中。如:

/* insert into 统计表

select 字段名1,sysdate,'统计者的姓名', count(1) from 表 group by 字段名1*/

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6888758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存