
好的,我们来对 Oracle 19C 数据库中的 V$CELL_CONFIG_INFO 动态性能视图进行一次全面、深入的解析。
这个视图是 Oracle Exadata 数据库机器环境特有的视图,它提供了关于数据库实例从 Exadata 存储单元(Cell)获取配置信息的元数据和状态。它回答的是关于“配置信息本身”的问题,而不是具体的配置内容。
1. 作用与简介
核心作用:
V$CELL_CONFIG_INFO 动态性能视图用于显示数据库实例如何以及何时从 Exadata 存储单元获取其配置信息的元数据。它不存储配置细节(那是 V$CELL_CONFIG 的作用),而是记录配置信息的来源、 freshness、状态和获取历史。
背景知识:
- 配置传播: 在Exadata环境中,存储单元(Cell)的配置(如网格磁盘、闪存缓存)是通过
cellcli工具或在Cell上直接管理的。数据库实例需要一种机制来发现和缓存这些配置信息,以便优化I/O和进行管理。 DBMS_CELL包: 数据库通过调用DBMS_CELL.CONFIGURE_CELL等内部API与存储单元通信并获取配置。V$CELL_CONFIG_INFO反映了这些操作的结果和状态。
简而言之,如果 V$CELL_CONFIG 是What(配置是什么),那么 V$CELL_CONFIG_INFO 就是 How, When, and Where(配置如何、何时、从何处获取)。
2. 使用场景
-
诊断配置发现问题:
- 当
V$CELL_CONFIG视图为空或信息过时时,首先应查询V$CELL_CONFIG_INFO来检查数据库实例与存储单元之间的配置发现过程是否成功。STATUS字段会显示FAILED等错误状态。
- 当
-
验证配置的及时性 (Freshness):
- 通过
LAST_QUERY_TIME,可以确认数据库实例拥有的配置信息有多新。如果管理员在Cell上修改了配置(如添加网格磁盘),可以通过此视图判断数据库实例是否已经轮询并获取了最新的配置。
- 通过
-
审计与变更追踪:
- 查看
FIRST_QUERY_TIME和LAST_QUERY_TIME,可以了解配置信息的生命周期,辅助进行审计和变更管理。
- 查看
-
性能调优辅助:
- 如果
QUERY_COUNT异常高,可能表明配置发现过程存在问题,导致不断重试。AVG_TIME可以衡量获取配置的操作的平均耗时。
- 如果
3. 字段含义详解
V$CELL_CONFIG_INFO 视图中的每一行代表一个存储单元配置信息的获取状态。以下是其核心字段:
| 字段名 | 数据类型 | 含义 |
| :— | :— | :— |
| CELL_NAME | VARCHAR2(256) | 此配置信息所对应的Exadata存储单元的名称。 |
| CELL_ID | NUMBER | 存储单元的唯一数字标识符(内部使用)。 |
| STATUS | VARCHAR2(10) | 从此存储单元获取配置信息的最后操作状态。这是最重要的字段之一。 |
| | | • VALID: 配置信息已成功获取且有效。 |
| | | • FAILED: 最后一次尝试从该存储单元获取配置失败。 |
| | | • NONE: 未尝试获取配置或配置不可用。 |
| FIRST_QUERY_TIME | DATE | 首次成功从此存储单元获取配置信息的时间。 |
| LAST_QUERY_TIME | DATE | 最后一次成功从此存储单元获取配置信息的时间。 |
| LAST_QUERY_ATTEMPT_TIME | DATE | 最后一次尝试(无论成功与否)从此存储单元获取配置信息的时间。 |
| QUERY_COUNT | NUMBER | 尝试从此存储单元获取配置信息的总次数。 |
| FAILURE_COUNT | NUMBER | 尝试从此存储单元获取配置信息失败的次数。 |
| AVG_TIME | NUMBER | 获取配置信息的平均耗时(微秒)。 |
| MAX_TIME | NUMBER | 获取配置信息的最大耗时(微秒)。 |
| CON_ID | NUMBER | 容器ID。在多租户环境中,标识该信息所属的容器。对于CDB$ROOT,此值为0。 |
4. 相关视图与基表
-
相关动态性能视图(Exadata系列):
V$CELL_CONFIG: 最重要的相关视图。V$CELL_CONFIG_INFO描述的是获取V$CELL_CONFIG中数据的过程的状态。两者通过CELL_NAME关联。V$CELL: 提供存储单元的基本在线状态和性能摘要。如果V$CELL显示Cell是ONLINE,但V$CELL_CONFIG_INFO显示FAILED,则表明管理通信路径可能存在问题。GV$CELL_CONFIG_INFO:V$CELL_CONFIG_INFO的全局版本,在RAC环境中显示所有实例看到的配置信息获取状态。
-
基表 (Underlying Table):
V$CELL_CONFIG_INFO是一个动态性能视图,其数据来源于数据库实例与Exadata存储单元管理进程 (Cellsrv) 交互时维护的内部统计和状态信息。- 每当数据库实例尝试查询或刷新其缓存的Cell配置时,都会更新这些元数据计数器和时间戳。
- 该视图通过查询底层未公开的 X$ 表(具体表名未公开,可能与
X$KCFIOCELLCONFINFO类似)来获取这些信息。严禁直接查询X$表。
5. 底层详细原理
-
配置发现机制:
- 数据库实例通过管理网络与每个Cell上的
Cellsrv进程通信。 - 通信的触发时机包括:
- 数据库实例启动时。
- 定期后台轮询。
- 接收到来自Cell的配置变更通知(如果配置了相应功能)。
- 手动调用
DBMS_CELL包中的过程(如DBMS_CELL.CONFIGURE_CELL)时。
- 每次尝试获取配置,无论成功与否,都会更新
V$CELL_CONFIG_INFO中的计数器(QUERY_COUNT,FAILURE_COUNT)和时间戳(LAST_QUERY_ATTEMPT_TIME)。
- 数据库实例通过管理网络与每个Cell上的
-
状态管理:
- 如果一次获取尝试成功,
STATUS被设置为VALID,并更新LAST_QUERY_TIME。获取到的配置数据会被缓存到SGA中,供V$CELL_CONFIG视图查询。 - 如果尝试失败,
STATUS被设置为FAILED,FAILURE_COUNT会增加。失败原因可能包括:网络问题、Cellsrv进程无响应、身份验证失败等。 AVG_TIME和MAX_TIME记录了这些管理操作本身的性能,有助于判断管理网络是否存在延迟。
- 如果一次获取尝试成功,
-
视图数据查询:
- 查询
V$CELL_CONFIG_INFO时,Oracle 直接读取SGA中维护的关于配置获取过程的元数据内存结构。这个过程不涉及与Cell的实时通信,因此开销很低。
- 查询
6. 常用查询SQL示例
1. 检查所有存储单元的配置获取状态(健康度检查)
SELECT cell_name,
status,
TO_CHAR(last_query_time, 'YYYY-MM-DD HH24:MI:SS') AS last_success,
TO_CHAR(last_query_attempt_time, 'YYYY-MM-DD HH24:MI:SS') AS last_attempt,
query_count,
failure_count,
ROUND(avg_time / 1000, 2) AS avg_time_ms
FROM v$cell_config_info
ORDER BY cell_name;
2. 查找配置获取失败的存储单元(故障排查)
SELECT cell_name, status, failure_count, last_query_attempt_time
FROM v$cell_config_info
WHERE status = 'FAILED'
ORDER BY failure_count DESC;
3. 验证配置信息的新鲜度 (Freshness)
SELECT cell_name,
status,
SYSDATE - last_query_time AS days_since_last_refresh
FROM v$cell_config_info
WHERE status = 'VALID'
ORDER BY days_since_last_refresh DESC NULLS LAST;
-- 如果days_since_last_refresh很大,说明配置信息可能已过时
4. 在RAC环境中比较不同实例的配置获取状态
SELECT inst_id, cell_name, status, last_query_time
FROM gv$cell_config_info
ORDER BY inst_id, cell_name;
5. 综合诊断:结合VCELL和VCELL和VCELL和VCELL_CONFIG_INFO
SELECT c.cell_name,
c.cell_state AS "V$CELL State",
ci.status AS "Config Info Status",
ci.last_query_time,
ci.failure_count
FROM v$cell c
FULL OUTER JOIN v$cell_config_info ci ON c.cell_name = ci.cell_name
ORDER BY c.cell_name;
-- 这个查询可以揭示不一致性。例如,V$CELL显示ONLINE但Config Info显示FAILED。
总结
V$CELL_CONFIG_INFO 是 Oracle Exadata 环境中用于监控存储配置发现过程的元数据视图。
- 核心价值:它不告诉你配置是什么,而是告诉你数据库是否成功获取了配置、何时获取的以及获取过程的状态。它是诊断
V$CELL_CONFIG视图相关问题的首要工具。 - 监控重点:
STATUS: 必须为VALID。任何FAILED状态都需要立即调查。LAST_QUERY_TIME: 确保配置信息不是过于陈旧,尤其是在Cell配置变更后。FAILURE_COUNT: 持续增长的失败计数表明存在持续的管理通信问题。
- 使用哲学:
- 当怀疑存储配置视图(如
V$CELL_CONFIG)的数据有问题时,首先查询V$CELL_CONFIG_INFO。 - 将其与
V$CELL视图结合使用,区分数据通信(I/O路径,V$CELL)和管理通信(配置路径,V$CELL_CONFIG_INFO)的问题。 - 在RAC环境中,使用
GV$CELL_CONFIG_INFO确保所有实例都能一致地获取到存储配置。
- 当怀疑存储配置视图(如
对于非Exadata数据库,此视图没有实际用途。但在Exadata平台上,它是确保数据库层对存储层有准确认知的重要保障,是高级运维和故障诊断的必备视图。
欢迎关注我的公众号《IT小Chen》

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



