面试宝典:介绍下Oracle数据库动态性能视图 V$ASM_AUDIT_CLEANUP_JOBS

在这里插入图片描述
以下是对 Oracle 19C ASM 中 V$ASM_AUDIT_CLEANUP_JOBS 动态性能视图 的深度解析,涵盖作用、使用场景、字段含义、相关视图、基表、原理及常用 SQL 查询:


1. 核心作用

V$ASM_AUDIT_CLEANUP_JOBS 监控和管理 ASM 审计记录(Audit Trail)的自动清理任务。它提供:

  • 审计清理作业的实时状态(运行中/完成/失败)
  • 作业执行时间、进度和结果详情
  • 自动清理策略的执行记录

📌 背景
ASM 会生成审计记录(如磁盘组操作、权限变更等),这些记录存储在 ASM_DISKGROUP 的元数据中。为避免元数据膨胀,Oracle 会自动调度清理任务删除过期审计记录。


2. 使用场景

  1. 审计空间管理:监控自动清理是否按预期工作
  2. 故障排查:诊断审计清理失败的原因(如空间不足)
  3. 合规审计:验证审计记录的保留策略执行情况
  4. 性能分析:检查清理作业对 ASM 性能的影响
  5. 手动干预:当自动清理失败时手动触发清理

3. 字段含义(关键列)

列名数据类型说明
JOB_IDNUMBER清理作业的唯一标识符
OPERATIONVARCHAR2(64)作业类型:固定为 AUDIT CLEANUP
TARGETVARCHAR2(64)清理目标:AUDIT(仅支持审计记录清理)
STATUSVARCHAR2(64)作业状态
RUNNING(执行中)
COMPLETED(成功)
FAILED(失败)
START_TIMEDATE作业开始时间
END_TIMEDATE作业结束时间(未完成时为 NULL
SCHEDULED_TIMEDATE计划执行时间
ERROR_CODENUMBER失败时的错误代码(成功时为 0
ERROR_MESSAGEVARCHAR2(2000)失败时的错误描述
JOB_INFOVARCHAR2(4000)附加信息(如清理的记录数)
GROUP_NUMBERNUMBER关联的磁盘组编号(0 表示所有磁盘组)

4. 相关视图与基表

相关视图
视图说明
V$ASM_OPERATION显示当前 ASM 实例的所有操作(包括清理作业)
V$ASM_DISKGROUP磁盘组空间信息(清理失败常因空间不足)
V$ASM_ATTRIBUTE查看审计保留策略(如 AUDIT_RETENTION_PERIOD
基表(X$表)
  • X$KFFCLJOBV$ASM_AUDIT_CLEANUP_JOBS 的底层内存结构,存储作业队列信息
    -- 查看基表结构(仅供研究)
    SELECT * FROM X$KFFCLJOB WHERE kffcljob_type = 'AUDIT';
    

5. 核心原理

审计清理机制
  1. 触发条件
    • 按计划自动调度(默认每日 1 次)
    • 当审计记录超过保留期限时
    • 手动触发(ALTER DISKGROUP CLEANUP AUDIT
  2. 保留策略
    -- 查看审计保留周期(单位:分钟)
    SELECT VALUE 
    FROM V$ASM_ATTRIBUTE 
    WHERE NAME = 'AUDIT_RETENTION_PERIOD';
    
    • 默认值:43200 分钟(30 天)
  3. 清理过程
    • 识别过期审计记录(早于 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
  • 故障处理流程
    空间不足
    元数据损坏
    其他错误
    清理失败
    错误原因
    扩容磁盘组
    联系Oracle支持
    手动触发清理

⚠️ 注意

  • 审计清理是低优先级后台任务,可能因 ASM 负载高而延迟
  • 生产环境修改 AUDIT_RETENTION_PERIOD 需评估合规性要求

欢迎关注我的公众号《IT小Chen

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值