基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
查看审计记录
更新时间:2026-08-13 19:27:47
审计记录只支持通过日志方式持久化,目前审计记录写日志的实现是通过写系统日志来实现的,每个业务租户有一个后台线程负责打印审计日志。
审计日志格式
审计日志样例如下:
"xx.xx.xx.xx",57000,0,3615915,"",3221487702,"xx.xx.xx.xx",33281,1006,"audit_mysql",1006,500002,"admin",0,"xx.xx.xx.xx",500001,"test","B9DBED5D556A12ADAE8EB1650B9761E9","table_access"," SELECT id, k, c, pad\n FROM sbtest\n WHERE k IN (78154, 78112, 77817, 78105, 78504, 78111, 78155, 78141, 78145, 78113)\n ",324,0,10,2,0,0,0,0,0,0,0,0,0,1,0,0,1,1700012758556689,364,0,1,46,1,47,259,0,0,0,0,10,0,20,0,0,0,3,0,20,10,10,20,10,0,0,0,139264,0,0,"",0,-1,-1,0,1700012758543334815,2,0,"",-7363743333437867606,0,"","",1,0,0,"00060a27-1096-5dc2-fa04-cea1f06b019a"
"xx.xx.xx.xx",57000,0,3615914,"",3221487709,"xx.xx.xx.xx",33293,1006,"audit_mysql",1006,500002,"admin",0,"xx.xx.xx.xx",500001,"test","B9DBED5D556A12ADAE8EB1650B9761E9","table_access"," SELECT id, k, c, pad\n FROM sbtest\n WHERE k IN (34851, 34386, 34384, 34393, 34974, 34566, 34397, 34379, 33844, 34353)\n ",324,0,10,2,0,0,0,0,0,0,0,0,0,1,0,0,1,1700012758556662,417,0,1,7,1,37,362,0,0,0,0,10,0,20,0,0,0,3,0,20,10,10,20,10,0,0,0,131072,0,0,"",0,-1,-1,0,1700012758543334815,2,0,"",-7363743333437867606,0,"","",1,0,0,"00060a27-1096-5dc2-131b-e7f9c98dd9d9"
日志字段解释
审计记录的字段在现有 [G]V$OB_SQL_AUDIT 视图的字段上进行提取,但又与之有些差异:
- 增加
EVENT_CLASS字段,用于标识审计事件类型,取值包含connection,table_access,general和过滤器的定义保持一致。 - 只记录用户 Session 的请求,内部发起的 SQL 日志不记录。
- Query SQL 会转换为
utf8并且转义后输出。对于登录登出事件,会记录LOGON/LOGOFF。 - 对于超长 SQL,在异步打印日志时会使用当前线程的 Allocator 来分配内存,且回退为同步打印。
审计日志的具体字段列表如下,其中类型只影响打印格式,只有字符串和整型两种类型,且字符串类型会用引号括起来。
| 字段名称 | 类型 | 描述 |
|---|---|---|
| SVR_IP | varchar(46) | IP 地址 |
| SVR_PORT | bigint(20) | 端口号 |
| REQUEST_ID | bigint(20) | 请求的 ID 号 |
| SQL_EXEC_ID | bigint(20) | 单机单调递增的执行 ID |
| TRACE_ID | varchar(128) | 该语句的 trace_id |
| SID | bigint(20) unsigned | Session 连接 ID |
| CLIENT_IP | varchar(46) | |
| CLIENT_PORT | bigint(20) | 发送请求的客户端端口号 |
| TENANT_ID | bigint(20) | 发送请求的租户 ID |
| TENANT_NAME | varchar(64) | 发送请求的租户名称 |
| EFFECTIVE_TENANT_ID | bigint(20) | 租户 ID |
| USER_ID | bigint(20) | 发送请求的用户 ID |
| USER_NAME | varchar(64) | 发送请求的用户名称 |
| USER_GROUP | bigint(20) | 用户所属资源组 ID |
| USER_CLIENT_IP | varchar(46) | 发送请求的客户端的 IP |
| EVENT_CLASS | varchar(128) | 事件类型,用于区分非 SQL语句 |
| DB_ID | bigint(20) unsigned | 数据库 ID |
| DB_NAME | varchar(128) | 数据库名称 |
| SQL_ID | varchar(32) | 该 SQL 的 ID |
| QUERY_SQL | longtext | 实际的 SQL 语句 |
| PLAN_ID | bigint(20) | 执行计划的 ID |
| AFFECTED_ROWS | bigint(20) | 影响行数 |
| RETURN_ROWS | bigint(20) | 返回行数 |
| PARTITION_CNT | bigint(20) | 该请求涉及的分区数 |
| RET_CODE | bigint(20) | 执行结果返回码: |
| QC_ID | bigint(20) unsigned | 并行执行场景下,调度器 ID |
| DFO_ID | bigint(20) | 并行执行场景下,当前执行的子计划 ID |
| SQC_ID | bigint(20) | 并行执行场景下,本地协调器 ID |
| WORKER_ID | bigint(20) | 并行执行场景下,工作线程 ID |
| EVENT | varchar(64) | 最长等待事件名称 |
| P1TEXT | varchar(64) | 等待事件参数 1 |
| P1 | bigint(20) unsigned | 等待事件参数 1 的值 |
| P2TEXT | varchar(64) | 等待事件参数 2 |
| P2 | bigint(20) unsigned | 等待事件参数 2 的值 |
| P3TEXT | varchar(64) | 等待事件参数 3 |
| P3 | bigint(20) unsigned | 等待事件参数 3 的值 |
| LEVEL | bigint(20) | 等待事件的级别 |
| WAIT_CLASS_ID | bigint(20) | 等待事件所属的 Class ID |
| WAIT_CLASS# | bigint(20) | 等待事件所属的 Class 的下标 |
| WAIT_CLASS | varchar(64) | 等待事件所属的 Class 名称 |
| STATE | varchar(19) | 等待事件的状态 |
| WAIT_TIME_MICRO | bigint(20) | 该等待事件所等待的时间,单位:微秒 |
| TOTAL_WAIT_TIME_MICRO | bigint(20) | 执行过程所有等待的总时间,单位:微秒 |
| TOTAL_WAITS | bigint(20) | 执行过程总等待的次数 |
| RPC_COUNT | bigint(20) | 发送的 RPC 个数 |
| PLAN_TYPE | bigint(20) | 执行计划类型: |
| IS_INNER_SQL | tinyint(4) | 是否为内部 SQL 请求 |
| IS_EXECUTOR_RPC | tinyint(4) | 当前请求是否为 RPC 请求 |
| IS_HIT_PLAN | tinyint(4) | 是否命中 plan_cache |
| REQUEST_TIME | bigint(20) | 开始执行时间点,单位:微秒 |
| ELAPSED_TIME | bigint(20) | 接收到请求到执行结束所消耗的总时间,单位:微秒 |
| NET_TIME | bigint(20) | 发送 RPC 到接收到请求的时间,单位:微秒 |
| NET_WAIT_TIME | bigint(20) | 接收到请求到进入队列的时间,单位:微秒 |
| QUEUE_TIME | bigint(20) | 请求在队列的等待时间,单位:微秒 |
| DECODE_TIME | bigint(20) | 出队列后 Decode 的时间,单位:微秒 |
| GET_PLAN_TIME | bigint(20) | 开始 Process 到获得计划的时间,单位:微秒 |
| EXECUTE_TIME | bigint(20) | 计划执行所消耗的时间,单位:微秒 |
| APPLICATION_WAIT_TIME | bigint(20) unsigned | 所有 Application 类事件的总时间,单位:微秒 |
| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | 所有 Concurrency 类事件的总时间,单位:微秒 |
| USER_IO_WAIT_TIME | bigint(20) unsigned | 所有 user_io 类事件的总时间,单位:微秒 |
| SCHEDULE_TIME | bigint(20) unsigned | 所有 Schedule 类事件的时间,单位:微秒 |
| ROW_CACHE_HIT | bigint(20) | 行缓存命中次数 |
| BLOOM_FILTER_CACHE_HIT | bigint(20) | Bloom Filter 缓存命中次数 |
| BLOCK_CACHE_HIT | bigint(20) | 块缓存命中次数 |
| DISK_READS | bigint(20) | 物理读次数 |
| RETRY_CNT | bigint(20) | 重试次数 |
| TABLE_SCAN | tinyint(4) | 判断该请求是否含全表扫描 |
| CONSISTENCY_LEVEL | bigint(20) | 一致性级别,取值如下:
|
| MEMSTORE_READ_ROW_COUNT | bigint(20) | MemStore 中的读行数 |
| SSSTORE_READ_ROW_COUNT | bigint(20) | SSStore 中连读的行数 |
| DATA_BLOCK_READ_CNT | bigint(20) | 访问的数据微块数量 |
| DATA_BLOCK_CACHE_HIT | bigint(20) | 命中数据微块 Cache 数量 |
| INDEX_BLOCK_READ_CNT | bigint(20) | 访问的中间层微块数量 |
| INDEX_BLOCK_CACHE_HIT | bigint(20) | 命中中间层微块 Cache 数量 |
| BLOCKSCAN_BLOCK_CNT | bigint(20) | 单边扫描的数据微块数量 |
| BLOCKSCAN_ROW_CNT | bigint(20) | 单边扫描的数据行数 |
| PUSHDOWN_STORAGE_FILTER_ROW_CNT | bigint(20) | 下压存储 Filter 过滤后行数 |
| REQUEST_MEMORY_USED | bigint(20) | 该请求消耗的内存 |
| EXPECTED_WORKER_COUNT | bigint(20) | 请求期望的工作线程数 |
| USED_WORKER_COUNT | bigint(20) | 请求实际使用的工作线程数 |
| SCHED_INFO | varchar(16384) | 请求的调度信息 |
| FUSE_ROW_CACHE_HIT | bigint(20) | 暂不支持该字段,字段默认为 NULL |
| PS_CLIENT_STMT_ID | bigint(20) | 请求对应的 Prepare ID:
|
| PS_INNER_STMT_ID | bigint(20) | 请求对应的 Prepare ID:
|
| TX_ID | bigint(20) | 请求对应的事务的 Hash 值 |
| SNAPSHOT_VERSION | bigint(20)unsigned | 当前语句的快照读版本号 |
| REQUEST_TYPE | bigint(20) | 请求对应的类型:
|
| IS_BATCHED_MULTI_STMT | tinyint(4) | 是否进行 Batch Multi Stmt 的优化 |
| OB_TRACE_INFO | varchar(4096) | 用户设置的 Trace 信息 |
| PLAN_HASH | bigint(20) unsigned | 执行计划的 Hash 值 |
| LOCK_FOR_READ_TIME | bigint(20) | 读取数据时等待锁的耗时,单位:微秒 |
| PARAMS_VALUE | longtext | PS 执行期参数值 |
| FLT_TRACE_ID | varchar(1024) | 表示该条记录全链路追踪的 trace_id,如果为空,则说明没有被全链路追踪监控。该字段是 Uuid,不同于 Trace。其表示形式类似于:000600d6-a5de-038c-6c80-df07e4e79149 |