我可以使用以下命令获取总数据库表大小:
EXEC SQL.
SELECT SUM(BYTES) / 1024 FROM DBA_SEGMENTS WHERE OWNER = :dbown AND
SEGMENT_TYPE = 'TABLE' AND
SEGMENT_NAME = :TABNAME
INTO :TABSIZE
ENDEXEC
但我想按年记录计算数据库表大小。我怎样才能实现这个目标
此致
普拉迪普
答案 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,就像你已经完成了获取总大小,然后在表上写一个查询以按年返回行数,然后按总分大小除以每年的行数按比例计算。