
以下是对 Oracle 19C ASM 中 V$ASM_AUDIT_CLEAN_EVENTS 动态性能视图 的全面解析,涵盖作用、使用场景、字段含义、相关视图、基表、原理及常用 SQL 查询:
1. 核心作用
V$ASM_AUDIT_CLEAN_EVENTS 记录已被清理(删除)的 ASM 审计事件。它提供:
- 已清理审计事件的详细历史记录
- 清理操作的元数据(清理时间、清理方式等)
- 满足合规性要求的审计追踪能力
📌 定位:
这是 ASM 审计系统的"回收站"视图,显示已被清除的审计事件(对比V$ASM_AUDIT显示当前有效事件)
2. 使用场景
- 合规审计:证明已删除审计记录的合规性(满足保留策略)
- 故障分析:追溯清理操作是否导致关键审计事件丢失
- 安全调查:分析被清理事件的特征(如频繁清理特定操作)
- 策略验证:检查自动清理策略的实际执行效果
- 容量规划:评估审计事件生成和清理速率
3. 字段含义(关键列)
| 列名 | 数据类型 | 说明 |
|---|---|---|
EVENT_TIMESTAMP | TIMESTAMP(6) | 审计事件原始发生时间 |
CLEANUP_TIMESTAMP | TIMESTAMP(6) | 该事件被清理的时间 |
EVENT_ID | NUMBER | 审计事件的唯一标识符(与 V$ASM_AUDIT.EVENT_ID 对应) |
GROUP_NUMBER | NUMBER | 关联的磁盘组编号(0 表示实例级操作) |
DISK_NUMBER | NUMBER | 关联的磁盘编号(无关联时为 -1) |
CLIENT_ID | VARCHAR2(64) | 触发原始事件的客户端标识(如 ASM/Database 实例名) |
OPERATION | VARCHAR2(64) | 原始操作类型(如 CREATE DISKGROUP, ALTER DISKGROUP, DROP FILE) |
STATUS | VARCHAR2(64) | 原始操作状态(SUCCESS, FAILURE) |
DESCRIPTION | VARCHAR2(256) | 操作详细描述 |
USER_NAME | VARCHAR2(30) | 执行原始操作的用户名 |
OS_USER | VARCHAR2(30) | 操作系统用户名 |
PROCESS | VARCHAR2(24) | 客户端进程 ID |
CLEANUP_TYPE | VARCHAR2(16) | 清理触发方式:AUTO(自动清理)MANUAL(手动清理) |
CLEANUP_JOB_ID | NUMBER | 关联的清理作业 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_EVENTS | RAC 环境的全局视图(所有节点) |
基表(X$表)
X$KFFCLNEVT:V$ASM_AUDIT_CLEAN_EVENTS的底层内存结构-- 查看基表结构(仅供研究) SELECT * FROM X$KFFCLNEVT WHERE kffclnevt_clean_time > SYSDATE - 1;
5. 核心原理
审计事件生命周期
关键机制
-
双重保留期:
- 原始保留期:由
AUDIT_RETENTION_PERIOD控制(默认 30 天) - 清理后保留期:清理事件在
V$ASM_AUDIT_CLEAN_EVENTS中额外保留时间(Oracle 内部控制,通常 7-30 天)
- 原始保留期:由
-
清理触发:
-- 自动清理(默认每日) SELECT * FROM V$ASM_AUDIT_CLEANUP_JOBS WHERE OPERATION='AUDIT CLEANUP'; -- 手动清理 ALTER DISKGROUP DATA CLEANUP AUDIT; -
存储位置:
- 有效事件:存储在磁盘组元数据区域
- 已清理事件:存储在 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》

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



