
以下是对 Oracle 19C ASM 中 V$ASM_AUDIT_CLEANUP_JOBS 动态性能视图 的深度解析,涵盖作用、使用场景、字段含义、相关视图、基表、原理及常用 SQL 查询:
1. 核心作用
V$ASM_AUDIT_CLEANUP_JOBS 监控和管理 ASM 审计记录(Audit Trail)的自动清理任务。它提供:
- 审计清理作业的实时状态(运行中/完成/失败)
- 作业执行时间、进度和结果详情
- 自动清理策略的执行记录
📌 背景:
ASM 会生成审计记录(如磁盘组操作、权限变更等),这些记录存储在ASM_DISKGROUP的元数据中。为避免元数据膨胀,Oracle 会自动调度清理任务删除过期审计记录。
2. 使用场景
- 审计空间管理:监控自动清理是否按预期工作
- 故障排查:诊断审计清理失败的原因(如空间不足)
- 合规审计:验证审计记录的保留策略执行情况
- 性能分析:检查清理作业对 ASM 性能的影响
- 手动干预:当自动清理失败时手动触发清理
3. 字段含义(关键列)
| 列名 | 数据类型 | 说明 |
|---|---|---|
JOB_ID | NUMBER | 清理作业的唯一标识符 |
OPERATION | VARCHAR2(64) | 作业类型:固定为 AUDIT CLEANUP |
TARGET | VARCHAR2(64) | 清理目标:AUDIT(仅支持审计记录清理) |
STATUS | VARCHAR2(64) | 作业状态:RUNNING(执行中)COMPLETED(成功)FAILED(失败) |
START_TIME | DATE | 作业开始时间 |
END_TIME | DATE | 作业结束时间(未完成时为 NULL) |
SCHEDULED_TIME | DATE | 计划执行时间 |
ERROR_CODE | NUMBER | 失败时的错误代码(成功时为 0) |
ERROR_MESSAGE | VARCHAR2(2000) | 失败时的错误描述 |
JOB_INFO | VARCHAR2(4000) | 附加信息(如清理的记录数) |
GROUP_NUMBER | NUMBER | 关联的磁盘组编号(0 表示所有磁盘组) |
4. 相关视图与基表
相关视图
| 视图 | 说明 |
|---|---|
V$ASM_OPERATION | 显示当前 ASM 实例的所有操作(包括清理作业) |
V$ASM_DISKGROUP | 磁盘组空间信息(清理失败常因空间不足) |
V$ASM_ATTRIBUTE | 查看审计保留策略(如 AUDIT_RETENTION_PERIOD) |
基表(X$表)
X$KFFCLJOB:V$ASM_AUDIT_CLEANUP_JOBS的底层内存结构,存储作业队列信息-- 查看基表结构(仅供研究) SELECT * FROM X$KFFCLJOB WHERE kffcljob_type = 'AUDIT';
5. 核心原理
审计清理机制
- 触发条件:
- 按计划自动调度(默认每日 1 次)
- 当审计记录超过保留期限时
- 手动触发(
ALTER DISKGROUP CLEANUP AUDIT)
- 保留策略:
-- 查看审计保留周期(单位:分钟) SELECT VALUE FROM V$ASM_ATTRIBUTE WHERE NAME = 'AUDIT_RETENTION_PERIOD';- 默认值:
43200分钟(30 天)
- 默认值:
- 清理过程:
- 识别过期审计记录(早于
SYSDATE - RETENTION_PERIOD) - 从 ASM 元数据中物理删除记录
- 更新元数据空间使用情况
- 识别过期审计记录(早于
错误处理
- 常见失败原因:
- 磁盘组空间不足(
ORA-15041) - 元数据损坏
- ASM 实例中断
- 磁盘组空间不足(
- 失败影响:
未清理的审计记录会持续占用元数据空间,可能导致:- 元数据区域增长
- 后续 ASM 操作变慢
6. 常用 SQL 查询示例
(1) 查看所有清理作业状态
SELECT JOB_ID,
STATUS,
TO_CHAR(START_TIME, 'YYYY-MM-DD HH24:MI') AS START_TIME,
TO_CHAR(END_TIME, 'YYYY-MM-DD HH24:MI') AS END_TIME,
ERROR_CODE,
ERROR_MESSAGE
FROM V$ASM_AUDIT_CLEANUP_JOBS
ORDER BY START_TIME DESC;
(2) 检查最近失败的作业
SELECT JOB_ID, ERROR_CODE, ERROR_MESSAGE, JOB_INFO
FROM V$ASM_AUDIT_CLEANUP_JOBS
WHERE STATUS = 'FAILED'
AND START_TIME > SYSDATE - 7; -- 近7天的失败作业
(3) 监控运行中的作业
SELECT JOB_ID, START_TIME, JOB_INFO
FROM V$ASM_AUDIT_CLEANUP_JOBS
WHERE STATUS = 'RUNNING';
(4) 验证审计保留策略
-- 查看全局保留策略
SELECT VALUE AS retention_minutes
FROM V$ASM_ATTRIBUTE
WHERE NAME = 'AUDIT_RETENTION_PERIOD'
AND GROUP_NUMBER = 0;
-- 查看特定磁盘组策略
SELECT g.NAME, a.VALUE
FROM V$ASM_ATTRIBUTE a
JOIN V$ASM_DISKGROUP g ON a.GROUP_NUMBER = g.GROUP_NUMBER
WHERE a.NAME = 'AUDIT_RETENTION_PERIOD';
(5) 手动触发清理(SYSDBA 权限)
-- 清理所有磁盘组
ALTER DISKGROUP ALL CLEANUP AUDIT;
-- 清理特定磁盘组
ALTER DISKGROUP DATA CLEANUP AUDIT;
总结
- 核心作用:监控 ASM 审计记录的自动清理任务
- 关键字段:
STATUS(作业状态)、ERROR_MESSAGE(失败原因)、JOB_INFO(清理详情) - 运维重点:
- 定期检查
STATUS='FAILED'的作业 - 确保磁盘组有足够元数据空间(通过
V$ASM_DISKGROUP.FREE_MB监控) - 按合规要求调整
AUDIT_RETENTION_PERIOD
- 定期检查
- 故障处理流程:
⚠️ 注意:
- 审计清理是低优先级后台任务,可能因 ASM 负载高而延迟
- 生产环境修改
AUDIT_RETENTION_PERIOD需评估合规性要求
欢迎关注我的公众号《IT小Chen》

被折叠的 条评论
为什么被折叠?



