---
title: "SQL 审计分析与规则审核（analyze sql） - 敏捷诊断工具 V4.3.0 | OceanBase 文档中心"
description: SQL 审计分析与规则审核（analyze sql） 本文适用于独立部署 obdiag 的场景。 obdiag analyze sql 从集群 SQL 审计视图 （如 OceanBase 数据库 V4.x 的 GV$OB_SQL_AUDIT ）中按时间范围拉取 SQL，对每条语句执行内置 SQL Review 规则分…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*5ZXST55u540AAAAAAAAAAAAADiGDAQ/original) 敏捷诊断工具V 4.3.0

# SQL 审计分析与规则审核（analyze sql）

更新时间：2026-07-23 16:36:01

[编辑](https://github.com/oceanbase/odt-doc/edit/V4.3.0/zh-CN/450.analyze/509.analyze_sql.md)  

本文适用于独立部署 obdiag 的场景。`obdiag analyze sql` 从集群 **SQL 审计视图**（如 OceanBase 数据库 V4.x 的 `GV$OB_SQL_AUDIT`）中按时间范围拉取 SQL，对每条语句执行内置 SQL Review 规则分析，并生成 HTML 或 JSON 报告，便于批量发现高风险写法、全表扫描、大 IN 列表等问题。

需要确保已在 `config.yml` 中配置集群 sys 租户连接信息，用于查询审计与租户元数据。若要以业务租户身份访问审计视图，可使用 `--user` 等选项指定租户信息。`config.yml` 配置说明参见 [obdiag 配置](https://www.oceanbase.com/docs/common-obdiag-cn-1000000005726796)。

#### 说明

- 依赖集群已开启并可查询 SQL 审计相关视图；不同 OceanBase 数据库版本视图名可能不同，obdiag 会按版本选择合适查询。
 - 未指定 `--tenant_name` 时，会从系统租户可访问的租户列表中依次拉取各租户的审计数据（行为以当前版本实现为准）。指定 `--tenant_name` 则只分析对应租户。

## 使用说明

```shell
obdiag analyze sql [options]

```

选项说明如下：

| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
| --- | --- | --- | --- | --- |
| --tenant_name | 否 | string | 默认为空 | 只分析指定租户的 SQL 审计；不指定则按实现遍历可访问租户。 |
| --user | 否 | string | 默认为空 | 业务租户用户，用于连接执行 SQL 审计查询；格式可为 `user@tenant`、`user@tenant#cluster` 或 `cluster:tenant:user`。不指定则使用 `config.yml` 中配置的 sys 租户信息连接。 |
| --password | 否 | string | 空 | 与 `--user` 配合时的密码。 |
| --host | 否 | string | 默认为空 | 与 `--user` 同时使用时，指定连接 SQL 审计的地址；默认取 `config.yml` 中的 `obcluster.db_host`。 |
| --port | 否 | string | 默认为空 | 与 `--user` 同时使用时，指定端口；默认取 `config.yml` 中的 `obcluster.db_port`。 |
| --from | 否 | string | 默认为空 | 时间范围起点，格式：`yyyy-mm-dd hh:mm:ss`。与 `--to` 成对使用。 |
| --to | 否 | string | 默认为空 | 时间范围终点，格式：`yyyy-mm-dd hh:mm:ss`。 |
| --since | 否 | string | 30m | 相对当前时间的时间范围，格式同其它 analyze 命令，如 `1h`、`30m`。未与 `--from`/`--to` 组合时参与计算默认窗口。 |
| --elapsed_time | 否 | string | 100000 | 仅保留执行耗时（微秒）不低于该阈值的 SQL，用于聚焦较慢语句。 |
| --limit | 否 | string | 2000 | 每个租户从审计中最多拉取的行数上限。 |
| --level | 否 | string | notice | 规则告警级别过滤，可选值为 `critical`、`warn`、`notice`、`ok`。 |
| --output | 否 | string | html | 生成的报告格式，可选值为 `html` 或 `json`。 |
| --store_dir | 否 | string | 当前目录 | 报告生成后所在目录；每次运行会在其下创建 `obdiag_analyze_sql_<from>_<to>_<时间戳>/`，内含 `result.html` 或 `result.json`。 |
| -c | 否 | string | `~/.obdiag/config.yml` | 配置文件路径。 |
| --inner_config | 否 | string | 默认为空 | obdiag 自用配置，`--inner_config key=value`。 |
| --config | 否 | string | 默认为空 | 集群配置，格式为 `--config key=value`，可多次指定。支持指定的配置可参见 [obdiag 配置](https://www.oceanbase.com/docs/common-obdiag-cn-1000000005726796)。 |
| --config_password | 否 | string | 默认为空 | 使用加密配置文件时的解密密码。具体介绍可参见 [配置文件加密](https://www.oceanbase.com/docs/common-obdiag-cn-1000000005726841)。 |
| -h/--help | 否 | - | - | 查看帮助。 |
| -v/--verbose | 否 | - | - | 详细日志。 |

## 规则说明

内置审核规则包括但不限于：全表扫描风险、多表关联、`SELECT *`、大 IN 列表、`IS NULL` 使用注意、`UPDATE`/`DELETE` 无 WHERE 或恒真条件、算术运算在谓词中的风险等。具体规则集以 obdiag 源码中 `sql/rules/review` 为准，随版本迭代可能增减。

## 使用示例

### 使用配置文件（默认最近 30 分钟）

```bash
obdiag analyze sql

```

### 指定时间范围与租户

```bash
obdiag analyze sql \
  --from "2026-04-01 10:00:00" \
  --to "2026-04-01 12:00:00" \
  --tenant_name mytenant \
  --output html

```

### 业务租户连接审计、仅看近 1 小时且输出 JSON

```bash
obdiag analyze sql \
  --since 1h \
  --user appuser@mytenant \
  --password '***' \
  --output json \
  --store_dir ./reports

```

### 无配置文件（开箱即用）

```bash
obdiag analyze sql \
  --since 2h \
  --config db_host=xx.xx.xx.xx \
  --config db_port=2881 \
  --config tenant_sys.user=root@sys \
  --config tenant_sys.password=***

```

## 与 sql_review 的区别

| 命令 | 数据来源 | 典型用途 |
| --- | --- | --- |
| `obdiag analyze sql` | 集群在线 SQL 审计 | 按时间段批量审核线上真实 SQL。 |
| `obdiag analyze sql_review` | 本地 SQL 文件/目录 | 离线审核脚本、迁移 SQL、CI 中的静态检查。 |
| `obdiag tool sql_syntax` | 单条 SQL + EXPLAIN | 快速校验能否解析/出计划（不执行原语句），具体可参见 [SQL 语法校验工具](https://www.oceanbase.com/docs/common-obdiag-cn-1000000005726839)。 |

`obdiag analyze sql_review` 的具体介绍可参见 [SQL 文件审核（analyze sql_review）](https://www.oceanbase.com/docs/common-obdiag-cn-1000000005726845)。

 上一篇 下一篇 ![有帮助](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) 咨询热线
