为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
怎么查询一天的归档量,有些日志已经被覆盖了
可以看看这个函数 SF_GET_ARCHIVE_SIZE,
SF_GET_ARCHIVE_SIZE(
DSC_SEQNO INTEGER, -- 数据守护序号,单机填 '0'
TYPE INTEGER, -- 类型参数:0 为日志号,1 为 LSN
START BIGINT -- 起始日志号或 LSN(根据 TYPE)
) RETURN BIGINT;
归档文件序列号或LSN号可以参考这两个视图V$ARCH_FILE 、V$ARCH_FILE_HISTORY
-- 查询归档文件大小
SELECT DB_MAGIC,pmnt_magic,status,create_time,close_time,path,
ROUND((SF_GET_ARCHIVE_SIZE(DSC_SEQNO, 0, ARCH_SEQ)- SF_GET_ARCHIVE_SIZE(DSC_SEQNO, 0, NEXT_SEQ))/ 1024 / 1024 , 3) AS SIZE_MB
FROM V$ARCH_FILE ORDER BY CREATE_TIME;
-- 估算每天归档量
SELECT
TRUNC(CREATE_TIME) AS ARCHIVE_DATE,
ROUND(sum((SF_GET_ARCHIVE_SIZE(DSC_SEQNO, 0, ARCH_SEQ)- SF_GET_ARCHIVE_SIZE(DSC_SEQNO, 0, NEXT_SEQ))/ 1024 / 1024 ), 3) AS TOTAL_MB
FROM V$ARCH_FILE
GROUP BY TRUNC(CREATE_TIME) ORDER BY ARCHIVE_DATE;
可根据视图v$arch_file查询
SELECT TO_CHAR(create_time,'yyyy-mm-dd') ARC_DATE,count(*),sum(len)/1024/1024 size_mb from SYS.V$ARCH_FILE
group by TO_CHAR(create_time,'yyyy-mm-dd') order by TO_CHAR(create_time,'yyyy-mm-dd')
可以直接看服务器上归档路径下的归档日志多少,归档日志名称带有生成时间

如果存储空间不足保留一天的归档日志量,就考虑定时从视图V$ARCHIVED_LOG里面记录一个小时左右前后数据,最后整合一起统计一天的归档量大概多少。