---
title: "GV$OB_SQL_AUDIT - OceanBase 数据库 V4.3.2 | OceanBase 文档中心"
description: GV$OB_SQL_AUDIT GV$OB_SQL_AUDIT 是全局 SQL 审计表，可以用来查看每次请求客户端来源、执行服务器信息、执行状态信息、等待时间以及执行各阶段耗时等。 SQL Audit 相关设置 设置 SQL Audit 的开关。 obclient&gt; ALTER SYSTEM SET enable_s…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.2

# GV$OB_SQL_AUDIT

更新时间：2025-05-29 10:53:07

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.2/zh-CN/700.reference/1000.performance-tuning-guide/500.sql-optimization/400.sql-optimization/300.monitor-sql-execution-performance/100.gv-ob-sql-audit.md)  

`GV$OB_SQL_AUDIT` 是全局 SQL 审计表，可以用来查看每次请求客户端来源、执行服务器信息、执行状态信息、等待时间以及执行各阶段耗时等。

## SQL Audit 相关设置

- 设置 SQL Audit 的开关。

  ```sql
  obclient> ALTER SYSTEM SET enable_sql_audit = true;
  /*开启 SQL Audit*/

  obclient> ALTER SYSTEM SET enable_sql_audit = false;
  /*关闭 SQL Audit*/

  ```
 - 设置 SQL Audit 所使用的内存占租户内存的百分比。默认内存百分比为 3，可设置范围为[0,80]。

  ```sql
  obclient> SET global ob_sql_audit_percentage = 3;
  Query OK, 0 rows affected

  ```

## SQL Audit 淘汰机制

租户的后台任务每隔 1s 会根据 OBServer 节点和 SQL Audit 的内存使用情况来决定是否触发淘汰 SQL。SQL Audit 内存上限根据 `ob_sql_audit_percentage` 分配可用的最大内存。

当 SQL Audit 的实际内存使用达到指定阈值时，满足触发淘汰的条件，开启淘汰；当 SQL Audit 的实际内存使用降到指定阈值时，满足停止淘汰的条件，停止淘汰。SQL Audit 淘汰机制如下表所示。

