
Oracle 19c V$ASM_ACFSSNAPSHOTS 动态性能视图深度解析
核心定位与作用
V$ASM_ACFSSNAPSHOTS 是 Oracle ASM 中专门用于监控和管理 ACFS (ASM Cluster File System) 文件系统快照的关键视图。它提供 ACFS 文件系统快照的创建时间、空间使用、状态等详细信息,是实施高效数据保护和恢复策略的核心工具。
核心作用:
- 快照生命周期管理:跟踪所有 ACFS 快照的状态和属性
- 空间监控:精确测量快照占用的存储空间
- 恢复点审计:记录所有可用的数据恢复时间点
- 性能分析:评估快照创建/删除操作的影响
- 策略验证:检查快照保留策略的执行情况
- 故障诊断:识别快照相关操作的错误和问题
📌 关键价值:提供即时数据恢复点,支持高效备份和开发测试环境创建
核心使用场景
- 数据恢复准备:验证关键时间点的快照可用性
- 存储优化:识别并清理过期快照释放空间
- 备份策略执行:监控基于快照的备份操作
- 开发测试:快速创建生产数据副本
- 合规审计:提供数据保护策略的证据
- 灾难恢复:验证灾难恢复站点的快照同步
- 性能问题诊断:分析快照操作对系统的影响
字段含义详解 (Oracle 19c)
| 字段名 | 数据类型 | 描述 | 关键值/示例 |
|---|---|---|---|
| GROUP_NUMBER | NUMBER | ASM 磁盘组编号 | 1, 2, 3… |
| FILE_SYSTEM_NAME | VARCHAR2(256) | ACFS 文件系统名称(挂载点) | /u01/acfsmounts/data |
| SNAPSHOT_NAME | VARCHAR2(256) | 快照名称 | DAILY_BACKUP_0815, PRE_UPGRADE_SNAP |
| SNAPSHOT_ID | NUMBER | 快照唯一标识符 | 1001, 1002 |
| CREATE_TIME | TIMESTAMP | 快照创建时间 | 2023-08-15 02:00:00.000000 |
| STATUS | VARCHAR2(16) | 快照状态 | ACTIVE, DELETING, DELETED, ERROR |
| PARENT_SNAPSHOT | VARCHAR2(256) | 父快照名称(如有) | DAILY_BACKUP_0814 |
| SNAPSHOT_TYPE | VARCHAR2(16) | 快照类型 | USER, AUTOMATIC, RECOVERY |
| SPACE_USAGE | NUMBER | 快照空间使用(字节) | 1073741824 (1GB) |
| ALLOCATED_SPACE | NUMBER | 分配空间(字节) | 2147483648 (2GB) |
| NUM_FILES | NUMBER | 快照中文件数量 | 1500 |
| RETENTION_DAYS | NUMBER | 保留天数 | 7, 30 |
| EXPIRATION_TIME | TIMESTAMP | 过期时间 | 2023-08-22 02:00:00.000000 |
| LAST_ACCESS_TIME | TIMESTAMP | 最后访问时间 | 2023-08-15 14:30:45.123456 |
| LAST_MODIFY_TIME | TIMESTAMP | 最后修改时间 | 2023-08-15 10:15:22.456789 |
| ERROR_CODE | NUMBER | 错误代码(失败时) | ORA-15000系列错误 |
| ERROR_MESSAGE | VARCHAR2(4000) | 错误详情(失败时) | “Insufficient space in diskgroup” |
| CON_ID | NUMBER | 容器ID(CDB) | 0 (CDB$ROOT) |
| IS_WRITABLE | VARCHAR2(3) | 是否可写 | YES, NO |
| SNAPSHOT_PATH | VARCHAR2(1024) | 快照访问路径 | /u01/acfsmounts/data/.ACFS/snaps/DAILY_BACKUP_0815 |
| COMPRESSION_RATIO | NUMBER | 压缩比率 | 2.5 (表示压缩后为原始大小的40%) |
相关视图
- V$ASM_ACFS:ACFS 文件系统基础信息
- V$ASM_ACFSVOLUMES:ACFS 卷详细信息
- GV$ASM_ACFSSNAPSHOTS:RAC 全局快照视图
- V$ASM_DISKGROUP_STAT:磁盘组空间统计
- DBA_ACFS_SNAPSHOTS:数据字典中的快照信息
- V$ASM_OPERATION:ASM 操作状态
- V$ASM_FILE:ASM 文件详情
基表与数据来源
底层结构:
- X$KFFSSNAP (ASM 快照内核结构)
- X$KFFSSNAPSTAT (快照统计信息)
- X$KFFSSNAPCONF (快照配置信息)
数据流:
核心工作原理
1. 写时复制 (Copy-on-Write)
2. 快照创建流程
3. 空间管理机制
快照空间 = 原始数据大小 + 修改数据大小
(固定) (随时间增长)
重要注意事项
-
空间影响:
-- 监控快照空间占比 SELECT file_system_name, SUM(space_usage)/SUM(allocated_space)*100 pct_used FROM v$asm_acfssnapshots GROUP BY file_system_name; -
性能影响:
- 首次修改块时有额外I/O
- 大量快照增加元数据开销
- 建议不超过32个快照/文件系统
-
RAC 环境:
- 快照在集群级别可见
- 创建操作由挂载节点发起
-
保留策略:
-- 设置自动过期 ALTER SNAPSHOT sales_snap RETENTION 7 DAYS; -
访问控制:
- 需要OS级别权限访问快照路径
- 根用户或oracle软件所有者有完全权限
常用监控与管理 SQL
1. 快照概览
SELECT snapshot_name,
TO_CHAR(create_time, 'YYYY-MM-DD HH24:MI') created,
ROUND(space_usage/1024/1024/1024, 2) used_gb,
status,
retention_days
FROM v$asm_acfssnapshots
WHERE file_system_name = '/u01/acfsmounts/data';
2. 空间使用分析
SELECT file_system_name,
COUNT(*) snap_count,
SUM(space_usage)/1024/1024/1024 total_used_gb,
AVG(space_usage)/1024/1024 avg_size_mb,
MAX(create_time) latest_snap
FROM v$asm_acfssnapshots
GROUP BY file_system_name;
3. 过期快照清理
SELECT snapshot_name, create_time, expiration_time
FROM v$asm_acfssnapshots
WHERE expiration_time < SYSTIMESTAMP
AND status = 'ACTIVE';
4. 错误诊断
SELECT snapshot_name,
error_message,
TO_CHAR(create_time, 'YYYY-MM-DD HH24:MI:SS') create_time
FROM v$asm_acfssnapshots
WHERE status = 'ERROR';
5. RAC 全局视图
SELECT inst_id,
file_system_name,
COUNT(*) snap_count,
SUM(space_usage)/1024/1024/1024 total_used_gb
FROM gv$asm_acfssnapshots
GROUP BY inst_id, file_system_name
ORDER BY inst_id;
6. 快照效率报告
SELECT snapshot_type,
AVG(space_usage)/1024/1024 avg_size_mb,
COUNT(*) snap_count,
AVG((last_access_time - create_time)*86400) avg_access_sec
FROM v$asm_acfssnapshots
GROUP BY snapshot_type;
最佳实践
1. 自动化快照管理
BEGIN
-- 创建每日快照
DBMS_ACFS_ADMIN.CREATE_SNAPSHOT(
fs_path => '/u01/acfsmounts/data',
snap_name => 'DAILY_' || TO_CHAR(SYSDATE, 'YYYYMMDD')
);
-- 删除7天前的快照
FOR snap IN (
SELECT snapshot_name
FROM v$asm_acfssnapshots
WHERE create_time < SYSDATE - 7
AND file_system_name = '/u01/acfsmounts/data'
)
LOOP
DBMS_ACFS_ADMIN.DELETE_SNAPSHOT(
fs_path => '/u01/acfsmounts/data',
snap_name => snap.snapshot_name);
END LOOP;
END;
/
2. 空间监控警报
DECLARE
v_threshold NUMBER := 20; -- 20%阈值
BEGIN
FOR fs IN (
SELECT file_system_name,
SUM(space_usage)/SUM(allocated_space)*100 pct_used
FROM v$asm_acfssnapshots
GROUP BY file_system_name
HAVING SUM(space_usage)/SUM(allocated_space)*100 > v_threshold
)
LOOP
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'SNAP_ALERT_' || DBMS_RANDOM.STRING('X',10),
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN send_alert(''Snapshot space > '||v_threshold||'% on '||fs.file_system_name||'''); END;',
enabled => TRUE,
auto_drop => TRUE
);
END LOOP;
END;
/
3. 快照克隆测试环境
DECLARE
v_snap_path VARCHAR2(1024);
BEGIN
-- 获取快照路径
SELECT snapshot_path INTO v_snap_path
FROM v$asm_acfssnapshots
WHERE snapshot_name = 'PRE_RELEASE_SNAP';
-- 克隆数据库
EXECUTE IMMEDIATE 'CREATE PLUGGABLE DATABASE test_pdb FROM SNAPSHOT ' || v_snap_path;
DBMS_OUTPUT.PUT_LINE('Test PDB created from snapshot: ' || v_snap_path);
END;
/
4. 压缩优化
-- 启用快照压缩
ALTER DISKGROUP DATA MODIFY VOLUME acfs_vol
SET ATTRIBUTES (SNAPSHOT_COMPRESSION = ENABLED);
-- 验证压缩效果
SELECT snapshot_name,
space_usage uncompressed,
space_usage * compression_ratio compressed,
compression_ratio
FROM v$asm_acfssnapshots
WHERE file_system_name = '/u01/acfsmounts/data';
故障排除指南
关键操作示例
-- 创建快照
ACFSUTIL snap create DAILY_BACKUP /u01/acfsmounts/data
-- 挂载快照
ACFSUTIL snap mount DAILY_BACKUP /mnt/acfs_snap
-- 删除快照
ACFSUTIL snap delete DAILY_BACKUP /u01/acfsmounts/data
-- 设置保留策略
ACFSUTIL snap set -r 14 DAILY_BACKUP /u01/acfsmounts/data
通过有效利用 V$ASM_ACFSSNAPSHOTS,存储管理员可以:
- 实现高效的数据保护和恢复策略
- 优化存储空间利用率
- 快速创建测试和开发环境
- 监控快照性能和健康状态
- 满足数据保留合规要求
- 降低备份窗口对生产系统的影响
建议将此视图集成到企业存储管理平台,特别是在使用ACFS作为关键业务存储的环境中,定期审计快照策略的有效性。
欢迎关注我的公众号《IT小Chen》

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



