zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

查询Oracle中每月数据(oracle按月份查询)

Oracle数据 查询 月份 每月
2023-06-13 09:12:15 时间

表大小

在Oracle中查询每月数据表大小,可以使用Oracle内置的一些函数和查询语句,来获取每月的数据表的大小信息。

首先,我们可以使用Oracle内置函数【Sum (bytes/blocks) over

(order by )】来统计某个表中每月的Blocks/Bytes,例如:

SELECT table_name,

TO_CHAR(scn_time, YYYY-MM ) Month ,

SUM (blocks) OVER (PARTITION BY TO_CHAR(scn_time, YYYY-MM )) blocks_size,

SUM (bytes) OVER (PARTITION BY TO_CHAR(scn_time, YYYY-MM )) bytes_size

FROM dba_segment_stats

WHERE segment_name =

AND scn_time sysdate 1

GROUP BY table_name, TO_CHAR(scn_time, YYYY-MM );

上面的SQL中,使用了Partition By 将查询结果按照指定的字段划分为不同的Partition,“TO_CHAR(scn_time, YYYY-MM )” 将日期划分为每月的形式,然后通过Sum函数,统计每月的Block/Bytes大小。

其次,使用我们可以使用【group by】子句来把查询结果分组,我们可以像下面这样写:

SELECT table_name,

TO_CHAR(scn_time, YYYY-MM ) Month ,

SUM (blocks) blocks_size,

SUM (bytes) bytes_size

FROM dba_segment_stats

WHERE segment_name =

AND scn_time sysdate 1

GROUP BY table_name, TO_CHAR(scn_time, YYYY-MM );

最后,我们可以使用【analytic functions】函数来实现,例如:

SELECT table_name,

LISTAGG(TO_CHAR(scn_time, YYYY-MM ), , ) WITHIN GROUP (ORDER BY TO_CHAR(scn_time, YYYY-MM )) Month ,

SUM (blocks) blocks_size,

SUM (bytes) bytes_size

FROM dba_segment_stats

WHERE segment_name =

AND scn_time sysdate 1

GROUP BY table_name

ORDER BY Month

上述查询把结果按照每月划分,并且使用LISTAGG函数将每月的划分按照字符串格式组合起来。

通过以上三种查询方式,我们可以轻松的获取Oracle中每月数据表的大小信息。


我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题

本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 查询Oracle中每月数据(oracle按月份查询)