首批通过分布式安全可靠测评,为关键业务系统打造
obcdc 支持数据字典
更新时间:2026-06-08 12:50:31
功能介绍
OceanBase 数据库自 V4.1.0.0 起支持数据字典功能,数据字典是一个租户级的服务,其功能是将 OceanBase 集群租户的元信息,包括日志流信息/库表元信息等持久化到日志(clog)中,现阶段主要用途是让数据链路(obcdc)具备仅依赖日志即可获取租户元信息的能力。
数据字典仅服务于用户租户,通过 PALF 持久化在普通租户的系统日志流(SYS_LS)中。用户租户建立后数据字典服务自动开启,运行在租户 SYS_LS 的 LEADER 副本上。
日志归档服务开启时,会自动触发一次异步数据字典生成任务。OceanBase 数据库支持通过租户级配置项 dump_data_dictionary_to_log_interval(自 V4.1.0.0 起支持) 和 DBMS_DATA_DICT 系统包调度定时生成数据字典,推荐通过 DBMS_DATA_DICT 系统包调度生成数据字典。
OceanBase 数据库自 V4.2.0.0 起支持通过 DBA/CDB 视图来记录数据字典的生成记录,可在系统租户下查询 CDB_OB_DATA_DICTIONARY_IN_LOG 视图,或普通租户下查询 DBA_OB_DATA_DICTIONARY_IN_LOG 视图获取字典位置信息。
注意
根据租户元信息复杂度不同,数据字典生成时间在数秒到数小时不等,设置配置项时需要考虑租户元信息的复杂度,生成周期过短会导致字典生成过于频繁,因数据字典生成为单线程任务,这会导致该线程长期被占用。
数据字典生成过程中,所调用的 schema 服务会占用额外内存,租户 schema 数量变更多或者租户内存规格小的情况下,内存占用会比较明显。
使用方式
obcdc 可通过在配置文件中配置 meta_data_refresh_mode 选择是否通过日志中的数据字典解析 schema 信息。配置为 online 时表示通过 SchemaService 向 OBServer 节点查询 schema 信息,需要能够访问 OBServer 节点;配置为 data_dict 表示通过日志中的数据字典解析 schema 信息。
注意
obcdc 同步 OceanBase 数据库 V4.2 及之后版本数据时会忽略用户配置,强制使用 data_dict 模式,如需使用 online 模式,需额外修改 skip_ob_version_compat_check 配置项为 1。
例如在配置文件中补充如下内容,obcdc 配置文件的介绍可参见 配置文件示例。
meta_data_refresh_mode=data_dict
配置后需重启 obcdc 宿主进程,例如使用如下命令启动:
[admin@test oceanbase]$ ./bin/obcdc_tailf -f libobcdc.conf -D output.txt
此处以配置文件相对路径为 libobcdc.conf,并将 obcdc 处理后的输出数据保存到 output.txt 文件为例,需根据实际情况替换配置文件名和输出数据的保存文件名。obcdc_tailf 命令的详细介绍可参见 obcdc_tailf。
相关文档
日志归档服务的介绍可参见 日志归档 章节。
CDB_OB_DATA_DICTIONARY_IN_LOG 视图的详细介绍可参见 oceanbase.CDB_OB_DATA_DICTIONARY_IN_LOG。
DBA_OB_DATA_DICTIONARY_IN_LOG 视图的详细介绍可参见 oceanbase.DBA_OB_DATA_DICTIONARY_IN_LOG(MySQL 模式)和 DBA_OB_DATA_DICTIONARY_IN_LOG(Oracle 模式)。