Oracle DB表大小按年度记录计数

时间:2014-08-29 17:35:30

标签: sql oracle

我可以使用以下命令获取总数据库表大小:

EXEC SQL.

   SELECT SUM(BYTES) / 1024 FROM DBA_SEGMENTS WHERE OWNER = :dbown AND
                                             SEGMENT_TYPE = 'TABLE' AND
                                             SEGMENT_NAME = :TABNAME
                                             INTO :TABSIZE

ENDEXEC

但我想按年记录计算数据库表大小。我怎样才能实现这个目标

此致

普拉迪普

2 个答案:

答案 0 :(得分:0)

我能想到的最简单的技巧是创建一个空的重复表,插入一行,检索单行的字节。由于您的行具有指定的长度,与您输入的内容无关,每行的字节大小应该是一切都一样。

然后,您所要做的就是了解每年在表中插入多少行。您通常会使用例如

SELECT to_char(a.insert_date, 'yyyy')      YEAR, 
       sum(to_char(a.insert_date, 'yyyy')) ENTRIES
FROM   yourTable a 
GROUP BY to_char(a.insert_date, 'yyyy')

或者我的问题是错误的。

答案 1 :(得分:0)

这不是一门精确的科学。考虑到多年来该表可能已添加/修改了列。所以,考虑到这个警告,我会快速做你想要的方法是查询dba_Segment,就像你已经完成了获取总大小,然后在表上写一个查询以按年返回行数,然后按总分大小除以每年的行数按比例计算。