首批通过分布式安全可靠测评,为关键业务系统打造
DDL 操作记录表中 operation_type 描述
更新时间:2026-05-21 09:16
__all_virtual_ddl_operation 视图用来查看集群租户 DDL 信息,其中 operation_type 为 ddl_code,每个不同的数字代表不同的含义。
举例说明,当用户发起 truncate table 和 alter table 操作后,查看视图:
obclient > SELECT tenant_id,database_id,table_id,operation_type,ddl_stmt_str,gmt_create FROM oceanbase.__all_virtual_ddl_operation WHERE table_id= ORDER BY gmt_create;
输出结果如下:
+-----------+-------------+---------------+---------------------+-----------------------------+--------------------------+
| tenant_id | database_id | table_id |operation_type | ddl_stmt_str | gmt_create |
+-----------+-------------+---------------+---------------------+-----------------------------+--------------------------+
| xxxxx | xxxxx |xxxxx | 23| truncate table xxxx; | xxxx-xx-xx xx:xx:xx.xxxxx|
| xxxxx | xxxxx |xxxxx | 14| | xxxx-xx-xx xx:xx:xx.xxxxx|
| xxxxx | xxxxx |xxxxx | 14| | xxxx-xx-xx xx:xx:xx.xxxxx|
| xxxxx | xxxxx |xxxxx | 14| | xxxx-xx-xx xx:xx:xx.xxxxx|
| xxxxx | xxxxx |xxxxx | 3| alter table xxx rename xxxx;| xxxx-xx-xx xx:xx:xx.xxxxx|
+----------+--------------+---------------+--------------------+------------------------------+--------------------------+
5 rows in set (0.09 sec)
其中 operation_type = 23、14、3 分别代表:
OB_DDL_TRUNCATE_TABLE_CREATE = 23
OB_DDL_MODIFY_TABLE_SCHEMA_VERSION = 14
OB_DDL_ALTER_TABLE = 3
数字 14 为 schema_version 的刷新,如果三副本涉及到 3 次刷新,ddl_stmt_str 为空,为内核 rs 触发行为。 所有 op_code 编码源码参考头文件 ob_schema_services.h。 OceanBase 数据库中 truncate 操作的实现是先 drop 之后再 create,所以 truncate table 会有。
OB_DDL_TRUNCATE_TABLE_DROP =24
OB_DDL_TRUNCATE_TABLE_CREATE =23
当集群开启备库和物理备份时候,truncate table 还会对应一个 OB_DDL_DELAY_DELETE_TABLE = 48 的操作,代表延时删除操作。
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
更多信息
ob_schema_service.h 中 operation_type 的定义。
#define OP_TYPE_DEF(ACT) \
ACT(OB_INVALID_DDL_OP, = 0) \
ACT(OB_DDL_TABLE_OPERATION_BEGIN, = 1) \
ACT(OB_DDL_DROP_TABLE, = 2) \
ACT(OB_DDL_ALTER_TABLE, = 3) \
ACT(OB_DDL_CREATE_TABLE, = 4) \
ACT(OB_DDL_ADD_COLUMN, = 5) \
ACT(OB_DDL_DROP_COLUMN, = 6) \
ACT(OB_DDL_CHANGE_COLUMN, = 7) \
ACT(OB_DDL_MODIFY_COLUMN, = 8) \
ACT(OB_DDL_ALTER_COLUMN, = 9) \
ACT(OB_DDL_MODIFY_META_TABLE_ID, = 10) \
ACT(OB_DDL_KILL_INDEX,) \
ACT(OB_DDL_STOP_INDEX_WRITE,) \
ACT(OB_DDL_MODIFY_INDEX_STATUS,) \
ACT(OB_DDL_MODIFY_TABLE_SCHEMA_VERSION,) \
ACT(OB_DDL_MODIFY_TABLE_OPTION, = 15) \
ACT(OB_DDL_TABLE_RENAME,) \
ACT(OB_DDL_MODIFY_DATA_TABLE_INDEX,) \
ACT(OB_DDL_DROP_INDEX,) \
ACT(OB_DDL_DROP_VIEW,) \
ACT(OB_DDL_CREATE_INDEX, = 20) \
ACT(OB_DDL_CREATE_VIEW,) \
ACT(OB_DDL_ALTER_TABLEGROUP_ADD_TABLE,) \
ACT(OB_DDL_TRUNCATE_TABLE_CREATE,) \
ACT(OB_DDL_TRUNCATE_TABLE_DROP,) \
ACT(OB_DDL_DROP_TABLE_TO_RECYCLEBIN, = 25) \
ACT(OB_DDL_DROP_VIEW_TO_RECYCLEBIN,) \
ACT(OB_DDL_FLASHBACK_TABLE,) \
ACT(OB_DDL_FLASHBACK_VIEW,) \
ACT(OB_DDL_ADD_PARTITION,) \
ACT(OB_DDL_DROP_PARTITION, = 30) \
ACT(OB_DDL_TRUNCATE_DROP_TABLE_TO_RECYCLEBIN,) \
ACT(OB_DDL_RENAME_INDEX,) \
ACT(OB_DDL_DROP_INDEX_TO_RECYCLEBIN,) \
ACT(OB_DDL_FLASHBACK_INDEX,) \
ACT(OB_DDL_PARTITIONED_TABLE, = 35) \
ACT(OB_DDL_FINISH_SPLIT,) \
ACT(OB_DDL_ADD_CONSTRAINT,) \
ACT(OB_DDL_DROP_CONSTRAINT,) \
ACT(OB_DDL_TRUNCATE_PARTITION, = 39) \
ACT(OB_DDL_CREATE_GLOBAL_INDEX, = 40) \
ACT(OB_DDL_ALTER_GLOBAL_INDEX, ) \
ACT(OB_DDL_RENAME_GLOBAL_INDEX,) \
ACT(OB_DDL_DROP_GLOBAL_INDEX,) \
ACT(OB_DDL_MODIFY_GLOBAL_INDEX_STATUS,) \
ACT(OB_DDL_FINISH_LOGICAL_SPLIT, = 45) \
ACT(OB_DDL_SPLIT_PARTITION, = 46) \
ACT(OB_DDL_STANDBY_REPLAY_CREATE_TABLE, = 47) \
ACT(OB_DDL_DELAY_DELETE_TABLE, = 48) \
ACT(OB_DDL_DELAY_DELETE_TABLE_PARTITION, = 49) \
ACT(OB_DDL_UPDATE_TABLE_SCHEMA_VERSION, = 50) \
ACT(OB_DDL_ADD_SUBPARTITION, = 51) \
ACT(OB_DDL_DROP_SUBPARTITION, = 52) \
ACT(OB_DDL_ALTER_INDEX_PARALLEL, = 53) \
ACT(OB_DDL_ADD_SUB_PARTITION, = 54) \
ACT(OB_DDL_DROP_SUB_PARTITION, = 55) \
ACT(OB_DDL_TRUNCATE_SUB_PARTITION, = 56) \
ACT(OB_DDL_TABLE_OPERATION_END, = 100) \
ACT(OB_DDL_TENANT_OPERATION_BEGIN, = 101) \
ACT(OB_DDL_ADD_TENANT,) \
ACT(OB_DDL_ALTER_TENANT,) \
ACT(OB_DDL_DEL_TENANT,) \
ACT(OB_DDL_DEL_TENANT_START,) \
ACT(OB_DDL_DEL_TENANT_END,) \
ACT(OB_DDL_ADD_TENANT_START,) \
ACT(OB_DDL_ADD_TENANT_END,) \
ACT(OB_DDL_RENAME_TENANT,) \
ACT(OB_DDL_DROP_TENANT_TO_RECYCLEBIN,) \
ACT(OB_DDL_FLASHBACK_TENANT,) \
ACT(OB_DDL_TENANT_OPERATION_END, = 200) \
ACT(OB_DDL_DATABASE_OPERATION_BEGIN, = 201) \
ACT(OB_DDL_ADD_DATABASE,) \
ACT(OB_DDL_ALTER_DATABASE,) \
ACT(OB_DDL_DEL_DATABASE,) \
ACT(OB_DDL_RENAME_DATABASE,) \
ACT(OB_DDL_DROP_DATABASE_TO_RECYCLEBIN,) \
ACT(OB_DDL_FLASHBACK_DATABASE,) \
ACT(OB_DDL_DELAY_DELETE_DATABASE,) \
ACT(OB_DDL_DATABASE_OPERATION_END, = 300) \
ACT(OB_DDL_TABLEGROUP_OPERATION_BEGIN, = 301) \
ACT(OB_DDL_ADD_TABLEGROUP,) \
ACT(OB_DDL_DEL_TABLEGROUP,) \
ACT(OB_DDL_RENAME_TABLEGROUP,) \
ACT(OB_DDL_ALTER_TABLEGROUP,) \
ACT(OB_DDL_ALTER_TABLEGROUP_PARTITION,) \
ACT(OB_DDL_FINISH_SPLIT_TABLEGROUP,) \
ACT(OB_DDL_FINISH_LOGICAL_SPLIT_TABLEGROUP, = 308) \
ACT(OB_DDL_SPLIT_TABLEGROUP_PARTITION, = 309) \
ACT(OB_DDL_PARTITIONED_TABLEGROUP_TABLE, = 310) \
ACT(OB_DDL_DELAY_DELETE_TABLEGROUP, = 311) \
ACT(OB_DDL_DELAY_DELETE_TABLEGROUP_PARTITION, = 312) \
ACT(OB_DDL_TABLEGROUP_OPERATION_END, = 400) \
ACT(OB_DDL_USER_OPERATION_BEGIN, = 401) \
ACT(OB_DDL_CREATE_USER,) \
ACT(OB_DDL_DROP_USER,) \
ACT(OB_DDL_RENAME_USER,) \
ACT(OB_DDL_LOCK_USER,) \
ACT(OB_DDL_SET_PASSWD,) \
ACT(OB_DDL_GRANT_REVOKE_USER,) \
ACT(OB_DDL_ALTER_USER_REQUIRE,) \
ACT(OB_DDL_MODIFY_USER_SCHEMA_VERSION,) \
ACT(OB_DDL_ALTER_USER_PROFILE,) \
ACT(OB_DDL_ALTER_USER,) \
ACT(OB_DDL_ALTER_ROLE,) \
ACT(OB_DDL_USER_OPERATION_END, = 500) \
ACT(OB_DDL_DB_PRIV_OPERATION_BEGIN, = 501) \
ACT(OB_DDL_GRANT_REVOKE_DB,) \
ACT(OB_DDL_DEL_DB_PRIV,) \
ACT(OB_DDL_DB_PRIV_OPERATION_END, = 600) \
ACT(OB_DDL_TABLE_PRIV_OPERATION_BEGIN, = 601) \
ACT(OB_DDL_GRANT_REVOKE_TABLE,) \
ACT(OB_DDL_DEL_TABLE_PRIV,) \
ACT(OB_DDL_TABLE_PRIV_OPERATION_END, = 700) \
ACT(OB_DDL_OUTLINE_OPERATION_BEGIN, = 701) \
ACT(OB_DDL_CREATE_OUTLINE,) \
ACT(OB_DDL_REPLACE_OUTLINE,) \
ACT(OB_DDL_DROP_OUTLINE,) \
ACT(OB_DDL_ALTER_OUTLINE,) \
ACT(OB_DDL_OUTLINE_OPERATION_END, = 800) \
ACT(OB_DDL_ZONE_OPERATION_BEGIN, = 801) \
ACT(OB_DDL_ALTER_ZONE,) \
ACT(OB_DDL_ADD_ZONE,) \
ACT(OB_DDL_DELETE_ZONE,) \
ACT(OB_DDL_START_ZONE,) \
ACT(OB_DDL_STOP_ZONE,) \
ACT(OB_DDL_ZONE_OPERATION_END, = 900) \
ACT(OB_DDL_SYNONYM_OPERATION_BEGIN, = 901) \
ACT(OB_DDL_CREATE_SYNONYM,) \
ACT(OB_DDL_DROP_SYNONYM,) \
ACT(OB_DDL_REPLACE_SYNONYM,) \
ACT(OB_DDL_SYNONYM_OPERATION_END, = 1000) \
ACT(OB_DDL_PLAN_BASELINE_OPERATION_BEGIN, = 1001) \
ACT(OB_DDL_CREATE_PLAN_BASELINE,) \
ACT(OB_DDL_REPLACE_PLAN_BASELINE,) \
ACT(OB_DDL_DROP_PLAN_BASELINE,) \
ACT(OB_DDL_ALTER_PLAN_BASELINE,) \
ACT(OB_DDL_PLAN_BASELINE_OPERATION_END, = 1100) \
ACT(OB_DDL_ROUTINE_OPERATION_BEGIN, = 1201) \
ACT(OB_DDL_CREATE_ROUTINE,) \
ACT(OB_DDL_DROP_ROUTINE,) \
ACT(OB_DDL_ALTER_ROUTINE,) \
ACT(OB_DDL_REPLACE_ROUTINE,) \
ACT(OB_DDL_ROUTINE_OPERATION_END, = 1250) \
ACT(OB_DDL_PACKAGE_OPERATION_BEGIN, = 1251) \
ACT(OB_DDL_CREATE_PACKAGE,) \
ACT(OB_DDL_ALTER_PACKAGE,) \
ACT(OB_DDL_DROP_PACKAGE,) \
ACT(OB_DDL_PACKAGE_OPERATION_END, = 1300) \
ACT(OB_DDL_UDF_OPERATION_BEGIN, = 1301) \
ACT(OB_DDL_CREATE_UDF,) \
ACT(OB_DDL_DROP_UDF,) \
ACT(OB_DDL_UDF_OPERATION_END, = 1310) \
ACT(OB_DDL_SEQUENCE_OPERATION_BEGIN, = 1311) \
ACT(OB_DDL_CREATE_SEQUENCE,) \
ACT(OB_DDL_ALTER_SEQUENCE,) \
ACT(OB_DDL_DROP_SEQUENCE,) \
ACT(OB_DDL_SEQUENCE_OPERATION_END, = 1320) \
ACT(OB_DDL_UDT_OPERATION_BEGIN, = 1321) \
ACT(OB_DDL_CREATE_UDT,) \
ACT(OB_DDL_REPLACE_UDT,) \
ACT(OB_DDL_DROP_UDT,) \
ACT(OB_DDL_DROP_UDT_BODY,) \
ACT(OB_DDL_UDT_OPERATION_END, = 1330) \
ACT(OB_DDL_AUDIT_OPERATION_BEGIN, = 1331) \
ACT(OB_DDL_ADD_AUDIT,) \
ACT(OB_DDL_UPDATE_AUDIT,) \
ACT(OB_DDL_DEL_AUDIT,) \
ACT(OB_DDL_AUDIT_OPERATION_END, = 1340) \
ACT(OB_DDL_SYS_VAR_OPERATION_BEGIN, = 1401) \
ACT(OB_DDL_ALTER_SYS_VAR,) \
ACT(OB_DDL_SYS_VAR_OPERATION_END, = 1500) \
ACT(OB_DDL_ONLY_SIGNAL_OPERATION_BEGIN, = 1501) \
ACT(OB_DDL_NOT_SYNC_OPERATION,) \
ACT(OB_DDL_END_SIGN,) \
ACT(OB_DDL_SWITCHOVER_TO_LEADER_SUCC,) \
ACT(OB_DDL_START_SWTICHOVER_TO_FOLLOWER,) \
ACT(OB_DDL_FINISH_SCHEMA_SPLIT,) \
ACT(OB_DDL_REFRESH_SCHEMA_VERSION,) \
ACT(OB_DDL_FINISH_BOOTSTRAP,) \
ACT(OB_DDL_FINISH_SCHEMA_SPLIT_V2,) \
ACT(OB_DDL_FINISH_PHYSICAL_RESTORE_MODIFY_SCHEMA,) \
ACT(OB_DDL_ONLY_SIGNAL_OPERATION_END, = 1600) \
ACT(OB_DDL_STANDBY_FINISH_REPLAY_SCHEMA_SNAPSHOT, = 1601) \
ACT(OB_DDL_KEYSTORE_OPERATION_BEGIN, = 1650) \
ACT(OB_DDL_CREATE_KEYSTORE,) \
ACT(OB_DDL_ALTER_KEYSTORE,) \
ACT(OB_DDL_KEYSTORE_OPERATION_END, = 1700) \
ACT(OB_DDL_LABEL_SE_POLICY_OPERATION_BEGIN, = 1701) \
ACT(OB_DDL_CREATE_LABEL_SE_POLICY,) \
ACT(OB_DDL_ALTER_LABEL_SE_POLICY,) \
ACT(OB_DDL_DROP_LABEL_SE_POLICY,) \
ACT(OB_DDL_LABEL_SE_POLICY_OPERATION_END, = 1750) \
ACT(OB_DDL_LABEL_SE_COMPONENT_OPERATION_BEGIN, = 1751) \
ACT(OB_DDL_CREATE_LABEL_SE_LEVEL,) \
ACT(OB_DDL_ALTER_LABEL_SE_LEVEL,) \
ACT(OB_DDL_DROP_LABEL_SE_LEVEL,) \
ACT(OB_DDL_CREATE_LABEL_SE_COMPARTMENT,) \
ACT(OB_DDL_ALTER_LABEL_SE_COMPARTMENT,) \
ACT(OB_DDL_DROP_LABEL_SE_COMPARTMENT,) \
ACT(OB_DDL_CREATE_LABEL_SE_GROUP,) \
ACT(OB_DDL_ALTER_LABEL_SE_GROUP,) \
ACT(OB_DDL_DROP_LABEL_SE_GROUP,) \
ACT(OB_DDL_LABEL_SE_COMPONENT_OPERATION_END, = 1800) \
ACT(OB_DDL_LABEL_SE_LABEL_OPERATION_BEGIN, = 1801) \
ACT(OB_DDL_CREATE_LABEL_SE_LABEL,) \
ACT(OB_DDL_ALTER_LABEL_SE_LABEL,) \
ACT(OB_DDL_DROP_LABEL_SE_LABEL,) \
ACT(OB_DDL_LABEL_SE_LABEL_OPERATION_END, = 1850) \
ACT(OB_DDL_LABEL_SE_USER_LABEL_OPERATION_BEGIN, = 1851) \
ACT(OB_DDL_CREATE_LABEL_SE_USER_LEVELS,) \
ACT(OB_DDL_ALTER_LABEL_SE_USER_LEVELS,) \
ACT(OB_DDL_DROP_LABEL_SE_USER_LEVELS,) \
ACT(OB_DDL_LABEL_SE_USER_LABEL_OPERATION_END, = 1900) \
ACT(OB_DDL_TABLESPACE_OPERATION_BEGIN, = 1901) \
ACT(OB_DDL_CREATE_TABLESPACE,) \
ACT(OB_DDL_ALTER_TABLESPACE,) \
ACT(OB_DDL_DROP_TABLESPACE,) \
ACT(OB_DDL_TABLESPACE_OPERATION_END, = 1950) \
ACT(OB_DDL_TRIGGER_OPERATION_BEGIN, = 1951) \
ACT(OB_DDL_CREATE_TRIGGER,) \
ACT(OB_DDL_ALTER_TRIGGER,) \
ACT(OB_DDL_DROP_TRIGGER,) \
ACT(OB_DDL_DROP_TRIGGER_TO_RECYCLEBIN,) \
ACT(OB_DDL_FLASHBACK_TRIGGER,) \
ACT(OB_DDL_TRIGGER_OPERATION_END, = 1960) \
ACT(OB_DDL_PROFILE_OPERATION_BEGIN, = 1961) \
ACT(OB_DDL_CREATE_PROFILE,) \
ACT(OB_DDL_ALTER_PROFILE,) \
ACT(OB_DDL_DROP_PROFILE,) \
ACT(OB_DDL_PROFILE_OPERATION_END, = 1970) \
ACT(OB_DDL_SYS_PRIV_OPERATION_BEGIN, = 1971) \
ACT(OB_DDL_SYS_PRIV_GRANT_REVOKE,) \
ACT(OB_DDL_SYS_PRIV_DELETE,) \
ACT(OB_DDL_SYS_PRIV_OPERATION_END, = 1980) \
ACT(OB_DDL_OBJ_PRIV_OPERATION_BEGIN, = 1981) \
ACT(OB_DDL_OBJ_PRIV_GRANT_REVOKE,) \
ACT(OB_DDL_OBJ_PRIV_DELETE,) \
ACT(OB_DDL_OBJ_PRIV_OPERATION_END, = 1990) \
ACT(OB_DDL_DBLINK_OPERATION_BEGIN, = 1991) \
ACT(OB_DDL_CREATE_DBLINK,) \
ACT(OB_DDL_DROP_DBLINK,) \
ACT(OB_DDL_DBLINK_OPERATION_END, = 2000) \
ACT(OB_DDL_DIRECTORY_OPERATION_BEGIN, = 2001) \
ACT(OB_DDL_CREATE_DIRECTORY,) \
ACT(OB_DDL_ALTER_DIRECTORY,) \
ACT(OB_DDL_DROP_DIRECTORY,) \
ACT(OB_DDL_DIRECTORY_OPERATION_END, = 2010) \
ACT(OB_DDL_MAX_OP,)