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

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


1. 核心作用

V$ASM_AUDIT_CLEAN_EVENTS 记录已被清理(删除)的 ASM 审计事件。它提供:

  • 已清理审计事件的详细历史记录
  • 清理操作的元数据(清理时间、清理方式等)
  • 满足合规性要求的审计追踪能力

📌 定位
这是 ASM 审计系统的"回收站"视图,显示已被清除的审计事件(对比 V$ASM_AUDIT 显示当前有效事件)


2. 使用场景

  1. 合规审计:证明已删除审计记录的合规性(满足保留策略)
  2. 故障分析:追溯清理操作是否导致关键审计事件丢失
  3. 安全调查:分析被清理事件的特征(如频繁清理特定操作)
  4. 策略验证:检查自动清理策略的实际执行效果
  5. 容量规划:评估审计事件生成和清理速率

3. 字段含义(关键列)

列名数据类型说明
EVENT_TIMESTAMPTIMESTAMP(6)审计事件原始发生时间
CLEANUP_TIMESTAMPTIMESTAMP(6)该事件被清理的时间
EVENT_IDNUMBER审计事件的唯一标识符(与 V$ASM_AUDIT.EVENT_ID 对应)
GROUP_NUMBERNUMBER关联的磁盘组编号(0 表示实例级操作)
DISK_NUMBERNUMBER关联的磁盘编号(无关联时为 -1
CLIENT_IDVARCHAR2(64)触发原始事件的客户端标识(如 ASM/Database 实例名)
OPERATIONVARCHAR2(64)原始操作类型(如 CREATE DISKGROUP, ALTER DISKGROUP, DROP FILE
STATUSVARCHAR2(64)原始操作状态(SUCCESS, FAILURE
DESCRIPTIONVARCHAR2(256)操作详细描述
USER_NAMEVARCHAR2(30)执行原始操作的用户名
OS_USERVARCHAR2(30)操作系统用户名
PROCESSVARCHAR2(24)客户端进程 ID
CLEANUP_TYPEVARCHAR2(16)清理触发方式
AUTO(自动清理)
MANUAL(手动清理)
CLEANUP_JOB_IDNUMBER关联的清理作业 ID(对应 V$ASM_AUDIT_CLEANUP_JOBS.JOB_ID

4. 相关视图与基表

相关视图
视图说明
V$ASM_AUDIT当前有效的审计事件(尚未清理)
V$ASM_AUDIT_CLEANUP_JOBS审计清理作业的执行状态
V$ASM_ATTRIBUTE审计保留策略配置(AUDIT_RETENTION_PERIOD
GV$ASM_AUDIT_CLEAN_EVENTSRAC 环境的全局视图(所有节点)
基表(X$表)
  • X$KFFCLNEVTV$ASM_AUDIT_CLEAN_EVENTS 的底层内存结构
    -- 查看基表结构(仅供研究)
    SELECT * 
    FROM X$KFFCLNEVT 
    WHERE kffclnevt_clean_time > SYSDATE - 1;
    

5. 核心原理

审计事件生命周期
ClientASM InstanceMetadata执行操作 (e.g., ALTER DISKGROUP)记录审计事件 (V$ASM_AUDIT)审计事件保留期开始检查过期事件loop[每日检查]移动事件到清理视图 (V$ASM_AUDIT_CLEAN_EVENTS)释放元数据空间清理事件在视图中保留额外时间ClientASM InstanceMetadata
关键机制
  1. 双重保留期

    • 原始保留期:由 AUDIT_RETENTION_PERIOD 控制(默认 30 天)
    • 清理后保留期:清理事件在 V$ASM_AUDIT_CLEAN_EVENTS 中额外保留时间(Oracle 内部控制,通常 7-30 天)
  2. 清理触发

    -- 自动清理(默认每日)
    SELECT * FROM V$ASM_AUDIT_CLEANUP_JOBS WHERE OPERATION='AUDIT CLEANUP';
    
    -- 手动清理
    ALTER DISKGROUP DATA CLEANUP AUDIT;
    
  3. 存储位置

    • 有效事件:存储在磁盘组元数据区域
    • 已清理事件:存储在 ASM 实例内存中(重启后丢失)

6. 常用 SQL 查询示例

(1) 查询最近清理的审计事件
SELECT OPERATION, USER_NAME, 
       TO_CHAR(EVENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI') AS EVENT_TIME,
       TO_CHAR(CLEANUP_TIMESTAMP, 'YYYY-MM-DD HH24:MI') AS CLEANUP_TIME,
       CLEANUP_TYPE
FROM V$ASM_AUDIT_CLEAN_EVENTS
ORDER BY CLEANUP_TIMESTAMP DESC;
(2) 分析自动清理 vs 手动清理比例
SELECT CLEANUP_TYPE, COUNT(*) AS CLEANED_COUNT
FROM V$ASM_AUDIT_CLEAN_EVENTS
WHERE CLEANUP_TIMESTAMP > SYSDATE - 30
GROUP BY CLEANUP_TYPE;
(3) 检查被清理的失败操作
SELECT OPERATION, DESCRIPTION, USER_NAME, OS_USER
FROM V$ASM_AUDIT_CLEAN_EVENTS
WHERE STATUS = 'FAILURE'
  AND CLEANUP_TIMESTAMP > SYSDATE - 7;
(4) 关联清理事件与作业
SELECT e.EVENT_ID, e.OPERATION, j.JOB_ID, j.START_TIME, j.END_TIME
FROM V$ASM_AUDIT_CLEAN_EVENTS e
JOIN V$ASM_AUDIT_CLEANUP_JOBS j ON e.CLEANUP_JOB_ID = j.JOB_ID
WHERE j.STATUS = 'COMPLETED';
(5) 计算平均保留时长
SELECT AVG(CLEANUP_TIMESTAMP - EVENT_TIMESTAMP) * 24 * 60 AS avg_retention_min
FROM V$ASM_AUDIT_CLEAN_EVENTS
WHERE CLEANUP_TYPE = 'AUTO';

总结

  • 核心作用:提供已清理 ASM 审计事件的完整历史记录
  • 关键字段
    • EVENT_TIMESTAMP / CLEANUP_TIMESTAMP:事件生命周期时间点
    • OPERATION:原始操作类型
    • CLEANUP_TYPE:清理触发方式
  • 运维价值
    • 合规性:证明审计管理符合保留策略
    • 可追溯性:即使事件被清理,仍可调查历史操作
    • 策略优化:通过分析清理模式调整保留策略
  • 重要限制
    • 数据存储在内存中,ASM 实例重启后丢失
    • 额外保留期由 Oracle 内部控制,无法配置
    • RAC 环境中需使用 GV$ 视图获取全局数据

⚠️ 最佳实践
定期将关键清理事件导出到外部表,以满足长期合规性要求:

CREATE TABLE asm_audit_clean_history AS
SELECT * FROM V$ASM_AUDIT_CLEAN_EVENTS 
WHERE CLEANUP_TIMESTAMP > SYSDATE - 30;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值