
好的,我们来对 Oracle 19C 数据库中与高性能备份功能至关重要的动态性能视图——V$BLOCK_CHANGE_TRACKING——进行最全面、最深入的解析。
这个视图是管理和监控 块更改跟踪(Block Change Tracking) 功能的核心,该功能是优化 RMAN 增量备份性能的关键技术。
1. 视图概述与核心作用
V$BLOCK_CHANGE_TRACKING 动态性能视图的作用是显示当前实例中块更改跟踪(Block Change Tracking, BCT)功能的状态、配置及其底层跟踪文件的详细信息。
块更改跟踪是一种后台机制,它会记录自上次备份以来数据文件中哪些数据块被修改了。RMAN 在执行增量备份(Incremental Backup) 时,不再需要扫描整个数据文件的所有块来寻找更改,而是直接读取这个跟踪文件,从而极大地减少了 I/O 操作和备份时间。
核心作用可以概括为:
- 状态监控:实时确认 BCT 功能是启用(ENABLED)还是禁用(DISABLED)。
- 配置检查:查看跟踪文件的位置、大小和当前使用状态。
- 性能评估:通过观察跟踪文件的大小和切换,评估其开销和效率。
- 空间管理:监控跟踪文件的增长,确保其所在磁盘有充足的空间。
2. 使用场景
-
增量备份性能调优:
在实施或优化增量备份策略时,DBA 首先通过此视图确认 BCT 是否已启用。这是实现快速增量备份的前提。 -
故障诊断:
当增量备份没有预期中快,或者备份作业失败时,查询此视图可以检查 BCT 状态是否正常、跟踪文件是否可访问。 -
存储规划:
在启用 BCT 前或之后,通过此视图了解跟踪文件的大小和位置,确保存放该文件的文件系统有足够的空间(通常需要大约数据库总大小 1/30,000 的空间)。 -
迁移与维护:
在需要移动跟踪文件时(如存储迁移),使用此视图确认当前文件位置,并在移动后验证新位置是否生效。
3. 字段详细含义
V$BLOCK_CHANGE_TRACKING 视图的字段直接反映了 BCT 功能的配置和运行状态。
| 字段名 | 数据类型 | 含义说明 |
|---|---|---|
| STATUS | VARCHAR2(10) | 块更改跟踪的当前状态: • DISABLED : 功能已禁用。这是默认状态。• ENABLED : 功能已启用且活动。• TEMPORY : (极少见) 临时状态,可能在启用或禁用过程中短暂出现。 |
| FILENAME | VARCHAR2(513) | 块更改跟踪文件的完整操作系统路径和文件名。如果状态为 DISABLED,此值为 NULL。 |
| BYTES | NUMBER | 块更改跟踪文件的当前大小(字节)。文件大小是固定的,不会无限增长,但会根据数据库规模在需要时自动扩展。 |
| CON_ID | NUMBER | 所在容器的ID。在多租户环境中(CDB),标识该信息属于哪个PDB。对于CDB$ROOT,此值为0。 |
注意:在某些版本或环境中,可能还存在 BLOCKS 字段,表示跟踪文件中的块数,但其信息价值与 BYTES 类似。
4. 相关视图与基表
-
相关动态性能视图:
V$BACKUP_DATAFILE:此视图包含增量备份的摘要信息。其中USED_CHANGE_TRACKING字段会指明该数据文件的备份是否利用了块更改跟踪(YES/NO),DATAFILE_BLOCKS与BLOCKS_READ的对比可以直观展示 BCT 带来的节省。V$DATAFILE/DBA_DATA_FILES:提供数据文件的基本信息,可以间接了解被跟踪的对象。V$RMAN_BACKUP_JOB_DETAILS:可以从作业级别查看备份性能,与 BCT 的效果相关联。
-
**底层基表(X 表) ∗ ∗ : ‘ V 表)**: `V 表)∗∗:‘VBLOCK_CHANGE_TRACKING` 的数据来源于控制块更改跟踪功能的内部分配和状态数据结构。其底层关联的 **X 表 ∗ ∗ 通常是 ∗ ∗ 不公开 ∗ ∗ 的,可能与内存中的跟踪状态管理结构相关。 ∗ ∗ 重要警告 ∗ ∗ :严禁直接查询 X 表** 通常是**不公开**的,可能与内存中的跟踪状态管理结构相关。 **重要警告**:严禁直接查询 X 表∗∗通常是∗∗不公开∗∗的,可能与内存中的跟踪状态管理结构相关。∗∗重要警告∗∗:严禁直接查询X 表。
5. 相关底层详细原理
-
跟踪机制:
当 BCT 启用后,一个后台进程CTWR(Change Tracking Writer) 会被启动。每当数据库缓冲区缓存(Buffer Cache)中的一个数据块因DML操作第一次变"脏"时,其数据块地址(DBA - Data Block Address)就会被记录到一个内存中的位图(Bitmap) 中。 -
持久化:
CTWR进程负责定期将内存中的位图刷新到磁盘上的块更改跟踪文件中。这个文件是一种专有的、二进制的、结构化的文件,Oracle 不提供其格式文档。它本质上是一系列位图,每一位代表一个数据块是否被更改过。 -
RMAN 增量备份:
当 RMAN 执行级别 1 增量备份时,它会执行以下操作:- 定位到最新的级别 0 增量备份(基础备份)。
- 读取块更改跟踪文件,精准地找到所有自级别 0 备份以来被修改过的数据块。
- 只读取这些更改过的块以及必要的元数据块,然后将其写入备份集。
- 这避免了扫描整个数据文件,从而大幅减少 I/O 和备份时间。
-
文件管理:
跟踪文件的大小主要与数据库的大小和 number of instances in a RAC cluster 有关,而与更新频率无关。Oracle 会管理这个文件,在需要时自动扩展它。
6. 相关知识点介绍
-
增量备份级别:
- Level 0:基础备份,备份所有数据块。相当于一个全备份,但被标记为增量备份策略的基础。
- Level 1:差异增量(
DIFFERENTIAL),备份自上一次同级或更低级别的备份以来更改的块。 - Level 1:累积增量(
CUMULATIVE),备份自上一次低一级别的备份以来更改的块。BCT 对这两种 Level 1 备份都有效。
-
启用与禁用:
-- 启用(指定文件位置) ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/oradata/orcl/bct.dbf' REUSE; -- 禁用 ALTER DATABASE DISABLE BLOCK CHANGE TRACKING; -
移动跟踪文件:
- 关闭数据库。
- 使用操作系统命令移动文件。
- 启动数据库到mount状态:
STARTUP MOUNT; - 更新文件位置:
ALTER DATABASE RENAME FILE '/old_path' TO '/new_path'; - 打开数据库:
ALTER DATABASE OPEN;
(或者在线通过ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/new_path';直接启用新路径,Oracle会自动处理)
-
RAC 环境:
在 Oracle RAC 中,所有实例共享同一个块更改跟踪文件,通常将其放在共享存储(如 ASM、集群文件系统)上。CTWR进程在所有实例上运行,协同更新同一个文件。
7. 常用查询 SQL
1. 检查块更改跟踪的当前状态和文件信息(最基本和重要的查询)
SELECT status, filename, bytes
FROM v$block_change_tracking;
2. 确认增量备份是否真正利用了块更改跟踪
SELECT file#,
used_change_tracking, -- 关键字段:是否使用了BCT
datafile_blocks,
blocks_read, -- 实际读取的块数
ROUND((blocks_read / datafile_blocks) * 100, 2) AS pct_read
FROM v$backup_datafile
WHERE incremental_level > 0
AND completion_time > SYSDATE - 1 -- 查看最近一天的增量备份
ORDER BY file#;
如果 USED_CHANGE_TRACKING='YES' 且 PCT_READ 远小于 100%,说明 BCT 效果显著。
3. 在多租户环境中,查询每个PDB的BCT状态(19c+)
SELECT con_id, status, filename, bytes
FROM v$block_change_tracking
ORDER BY con_id;
4. 计算跟踪文件大小与数据库大小的比例
SELECT (SELECT bytes FROM v$block_change_tracking WHERE status = 'ENABLED') AS bct_size,
(SELECT SUM(bytes) FROM dba_data_files) AS db_size,
ROUND( (SELECT bytes FROM v$block_change_tracking) /
(SELECT SUM(bytes) FROM dba_data_files) * 100, 4) AS pct_ratio
FROM dual;
这个比例通常非常小(约0.003%),证实了BCT的空间效率。
通过深入掌握 V$BLOCK_CHANGE_TRACKING 视图,您可以有效地管理、监控和验证这一强大的性能优化功能,确保您的 RMAN 增量备份策略以最高效的方式运行,显著减少备份窗口和对系统的影响。
欢迎关注我的公众号《IT小Chen》
3238

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



