
以下是对 Oracle 19C ASM 中 V$ASM_DBCLONE_INFO 动态性能视图的权威解析。该视图是 ASM 克隆功能的核心组件,提供了数据库克隆操作的关键元数据。需要特别说明:此视图在标准文档中较少提及,但在 ASM 克隆操作中至关重要。
1. 核心作用
V$ASM_DBCLONE_INFO 管理通过 ASM 实现的数据库克隆的元数据,主要功能包括:
- 跟踪 ASM 管理的数据库克隆操作(源库 → 克隆库)
- 记录克隆关系的源数据库和目标数据库信息
- 存储克隆时间点和 SCN(系统变更号)
- 维护克隆依赖关系链
- 支持快速克隆和刷新操作
- 提供克隆生命周期管理
📌 定位:
ASM 克隆系统的"血缘追踪器",记录数据库克隆的谱系关系和关键时间点。
2. 使用场景
- 克隆操作监控:实时跟踪克隆进度
- 刷新管理:确定可刷新克隆的源时间点
- 空间回收:识别可安全删除的旧克隆
- 故障恢复:克隆失败后诊断问题
- 合规审计:证明克隆数据的来源和时间点
- 性能优化:分析克隆对 ASM 存储的影响
- 存储迁移:克隆关系跨存储迁移时的依赖检查
3. 字段含义(Oracle 19c)
| 列名 | 数据类型 | 说明 |
|---|---|---|
CLONE_DBID | NUMBER | 克隆数据库的唯一标识符(DBID) |
SOURCE_DBID | NUMBER | 源数据库的唯一标识符(DBID) |
CLONE_NAME | VARCHAR2(30) | 克隆数据库名称(DB_UNIQUE_NAME) |
SOURCE_NAME | VARCHAR2(30) | 源数据库名称(DB_UNIQUE_NAME) |
CREATION_TIME | TIMESTAMP | 克隆创建时间 |
REFRESH_TIME | TIMESTAMP | 最后一次刷新时间 |
CLONE_SCN | NUMBER | 克隆时的 SCN(关键恢复点) |
STATUS | VARCHAR2(16) | 克隆状态:ACTIVE(可用)STALE(过时)INVALID(无效)DELETING(删除中) |
STORAGE_TYPE | VARCHAR2(16) | 存储类型:FULL(完整克隆)SPARSE(稀疏克隆)SNAPSHOT(快照) |
DISKGROUP_NAME | VARCHAR2(30) | 存储克隆的磁盘组 |
PARENT_CLONE_DBID | NUMBER | 父克隆的 DBID(用于克隆链) |
IS_REFRESHABLE | VARCHAR2(1) | 是否可刷新(Y/N) |
REFRESH_METHOD | VARCHAR2(20) | 刷新方法:INCREMENTAL(增量)FULL(全量) |
4. 相关视图与基表
相关视图
| 视图 | 说明 |
|---|---|
V$ASM_FILE | ASM 文件信息(含克隆文件) |
V$ASM_ALIAS | 克隆文件的别名 |
V$DATABASE | 数据库信息(验证 DBID) |
GV$ASM_DBCLONE_INFO | RAC 环境的全局视图 |
V$ASM_CLONE_PROGRESS | 克隆操作进度(19c 新增) |
基表(X$表)
X$KFFCLONE:V$ASM_DBCLONE_INFO的底层结构-- 查看基表结构(仅供诊断) SELECT * FROM X$KFFCLONE WHERE kffclon_status != 0; -- 非空闲条目
5. 核心原理
ASM 克隆架构
关键技术机制
-
元数据克隆:
- 使用 ASM 文件元数据创建"虚拟拷贝"
- 不复制物理数据块(空间高效)
ALTER DATABASE CREATE CLONE 'clone_db' FROM 'source_db'; -
SCN 跟踪:
- 克隆时记录源库 SCN
- 刷新时基于 SCN 同步增量更改
-
写时复制(CoW):
- 首次修改时复制数据块
STORAGE_TYPE=SPARSE时启用
-
刷新机制:
ALTER DATABASE REFRESH CLONE 'clone_db';- 增量刷新:仅传输变更块
- 全量刷新:重建克隆
6. 常用 SQL 查询与操作
(1) 查看所有克隆关系
SELECT clone_name, source_name,
TO_CHAR(creation_time, 'YYYY-MM-DD HH24:MI') AS created,
status, storage_type
FROM v$asm_dbclone_info;
(2) 验证可刷新克隆
SELECT clone_name, source_name, is_refreshable,
TO_CHAR(refresh_time, 'YYYY-MM-DD HH24:MI') AS last_refresh
FROM v$asm_dbclone_info
WHERE status = 'ACTIVE'
AND is_refreshable = 'Y';
(3) 诊断无效克隆
SELECT clone_name, source_name, status,
(SELECT message FROM v$asm_operation
WHERE group_number = (
SELECT group_number
FROM v$asm_diskgroup
WHERE name = diskgroup_name
)
) AS error_info
FROM v$asm_dbclone_info
WHERE status = 'INVALID';
(4) 检查克隆依赖链
SELECT CONNECT_BY_ROOT clone_name AS root_clone,
clone_name,
source_name,
LEVEL AS depth
FROM v$asm_dbclone_info
CONNECT BY PRIOR clone_dbid = parent_clone_dbid
START WITH parent_clone_dbid IS NULL;
(5) 执行克隆刷新
-- 增量刷新
BEGIN
DBMS_CLONE.REFRESH(
clone_name => 'TEST_CLONE',
method => 'INCREMENTAL'
);
END;
/
-- 全量刷新
BEGIN
DBMS_CLONE.REFRESH(
clone_name => 'TEST_CLONE',
method => 'FULL'
);
END;
/
(6) 删除旧克隆
BEGIN
DBMS_CLONE.DROP_CLONE(
clone_name => 'OLD_CLONE',
force => FALSE -- 安全删除
);
END;
/
(7) 监控克隆空间
SELECT c.clone_name,
g.name AS diskgroup,
f.bytes / 1024 / 1024 AS size_mb
FROM v$asm_dbclone_info c
JOIN v$asm_file f ON f.group_number = (
SELECT group_number
FROM v$asm_diskgroup
WHERE name = c.diskgroup_name
)
JOIN v$asm_diskgroup g ON f.group_number = g.group_number
WHERE f.type = 'DBCLONE'
AND f.name LIKE '%' || c.clone_name || '%';
总结
- 核心作用:管理 ASM 数据库克隆的元数据和生命周期
- 关键字段:
CLONE_DBID/SOURCE_DBID:克隆关系标识CLONE_SCN:时间点一致性保障STATUS:克隆健康状态
- 运维价值:
- 最佳实践:
- 定期检查
STATUS='STALE'的克隆 - 生产环境优先使用
STORAGE_TYPE=SPARSE - 重要克隆前记录
CLONE_SCN
- 定期检查
- 注意事项:
- 克隆操作需要源库处于 ARCHIVELOG 模式
- 最大克隆深度为 3 级
- RAC 环境中需在所有节点同步克隆元数据
- 删除源库前必须先删除所有依赖克隆
⚠️ 关键限制:
- 源库和克隆必须使用相同字符集
- 不能克隆包含 Oracle RAC 的数据库
- ASM 版本必须 ≥ 12.2
- 源库的
COMPATIBLE≥ 12.2.0
欢迎关注我的公众号《IT小Chen》

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