| **触发机制** | **SQL Audit 内存范围** | **触发淘汰的条件** | **停止淘汰的条件** |
| --- | --- | --- | --- |
| 内存使用 | [0,64M] | 内存上限 *50% | 0 M |
| 内存使用 | [64M,100M] | 内存上限-20M | 内存上限-40 M |
| 内存使用 | [100M,5G] | 内存上限 *80% | 内存上限 *60% |
| 内存使用 | [5G,+∞） | 内存上限-1G | 内存上限-2 G |
| 记录数 | 无 | 900 万 | 800万 |

## GV$OB_SQL_AUDIT 字段说明

| **字段名称** | **类型（MySQL 模式）** | **类型（Oracle 模式）** | **描述** |
| --- | --- | --- | --- |
| SVR_IP | varchar(46) | varchar(46) | IP 地址 |
| SVR_PORT | bigint(20) | number(38) | 端口号 |
| REQUEST_ID | bigint(20) | number(38) | 请求的 ID 号 |
| SQL_EXEC_ID | bigint(20) | number(38) | 如果 SQL 计划正在被执行，则显示对应的 SQL ID |
| TRACE_ID | varchar(128) | varchar(128) | 这条语句的 Trace ID |
| SID | bigint(20) unsigned | number(38) | Session ID |
| CLIENT_IP | varchar(46) | varchar(46) | - 当客户端通过 ODP 与 OBServer 连接时，表示转发请求的 ODP 的 IP - 当客户端直接与 OBServer 连接时，表示发送请求的客户端的 IP |
| CLIENT_PORT | bigint(20) | number(38) | 发送请求的 Client Port |
| TENANT_ID | bigint(20) | number(38) | 发送请求的租户 ID |
| TENANT_NAME | varchar(64) | varchar(46) | 发送请求的租户名称 |
| EFFECTIVE_TENANT_ID | bigint(20) | number(38) | 租户 ID |
| USER_ID | bigint(20) | number(38) | 发送请求的用户 ID |
| USER_NAME | varchar(64) | varchar(46) | 发送请求的用户名称 |
| USER_GROUP | bigint(20) | number(38) | 用户所属资源组的 ID |
| USER_CLIENT_IP | varchar(32) | varchar(32) | 发送请求的客户端的 IP |
| DB_ID | bigint(20) unsigned | number(38) | 数据库 ID |
| DB_NAME | varchar(128) | varchar(128) | 数据库名称 |
| SQL_ID | varchar(32) | varchar(32) | 这条 SQL 的 ID |
| QUERY_SQL | longtext | CLOB | 实际的 SQL 语句 |
| PLAN_ID | bigint(20) | number(38) | 执行计划 ID |
| AFFECTED_ROWS | bigint(20) | number(38) | 影响行数 |
| RETURN_ROWS | bigint(20) | number(38) | 返回行数 |
| PARTITION_CNT | bigint(20) | number(38) | 该请求涉及的分区数 |
| RET_CODE | bigint(20) | number(38) | 执行结果返回码 |
| QC_ID | bigint(20) unsigned | number(38) | 并行查询中的 qc_id |
| DFO_ID | bigint(20) | number(38) | 并行查询中的 dfo_id |
| SQC_ID | bigint(20) | number(38) | 并行查询中的 sqc_id |
| WORKER_ID | bigint(20) | number(38) | 线程 ID |
| EVENT | varchar(64) | varchar(64) | 最长等待事件名称 |
| P1TEXT | varchar(64) | varchar(64) | 等待事件参数 1 |
| P1 | bigint(20) unsigned | number(38) | 等待事件参数 1 的值 |
| P2TEXT | varchar(64) | varchar(64) | 等待事件参数 2 |
| P2 | bigint(20) unsigned | number(38) | 等待事件参数 2 的值 |
| P3TEXT | varchar(64) | varchar(64) | 等待事件参数 3 |
| P3 | bigint(20) unsigned | number(38) | 等待事件参数 3 的值 |
| LEVEL | bigint(20) | number(38) | 等待事件的 Level 级别 |
| WAIT_CLASS_ID | bigint(20) | number(38) | 等待事件所属的 Class ID |
| WAIT_CLASS# | bigint(20) | number(38) | 等待事件所属的 Class 的下标 |
| WAIT_CLASS | varchar(64) | varchar(64) | 等待事件所属的 Class 名称 |
| STATE | varchar(19) | varchar(19) | 等待事件的状态 |
| WAIT_TIME_MICRO | bigint(20) | number(38) | 该等待事件所等待的时间，单位：微秒 |
| TOTAL_WAIT_TIME_MICRO | bigint(20) | number(38) | 执行过程所有等待的总时间，单位：微秒 |
| TOTAL_WAITS | bigint(20) | number(38) | 执行过程总等待的次数 |
| RPC_COUNT | bigint(20) | number(38) | 发送 RPC 个数 |
| PLAN_TYPE | bigint(20) | number(38) | 执行计划类型：   - 1：本地执行计划（Local） - 2：远程执行计划（Remote） - 3：分布式执行计划（Distribute） |
| IS_INNER_SQL | tinyint(4) | number(38) | 是否为内部 SQL 请求 |
| IS_EXECUTOR_RPC | tinyint(4) | number(38) | 当前请求是否为 RPC 请求 |
| IS_HIT_PLAN | tinyint(4) | number(38) | 是否命中计划缓存 |
| REQUEST_TIME | bigint(20) | number(38) | 开始执行时间点，单位：微秒 |
| ELAPSED_TIME | bigint(20) | number(38) | 接收到请求到执行结束消耗总时间，单位：微秒 |
| NET_TIME | bigint(20) | number(38) | 发送 RPC 到接收到请求时间，单位：微秒 |
| NET_WAIT_TIME | bigint(20) | number(38) | 接收到请求到进入队列时间，单位：微秒 |
| QUEUE_TIME | bigint(20) | number(38) | 请求在队列等待时间，单位：微秒 |
| DECODE_TIME | bigint(20) | number(38) | 出队列后 Decode 时间，单位：微秒 |
| GET_PLAN_TIME | bigint(20) | number(38) | 开始执行到获得计划时间，单位：微秒 |
| EXECUTE_TIME | bigint(20) | number(38) | Plan 执行消耗时间，单位：微秒 |
| APPLICATION_WAIT_TIME | bigint(20) unsigned | number(38) | 所有 Application 类事件的总时间，单位：微秒 |
| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | number(38) | 所有 Concurrency 类事件的总时间，单位：微秒 |
| USER_IO_WAIT_TIME | bigint(20) unsigned | number(38) | 所有 `user_io` 类事件的总时间，单位：微秒 |
| SCHEDULE_TIME | bigint(20) unsigned | number(38) | 所有 Schedule 类事件的时间，单位：微秒 |
| ROW_CACHE_HIT | bigint(20) | number(38) | 行缓存命中次数 |
| BLOOM_FILTER_CACHE_HIT | bigint(20) | number(38) | Bloom Filter 缓存命中次数 |
| BLOCK_CACHE_HIT | bigint(20) | number(38) | 块缓存命中次数 |
| DISK_READS | bigint(20) | number(38) | 物理读次数 |
| RETRY_CNT | bigint(20) | number(38) | 重试次数 |
| TABLE_SCAN | tinyint(4) | number(38) | 判断该请求是否含全表扫描 |
| CONSISTENCY_LEVEL | bigint(20) | number(38) | 一致性级别 |
| MEMSTORE_READ_ROW_COUNT | bigint(20) | number(38) | MemStore 中读的行数 |
| SSSTORE_READ_ROW_COUNT | bigint(20) | number(38) | `SSSTORE` 中读的行数 |
| DATA_BLOCK_READ_CNT | bigint(20) | NO | 访问的数据微块数量 |
| DATA_BLOCK_CACHE_HIT | bigint(20) | NO | 命中数据微块 Cache 数量 |
| INDEX_BLOCK_READ_CNT | bigint(20) | NO | 访问的中间层微块数量 |
| INDEX_BLOCK_CACHE_HIT | bigint(20) | NO | 命中中间层微块 Cache 数量 |
| BLOCKSCAN_BLOCK_CNT | bigint(20) | NO | 单边扫描的数据微块数量 |
| BLOCKSCAN_ROW_CNT | bigint(20) | NO | 单边扫描的数据行数 |
| PUSHDOWN_STORAGE_FILTER_ROW_CNT | bigint(20) | NO | 下压存储 Filter 过滤后行数 |
| REQUEST_MEMORY_USED | bigint(20) | number(38) | 该请求消耗的内存 |
| EXPECTED_WORKER_COUNT | bigint(20) | number(38) | 请求期望的工作线程数 |
| USED_WORKER_COUNT | bigint(20) | number(38) | 请求实际使用的工作线程数 |
| SCHED_INFO | varchar(16384) | varchar(16384) | 请求的调度信息 |
| PS_CLIENT_STMT_ID | bigint(20) | NUMBER(38) | 该字段用于记录请求对应的客户端 Prepare ID：   - `-1`：表示当前的SQL语句没有使用预处理语句（PS）协议。即，该语句是直接执行的，没有经过预处理步骤。 - 非 `-1`：表示当前的SQL语句使用了预处理语句（PS）协议，并且这个值是预处理语句在客户端对该语句返回的唯一标志。该值用于在后续操作中引用之前预处理的SQL语句。 |
| PS_INNER_STMT_ID | bigint(20) | NUMBER(38) | 该字段用于记录请求对应的内部（数据库内部）Prepare ID：   - `-1`：表示当前的SQL语句没有使用预处理语句（PS）协议。即，该语句是直接执行的，没有经过预处理步骤。 - 非 `-1`：表示当前的SQL语句使用了预处理语句（PS）协议，并且这个值是预处理语句在客户端对该语句返回的唯一标志。该值用于在后续操作中引用之前预处理的SQL语句。 |
| TX_ID | bigint(20) | NO | 请求对应的事务的 Hash 值 |
| SNAPSHOT_VERSION | bigint(20)unsigned | NO | 当前语句的快照读版本号 |
| REQUEST_TYPE | bigint(20) | number(38) | 请求对应的类型：   - 0：表示非法 - 1：表示是一个内部请求 - 2：表示是一个本地请求，例如 Local 计划 - 3：表示远程请求 - 4：表示分布式请求 - 5：表示 SQL 的 Prepare 请求 - 6：表示 SQL 得到 Execute Stmt 请求 - 7: 表示 SQL 得到 Fetch 请求 - 8: 表示 SQL 得到 `send_piece` 请求 - 9: 表示 SQL 得到 `get_piece` 请求 - 10: 表示 SQL 得到 `send_long_data` 请求 - 11: 表示当前 SQL 是 PL 调用的内部 SQL |
| IS_BATCHED_MULTI_STMT | tinyint(4) | number(38) | 是否进行 Batch Multi Stmt 的优化 |
| OB_TRACE_INFO | VARCHAR2(4096) | VARCHAR2(4096) | 用户设置的 Trace 信息 |
| PLAN_HASH | bigint(20) unsigned | number(38) | 执行计划的 Hash 值 |
| PARAMS_VALUE | longtext | CLOB | 参数值 |
| RULE_NAME | varchar(256) | VARCHAR2(256) | 规则名称 |
| TX_INTERNAL_ROUTING | bigint(20) | NUMBER | 当前事务是否启用了事务路由 |
| TX_STATE_VERSION | bigint(20) unsigned | NUMBER(38) | 当前事务状态的版本号 |
| FLT_TRACE_ID | varchar(1024) | varchar(1024) | 记录全链路追踪的 Trace ID。如果为空，则说明没有被全链路追踪监控。该字段是 UUID，有别于 Trace，其表示形式示例为:000600d6-a5de-038c-6c80-df07e4e79149 |
| PL_TRACE_ID | varchar(128) | VARCHAR2(128) | 当前 SQL 语句外层 PL 的 Trace ID |
| PLSQL_EXEC_TIME | bigint(20) | NUMBER(38) | PL 执行的耗时 |
| TOTAL_MEMSTORE_READ_ROW_COUNT | bigint(20) | NUMBER(38) | 整个工作过程中从 MemStore 读出的总行数 |
| TOTAL_SSSTORE_READ_ROW_COUNT | bigint(20) | NUMBER(38) | 整个工作过程中从 SSSTORE 读出的总行数 |
| PROXY_USER | varchar(128) | VARCHAR2(128) | 代理用户登录场景，返回代理用户的名称 |
| FUSE_ROW_CACHE_HIT | bigint(20) | number(38) | 暂不支持该字段，字段默认为 `NULL` |
| LOCK_FOR_READ_TIME | bigint(20) | #### 注意    该视图在 OceanBase 数据库 Oracle 模式中暂无字段 `LOCK_FOR_READ_TIME`。 | 读取数据时等待锁的耗时，单位：微秒 |
| PARTITION_HIT | tinyint(4) | - | 是否命中本地 Partition |

## 示例

通过 `GV$OB_SQL_AUDIT` 视图可以方便的查询 SQL 执行的各种维度信息。如下示例为查询执行耗时超过 100ms 的 SQL 及其 `FLT_TRACE_ID`。

```shell
/* 开启全链路追踪 Session 级别 Trace，记录当前 Session 所有 SQL 的相关耗时等信息，采样频率为 50%。*/
obclient> CALL DBMS_MONITOR.OB_SESSION_TRACE_ENABLE(null,1,0.5,'ALL');
Query OK, 0 rows affected

obclient [oceanbase]> SELECT request_id,usec_to_time(request_time),ELAPSED_TIME,QUEUE_TIME,EXECUTE_TIME,FLT_TRACE_ID,QUERY_SQL FROM v$OB_SQL_AUDIT where ELAPSED_TIME > 100000 limit 10 ;
+------------+----------------------------+--------------+------------+--------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| request_id | usec_to_time(request_time) | ELAPSED_TIME | QUEUE_TIME | EXECUTE_TIME | FLT_TRACE_ID                         | QUERY_SQL                                                                                                                                                          |
+------------+----------------------------+--------------+------------+--------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|    5950244 | 2023-09-07 16:20:47.465958 |       127623 |         26 |       127206 | 000604c0-8981-9184-518a-e234439d873c | CREATE TABLE tbl2(c1 INT PRIMARY KEY,c2 INT)                                                                                                                       |
|    5951861 | 2023-09-07 16:21:07.887121 |       333776 |         38 |       310298 |                                      | ALTER TABLE tbl2 ADD CONSTRAINT fk1 FOREIGN KEY (c2) REFERENCES tbl3(c1) ON UPDATE SET NULL                                                                        |
|    5953177 | 2023-09-07 16:21:28.215377 |       174416 |         24 |       174186 | 000604c0-8bef-5afb-f9d3-2ee0dfab4c8f | SELECT request_id,usec_to_time(request_time),ELAPSED_TIME,QUEUE_TIME,EXECUTE_TIME,FLT_TRACE_ID,QUERY_SQL FROM v$OB_SQL_AUDIT where ELAPSED_TIME > 100000           |
|    5954522 | 2023-09-07 16:21:48.317360 |       128803 |         27 |       128542 | 000604c0-8d22-1659-7b0c-a0ac0645894d | SELECT request_id,usec_to_time(request_time),ELAPSED_TIME,QUEUE_TIME,EXECUTE_TIME,FLT_TRACE_ID,QUERY_SQL FROM v$OB_SQL_AUDIT where ELAPSED_TIME > 100000  limit 10 |
+------------+----------------------------+--------------+------------+--------------+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4 rows in set

```

## 相关文档

[全链路追踪](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001050205)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
