(g)v$sql_audit 介绍 
======================================

(g)v$sql_audit 是全局 SQL 审计表，可以用来查看每次请求客户端来源、执行服务器信息、执行状态信息、等待事件以及执行各阶段耗时等。

sql_audit 相关设置 
-----------------------

* 设置 sql_audit 使用开关。

  ```javascript
  obclient>ALTER SYSTEM SET enable_sql_audit = true；
  /*开启 sql_audit*/
  
  obclient>ALTER SYSTEM SET enable_sql_audit = false;
  /*关闭 sql_audit*/
  ```

  




<!-- -->

* 设置 sql_audit 内存上限。默认内存上限为 3 G，可设置范围为 \[64M,+∞\]。

  ```javascript
  obclient>ALTER SYSTEM SET sql_audit_memory_limit = '3G';
  ```

  




sql_audit 淘汰机制 
-----------------------

* sql_audit 每隔 1s 会检测后台任务并根据以下标准决定是否淘汰：

  * sql_audit 内存最大可使用上限为 `avail_mem_limit = min (OBServer 可使用内存 *10%`，`sql_audit_memory_limit)`。

    
  

  
  <!-- -->

  
  <!-- -->

  * 当 sql_audidt 记录数超过 900 万条时，触发淘汰。

    
  

  




<!-- -->

* sql_audit 根据以下标准决定是否停止淘汰：

  * 如果是达到内存上限触发淘汰则：

    
  

  
  <!-- -->

  
  <!-- -->

  * 如果是达到记录数上限触发的淘汰则淘汰到 800 万行记录时停止淘汰。

    
  

  

  




sql_audit 字段解释 
-----------------------



|        **字段名称**         |       **类型**        |              **描述**              |
|-------------------------|---------------------|----------------------------------|
| SVR_IP                  | varchar(32)         | IP 地址                            |
| SVR_PORT                | bigint(20)          | 端口号                              |
| REQUEST_ID              | bigint(20)          | 请求的 ID 号                         |
| TRACE_ID                | varchar(128)        | 这条语句的 trace ID                   |
| CLIENT_IP               | varchar(32)         | 发送请求的 client IP                  |
| CLIENT_PORT             | bigint(20)          | 发送请求的 client port                |
| TENANT_ID               | bigint(20)          | 发送请求的租户 ID                       |
| TENANT_NAME             | varchar(64)         | 发送请求的租户名称                        |
| USER_ID                 | bigint(20)          | 发送请求的用户 ID                       |
| USER_NAME               | varchar(64)         | 发送请求的用户名称                        |
| SQL_ID                  | varchar(32)         | 这条 SQL 的 ID                      |
| QUERY_SQL               | varchar(32768)      | 实际的 SQL 语句                       |
| PLAN_ID                 | bigint(20)          | 执行计划 ID                          |
| AFFECTED_ROWS           | bigint(20)          | 影响行数                             |
| RETURN_ROWS             | bigint(20)          | 返回行数                             |
| PARTITION_CNT           | bigint(20)          | 该请求涉及的分区数                        |
| RET_CODE                | bigint(20)          | 执行结果返回码                          |
| 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)          | 等待事件的 level 级别                   |
| 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)          | 执行计划类型（local/ remote/distribute） |
| IS_INNER_SQL            | tinyint(4)          | 是否为内部 SQL 请求                     |
| IS_EXECUTOR_RPC         | tinyint(4)          | 当前请求是否为 RPC 请求                   |
| IS_HIT_PLAN             | tinyint(4)          | 是否命中计划缓存                         |
| 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)          | 开始执行到获得计划时间                      |
| EXECUTE_TIME            | bigint(20)          | plan 执行消耗时间                      |
| 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)          | 块缓存命中次数                          |
| BLOCK_INDEX_CACHE_HIT   | bigint(20)          | 块索引缓存命中次数                        |
| DISK_READS              | bigint(20)          | 物理读次数                            |
| EXECUTION_ID            | bigint(20)          | 执行 ID                            |
| SESSION_ID              | bigint(20)          | SESSION 的 ID                     |
| 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 中读的行数                    |
| REQUEST_MEMORY_USED     | bigint(20)          | 该请求消耗的内存                         |


