diff --git a/.gitignore b/.gitignore index 6fb302ee6..1e3795438 100644 --- a/.gitignore +++ b/.gitignore @@ -87,7 +87,7 @@ test/var *.ccls-cache/ ###### Docs website files -site +docs/site ###### Intellij files .idea diff --git a/README.md b/README.md index 906fe01c3..146ee52f2 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ OceanBase Database supports the entire core business of Alipay and the core syst ## Quick start -Refer to the [Get Started guide](docs/en/quick-start-en.md) to try out OceanBase Database. +Refer to the [Get Started guide](docs/docs/docs-en/quick-start-en.md) to try out OceanBase Database. ## Documentation diff --git a/mkdocs.md b/docs/README.md similarity index 87% rename from mkdocs.md rename to docs/README.md index a3a149ab9..c0573b85c 100644 --- a/mkdocs.md +++ b/docs/README.md @@ -6,9 +6,9 @@ OceanBase documentation is built with [MkDocs](https://www.mkdocs.org/). You can Before installing dependencies, please make sure you have installed a recent version of Python 3 and pip. -Then you can run the following command in your terminal: +Then you can run the following command in your terminal at current directory: - $ pip install -r docs/requirements.txt + $ pip install -r requirements.txt ## Build the documentation @@ -42,4 +42,4 @@ For configuration details, see [MkDocs User Guide](https://www.mkdocs.org/user-g ## Contribute -See [How to contribute](CONTRIBUTING.md). \ No newline at end of file +See [How to contribute](../CONTRIBUTING.md). diff --git a/docs/docs/docs-cn/1.about-oceanbase-database/1.what-is-oceanbase.md b/docs/docs/docs-cn/1.about-oceanbase-database/1.what-is-oceanbase.md new file mode 100644 index 000000000..9d2bb01ad --- /dev/null +++ b/docs/docs/docs-cn/1.about-oceanbase-database/1.what-is-oceanbase.md @@ -0,0 +1,63 @@ +什么是 OceanBase 数据库 +====================================== + + + +OceanBase 数据库是一个金融级分布式关系数据库,提供社区版和企业版: + +* OceanBase 数据库社区版包含 OceanBase 的所有核心功能,源代码完全公开,且使用免费。 + + + +* OceanBase 数据库企业版在 OceanBase 社区版的基础上,提供更多高级功能,如商业特性兼容、图形化管理工具、操作审计、安全加密、高可用扩展等。如果您想了解 OceanBase 企业版的相关功能,请参考 [OceanBase 企业版文档](https://www.oceanbase.com/docs)。 + + + + + + +本手册仅适用于 OceanBase 数据库社区版。 + +特性 +----------------------- + +OceanBase 数据库具有如下特性: + +* 高可用 + + OceanBase 数据库将数据以多副本的方式存储在集群的各个节点,可以轻松实现高可用,保证 RPO=0,甚至异地多活。即使单个节点出现故障也不影响业务。多副本能够满足从节点、机架、机房到城市级别的高可用、容灾要求,并且克服传统数据库的主备模式在主节点出现异常时 RPO\>0 的问题。 + + +* 可扩展 + + OceanBase 数据库具有极强的可扩展性,可以在线进行平滑扩容或缩容,在扩容后自动实现系统负载均衡。并且扩容或缩容过程对应用透明。 + + +* 低成本 + + OceanBase 数据库可以在通用服务器上运行,不依赖于特定的高端硬件,能够有效降低用户的硬件成本。OceanBase 数据库使用基于 LSM-Tree 的存储引擎,能够有效地对数据进行压缩,并且不影响性能,可以降低用户的存储成本。 + + +* HTAP + + OceanBase 数据库的分布式并行计算引擎对 OLTP 应用和 OLAP 应用都进行了很好的优化,并且支持跨数据库节点的 DQL 和 DML 并发执行,真正实现了一套计算引擎同时支持混合负载。 + + +* 兼容性 + + OceanBase 数据库高度兼容 MySQL 数据库生态。OceanBase 数据库支持 MySQL 5.6 版本全部语法,可以与 MySQL 业务无缝切换。 + + +* 多租户 + + OceanBase 数据库通过租户实现资源隔离,每个数据库服务的实例不感知其他实例的存在,并通过权限控制确保不同租户数据的安全性。多租户与 OceanBase 数据库强大的可扩展性相结合,能够提供安全、灵活的 DBaaS 服务。 + + + + + +许可证 +------------------------ + +OceanBase 数据库社区版完全开源,使用 [MulanPubL - 2.0](https://license.coscl.org.cn/MulanPubL-2.0/index.html) 许可证,您可以免费复制和使用源代码。当您修改或分发源代码时,请遵守木兰协议。 + diff --git a/docs/docs/docs-cn/1.about-oceanbase-database/2.noun-interpretation.md b/docs/docs/docs-cn/1.about-oceanbase-database/2.noun-interpretation.md new file mode 100644 index 000000000..b14c86f3d --- /dev/null +++ b/docs/docs/docs-cn/1.about-oceanbase-database/2.noun-interpretation.md @@ -0,0 +1,22 @@ +名词解释 +========================= + +本文介绍您在使用 OceanBase 数据库时可能需要了解的名词解释。 + +* OceanBase 数据库 + + 蚂蚁集团完全自主研发的金融级分布式关系数据库。OceanBase 数据库具有高可用、可拓展、高兼容、低成本、强一致及高性能等特点。详细信息参考 [什么是 OceanBase 数据库](/zh-CN/1.about-oceanbase-database/1.what-is-oceanbase.md)。 + + +* OceanBase Database Proxy + + OceanBase 数据库代理,简称为 ODP。ODP 是 OceanBase 数据库专用的连接代理软件。ODP 的核心功能包括:保证最佳路由,避免分布式事务;保护 OceanBase 数据库的高可用能力,单台服务器故障不影响应用。详细信息,参考 ODP 文档。 + + +* OceanBase Deployer + + OceanBase 开源软件的安装部署工具,简称为 OBD。OBD 同时也是包管理器,可以用来管理 OceanBase 所有的开源软件 **。** + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/1.basic-elements/1.data-type.md b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/1.data-type.md new file mode 100644 index 000000000..55f013a39 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/1.data-type.md @@ -0,0 +1,187 @@ +数据类型 +========================= + + + +OceanBase支持如下数据类型: + +* 数值类型 + +* 日期时间类型 + +* 字符类型 + +* 大对象类型 + + + + + + + + +数值类型 +------------- + +数值类型可以划分为三类: + +* 整数类型:`BOOL`/`BOOLEAN`、`TINYINT`、`SMALLINT`、`MEDIUMINT`、`INT`/`INTEGER`、`BIGINT`。 + + + + + + +* 定点类型:`DECIMAL`/`NUMERIC`。 + + + + + + +* 浮点类型:`FLOAT`、`DOUBLE`。 + +* Bit-Value类型:`BIT` + + + + +所有数据类型都可以同时使用`UNSIGNED`关键字声明为无符号类型,这会导致值域发生变化。 + +数值类型在定义时可以指定precision和scale,不同类型中precision和scale的含义可能有所不同,详情请见各类型详细说明。 + +整数类型 +------------- + +整数类型为定长、精确数值类型,值域取决于类型长度,以及是否为无符号,precision只表示最小显示宽度,详见"ZEROFILL属性"节。以下为相关信息: + + +| 类型 | 长度(字节) | 值域(有符号) | 值域(无符号) | +|---------------------------------------------|--------|---------------------------|--------------------| +| `BOOL`/`BOOLEAN`/ `TINYINT` | 1 | \[-2 \^ 7 , 2 \^ 7 - 1\] | \[0, 2 \^ 8 - 1\] | +| `SMALLINT` | 2 | \[-2 \^ 15, 2 \^ 15 - 1\] | \[0, 2 \^ 16 - 1\] | +| `MEDIUMINT` | 3 | \[-2 \^ 23, 2 \^ 23 - 1\] | \[0, 2 \^ 24 - 1\] | +| `INT`/`INTEGER` | 4 | \[-2 \^ 31, 2 \^ 31 - 1\] | \[0, 2 \^ 32 - 1\] | +| `BIGINT` | 8 | \[-2 \^ 63, 2 \^ 63 - 1\] | \[0, 2 \^ 64 - 1\] | + + + + + +`BOOL`等价于`BOOLEAN`,这两个类型又等价于`TINYINT(1)`。 + +`INT`等价于`INTEGER`。 + +定点类型 +------------- + +定点类型为变长、精确数值类型,值域和精度取决于precision和scale,以及是否为无符号。precision和scale分别表示十进制下的总最大有效位数、小数部分最大有效位数,整数部分最大有效位数等于precision - scale,其中precision和scale的最大值分别为65、30,默认值分别为10、0。例如: + +* `DECIMAL(5, 2)`,整数部分和小数部分最大有效位数分别为3、2,所以值域为\[-999.99, 999.99\]。 + +* 如果同时定义为`UNSIGNED`,则值域为\[0, 999.99\]。 + + + + +`DECIMAL`等价于`NUMERIC`。 + +#### 浮点类型 + +浮点类型为定长、非精确数值类型,值域和精度取决于类型长度、precision和scale,以及是否为无符号。precision和scale分别表示十进制下的总最大有效位数、小数部分最大有效位数,整数部分最大有效位数等于precision - scale,其中precision和scale的最大值分别为53、30。 + +浮点类型的精度只是IEEE标准中规定的理论值,实际情况可能因硬件或操作系统限制略有不同。 + +以下为不指定precision和scale时的默认信息: + + +| 类型 | 长度(字节) | 值域(有符号) | 值域(无符号) | 精度 | +|----------|--------|---------------------------|------------------|-----| +| `FLOAT` | 4 | \[-2 \^ 128, 2 \^ 128\] | \[0, 2 \^ 128\] | 7位 | +| `DOUBLE` | 8 | \[-2 \^ 1024, 2 \^ 1024\] | \[0, 2 \^ 1024\] | 15位 | + + + + + +如果指定precision和scale,则值域确定方法与定点类型相同。 + +#### ZEROFILL属性 + +数值类型在定义时可以通过ZEROFILL关键字指定最小显示宽度,同时将该类型隐式定义为UNSIGNED。在数据实际显示宽度不足最小显示宽度时,通过先在小数部分补零到scale上限、再在整数部分补零到precision上限的方式,将显示宽度补足到最小显示宽度。例如: + +* `INT(5) ZEROFILL`:当数据值为`123`时,将显示为`00123`。 + +* `DECIMAL(10, 5) ZEROFILL`:当数据值为`123.456`时,将显示为`00123.45600`。 + + + + + + + + +#### BIT-Value类型 + +BIT数据类型用于存储bit values。一个BIT(M)能够存储M-bit的值,M的范围是1\~64。 + +bit value通过b'value'的形式指定, **value** 是用0和1来指定的,例如,b'111'表示7,b'10000000'表示128。 + +当向BIT(M)列插入值时,如果插入值的长度小于 **M** ,则会在左侧填充0。例如:将b'101'插入到BIT(6)时,相当于插入了b'000101'。 + +日期时间类型 +--------------- + +以下为相关信息: + + +| 类型 | 格式 | 下界 | 上界 | 含义 | +|-------------|----------------------------------|----------------------------|----------------------------|-------------| +| `DATETIME` | YYYY-MM-DD HH:MM:SS\[.fraction\] | 0000-01-01 00:00:00.000000 | 9999-12-31 23:59:59.999999 | 日期时间(不考虑时区) | +| `TIMESTAMP` | YYYY-MM-DD HH:MM:SS\[.fraction\] | 0000-01-01 00:00:00.000000 | 9999-12-31 23:59:59.999999 | 日期时间(考虑时区) | +| `DATE` | YYYY-MM-DD | 0000-01-01 | 9999-12-31 | 日期 | +| `TIME` | HH:MM:SS\[.fraction\] | -838:59:59.000000 | 838:59:59.000000 | 时间 | +| `YEAR` | YYYY | 1901 | 2155 | 年份 | + + + + + +`DATETIME`、`TIMESTAMP`、`TIME`的值域和精度取决于scale。该属性表示小数部分最大有效位数,最大值为6,默认值为0。 + +字符类型 +------------- + +以下为普通字符类型相关信息: + + +| 类型 | 长度 | 定义长度上限(字符) | 字符集 | +|-------------|----|-----------------------------|-----------| +| `VARCHAR` | 变长 | 262144 / 256K | `UTF8MB4` | +| `VARBINARY` | 变长 | 1048576 / 1M | `BINARY` | +| `CHAR` | 定长 | 256 | `UTF8MB4` | +| `BINARY` | 定长 | 256 | `BINARY` | +| `enum` | 变长 | 最多定义65535个元素,每个元素长度最多255个字符 | `UTF8MB4` | +| `set` | 变长 | 最多定义64个元素,每个元素长度最多255个字符 | `UTF8MB4` | + + + +大对象类型 +-------------- + +以下为大对象类型相关信息: + + +| 类型 | 长度 | 存储长度上限(字节) | 字符集 | +|--------------|----|----------------|-----------| +| `TINYTEXT` | 变长 | 256 | `UTF8MB4` | +| `TINYBLOB` | 变长 | 256 | `BINARY` | +| `TEXT` | 变长 | 65536 / 64K | `UTF8MB4` | +| `BLOB` | 变长 | 65536 / 64K | `BINARY` | +| `MEDIUMTEXT` | 变长 | 16777216 / 16M | `UTF8MB4` | +| `MEDIUMBLOB` | 变长 | 16777216 / 16M | `BINARY` | +| `LONGTEXT` | 变长 | 50331648 / 48M | `UTF8MB4` | +| `LONGBLOB` | 变长 | 50331648 / 48M | `BINARY` | + + + diff --git a/docs/docs/docs-cn/10.sql-reference/1.basic-elements/2.expression.md b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/2.expression.md new file mode 100644 index 000000000..e2b0180af --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/2.expression.md @@ -0,0 +1,80 @@ +表达式 +======================== + + + +表达式是广义概念,通常有若干个输入参数,并且返回一个输出结果。其中输入参数可能来自于常量或单行数据,也可能来自于多行数据。表达式可以组合,一个表达式的输入可以为另一个表达式的输出。 + +根据表达式的来源和形式,可分为如下几类: + +* 列引用 + + + + + + + + +* 常量 + + + + + + + + +* 运算符 + + + + + + + + +* 函数 + + + + + + +例如: + +```javascript +SELECT ABS(a + 1) + FROM t1 + WHERE a > 0; +``` + + + + + +* a为列引用。 + + + + + + +* 0、1为常量。 + + + + + + +* `>`、`+`为运算符,以0、1、a表达式为输入。 + + + + + + +* `ABS`为函数,以`+`表达式为输入。 + + + diff --git a/docs/docs/docs-cn/10.sql-reference/1.basic-elements/3.type-conversion.md b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/3.type-conversion.md new file mode 100644 index 000000000..c8a326a5d --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/3.type-conversion.md @@ -0,0 +1,10 @@ +类型转换 +========================= + + + +OceanBase支持显式类型转换和隐式类型转换。 + +显示类型转换通过`CAST`函数实现。 + +隐式类型转换发生在这样的场景中:一个操作需要一个指定类型的参数,但语句的实际参数值并不是指定类型,这时OceanBase会将实际参数值转为指定类型后,再进行后续操作。 diff --git a/docs/docs/docs-cn/10.sql-reference/1.basic-elements/4.character-set.md b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/4.character-set.md new file mode 100644 index 000000000..a5e91169a --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/4.character-set.md @@ -0,0 +1,20 @@ +字符集 +======================== + + + +目前只支持如下字符集: + +* `UTF8MB4`:变长编码,字符最大长度4字节。 + + + + + + +* `BINARY`:定长编码,字符固定长度1字节。 + + + + +`UT8`/`UTF8MB3`是`UTF8MB4`的子集,变长编码,字符最大长度3字节。为支持无缝迁移,OceanBase在语法上将`UTF8`视为`UTF8MB4`的同义词。 diff --git a/docs/docs/docs-cn/10.sql-reference/1.basic-elements/5.collation.md b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/5.collation.md new file mode 100644 index 000000000..bc7af6991 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/5.collation.md @@ -0,0 +1,25 @@ +排序规则 +========================= + + + +目前只支持如下排序规则: + +* `UTF8MB4`的`UTF8MB4_GENERAL_CI`。 + + + + + + +* `UTF8MB4`的`UTF8MB4_BIN`。 + + + + + + +* `BINARY`的`BINARY`。 + + + diff --git a/docs/docs/docs-cn/10.sql-reference/1.basic-elements/6.data-comparison-rules.md b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/6.data-comparison-rules.md new file mode 100644 index 000000000..a7808b255 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/6.data-comparison-rules.md @@ -0,0 +1,29 @@ +数据比较规则 +=========================== + + + +OceanBase允许任意两或多个任意类型的数据进行比较,比较结果可能为: + +* 非0 / TRUE + + + + + + +* 0 / FALSE。 + + + + + + +* NULL。 + + + + +如果参与比较的数据类型不一致,OceanBase会根据相关规则确定一个用于比较的数据类型,逻辑上所有参与比较的数据都需要先转换为该数据类型才能参与比较操作。 + +如果比较类型为文本类型,则还需要确定一个用于比较的排序规则。 diff --git a/docs/docs/docs-cn/10.sql-reference/1.basic-elements/7.literal.md b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/7.literal.md new file mode 100644 index 000000000..4236fb9ab --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/7.literal.md @@ -0,0 +1,64 @@ +字面量 +======================== + + + +文本 +----------- + +文本是使用单引号`'`或双引号`"`引起来的字符序列,如果打开`ANSI_QUOTES`模式,那只有单引号`'`可以用于引用字符串。 + +数值 +----------- + +十进制数值可以分为精确数值(整数和定点数值)和浮点数值。数值可以使用小数点`.`作为十进制分隔符,也可以在前面加一个负号`-`来表示负值。 + +十六进制数值只支持整数数值,以前缀`0X`开始,允许出现字母`A`到`F`,所有字母不区分大小写。 + +日期时间 +------------- + +日期时间字面量有文本或数值两种形式。 + +* 文本格式可使用全量分隔符:`'2015-07-21 12:34:56.789'`,或完全不使用分隔符:`'20150721'`。 + + + + + + +* 数值格式只允许使用小数点`.`作为秒和微秒部分的分隔符:`20150721123456.789`。 + +* 在需要使用分隔符时,除了秒和微秒部分之间只能使用小数点`.`外,其它分隔符建议只使用`-`、`/`、`:`等常用分隔符。 + + + + + + + + +转义字符 +------------- + +转义字符是在字符串中,某些序列前添加反斜线`\`,用于表示特殊含义。转义字符对大小写敏感。例如`\b`表示退格,但`\B`表示`B`。 + +以下为所有转义符列表: + + +| 转义符 | 含义 | +|------|---------------------| +| `\b` | 退格符。 | +| `\f` | 换页符。 | +| `\n` | 换行符。 | +| `\r` | 回车符。 | +| `\t` | tab字符。 | +| `\\` | 反斜线字符。 | +| `\'` | 单引号。 | +| `\"` | 双引号。 | +| `\_` | 下划线。 | +| `\%` | 百分号。 | +| `\0` | NULL。 | +| `\Z` | ASCII 26,控制符Ctrl+Z。 | + + diff --git a/docs/docs/docs-cn/10.sql-reference/1.basic-elements/8.annotation.md b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/8.annotation.md new file mode 100644 index 000000000..7f595a222 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/1.basic-elements/8.annotation.md @@ -0,0 +1,42 @@ +注释 +======================= + + + +SQL 语句 +--------------- + +在普通 SQL 语句中,OceanBase 数据库支持如下 3 种注释方法: + +* 从 `#` 到行尾 + + + + + + + + +* 从 `--` 到行尾 + + + +* 从 `/*` 到 `*/` + + + + + + + + +数据库对象 +-------------- + +在 DDL 语句中通过 `COMMENT` 子句可以为数据库对象指定注释。例如: + +```unknow +create table t(pk INT PRIMARY KEY COMMENT '主键'); +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/2.operator/1.arithmetic-operators.md b/docs/docs/docs-cn/10.sql-reference/2.operator/1.arithmetic-operators.md new file mode 100644 index 000000000..d5ff70987 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/2.operator/1.arithmetic-operators.md @@ -0,0 +1,54 @@ +算术运算符 +========================== + + + +以下为所有算术运算符列表: + + +| 运算符 | 操作数 | 含义 | +|-----------|-------|----------------| +| `+` | 一元/二元 | 一元表示正数,二元表示加法。 | +| `-` | 一元/二元 | 一元表示负数,二元表示减法。 | +| `*` | 二元 | 乘法。 | +| `/` | 二元 | 普通除法。 | +| `DIV` | 二元 | 整数除法,返回商数。 | +| `MOD`或`%` | 二元 | 整数除法,返回余数。 | + + + +整数除法遵循如下原则: + +* 商数不论正负,统一向0取整。 + + + + + + +* 余数正负与被除数相同。 + + + + +例如: + +```javascript +OceanBase (root@oceanbase)> SELECT (-7) DIV (3.6), (-7) MOD (3.6); ++----------------+----------------+ +| (-7) DIV (3.6) | (-7) MOD (3.6) | ++----------------+----------------+ +| -1 | -3.4 | ++----------------+----------------+ +1 row in set (0.01 sec) + +OceanBase (root@oceanbase)> SELECT (-7) DIV (-3.4), (-7) % (-3.4); ++-----------------+---------------+ +| (-7) DIV (-3.4) | (-7) % (-3.4) | ++-----------------+---------------+ +| 2 | -0.2 | ++-----------------+---------------+ +1 row in set (0.02 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/2.operator/2.bitwise-operators.md b/docs/docs/docs-cn/10.sql-reference/2.operator/2.bitwise-operators.md new file mode 100644 index 000000000..39956131e --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/2.operator/2.bitwise-operators.md @@ -0,0 +1,20 @@ +位运算符 +========================= + + + +位运算使用`BIGINT UNSIGNED`计算,不需考虑符号位。 + +以下为所有位运算符列表: + + +| 运算符 | 操作数 | 含义 | +|------------|-----|-------| +| `&` | 二元 | 按位与。 | +| `|` | 二元 | 按位或。 | +| `~` | 一元 | 按位取反。 | +| `^` | 二元 | 按位异或。 | +| `<<` | 二元 | 逻辑左移。 | +| `>>` | 二元 | 逻辑右移。 | + + diff --git a/docs/docs/docs-cn/10.sql-reference/2.operator/3.comparison-operators.md b/docs/docs/docs-cn/10.sql-reference/2.operator/3.comparison-operators.md new file mode 100644 index 000000000..3f68d05ef --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/2.operator/3.comparison-operators.md @@ -0,0 +1,78 @@ +比较运算符 +========================== + + + +以下为所有比较运算符列表: + + +| 运算符 | 操作数 | 含义 | NULL参与运算 | +|---------------------|-----|------------|----------------| +| `=` | 二元 | 等于。 | 结果为NULL。 | +| `<>`/`!=` | 二元 | 不等于。 | 结果为NULL。 | +| `>` | 二元 | 大于。 | 结果为NULL。 | +| `>=` | 二元 | 大于等于。 | 结果为NULL。 | +| `<` | 二元 | 小于。 | 结果为NULL。 | +| `<=` | 二元 | 小于等于。 | 结果为NULL。 | +| `[NOT] IN` | 二元 | 是否在集合中。 | 详见说明。 | +| `[NOT] BETWEEN AND` | 三元 | 是否在区间内。 | 详见说明。 | +| `IS [NOT] TRUE` | 一元 | 是否等于TRUE。 | 结果为TRUE或FALSE。 | +| `IS [NOT] FALSE` | 一元 | 是否等于FALSE。 | 结果为TRUE或FALSE。 | +| `IS [NOT] NULL` | 一元 | 是否等于NULL。 | 结果为TRUE或FALSE。 | +| `<=>` | 二元 | 安全等于。 | 结果为TRUE或FALSE。 | + + + + + +以下为部分运算符对NULL的特殊处理: + +* `value [NOT] IN ()`: + + + + + + + + + + + + + + +* `value [NOT] BETWEEN lower AND upper`: + + + + + + + + + + + + +例如: + +```javascript +OceanBase (root@oceanbase)> SELECT 1 IN (1, NULL), 1 IN (2, NULL); ++----------------+----------------+ +| 1 IN (1, NULL) | 1 IN (2, NULL) | ++----------------+----------------+ +| 1 | NULL | ++----------------+----------------+ +1 row in set (0.01 sec) + +OceanBase (root@oceanbase)> SELECT 1 BETWEEN 0 AND NULL, 1 BETWEEN 2 AND NULL; ++----------------------+----------------------+ +| 1 BETWEEN 0 AND NULL | 1 BETWEEN 2 AND NULL | ++----------------------+----------------------+ +| NULL | 0 | ++----------------------+----------------------+ +1 row in set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/2.operator/4.logical-operators.md b/docs/docs/docs-cn/10.sql-reference/2.operator/4.logical-operators.md new file mode 100644 index 000000000..590ac27de --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/2.operator/4.logical-operators.md @@ -0,0 +1,15 @@ +逻辑运算符 +========================== + + + +以下为所有逻辑运算符列表: + + +| 运算符 | 操作数 | 含义 | +|--------------------|-----|-----| +| `AND`/`&&` | 二元 | 逻辑与 | +| `OR`/`||` | 二元 | 逻辑或 | +| `NOT`/`!` | 一元 | 逻辑非 | + + diff --git a/docs/docs/docs-cn/10.sql-reference/2.operator/5.date-and-time-operators.md b/docs/docs/docs-cn/10.sql-reference/2.operator/5.date-and-time-operators.md new file mode 100644 index 000000000..87144684d --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/2.operator/5.date-and-time-operators.md @@ -0,0 +1,28 @@ +日期时间运算符 +============================ + + + +以下为所有日期时间运算符列表: + + +| 运算符 | 操作数 | 含义 | +|-----|-----|---------------| +| `+` | 二元 | 同`DATE_ADD`函数 | +| `-` | 二元 | 同`DATE_SUB`函数 | + + + +例如: + +```javascript +OceanBase (root@oceanbase)> SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND; ++-------------------------------------------+ +| '2008-12-31 23:59:59' + INTERVAL 1 SECOND | ++-------------------------------------------+ +| 2009-01-01 00:00:00 | ++-------------------------------------------+ +1 row in set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/2.operator/6.character-concatenation-operators.md b/docs/docs/docs-cn/10.sql-reference/2.operator/6.character-concatenation-operators.md new file mode 100644 index 000000000..ca1fb39e9 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/2.operator/6.character-concatenation-operators.md @@ -0,0 +1,27 @@ +字符连接运算符 +============================ + + + +以下为所有字符连接运算符列表: + + +| 运算符 | 操作数 | 含义 | +|------|-----|-------| +| `||` | 二元 | 字符串连接 | + + + +如前节所述,`||`也可作为逻辑或运算符,两个不同含义是通过SQL MODE控制的: + +* SQL MODE包含`PIPES_AS_CONCAT`时,`||`为字符连接运算符。 + + + + + + +* SQL MODE不包含`PIPES_AS_CONCAT`时,`||`为逻辑与运算符。 + + + diff --git a/docs/docs/docs-cn/10.sql-reference/2.operator/7.hierarchical-query-operators.md b/docs/docs/docs-cn/10.sql-reference/2.operator/7.hierarchical-query-operators.md new file mode 100644 index 000000000..ae3518688 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/2.operator/7.hierarchical-query-operators.md @@ -0,0 +1,14 @@ +层次查询运算符 +============================ + + + +以下为所有层次查询运算符列表: + + +| 运算符 | 操作数 | 含义 | +|-------------------|-----|------------------------| +| `PRIOR` | 一元 | 用于指明column来自parent row | +| `CONNECT_BY_ROOT` | 一元 | 用于指明顶层祖先 | + + diff --git a/docs/docs/docs-cn/10.sql-reference/2.operator/8.collation-operators.md b/docs/docs/docs-cn/10.sql-reference/2.operator/8.collation-operators.md new file mode 100644 index 000000000..e98d1dc92 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/2.operator/8.collation-operators.md @@ -0,0 +1,23 @@ +排序规则运算符 +============================ + + + +以下为所有排序规则运算符列表: + + +| 运算符 | 操作数 | 含义 | +|-----------|--------|------| +| `COLLATE` | 一元(后缀) | 排序规则 | + + + +例如: + +```javascript +SELECT last_name + FROM employees + ORDER BY last_name COLLATE UTF8MB4_GENERAL_CI; +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/3.functions/1.single-row-functions.md b/docs/docs/docs-cn/10.sql-reference/3.functions/1.single-row-functions.md new file mode 100644 index 000000000..665054c25 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/3.functions/1.single-row-functions.md @@ -0,0 +1,3037 @@ +函数 +======================= + + + +日期时间函数 +--------------- + +日期时间函数主要用来显示有关日期和时间的信息。 + +#### CURDATE + +**声明** + +```javascript +CURDATE() +``` + + + +**说明** + +返回当前日期,不含时间部分。 + +**例子** + +```javascript +obclient> SELECT CURDATE(); ++------------+ +| CURDATE() | ++------------+ +| 2018-05-05 | ++------------+ +1 row in set (0.00 sec) +``` + + + + + +#### CURRENT_DATE + +**声明** + +```javascript +CURRENT_DATE() +CURRENT_DATE +``` + + + +**说明** + +同 `CURDATE()`。 + + + +#### CURRENT_TIME + +**声明** + +```javascript +CURRENT_TIME([scale]) +``` + + + +**说明** + +返回当前时间,不含日期部分。 + +`scale` 有效值为 0 到 6,表示微秒部分精度,默认值为 0。 + +**例子** + +```javascript +obclient> SELECT CURRENT_TIME(6); ++-----------------+ +| CURRENT_TIME(6) | ++-----------------+ +| 11:11:45.215311 | ++-----------------+ +1 row in set (0.01 sec) +``` + + + + + +#### CURRENT_TIMESTAMP + +**声明** + +```javascript +CURRENT_TIMESTAMP([scale]) +``` + + + +**说明** + +返回当前日期时间,考虑时区设置。 + +`scale` 有效值为 0 到 6,表示微秒部分精度,默认值为 0。 + +**例子** + +```javascript +obclient> SELECT CURRENT_TIMESTAMP(6); ++----------------------------+ +| CURRENT_TIMESTAMP(6) | ++----------------------------+ +| 2018-05-05 11:35:39.177764 | ++----------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### CURTIME + +**声明** + +```javascript +CURTIME() +``` + + + +**说明** + +同 `CURRENT_TIME()`。 + + + +#### DATE_ADD + +**声明** + +```javascript +DATE_ADD(date, INTERVAL expr unit) +``` + + + +**说明** + +日期时间的算术计算。 + +* `date` 表示日期时间基准,日期部分必选,时间部分可选。 + + + + + + + + +* `expr` 表示时间间隔,可以为负值。 + + + + + + + + +* `unit` 表示时间间隔单位。 + + + + + + +以下为所有时间间隔单位列表: + + +| 单位 | 类型 | 含义 | 格式 | +|----------------------|----|-------|----------------------------------------| +| `MICROSECOND` | 独立 | 微秒 | `MICROSECONDS` | +| `SECOND` | 独立 | 秒 | `SECONDS` | +| `MINUTE` | 独立 | 分钟 | `MINUTES` | +| `HOUR` | 独立 | 小时 | `HOURS` | +| `DAY` | 独立 | 天 | `DAYS` | +| `WEEK` | 独立 | 周 | `WEEKS` | +| `MONTH` | 独立 | 月 | `MONTHS` | +| `QUARTER` | 独立 | 季度 | `QUARTERS` | +| `YEAR` | 独立 | 年 | `YEARS` | +| `SECOND_MICROSECOND` | 组合 | 秒到微秒 | `'SECONDS.MICROSECONDS'` | +| `MINUTE_MICROSECOND` | 组合 | 分钟到微秒 | `'MINUTES:SECONDS.MICROSECONDS'` | +| `MINUTE_SECOND` | 组合 | 分钟到秒 | `'MINUTES:SECONDS'` | +| `HOUR_MICROSECOND` | 组合 | 小时到微秒 | `'HOURS:MINUTES:SECONDS.MICROSECONDS'` | +| `HOUR_SECOND` | 组合 | 小时到秒 | `'HOURS:MINUTES:SECONDS'` | +| `HOUR_MINUTE` | 组合 | 小时到分钟 | `'HOURS:MINUTES'` | +| `DAY_SECOND` | 组合 | 天到秒 | `'DAYS HOURS:MINUTES:SECONDS'` | +| `DAY_MINUTE` | 组合 | 天到分钟 | `'DDAYSD HOURS:MINUTES'` | +| `DAY_HOUR` | 组合 | 天到小时 | `'DAYS HOURS'` | +| `YEAR_MONTH` | 组合 | 年到月 | `'YEARS-MONTHS'` | + + + +**例子** + +```javascript +obclient> SELECT + -> DATE_ADD(NOW(), INTERVAL 5 DAY), + -> DATE_ADD('2014-01-10', INTERVAL 5 MICROSECOND), + -> DATE_ADD('2014-01-10', INTERVAL 5 SECOND), + -> DATE_ADD('2014-01-10', INTERVAL 5 MINUTE), + -> DATE_ADD('2014-01-10', INTERVAL 5 HOUR), + -> DATE_ADD('2014-01-10', INTERVAL 5 DAY), + -> DATE_ADD('2014-01-10', INTERVAL 5 WEEK), + -> DATE_ADD('2014-01-10', INTERVAL 5 MONTH), + -> DATE_ADD('2014-01-10', INTERVAL 5 QUARTER), + -> DATE_ADD('2014-01-10', INTERVAL 5 YEAR), + -> DATE_ADD('2014-01-10', INTERVAL '5.000005' SECOND_MICROSECOND), + -> DATE_ADD('2014-01-10', INTERVAL '05:05.000005' MINUTE_MICROSECOND), + -> DATE_ADD('2014-01-10', INTERVAL '05:05' MINUTE_SECOND), + -> DATE_ADD('2014-01-10', INTERVAL '05:05:05.000005' HOUR_MICROSECOND), + -> DATE_ADD('2014-01-10', INTERVAL '05:05:05' HOUR_SECOND), + -> DATE_ADD('2014-01-10', INTERVAL '05:05' HOUR_MINUTE), + -> DATE_ADD('2014-01-10', INTERVAL '01 05:05:05.000005' DAY_MICROSECOND), + -> DATE_ADD('2014-01-10', INTERVAL '01 05:05:05' DAY_SECOND), + -> DATE_ADD('2014-01-10', INTERVAL '01 05:05' DAY_MINUTE), + -> DATE_ADD('2014-01-10', INTERVAL '01 05' DAY_HOUR), + -> DATE_ADD('2014-01-10', INTERVAL '1-01' YEAR_MONTH) + -> \G +*************************** 1. row *************************** + DATE_ADD(NOW(), INTERVAL 5 DAY): 2018-05-10 14:54:52 + DATE_ADD('2014-01-10', INTERVAL 5 MICROSECOND): 2014-01-10 00:00:00.000005 + DATE_ADD('2014-01-10', INTERVAL 5 SECOND): 2014-01-10 00:00:05 + DATE_ADD('2014-01-10', INTERVAL 5 MINUTE): 2014-01-10 00:05:00 + DATE_ADD('2014-01-10', INTERVAL 5 HOUR): 2014-01-10 05:00:00 + DATE_ADD('2014-01-10', INTERVAL 5 DAY): 2014-01-15 + DATE_ADD('2014-01-10', INTERVAL 5 WEEK): 2014-02-14 + DATE_ADD('2014-01-10', INTERVAL 5 MONTH): 2014-06-10 + DATE_ADD('2014-01-10', INTERVAL 5 QUARTER): 2015-04-10 + DATE_ADD('2014-01-10', INTERVAL 5 YEAR): 2019-01-10 + DATE_ADD('2014-01-10', INTERVAL '5.000005' SECOND_MICROSECOND): 2014-01-10 00:00:05.000005 + DATE_ADD('2014-01-10', INTERVAL '05:05.000005' MINUTE_MICROSECOND): 2014-01-10 00:05:05.000005 + DATE_ADD('2014-01-10', INTERVAL '05:05' MINUTE_SECOND): 2014-01-10 00:05:05 + DATE_ADD('2014-01-10', INTERVAL '05:05:05.000005' HOUR_MICROSECOND): 2014-01-10 05:05:05.000005 + DATE_ADD('2014-01-10', INTERVAL '05:05:05' HOUR_SECOND): 2014-01-10 05:05:05 + DATE_ADD('2014-01-10', INTERVAL '05:05' HOUR_MINUTE): 2014-01-10 05:05:00 +DATE_ADD('2014-01-10', INTERVAL '01 05:05:05.000005' DAY_MICROSECOND): 2014-01-11 05:05:05.000005 + DATE_ADD('2014-01-10', INTERVAL '01 05:05:05' DAY_SECOND): 2014-01-11 05:05:05 + DATE_ADD('2014-01-10', INTERVAL '01 05:05' DAY_MINUTE): 2014-01-11 05:05:00 + DATE_ADD('2014-01-10', INTERVAL '01 05' DAY_HOUR): 2014-01-11 05:00:00 + DATE_ADD('2014-01-10', INTERVAL '1-01' YEAR_MONTH): 2015-02-10 +1 row in set (0.01 sec) +``` + + + + + +#### DATE_FORMAT + +**声明** + +```javascript +DATE_FORMAT(date, format) +``` + + + +**说明** + +将日期时间以指定格式输出。 + +* `date` 表示日期时间。 + + + + + + + + +* `format` 表示输出格式。 + + + + + + + + +以下为所有输出格式列表: + + +| 格式符 | 含义 | 格式 | +|------|------------------------------|------------------------| +| `%a` | 星期的英文缩写。 | `Sun..Sat` | +| `%b` | 月份的英文缩写。 | `Jan..Dec` | +| `%c` | 月份的数字形式。 | `1..12` | +| `%D` | 日的英文缩写。 | `1st..31st` | +| `%d` | 日的数字形式。 | `01..31` | +| `%e` | 日的数字形式。 | `1.. 31` | +| `%f` | 微秒。 | `000000..999999` | +| `%H` | 小时。 | `00..23` | +| `%h` | 小时。 | `01..12` | +| `%I` | 小时。 | `01..12` | +| `%i` | 分钟。 | `00..59` | +| `%j` | 一年中的第几天。 | `001..366` | +| `%k` | 小时。 | `0..23` | +| `%l` | 小时。 | `0..12` | +| `%M` | 月份的英文名称。 | `January..December` | +| `%m` | 月份的数字形式。 | `01..12` | +| `%p` | 上午或下午。 | `AM/PM` | +| `%r` | 12小时制时间。 | `hh:mm:ss AM/PM` | +| `%S` | 秒。 | `00..59` | +| `%s` | 秒。 | `00..59` | +| `%T` | 24小时制时间。 | `hh:mm:ss` | +| `%U` | 一年中的第几周,周日为每周第一天。 | `00..53` | +| `%u` | 一年中的第几周,周一为每周第一天。 | `00..53` | +| `%V` | 一年中的第几周,周日为每周第一天(和`%X`同时使用)。 | `01..53` | +| `%v` | 一年中的第几周,周一为每周第一天(和`%x`同时使用)。 | `01..53` | +| `%W` | 星期的英文名称。 | `Sunday..Saturday` | +| `%w` | 一周中的第几天。 | `0=Sunday..6=Saturday` | +| `%X` | 一周所属的年份,周日为每周第一天(和`%V`同时使用)。 | | +| `%x` | 一周所属的年份,周一为每周第一天(和`%v`同时使用)。 | | +| `%Y` | 四位年份。 | | +| `%y` | 两位年份。 | | +| `%%` | 文字字符,输出一个`%`。 | | + + + +**例子** + +```javascript +obclient> SELECT + -> DATE_FORMAT('2014-01-01', '%Y-%M-%d'), + -> DATE_FORMAT('2014-01-01', '%X-%V'), + -> DATE_FORMAT('2014-01-01', '%U') + -> \G +*************************** 1. row *************************** +DATE_FORMAT('2014-01-01', '%Y-%M-%d'): 2014-January-01 + DATE_FORMAT('2014-01-01', '%X-%V'): 2013-52 + DATE_FORMAT('2014-01-01', '%U'): 00 +1 row in set (0.01 sec) +``` + + + + + +#### DATE_SUB + +**声明** + +```javascript +DATE_SUB(date, INTERVAL expr unit) +``` + + + +**说明** + +日期时间的算术计算。 + +请参考 `DATE_ADD()`。 + + + +#### DATEDIFF + +**声明** + +```javascript +DATEDIFF(date1, date2) +``` + + + +**说明** + +返回 `date1` 和 `date2` 之间的天数。 + +计算中只用到参数的日期部分,忽略时间部分。 + +**例子** + +```javascript +obclient> SELECT DATEDIFF('2015-06-19','1994-12-17'); ++-------------------------------------+ +| DATEDIFF('2015-06-19','1994-12-17') | ++-------------------------------------+ +| 7489 | ++-------------------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### EXTRACT + +**声明** + +```javascript +EXTRACT(unit FROM date) +``` + + + +**说明** + +以整数类型返回 `date` 的指定部分值。如果指定多个部分,则将所有值按顺序拼接。 + +`unit` 请参考 `DATE_ADD()`。当 `unit` 为 `WEEK` 时,请参考 `DATE_FORMAT()` 的 `%U` 说明。 + +**例子** + +```javascript +SELECT EXTRACT(WEEK FROM '2013-01-01'), +EXTRACT(WEEK FROM '2013-01-06'), +EXTRACT(YEAR_MONTH FROM '2012-03-09'), +EXTRACT(DAY FROM NOW())\G; +* 1. row * +EXTRACT(WEEK FROM '2013-01-01'): 0 +EXTRACT(WEEK FROM '2013-01-06'): 1 +EXTRACT(YEAR_MONTH FROM '2012-03-09'): 201203 +EXTRACT(DAY FROM NOW()): 18 +1 row in set (0.00 sec) +``` + + + + + +#### FROM_DAYS + +**声明** + +```javascript +FROM_DAYS(N) +``` + + + +**说明** + +返回指定天数 `N` 对应的 `DATE` 值。天数指距离 `0000-01-01` 的天数。 + +**例子** + +```javascript +obclient> SELECT FROM_DAYS(736271), FROM_DAYS(700000); ++-------------------+-------------------+ +| FROM_DAYS(736271) | FROM_DAYS(700000) | ++-------------------+-------------------+ +| 2015-11-04 | 1916-07-15 | ++-------------------+-------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### FROM_UNIXTIME + +**声明** + +```javascript +FROM_UNIXTIME(unix_timestamp) +FROM_UNIXTIME(unix_timestamp, format) +``` + + + +**说明** + +* 不指定 `format` 参数时,返回 `DATETIME` 类型值,不考虑时区。 + + + + + + + + +* 指定 `format` 参数时,返回指定格式的日期时间字符串。 + + + + + + +`unix_timestamp` 指 UNIX 时间戳,即距离 `1970-01-01 00:00:00.000000` 的微秒数。 + +`format` 支持的格式已在 `DATE_FORMAT()` **说** **明** 中列出。 + +**例子** + +```javascript +obclient> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x'); ++---------------------------------------------------------+ +| FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x') | ++---------------------------------------------------------+ +| 2018 5th May 08:41:26 2018 | ++---------------------------------------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### MONTH + +**声明** + +```javascript +MONTH(date) +``` + + + +**说明** + +返回 `date` 的月份信息。 + +**例子** + +```javascript +obclient> SELECT MONTH('2008-02-03'); ++---------------------+ +| MONTH('2008-02-03') | ++---------------------+ +| 2 | ++---------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### NOW + +**声明** + +```javascript +NOW([scale]) +``` + + + +**说明** + +同 `CURRENT_TIMESTAMP()`。 + + + +#### PERIOD_DIFF + +**声明** + +```javascript +PERIOD_DIFF(p1, p2) +``` + + + +**说明** + +以月份位单位返回两个日期之间的间隔。日期只能包含年月信息,格式只能为 `YYYYMM` 或 `YYMM`。 + +**例子** + +```javascript +obclient> SELECT PERIOD_DIFF(200802, 200703); ++----------------------------+ +| PERIOD_DIFF(200802,200703) | ++----------------------------+ +| 11 | ++----------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### STR_TO_DATE + +**声明** + +```javascript +STR_TO_DATE(str, format) +``` + + + +**说明** + +使用 `format` 将 `str` 转换为 `DATETIME` 值、`DATE` 值、或 `TIME` 值。返回值类型取决于 `format` 包含日期时间的哪些部分。 + +`format` 支持的格式已在 `DATE_FORMAT()` **说** **明** 中列出。 + +**例子** + +```javascript +obclient> SELECT STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r'); ++-----------------------------------------------------+ +| STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r') | ++-----------------------------------------------------+ +| 2014-01-01 05:05:05 | ++-----------------------------------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### TIME + +**声明** + +```javascript +TIME(datetime +``` + + + +**说明** + +以 `TIME` 类型返回 `datetime` 的时间信息。 + +**例子** + +```javascript +obclient> SELECT TIME('2003-12-31 01:02:03'); ++-----------------------------+ +| TIME('2003-12-31 01:02:03') | ++-----------------------------+ +| 01:02:03.000000 | ++-----------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### TIME_TO_USEC + +**声明** + +```javascript +TIME_TO_USEC(date) +``` + + + +**说明** + +将 `date` 值转换为距离 `1970-01-01 00:00:00.000000` 的微秒数,考虑时区信息。 + +`date` 可以表示日期,也可以表示日期时间。 + +**例子** + +```javascript +obclient> SELECT TIME_TO_USEC('2014-03-25'), TIME_TO_USEC(NOW()); ++----------------------------+---------------------+ +| TIME_TO_USEC('2014-03-25') | TIME_TO_USEC(NOW()) | ++----------------------------+---------------------+ +| 1395676800000000 | 1525528100000000 | ++----------------------------+---------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### TIMEDIFF + +**声明** + +```javascript +TIMEDIFF(date1, date2) +``` + + + +**说明** + +以 `TIME` 类型返回两个日期时间的时间间隔。 + +**例子** + +```javascript +obclient> SELECT + -> TIMEDIFF('2015-06-06 12:12:12', '2014-06-05 11:11:11'), + -> TIMEDIFF('2015-06-06 12:12:12', '2015-06-05 11:11:11') + -> \G +*************************** 1. row *************************** +TIMEDIFF('2015-06-06 12:12:12', '2014-06-05 11:11:11'): 838:59:59 +TIMEDIFF('2015-06-06 12:12:12', '2015-06-05 11:11:11'): 25:01:01 +1 row in set (0.00 sec) +``` + + + + + +#### TIMESTAMPDIFF + +**声明** + +```javascript +TIMESTAMPDIFF(unit, date1, date2) +``` + + + +**说明** + +以 `unit` 为单位返回两个日期时间的间隔。`unit` 只能为 `DATE_ADD()` 中的独立单位。 + +**例子** + +```javascript +obclient> SELECT + -> TIMESTAMPDIFF(SECOND, NOW(), '2011-01-01 11:11:11'), + -> TIMESTAMPDIFF(DAY, '2011-01-01 11:11:11', NOW()) + -> \G +*************************** 1. row *************************** +TIMESTAMPDIFF(SECOND, NOW(), '2011-01-01 11:11:11'): -231677498 + TIMESTAMPDIFF(DAY, '2011-01-01 11:11:11', NOW()): 2681 +1 row in set (0.00 sec) +``` + + + + + +#### TIMESTAMPADD + +**声明** + +```javascript +TIMESTAMPADD(unit, interval_expr, date) +``` + + + +**说明** + +日期时间的算术计算。 + +同 `DATE_ADD()`,但 `unit` 只能为独立单位。 + +**例子** + +```javascript +obclient> SELECT + -> TIMESTAMPADD(DAY, -5, '2010-01-01 00:00:00'), + -> DATE_ADD('2010-01-01 00:00:00', INTERVAL -5 DAY) + -> \G +*************************** 1. row *************************** + TIMESTAMPADD(DAY, -5, '2010-01-01 00:00:00'): 2009-12-27 00:00:00 +DATE_ADD('2010-01-01 00:00:00', INTERVAL -5 DAY): 2009-12-27 00:00:00 +1 row in set (0.01 sec) +``` + + + + + +#### TO_DAYS + +**声明** + +```javascript +TO_DAYS(date) +``` + + + +**说明** + +返回指定 `date` 值对应的天数。天数指距离 `0000-01-01` 的天数。 + +**例子** + +```javascript +obclient> SELECT TO_DAYS('2015-11-04'), TO_DAYS('20151104'); ++-----------------------+---------------------+ +| TO_DAYS('2015-11-04') | TO_DAYS('20151104') | ++-----------------------+---------------------+ +| 736271 | 736271 | ++-----------------------+---------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### USEC_TO_TIME + +**声明** + +```javascript +USEC_TO_TIME(usec) +``` + + + +**说明** + +将 `usec` 值转换为 `TIMESTAMP` 类型值。 + +`usec` 表示距离 `1970-01-01 00:00:00.000000` 的微秒数,考虑时区信息。 + +**例子** + +```javascript +obclient> SELECT USEC_TO_TIME(1); ++----------------------------+ +| USEC_TO_TIME(1) | ++----------------------------+ +| 1970-01-01 08:00:00.000001 | ++----------------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### UNIX_TIMESTAMP + +**声明** + +```javascript +UNIX_TIMESTAMP() +UNIX_TIMESTAMP(date) +``` + + + +**说明** + +* 不指定 `date` 参数时,返回当前时间距离 '1970-01-01 00:00:00' 的秒数,考虑时区。 + + + + + + + + +* 指定 `date` 参数时,返回指定时间距离 '1970-01-01 00:00:00' 的秒数,考虑时区。 + + + + + + +**例子** + +```javascript +obclient> SELECT UNIX_TIMESTAMP(), TIME_TO_USEC(NOW()); ++------------------+---------------------+ +| UNIX_TIMESTAMP() | TIME_TO_USEC(NOW()) | ++------------------+---------------------+ +| 1525570561 | 1525570561000000 | ++------------------+---------------------+ +1 row in set (0.01 sec) + +obclient> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00'); ++---------------------------------------+ +| UNIX_TIMESTAMP('1997-10-04 22:23:00') | ++---------------------------------------+ +| 875974980 | ++---------------------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### UTC_TIMESTAMP + +**声明** + +```javascript +UTC_TIMESTAMP() +``` + + + +**说明** + +返回当前 UTC 时间。 + +**例子** + +```javascript +obclient> SELECT UTC_TIMESTAMP(); ++---------------------+ +| UTC_TIMESTAMP() | ++---------------------+ +| 2018-05-06 01:38:32 | ++---------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### YEAR + +**声明** + +```javascript +YEAR(date) +``` + + + +**说明** + +返回 `date` 值的年份信息。 + +**例子** + +```javascript +obclient> SELECT YEAR('1987-01-01'); ++--------------------+ +| YEAR('1987-01-01') | ++--------------------+ +| 1987 | ++--------------------+ +1 row in set (0.00 sec) +``` + + + + + +字符串函数 +-------------- + +#### CONCAT + +**声明** + +```javascript +CONCAT(str1, .., strN) +``` + + + +**说明** + +把多个字符串连接成一个字符串。参数中包含 `NULL` 时,返回 `NULL`。 + +**例子** + +```javascript +obclient> SELECT + -> CONCAT('test','obclient', '1.0'), + -> CONCAT('test','obclient', NULL) + -> \G +*************************** 1. row *************************** +CONCAT('test','obclient', '1.0'): testobclient1.0 + CONCAT('test','obclient', NULL): NULL +1 row in set (0.01 sec) +``` + + + + + +#### CONCAT_WS + +**声明** + +```javascript +CONCAT_WS(separator, str1, .., strN) +``` + + + +**说明** + +把多个字符串连接成一个字符串,相邻字符串间使用 `separator` 分隔。参数中包含 `NULL` 时,将忽略 `NULL`。 + +**例子** + +```javascript +obclient> SELECT + -> CONCAT_WS('_', 'First', 'Second'), + -> CONCAT_WS('_', 'First', NULL, 'Second') + -> \G +*************************** 1. row *************************** + CONCAT_WS('_', 'First', 'Second'): First_Second +CONCAT_WS('_', 'First', NULL, 'Second'): First_Second +1 row in set (0.00 sec) +``` + + + + + +FORMAT + +**声明** + +```unknow +FORMAT(X,D) +``` + + + +**说明** + +把数字 X 格式化为"#,###,###.##"格式,四舍五入到 D 位小数,并以字符串形式返回结果(如果整数部分超过三位,会用","作为千分位分隔符)。如果 D 为 0,则结果没有小数点或小数部分。 + +**例子** + +```unknow +obclient>SELECT FORMAT(12332.123456, 4) from DUAL; ++-------------------------+ +| format(12332.123456, 4) | ++-------------------------+ +| 12,332.1235 | ++-------------------------+ +1 row in set (0.00 sec) + +obclient>SELECT FORMAT(12332.1, 4) from DUAL; ++--------------------+ +| format(12332.1, 4) | ++--------------------+ +| 12,332.1000 | ++--------------------+ +1 row in set (0.01 sec) + +obclient>SELECT FORMAT(12332.2, 0) from DUAL; ++--------------------+ +| format(12332.2, 0) | ++--------------------+ +| 12,332 | ++--------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### SUBSTR + +**声明** + +```javascript +SUBSTR(str, pos) +SUBSTR(str, pos, len) +SUBSTR(str FROM pos) +SUBSTR(str FROM pos FOR len) +``` + + + +**说明** + +返回 `str` 的子字符串,起始位置为 `pos`,长度为 `len`。参数中包含 `NULL` 时,返回 `NULL`。 + +* 不指定 `len` 时,返回的子字符串从 `pos` 位置开始到 `str` 结尾。 + + + + + + + + +* `pos` 值为负数时,从 `str` 尾部向头部倒序确定起始位置。 + + + + + + + + +* `len` 小于等于 0,或 `pos` 指定的起始位置非法时,返回空字符串。 + + + + + + +**例子** + +```javascript +obclient> SELECT + -> SUBSTR('abcdefg', 3), + -> SUBSTR('abcdefg', 3, 2), + -> SUBSTR('abcdefg', -3), + -> SUBSTR('abcdefg', 3, -2), + -> SUBSTR('abcdefg' from -4 for 2) + -> \G +*************************** 1. row *************************** + SUBSTR('abcdefg', 3): cdefg + SUBSTR('abcdefg', 3, 2): cd + SUBSTR('abcdefg', -3): efg + SUBSTR('abcdefg', 3, -2): +SUBSTR('abcdefg' from -4 for 2): de +1 row in set (0.01 sec) +``` + + + + + +#### SUBSTRING + +**声明** + +```javascript +SUBSTRING(str, pos) +SUBSTRING(str, pos, len) +SUBSTRING(str FROM pos) +SUBSTRING(str FROM pos FOR len) +``` + + + +**说明** + +同 `SUBSTR`。 + + + +#### TRIM + +**声明** + +```javascript +TRIM([[{BOTH | LEADING | TRAILING}] [remstr] FROM] str) +``` + + + +**说明** + +删除字符串所有前缀和/或后缀,默认为 `BOTH`。参数中包含 `NULL` 时,返回 `NULL`。 + +**例子** + +```javascript +obclient> SELECT + -> TRIM(' bar '), + -> TRIM(LEADING 'x' FROM 'xxxbarxxx'), + -> TRIM(BOTH 'x' FROM 'xxxbarxxx'), + -> TRIM(TRAILING 'x' FROM 'xxxbarxxx') + -> \G +*************************** 1. row *************************** + TRIM(' bar '): bar + TRIM(LEADING 'x' FROM 'xxxbarxxx'): barxxx + TRIM(BOTH 'x' FROM 'xxxbarxxx'): bar +TRIM(TRAILING 'x' FROM 'xxxbarxxx'): xxxbar +1 row in set (0.01 sec) +``` + + + + + +#### LTRIM + +**声明** + +```javascript +LTRIM(str) +``` + + + +**说明** + +删除字符串左侧的空格。 + + + +#### RTRIM + +**声明** + +```javascript +RTRIM(str) +``` + + + +**说明** + +删除字符串右侧的空格。 + + + +#### ASCII + +**声明** + +```javascript +ASCII(str) +``` + + + +**说明** + +返回字符串最左侧字符的 ASCII 码。 + + + +#### ORD + +**声明** + +```javascript +ORD(str) +``` + + + +**说明** + +返回字符串最左侧字符的字符码。单字节编码如果最左侧字符是多字节编码字符,返回值计算规则如下: + +```javascript +(1st byte code) ++ (2nd byte code * 256) ++ (3rd byte code * 256^2) ... +``` + + + +**例子** + +```javascript +obclient> SELECT ORD('中国'); ++---------------+ +| ORD('中国') | ++---------------+ +| 14989485 | ++---------------+ +1 row in set (0.01 sec) +``` + + + + + +#### LENGTH + +**声明** + +```javascript +LENGTH(str) +``` + + + +**说明** + +返回 `str` 的字节长度。 + +**例子** + +```javascript +obclient> SELECT LENGTH('中国'), LENGTH('hello'); ++------------------+-----------------+ +| LENGTH('中国') | LENGTH('hello') | ++------------------+-----------------+ +| 6 | 5 | ++------------------+-----------------+ +1 row in set (0.01 sec) +``` + + + + + +#### CHAR_LENGTH + +**声明** + +```javascript +CHAR_LENGTH(str) +``` + + + +**说明** + +返回字符串包含的字符数。 + +**例子** + +```javascript +obclient> SELECT CHAR_LENGTH('中国'), CHAR_LENGTH('hello'); ++-----------------------+----------------------+ +| CHAR_LENGTH('中国') | CHAR_LENGTH('hello') | ++-----------------------+----------------------+ +| 2 | 5 | ++-----------------------+----------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### UPPER + +**声明** + +```javascript +UPPER(str) +``` + + + +**说明** + +将字符串中的小写字母转化为大写字母。 + +**例子** + +```javascript +obclient> SELECT UPPER('obclient您好!'); ++-----------------------------+ +| UPPER('obclient您好!') | ++-----------------------------+ +| OCEANBASE您好! | ++-----------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### LOWER + +**声明** + +```javascript +LOWER(str) +``` + + + +**说明** + +将字符串中的大写字母转化为小写字母。 + +**例子** + +```javascript +obclient> SELECT LOWER('obclient您好!'); ++-----------------------------+ +| LOWER('obclient您好!') | ++-----------------------------+ +| obclient您好! | ++-----------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### HEX + +**声明** + +```javascript +HEX(str) +``` + + + +**说明** + +将数字或字符串转化为十六进制字符串。 + +**例子** + +```javascript +obclient> SELECT HEX(255), HEX('abc'); ++----------+------------+ +| HEX(255) | HEX('abc') | ++----------+------------+ +| FF | 616263 | ++----------+------------+ +1 row in set (0.00 sec) +``` + + + + + +#### UNHEX + +**声明** + +```javascript +UNHEX(str) +``` + + + +**说明** + +将十六进制字符串转化为正常字符串。 + +**例子** + +```javascript +obclient> SELECT UNHEX('4f6365616e42617365'); ++-----------------------------+ +| UNHEX('4f6365616e42617365') | ++-----------------------------+ +| obclient | ++-----------------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### MD5 + +**声明** + +```javascript +MD5(str) +``` + + + +**说明** + +返回字符串的 MD5 值。 + +**例子** + +```javascript +obclient> SELECT MD5(1); ++----------------------------------+ +| MD5(1) | ++----------------------------------+ +| c4ca4238a0b923820dcc509a6f75849b | ++----------------------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### INT2IP + +**声明** + +```javascript +INT2IP(int_value) +``` + + + +**说明** + +将整数内码转换成 IP 地址。 + +**例子** + +```javascript +obclient> SELECT + -> INT2IP(16777216), + -> HEX(16777216), + -> INT2IP(1) + -> \G +*************************** 1. row *************************** +INT2IP(16777216): 1.0.0.0 + HEX(16777216): 1000000 + INT2IP(1): 0.0.0.1 +1 row in set (0.01 sec) +``` + + + + + +#### IP2INT + +**声明** + +```javascript +IP2INT('ip_addr') +``` + + + +**说明** + +将 IP 地址转换成整数内码。 + +**例子** + +```javascript +obclient> SELECT + -> IP2INT('0.0.0.1'), + -> HEX(IP2INT('0.0.0.1')), + -> HEX(IP2INT('1.0.0.0')) + -> \G +*************************** 1. row *************************** + IP2INT('0.0.0.1'): 1 +HEX(IP2INT('0.0.0.1')): 1 +HEX(IP2INT('1.0.0.0')): 1000000 +1 row in set (0.01 sec) +``` + + + + + +#### LIKE + +**声明** + +```javascript +str1 [NOT] LIKE str2 [ESCAPE str3] +``` + + + +**说明** + +字符串通配符匹配。参数中包含 `NULL` 时,返回 `NULL`。 + +通配符包括: + +* `%`:匹配任意长度字符串。 + + + + + + + + +* `_`:匹配单个字符。 + + + + + + +ESCAPE 用于定义转义符,如果 str2 中包含 str3,在匹配时 str3 后的字符将做为普通字符处理。 + +**例子** + +```javascript +obclient> SELECT 'ab%' LIKE 'abc%' ESCAPE 'c'; ++------------------------------+ +| 'ab%' LIKE 'abc%' ESCAPE 'c' | ++------------------------------+ +| 1 | ++------------------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### REGEXP + +**声明** + +```javascript +str [NOT] REGEXP | RLIKE pat +``` + + + +**说明** + +正则匹配。参数中包含 `NULL` 时,返回 `NULL`。 + +**例子** + +```javascript +obclient> SELECT + -> 1234 REGEXP 1, + -> 'hello' RLIKE 'h%' + -> \G +*************************** 1. row *************************** + 1234 REGEXP 1: 1 +'hello' RLIKE 'h%': 0 +1 row in set (0.01 sec) +``` + + + + + +#### REPEAT + +**声明** + +```javascript +REPEAT(str, count) +``` + + + +**说明** + +返回 `str` 重复 `count` 次组成的字符串。`count` 小于等于 0 时,返回空字符串。参数中包含 `NULL` 时,返回 `NULL`。 + +**例子** + +```javascript +obclient> SELECT + -> REPEAT('1', -1), + -> REPEAT(null, null), + -> REPEAT('Abc', 4) + -> \G +*************************** 1. row *************************** + REPEAT('1', -1): +REPEAT(null, null): NULL + REPEAT('Abc', 4): AbcAbcAbcAbc +1 row in set (0.01 sec) +``` + + + + + +#### SPACE + +**声明** + +```javascript +SPACE(N) +``` + + + +**说明** + +返回包含 `N` 个空格的字符串。 + + + +#### SUBSTRING_INDEX + +**声明** + +```javascript +SUBSTRING_INDEX(str, delim, count) +``` + + + +**说明** + +在定界符 delim 以及 count 出现前,从字符串 str 返回字符串。若 count 为正值,则返回最终定界符(从左边开始)左边的一切内容。若 count 为负值,则返回定界符(从右边开始)右边的一切内容。任意一个参数为 NULL,返回 NULL;若 str 或 delim 为空字符串,则返回空串;若 count = 0, 返回空串。 + +*str, delim, count 参数支持数值与字符串的隐式转换。* + +**例子** + +```javascript +obclient>select substring_index('abcdabc', 'abc', 0), substring_index('abcdabc', 'abc', 1), substring_index('abcdabc', 'abc', 2), substring_index('abcdabc', 'abc', 3), substring_index('abcdabc', 'abc', -1), substring_index('abcdabc', 'abc', -2), substring_index('abcdabc', 'abc', -3)\G; + * 1. row * + substring_index('abcdabc', 'abc', 0): + substring_index('abcdabc', 'abc', 1): + substring_index('abcdabc', 'abc', 2): abcd + substring_index('abcdabc', 'abc', 3): abcdabc + substring_index('abcdabc', 'abc', -1): + substring_index('abcdabc', 'abc', -2): dabc + substring_index('abcdabc', 'abc', -3): abcdabc + 1 row in set (0.00 sec) +``` + + + + + +#### LOCATE + +**声明** + +`LOCATE(substr,str) , LOCATE(substr,str,pos)` + +**说明** + +第一个语法返回字符串 str 中子字符串 substr 的第一个出现位置。第二个语法返回字符串 str 中子字符串 substr 的第一个出现位置, 起始位置在 pos。如若 substr 不在 str 中,则返回值为 0。 + +**例子** + +```javascript +obclient>SELECT LOCATE('bar', 'foobarbar'); + -> 4 +obclient>SELECT LOCATE('xbar', 'foobar'); + -> 0 +obclient>SELECT LOCATE('bar', 'foobarbar',5); + -> 7 +``` + + + + + +#### POSITION + +**声明** + +`POSITION(substr IN str)` + +**说明** + +与 LOCATE 同义。 + + + +#### INSTR + +**声明** + +`INSTR(str,substr)` + +**说明** + +返回字符串 str 中子字符串的第一个出现位置。这和 LOCATE() 的双参数形式相同,除非参数的顺序被颠倒。 + +**例子** + +```javascript +obclient>SELECT INSTR('foobarbar', 'bar'); + -> 4 +obclient>SELECT INSTR('xbar', 'foobar'); + -> 0 +``` + + + + + +#### REPLACE + +**声明** + +`REPLACE(str, from_str, to_str)` + +**说明** + +返回字符串 str 以及所有被字符 to_str 替代的字符串 from_str。 + +**例子** + +```javascript +obclient>SELECT REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'www'); ++---------------------------------------------------------+ +| REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'www') | ++---------------------------------------------------------+ +| wwwefg.gpg.nowdew.wwwdwwwe | ++---------------------------------------------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### FIELD + +**声明** + +`FIELD(str,str1,str2,str3,...)` + +**说明** + +返回参数 str 在 str1, str2, str3,... 列表中的索引位置(从 1 开始的位置)。在找不到 str 的情况下,返回值为 0。 + +如果所有的对于 FIELD() 的参数均为字符串,则所有参数均按照字符串进行比较。如果所有的参数均为数字,则按照数字进行比较。否则,参数均按照 double 类型进行比较。 + +如果 str 为 NULL,则返回值为 0,原因是 NULL 不能同任何值进行同等比较。FILED() 是 ELT() 的补数。 + +**例子** + +```javascript +obclient>select field('abc','abc1','abc2','abc','abc4','abc'), field(NULL, 'null1', NULL); ++-----------------------------------------------+----------------------------+ +| field('abc','abc1','abc2','abc','abc4','abc') | field(NULL, 'null1', NULL) | ++-----------------------------------------------+----------------------------+ +| 3 | 0 | ++-----------------------------------------------+----------------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### ELT + +**声明** + +`ELT(N, str1, str2, str3,...)` + +**说明** + +若 N=1,则返回值为 str1, 若 N=2,则返回值为 str2,以此类推。若 N 小于 1 或大于参数的数目,则返回值为NULL。ELT() 是 FIELD() 的补数。 + +**例子** + +```javascript +obclient>select elt(3, 'abc1', 'abc2', 'abc', 'abc4', 'abc'), elt(0, 'null1', NULL); ++----------------------------------------------+-----------------------+ +| elt(3, 'abc1', 'abc2', 'abc', 'abc4', 'abc') | elt(0, 'null1', NULL) | ++----------------------------------------------+-----------------------+ +| abc | NULL | ++----------------------------------------------+-----------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### INSERT + +**声明** + +`INSERT (str1,pos,len,str2)` + +**说明** + +返回字符串 str1, 字符串中起始于 pos 位置,长度为 len 的子字符串将被 str2 取代。如果 pos 超过字符串长度,则返回值为原始字符串。 假如 len 的长度大于其它字符串的长度,则从位置 pos 开始替换。若任何一个参数为 null,则返回值为 NULL。这个函数支持多字节字元。 + +* *str1 和 str2 必须是字符串,pos 和 len 必须是整数。任意参数为 NULL,结果总为 NULL;* + + + + + + +* *str1 和 str2 中的文字符被当做字节流看待;* + + + + + + +* *pos 值为负数或者大于 str1 长度时,返回 str1;* + + + + + + +* 当 len 小于 0,或大于 str 的长度时,返回结果为 str1 从开头到 pos 位置的串,和 str2 的组合串。 + + + + + + +**例子** + +```javascript +obclient>select insert('Quadratic',-2,100,'What'), insert('Quadratic',7,3,'What'), + -> insert('Quadratic',-1,3,'What'), insert('Quadratic',10,3,'What'), insert('Quadratic',5,-1,''), + -> insert('Quadratic',7,-1,'What')\G; +* 1. row * +insert('Quadratic',-2,100,'What'): Quadratic + insert('Quadratic',7,3,'What'): QuadraWhat + insert('Quadratic',-1,3,'What'): Quadratic + insert('Quadratic',10,3,'What'): Quadratic + insert('Quadratic',5,-1,''): Quad + insert('Quadratic',7,-1,'What'): QuadraWhat +1 row in set (0.01 sec) +``` + + + + + +#### LPAD + +**声明** + +`LPAD(str, len, padstr)` + +**说明** + +用指定字符串 padstr,在左侧填充字符串 str 到指定长度 len。如果 str 长度大于 len,则 str 被截断。 + +**例子** + +```javascript +obclient > SELECT LPAD('hi',4,'??'); ++-------------------+ +| LPAD('hi',4,'??') | ++-------------------+ +| ??hi | ++-------------------+ +1 row in set (0.01 sec) + +obclient > SELECT LPAD('hi',1,'??'); ++-------------------+ +| LPAD('hi',1,'??') | ++-------------------+ +| h | ++-------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### RPAD + +**声明** + +`RPAD(str, len, padstr)` + +**说明** + +用指定字符串 padstr,在右侧填充字符串 str 到指定长度 len。如果 str 长度大于 len,则 str 被截断。 + +**例子** + +```javascript +obclient> SELECT RPAD('hi',4,'??'); ++-------------------+ +| RPAD('hi',4,'??') | ++-------------------+ +| hi?? | ++-------------------+ +1 row in set (0.00 sec) + +obclient> SELECT RPAD('hi',1,'??'); ++-------------------+ +| RPAD('hi',1,'??') | ++-------------------+ +| h | ++-------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### UUID + +**声明** + +`uuid()` + +**说明** + +生成一个全局唯一 ID。 + +**例子** + +```javascript +obclient> select uuid(); ++--------------------------------------+ +| uuid() | ++--------------------------------------+ +| f756a1f6-4de6-11e8-90af-90b11c53e421 | ++--------------------------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### BIN + +**声明** + +`bin(N)` + +**说明** + +返回数字 N 的二进制形式。 + +**例子** + +```javascript +obclient > SELECT BIN(12); ++---------+ +| BIN(12) | ++---------+ +| 1100 | ++---------+ +1 row in set (0.00 sec) +``` + + + + + +#### QUOTE + +**声明** + +`quote(str)` + +**说明** + +引用一个字符串以产生一个结果可以作为 SQL 语句中正确地转义数据值。返回的字符串由单引号和单引号的各个实例封闭(''),反斜线(''),ASCII NUL 和 Control-Z 前面加一个反斜杠。如果参数为 NULL,则返回值是词 'NULL' 不包围单引号。 + +**例子** + +```javascript +obclient > SELECT QUOTE('Don\'t!'); ++------------------+ +| QUOTE('Don\'t!') | ++------------------+ +| 'Don\'t!' | ++------------------+ +1 row in set (0.00 sec) + +obclient > SELECT QUOTE(NULL); ++-------------+ +| QUOTE(NULL) | ++-------------+ +| NULL | ++-------------+ +1 row in set (0.00 sec) +``` + + + + + +#### REGEXP_SUBSTR + +**声明** + +`regexp_substr(str,pattern,[position[,occurrence[,match_param[,subexpr]]]])` + +**说明** + +在 str 中搜索匹配正则表达式 pattern 的子串,子串不存在返回 NULL。这个函数支持多字节字元。除 match_param 外,其他任意参数为 NULL,结果为 NULL。 + +* str 待搜索的字符串,支持多字节字元。 + + + + + + + + +* pattern 正则表达式,正则表达式规则兼容 mysql。 + + + + + + + + +* position \[可选\] 搜索的开始位置。必须是大于 0 的正整数,小于等于 0 报错,输入为 NULL 返回 NULL,默认值为 1,表示从第一个字符开始搜索。 + + + + + + + + +* occurrence \[可选\] 返回第几次匹配的值。必须是大于等于 0 的正整数,小于等于 0 报错,输入为 NULL 返回 NULL,默认值是 1,表示返回第一次匹配的结果。 + + + + + + + + +* match_param \[可选\] 搜索参数,字符串类型,目前仅支持两个字符 'i','c',i: 代表忽略大小写 c: 代表不忽略,其他字符报错。默认值根据 str 字符集的 collection 决定。 为 NULL 时使用默认值。 + + + + + + + + +* subexpr \[可选\] 返回正则表达式中第几个组的值。大于等于 0 的整数,小于 0 则报错。默认值是 0,表示返回满足整个 pattern 的子串。 + + + + + + + + +**例子** + +```javascript +obclient> select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1) from dual; ++----------------------------------------------------------------------------------+ +| regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1) | ++----------------------------------------------------------------------------------+ +| have | ++----------------------------------------------------------------------------------+ +1 row in set (0.00 sec) + +obclient> select regexp_substr('foothebar', 'foo(.*)(bar)', 1, 1, 'c', 1) from dual; ++----------------------------------------------------------+ +| regexp_substr('foothebar', 'foo(.*)(bar)', 1, 1, 'c', 1) | ++----------------------------------------------------------+ +| the | ++----------------------------------------------------------+ +1 row in set (0.01 sec) +``` + + + + + +转换函数 +------------- + +#### CAST + +**声明** + +`CAST(expr AS type)` + +**说明** + +将某种数据类型的表达式显式转换为另一种数据类型。 + +将 expr 字段值转换为 type 数据类型。 + +**参数说明** : + + + +* expr:表示任何有效的 SQL 表达式。 + + + +* AS:用于分隔两个参数,在 AS 之前的是要处理的数据,在 AS 之后是要转换的数据类型。 + + + +* type:表示目标系统所提供的数据类型。可以是以下值其中的一个: + + + + + + + + +在使用 CAST 函数进行数据类型转换时,在下列情况下能够被接受: + +* 两个表达式的数据类型完全相同; + + + + + + + + +* 两个表达式可隐式转换; + + + + + + + + +* 必须显式转换数据类型。 + + + + + + +如果试图进行不可能的转换,OceanBase数据库 将显示一条错误信息。 + +如果转换时没有指定数据类型的长度,则使用 OceanBase 数据库系统内部最大长度。如 varchar 是262,143字节,number 是 65 个 bit 位的浮动精度。 + +支持带符号和无符号的 64 比特值的运算。若你正在使用数字操作符 (如 +) 而其中一个操作数为无符号整数,则结果为无符号。可使用 SIGNED 和 UNSIGNED cast 操作符来覆盖它。将运算分别派给带符号或无符号 64 比特整数。 + +假如任意一个操作数为一个浮点值,则结果为一个浮点值。 + +**例子** + +```javascript +obclient>SELECT CAST(123 AS BOOL); ++-------------------+ +| CAST(123 AS bool) | ++-------------------+ +| 1 | ++-------------------+ +1 row in set (0.00 sec) + +obclient>select cast(1-2 as unsigned), cast(cast(1-2 as unsigned) as signed); ++-----------------------+---------------------------------------+ +| cast(1-2 as unsigned) | cast(cast(1-2 as unsigned) as signed) | ++-----------------------+---------------------------------------+ +| 18446744073709551615 | -1 | ++-----------------------+---------------------------------------+ +1 row in set (0.00 sec) + +obclient>SELECT CAST(1 AS UNSIGNED) - 2.0; ++---------------------------+ +| CAST(1 AS UNSIGNED) - 2.0 | ++---------------------------+ +| -1.0 | ++---------------------------+ +1 row in set (0.00 sec) + +obclient>select cast(0 as date); ++-----------------+ +| cast(0 as date) | ++-----------------+ +| 0000-00-00 | ++-----------------+ +1 row in set (0.00 sec) +``` + + + + + +数学函数 +------------- + +#### ROUND + +**声明** + +`ROUND(X), ROUND(X,D)` + +**说明** + +返回一个数值,四舍五入到指定的长度或精度。 + +返回参数 X, 其值接近于最近似的整数。在有两个参数的情况下,返回 X,其值保留到小数点后 D 位,而第 D 位的保留方式为四舍五入。若要接保留 X 值小数点左边的 D 位,可将 D 设为负值。 + +返回值的类型同第一个自变量相同(假设它是一个整数、双精度数或小数)。这意味着对于一个整数参数,结果也是一个整数(无小数部分)。 + +* 对于准确值数字,ROUND() 使用"四舍五入" 或"舍入成最接近的数" 的规则:对于一个分数部分为 .5 或大于 .5 的值,正数则上舍入到邻近的整数值,负数则下舍入临近的整数值。(换言之, 其舍入的方向是数轴上远离零的方向)。对于一个分数部分小于 .5 的值,正数则下舍入下一个整数值,负数则下舍入邻近的整数值,而正数则上舍入邻近的整数值。 + + + + + + + + +* 对于近似值数字, ROUND() 遵循银行家规则"四舍--大于五入--五取最接近的偶数"的规则: 一个带有任何小数部分的值会被舍入成最接近的偶数整数。 + + + + + + + + +**例子** + +```javascript +obclient>select round(2.15,2); ++---------------+ +| round(2.15,2) | ++---------------+ +| 2.15 | ++---------------+ +1 row in set (0.00 sec) + +obclient>select round(2555e-2,1); ++------------------+ +| round(2555e-2,1) | ++------------------+ +| 25.6 | ++------------------+ +1 row in set (0.01 sec) + +obclient>select round(25e-1), round(25.3e-1),round(35e-1); ++--------------+----------------+--------------+ +| round(25e-1) | round(25.3e-1) | round(35e-1) | ++--------------+----------------+--------------+ +| 3 | 3 | 4 | ++--------------+----------------+--------------+ +1 row in set (0.00 sec) +``` + + + + + +#### CEIL + +**声明** + +`CEIL(expr)` + +**说明** + +返回大于或者等于指定表达式的最小整数。 + +还支持比较运算,结果为 BOOL 值,被转化为数字类型处理,产生的结果为 1(TRUE)、0 (FALSE); + +如果输入 NULL,返回值为 NULL。 + +如果输入纯数字的字符串,支持自动转换成数字类型。 + +返回值会被转化为一个 BIGINT。 + +**例子** + +```javascript +obclient>select ceil(1.2), ceil(-1.2), ceil(1+1.5), ceil(1=1),ceil(1<1),ceil(null); ++-----------+------------+-------------+-----------+-----------+------------+ +| ceil(1.2) | ceil(-1.2) | ceil(1+1.5) | ceil(1=1) | ceil(1<1) | ceil(null) | ++-----------+------------+-------------+-----------+-----------+------------+ +| 2 | -1 | 3 | 1 | 0 | NULL | ++-----------+------------+-------------+-----------+-----------+------------+ +1 row in set (0.00 sec) + +obclient>select ceil(name); +ERROR 1166 (42703): Unkown column name 'name' + +obclient>select ceil('2'); ++-----------+ +| ceil('2') | ++-----------+ +| 2 | ++-----------+ +1 row in set (0.00 sec) +``` + + + + + +#### FLOOR + +**声明** + +`FLOOR(expr)` + +**说明** + +和 CEIL(expr) 函数功能类似,返回小于或者等于指定表达式的最大整数。 + +还支持比较运算,结果为 BOOL 值,被转化为数字类型处理,产生的结果为 1(TRUE)、0 (FALSE); + +如果输入 NULL,返回值为 NULL。 + +如果输入纯数字的字符串,支持自动转换成数字类型。 + +返回值会被转化为一个 BIGINT。 + +**例子** + +```javascript +obclient>select floor(1.2), floor(-1.2), floor(1+1.5), floor(1=1),floor(1<1),floor(null); ++------------+-------------+--------------+------------+------------+-------------+ +| floor(1.2) | floor(-1.2) | floor(1+1.5) | floor(1=1) | floor(1<1) | floor(null) | ++------------+-------------+--------------+------------+------------+-------------+ +| 1 | -2 | 2 | 1 | 0 | NULL | ++------------+-------------+--------------+------------+------------+-------------+ +1 row in set (0.00 sec) + +obclient>select floor(name); +ERROR 1166 (42703): Unkown column name 'name' + +obclient>select floor('2'); ++------------+ +| floor('2') | ++------------+ +| 2 | ++------------+ +1 row in set (0.00 sec) +``` + + + + + +#### ABS + +**声明** + +`ABS(expr)` + +**说明** + +绝对值函数,求表达式绝对值,函数返回值类型与数值表达式的数据类型相同。 + +还支持比较运算,结果为 BOOL 值,被转化为数字类型处理,产生的结果为 1(TRUE)、0 (FALSE); + +如果输入 NULL,返回值为 NULL。 + +如果输入纯数字的字符串,支持自动转换成数字类型。 + +返回值会被转化为一个 BIGINT。 + +**例子** + +```javascript +obclient>select abs(5), abs(-5.777), abs(0), abs(1/2), abs(1-5); ++--------+-------------+--------+----------+----------+ +| abs(5) | abs(-5.777) | abs(0) | abs(1/2) | abs(1-5) | ++--------+-------------+--------+----------+----------+ +| 5 | 5.777 | 0 | 0.5000 | 4 | ++--------+-------------+--------+----------+----------+ +1 row in set (0.00 sec) +``` + + + + + +#### NEG + +**声明** + +`NEG(expr)` + +**说明** + +求补函数,对操作数执行求补运算:用零减去操作数,然后结果返回操作数。 + +支持比较运算,结果为 BOOL 值,被转化为数字类型处理,产生的结果为 1(TRUE)、0 (FALSE),再对结果求补。 + +**例子** + +```javascript +obclient>select neg(1), neg(1+1), neg(2*3), neg(1=1), neg(5<1); ++--------+----------+----------+----------+----------+ +| neg(1) | neg(1+1) | neg(2*3) | neg(1=1) | neg(5<1) | ++--------+----------+----------+----------+----------+ +| -1 | -2 | -6 | -1 | 0 | ++--------+----------+----------+----------+----------+ +1 row in set (0.01 sec) +``` + + + + + +#### SIGN + +**声明** + +`SIGN(X)` + +**说明** + +SIGN(X) 返回参数作为 -1、 0 或 1 的符号,该符号取决于 X 的值为负、零或正。 + +支持比较运算,结果为 BOOL 值,被转化为数字类型处理,产生的结果为 1(TRUE)、0 (FALSE); + +如果输入 NULL,返回值为 NULL。 + +支持浮点数、十六进制数。 + +**例子** + +```javascript +obclient>SELECT SIGN(-32), SIGN(0), SIGN(234); ++-----------+---------+-----------+ +| SIGN(-32) | SIGN(0) | SIGN(234) | ++-----------+---------+-----------+ +| -1 | 0 | 1 | ++-----------+---------+-----------+ +1 row in set (0.01 sec) + +obclient>select sign(null),sign(false),sign(0x01); ++------------+-------------+------------+ +| sign(null) | sign(false) | sign(0x01) | ++------------+-------------+------------+ +| NULL | 0 | 1 | ++------------+-------------+------------+ +1 row in set (0.00 sec) +``` + + + + + +#### CONV + +**声明** + +`CONV(N, from_base, to_base)` + +**说明** + +不同数基间转换数字。返回值为一个字符串,由 from_base 基转化为 to_base 基。输入参数 N 可以是一个整数或字符串。最小基数为 2,而最大基数则为 36。如果 to_base 是一个负数,则 N 被看作一个带符号数。否则,N 被看作无符号数。from_base 如果是负数,则被当作整数处理,符号被忽略。N 参数仅支持 int 类型和字符串类型输入;from_base 和 to_base 参数仅支持十进制 int 类型输入,且取值范围为 \[-36, -2\] U \[2, 36\]。 + +非法输入将导致报错,其中非法输入包括以下情况: + +* *from_base 或者 to_base 不是一个合法的十进制int类型输入;* + + + + + + +* *from_base 或者 to_base 超出 \[-36,-2\] U \[2,36\] 的取值范围;* + + + + + + +* N 不是一个合法的数字表示,例如取值超出 0~9,a~z,A~Z 的字符范围; + + + + + + + + +* N 超出了 from_base 基的取值范围,例如 from_base 为 2,而 N 取值为 3; + + + + + + + + +* N 的取值超出了 int64 的最大表示范围,即 \[-9223372036854775807, 9223372036854775807\]。 + + + + + + +**例子** + +```javascript +obclient>select conv(9223372036854775807,10,2); ++-----------------------------------------------------------------+ +| conv(9223372036854775807,10,2) | ++-----------------------------------------------------------------+ +| 111111111111111111111111111111111111111111111111111111111111111 | ++-----------------------------------------------------------------+ +1 row in set (0.00 sec) + +obclient>select conv('-acc',21,-7); ++--------------------+ +| conv('-acc',21,-7) | ++--------------------+ +| -16425 | ++--------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### MOD + +**声明** + +`MOD(N,M)` + +**说明** + +取余函数。MOD(N,M), N % M, N MOD M 三种形式是等效的。 + +MOD() 对于带有小数部分的数值也起作用,它返回除法运算后的精确余数。 + +N,M 中任何一个参数为 NULL,返回值都为 NULL。M 为 0 时,也返回 NULL。 + +**例子** + +```javascript +obclient>select mod(29,19), 29 mod 19, 29 % 19; ++------------+-----------+---------+ +| mod(29,19) | 29 mod 19 | 29 % 19 | ++------------+-----------+---------+ +| 10 | 10 | 10 | ++------------+-----------+---------+ +1 row in set (0.00 sec) +``` + + + + + +#### POW + +**声明** + +`POW(X,Y)` + +**说明** + +返回 X 的 Y 次方。 + +X 与 Y 中任何一个参数为 NULL,返回值都为 NULL。 + +**例子** + +```javascript +obclient>select pow(4,2), pow(4,-2), pow(1,null); ++----------+-----------+-------------+ +| pow(4,2) | pow(4,-2) | pow(1,null) | ++----------+-----------+-------------+ +| 16 | 0.0625 | NULL | ++----------+-----------+-------------+ +1 row in set (0.00 sec) +``` + + + + + +#### POWER + +**声明** + +`POWER(X,Y)` + +**说明** + +POWER(X,Y) 和 POW(X,Y) 是同义函数。 + + + +#### RAND + +**声明** + +`rand([N])` + +**说明** + +RAND(\[N\]) 函数接受 0 个或者 1 个参数(N 被称为随机数种子),返回一个范围是 \[0,1.0) 的随机浮点数。如果想获得一个范围在 \[i, j) 的随机整数,可以使用表达式 FLOOR(I + RAND() \* (j - i))。 + +如果参数 N 不指定,那么在执行之前会使用随机种子初始化,之后 RAND() 会根据这个初始化值来生成随机数,所以 RAND() 每次会生成不同的随机数序列。 + +如果参数 N 指定,那么 N 会作为随机数种子来生成随机数。根据 N 是否是常量,分成以下两种情况: + +* 如果 N 是常量,那么 N 在执行之前会被当成随机种子初始化,之后 RAND(N) 会根据这个初始化值来生成随机数。相同的 N 值会生成相同的随机数序列。 + + + + + + + + +* 如果 N 是变量(比如 N 是一个列值),那么 N 会在每次执行的时候作为随机数种子来生成随机数。相同的 N 值会生成相同的随机数。 + + + + + + + + +除了出现在 Select 语句中,RAND(\[N\]) 也可以出现在 where,order by 和 group by 语句中,它的执行方式还是按照上述规则执行。比如,如果想随机的对一个表进行排序,可以使用如下 SQL:select from t1 order by rand()。如果想随机取样一个表的 100 行,可以使用如下 SQL:select from t1 order by rand() limit 100。 + +**例子** + +```javascript +obclient> select a, b, rand() from t3; ++------+------+---------------------+ +| a | b | rand() | ++------+------+---------------------+ +| 1 | 1 | 0.641815407799385 | +| 2 | 2 | 0.16825051248841966 | +| 3 | 3 | 0.9158063697775886 | ++------+------+---------------------+ +3 rows in set (0.00 sec) + +obclient> select a, b, rand() from t3; ++------+------+---------------------+ +| a | b | rand() | ++------+------+---------------------+ +| 1 | 1 | 0.07428034215632857 | +| 2 | 2 | 0.6239826321825224 | +| 3 | 3 | 0.897072165177271 | ++------+------+---------------------+ +3 rows in set (0.00 sec) + +obclient> select a, b, rand(3) from t3; ++------+------+---------------------+ +| a | b | rand(3) | ++------+------+---------------------+ +| 1 | 1 | 0.9057697559760601 | +| 2 | 2 | 0.37307905813034536 | +| 3 | 3 | 0.14808605345719125 | ++------+------+---------------------+ +3 rows in set (0.00 sec) + +obclient> select a, b, rand(3) from t3; ++------+------+---------------------+ +| a | b | rand(3) | ++------+------+---------------------+ +| 1 | 1 | 0.9057697559760601 | +| 2 | 2 | 0.37307905813034536 | +| 3 | 3 | 0.14808605345719125 | ++------+------+---------------------+ +3 rows in set (0.00 sec) + +obclient> select a, b, rand(a), rand(b) from t3; ++------+------+---------------------+---------------------+ +| a | b | rand(a) | rand(b) | ++------+------+---------------------+---------------------+ +| 1 | 1 | 0.40540353712197724 | 0.40540353712197724 | +| 2 | 2 | 0.6555866465490187 | 0.6555866465490187 | +| 3 | 3 | 0.9057697559760601 | 0.9057697559760601 | ++------+------+---------------------+---------------------+ +3 rows in set (0.00 sec) +``` + + + + + +比较函数 +------------- + +#### GREATEST + +**声明** + +`GREATEST(value1, ...)` + +**说明** + +返回参数的最大值,和函数 LEAST() 相对。 + +参数至少为两个(一个参数将会报错);如果参数中有 NULL, 返回值为 NULL。 + +当参数中同时存在数值和字符时,把字符隐式转换为数值类型处理,不能转换的报错。 + +**例子** + +```javascript +obclient>select greatest(2,1), greatest('2',1,0), greatest('a','b','c'), greatest('a', NULL, 'c'), greatest('2014-05-15','2014-06-01')\G + * 1. row * + greatest(2,1): 2 + greatest('2',1,0): 2 + greatest('a','b','c'): c + greatest('a', NULL, 'c'): NULL + greatest('2014-05-15','2014-06-01'): 2014-06-01 + 1 row in set (0.01 sec) + obclient>select greatest(2); + ERROR 1582 (42000): Incorrect parameter count in the call to native function 'greatest' +``` + + + + + +#### LEAST + +**声明** + +`LEAST(value1, ...)` + +**说明** + +返回参数的最小值,和函数 GREATEST() 相对。 + +参数至少为两个;如果参数中有 NULL,返回值为 NULL。 + +当参数中同时存在数值和字符时,把字符隐式转换为数值类型处理,不能转换的报错。 + +**例子** + +```javascript +obclient>select least(2, null), least('2',4,9), least('a','b','c'), least('a',NULL,'c'), least('2014-05-15','2014-06-01')\G; +* 1. row * + least(2, null): NULL + least('2',4,9): 2 + least('a','b','c'): a + least('a',NULL,'c'): NULL +least('2014-05-15','2014-06-01'): 2014-05-15 +1 row in set (0.01 sec) +obclient>select least(2); +ERROR 1582 (42000): Incorrect parameter count in the call to native function 'least' +``` + + + + + +#### ISNULL + +**声明** + +`ISNULL(expr)` + +**说明** + +如果参数 expr 为 NULL,那么 ISNULL() 的返回值为 1,否则范围值为 0。 + +ISNULL() 函数可以用来替代针对 NULL 的等值(=)比较。(使用 = 的 NULL 值比较通常都是错误的。)ISNULL() 函数同 IS NULL 比较操作符具有一些相同的特性。 + +**例子** + +```javascript +obclient>SELECT ISNULL(null), ISNULL('test'), ISNULL(123.456), ISNULL('10:00'); ++--------------+----------------+-----------------+-----------------+ +| ISNULL(null) | ISNULL('test') | ISNULL(123.456) | ISNULL('10:00') | ++--------------+----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | ++--------------+----------------+-----------------+-----------------+ +1 row in set (0.01 sec) + +obclient>SELECT ISNULL(null+1); ++----------------+ +| ISNULL(null+1) | ++----------------+ +| 1 | ++----------------+ +1 row in set (0.00 sec) +``` + + + + + +流程控制函数 +--------------- + +#### CASE + +**声明** + +```javascript +CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END +OR +CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END +``` + + + +**说明** + +在第一个方案的返回结果中,value = compare-value。而第二个方案的返回结果是第一种条件为真。如果没有匹配的结果值,则返回结果为 ELSE 后的结果,如果没有 ELSE 部分,则返回值为 NULL。 + +**例子** + +```javascript +obclient>select CASE 'b' when 'a' then 1 when 'b' then 2 END; ++----------------------------------------------+ +| CASE 'b' when 'a' then 1 when 'b' then 2 END | ++----------------------------------------------+ +| 2 | ++----------------------------------------------+ +1 row in set (0.01 sec) + +obclient>select CASE concat('a','b') when concat('ab','') then 'a' when 'b' then 'b' end; ++--------------------------------------------------------------------------+ +| CASE concat('a','b') when concat('ab','') then 'a' when 'b' then 'b' end | ++--------------------------------------------------------------------------+ +| a | ++--------------------------------------------------------------------------+ +1 row in set (0.01 sec) + +obclient>select case when 1>0 then 'true' else 'false' end; ++--------------------------------------------+ +| case when 1>0 then 'true' else 'false' end | ++--------------------------------------------+ +| true | ++--------------------------------------------+ +1 row in set (0.00 sec) +``` + + + + + +#### IF + +**声明** + +`IF(expr1,expr2,expr3)` + +**说明** + +如果 expr1 的值为 TRUE(即:expr1\<\>0 且 expr1\<\>NULL),返回结果为 expr2; 否则返回结果为 expr3。 + +IF() 返回结果可以是数值或字符串类型,它取决于使用的内容。 + +如果 expr2, expr3 中只有一个明确是 NULL,则 IF() 函数的结果类型为非 NULL 表达式的结果类型。 + +**例子** + +```javascript +obclient>select if(5>6, 'T','F'), if (5>6, 1, 0), if(null, 'True', 'False'), if(0, 'True', 'False')\G +* 1. row * + if(5>6, 'T','F'): F + if (5>6, 1, 0): 0 +if(null, 'True', 'False'): False + if(0, 'True', 'False'): False +1 row in set (0.01 sec) +``` + + + + + +#### IFNULL + +**声明** + +`IFNULL(expr1, expr2)` + +**说明** + +假设 expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL() 的返回值是数值或字符串,具体情况取决于其所使用的语境。 + +IF() 的默认返回值类型按照以下方式计算: + + +| 表达式 | 返回值 | +|--------------------------|-----| +| expr1 或 expr2 返回值为一个字符串。 | 字符串 | +| expr1 或 expr2 返回值为一个浮点值。 | 浮点 | +| expr1 或 expr2 返回值为一个整数。 | 整数 | + + + +假如 expr1 和 expr2 都是字符串,且其中任何一个字符串区分大小写,则返回结果是区分大小写。 + +**例子** + +```javascript +obclient>SELECT IFNULL('abc', null), IFNULL(NULL+1, NULL+2), IFNULL(1/0, 0/1); ++---------------------+------------------------+------------------+ +| IFNULL('abc', null) | IFNULL(NULL+1, NULL+2) | IFNULL(1/0, 0/1) | ++---------------------+------------------------+------------------+ +| abc | NULL | 0.0000 | ++---------------------+------------------------+------------------+ +1 row in set (0.01 sec) +``` + + + + + +#### NULLIF + +**声明** + +`NULLIF(expr1, expr2)` + +**说明** + +如果 expr1 = expr2 成立,那么返回值为 NULL,否则返回值为 expr1。这和 CASE WHEN + +*expr1 = expr2 THEN NULL ELSE expr1 END 相同。注意,如果参数不相等,则两次求得的值为 expr1。* + +**例子** + +```javascript +obclient>SELECT NULLIF('ABC', 123), NULLIF('123',123), NULLIF(NULL, 'abc'); ++--------------------+-------------------+---------------------+ +| NULLIF('ABC', 123) | NULLIF('123',123) | NULLIF(NULL, 'abc') | ++--------------------+-------------------+---------------------+ +| ABC | NULL | NULL | ++--------------------+-------------------+---------------------+ +1 row in set, 1 warning (0.01 sec) +``` + + + + + +#### ORA_DECODE + +**声明** + +`ora_decode(条件, 值1, 返回值1, 值2, 返回值2, ... 值n, 返回值n, 缺省值)` + +**说明** + +ORA_DECODE() 函数功能等同于 Oracle 的 DECODE() 函数功能。 + +该函数的含义如下: + +```javascript +IF 条件=值1 +THEN RETURN(返回值1) +ELSIF 条件=值2 +THEN RETURN(返回值2) +...... +ELSIF 条件=值n +THEN RETURN(返回值n) +ELSE RETURN(缺省值) +END IF +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/3.functions/2.aggregate-functions.md b/docs/docs/docs-cn/10.sql-reference/3.functions/2.aggregate-functions.md new file mode 100644 index 000000000..5745df8cc --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/3.functions/2.aggregate-functions.md @@ -0,0 +1,269 @@ +聚集函数 +========================= + + + +聚合函数对一组值执行计算并返回单一的值。聚合函数忽略空值。聚合函数经常与SELECT语句的GROUP BY子句一同使用。 + +所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。 + +在OceanBase的聚合函数中,Value表达式只能出现一个。例如:不支持COUNT(c1, c2),仅支持COUNT(c1)。 + +AVG +------------ + +**声明** + +`AVG(([DISTINCT] expr)` + +**说明** + +返回指定组中的平均值,空值被忽略。DISTINCT选项可用于返回expr的不同值的平均值。若找不到匹配的行,则AVG()返回NULL。 + +**例子** + +```javascript +Oceanbase>select * from oceanbasetest; ++----+------+------+ +| id | ip | ip2 | ++----+------+------+ +| 1 | 4 | NULL | +| 3 | 3 | NULL | +| 4 | 3 | NULL | ++----+------+------+ +3 rows in set (0.01 sec) + +Oceanbase>select avg(ip2), avg(ip), avg(distinct(ip)) from oceanbasetest; ++----------+---------+-------------------+ +| avg(ip2) | avg(ip) | avg(distinct(ip)) | ++----------+---------+-------------------+ +| NULL | 3.3333 | 3.5000 | ++----------+---------+-------------------+ +1 row in set (0.00 sec) + +Oceanbase>select avg(distinct(ip)),avg(ip),avg(ip2) from oceanbasetest; ++-------------------+---------+----------+ +| avg(distinct(ip)) | avg(ip) | avg(ip2) | ++-------------------+---------+----------+ +| 3.5000 | 3.3333 | NULL | ++-------------------+---------+----------+ +1 row in set (0.00 sec) +``` + + + + + +COUNT +-------------- + +**声明** + +`COUNT([DISTINCT] expr)` + +**说明** + +COUNT(\[DISTINCT\] expr )返回SELECT语句检索到的行中非NULL值的数目。若找不到匹配的行,则COUNT()返回0。DISTINCT选项可用于返回 expr 的不同值的数目。 + +COUNT(\*)的稍微不同之处在于,它返回检索行的数目,不论其是否包含NULL值。 + +**例子** + +```javascript +Oceanbase>select * from oceanbasetest; ++----+------+------+ +| id | ip | ip2 | ++----+------+------+ +| 1 | 4 | NULL | +| 3 | 3 | NULL | +| 4 | 3 | NULL | ++----+------+------+ +3 rows in set (0.00 sec) + +Oceanbase>select count(ip2), count(ip), count(distinct(ip)), count(*) from oceanbasetest; ++------------+-----------+---------------------+----------+ +| count(ip2) | count(ip) | count(distinct(ip)) | count(*) | ++------------+-----------+---------------------+----------+ +| 0 | 3 | 2 | 3 | ++------------+-----------+---------------------+----------+ +1 row in set (0.00 sec) +``` + + + + + +MAX +------------ + +**声明** + +`MAX([DISTINCT] expr)` + +**说明** + +返回指定数据中的最大值。 + +MAX()的取值可以是一个字符串参数;在这些情况下,它们返回最大字符串值。DISTINCT关键字可以被用来查找 expr的不同值的最大值,这产生的结果与省略DISTINCT 的结果相同。 + +假设表a有三行数据:id=1,num=10;id=2,num=20;id=3,num=30。 + +**例子** + +```javascript +Oceanbase>SELECT MAX(num) FROM a; ++-----------------+ +| MAX(num) | ++-----------------+ +| 30 | ++-----------------+ +1 row in set (0.00 sec) +``` + + + + + +MIN +------------ + +**声明** + +`MIN([DISTINCT] expr)` + +**说明** + +返回指定数据中的最小值。 + +MIN()的取值可以是一个字符串参数;在这些情况下,它们返回最小字符串值。DISTINCT关键字可以被用来查找expr 的不同值的最小值,然而,这产生的结果与省略DISTINCT 的结果相同。 + +假设表a有三行数据:id=1,num=10;id=2,num=20;id=3,num=30。 + +**例子** + +```javascript +Oceanbase>SELECT MIN(num) FROM a; ++----------------+ +| MIN(num) | ++----------------+ +| 10 | ++----------------+ +1 row in set (0.00 sec) +``` + + + + + +SUM +------------ + +**声明** + +`SUM([DISTINCT] expr)` + +**说明** + +返回 expr 的总数。若返回集合中无任何行,则 SUM() 返回NULL。DISTINCT关键字可用于求得 expr 不同值的总和。 + +若找不到匹配的行,则SUM()返回NULL。 + +**例子** + +```javascript +Oceanbase>select * from oceanbasetest; ++------+------+------+ +| id | ip | ip2 | ++------+------+------+ +| 1 | 4 | NULL | +| 3 | 3 | NULL | +| 4 | 3 | NULL | ++------+------+------+ +3 rows in set (0.00 sec) + +Oceanbase>select sum(ip2),sum(ip),sum(distinct(ip)) from oceanbasetest; ++----------+---------+-------------------+ +| sum(ip2) | sum(ip) | sum(distinct(ip)) | ++----------+---------+-------------------+ +| NULL | 10 | 7 | ++----------+---------+-------------------+ +1 row in set (0.00 sec) +``` + + + + + +GROUP_CONCAT +--------------------- + +**声明** + +`GROUP_CONCAT([DISTINCT] expr)` + +**说明** + +该函数返回带有来自一个组的连接的非NULL值的字符串结果。 + +```javascript +GROUP_CONCAT([DISTINCT] expr [,expr ...] + [ORDER BY {unsigned_integer | col_name | expr} + ASC | DESC] + [SEPARATOR str_val]) +``` + + + +**例子** + +```javascript +Oceanbase>select * from book; //表book(书编号,书名,出版社) ++--------+--------------------------------+-----------------------------+ +| bookid | bookname | publishname | ++--------+--------------------------------+-----------------------------+ +| 1 | git help | alibaba group publisher | +| 2 | MySQL性能优化 | 浙江大学图文出版社 | +| 3 | JAVA编程指南 | 机械工业出版社 | +| 3 | JAVA编程指南 | 机械工业出版社 | +| 4 | 大规模分布式存储系统 | 机械工业出版社 | ++--------+--------------------------------+-----------------------------+ +5 rows in set (0.00 sec) + +//查找书名信息 +Oceanbase>select group_concat(bookname) from book group by bookname; ++-----------------------------------+ +| group_concat(bookname) | ++-----------------------------------+ +| git help | +| JAVA编程指南,JAVA编程指南 | +| MySQL性能优化 | +| 大规模分布式存储系统 | ++-----------------------------------+ +4 rows in set (0.00 sec) + +//查找书名信息,书名唯一 +Oceanbase>select group_concat(distinct(bookname)) from book group by bookname; ++----------------------------------+ +| group_concat(distinct(bookname)) | ++----------------------------------+ +| git help | +| JAVA编程指南 | +| MySQL性能优化 | +| 大规模分布式存储系统 | ++----------------------------------+ +4 rows in set (0.01 sec) + +//查找书名和出版社信息,以书名分组,出版社信息降序排序显示 +Oceanbase>select bookname, group_concat(publishname order by publishname desc separator ';' ) from book group by bookname; ++--------------------------------+---------------------------------------------------------------------+ +| bookname | group_concat(publishname order by publishname desc separator ';' ) | ++--------------------------------+---------------------------------------------------------------------+ +| git help | alibaba group publisher | +| JAVA编程指南 | 机械工业出版社;机械工业出版社 | +| MySQL性能优化 | 浙江大学图文出版社 | +| 大规模分布式存储系统 | 机械工业出版社 | ++--------------------------------+---------------------------------------------------------------------+ +4 rows in set (0.00 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/3.functions/3.analysis-functions.md b/docs/docs/docs-cn/10.sql-reference/3.functions/3.analysis-functions.md new file mode 100644 index 000000000..0c2c10e8f --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/3.functions/3.analysis-functions.md @@ -0,0 +1,425 @@ +分析函数 +========================= + + + +简介 +----------- + +**分析函数** (某些数据库下也叫做 **窗口函数** )与聚合函数类似,计算总是基于一组行的集合,不同的是,聚合函数一组只能返回一行,而分析函数每组可以返回多行,组内每一行都是基于窗口的逻辑计算的结果。分析函数可以显著优化需要 self-join 的查询。 + +### 分析函数语法 + +"窗口"也称为 FRAME,OceanBase 数据库同时支持 ROWS 与 RANGE 两种 FRAME 语义,前者是基于物理行偏移的窗口,后者则是基于逻辑值偏移的窗口。 + +分析函数语法如下: + +```unknow +analytic_function: + analytic_function([ arguments ]) OVER (analytic_clause) + +analytic_clause: + [ query_partition_clause ] [ order_by_clause [ windowing_clause ] ] + +query_partition_clause: + PARTITION BY { expr[, expr ]... | ( expr[, expr ]... ) } + +order_by_clause: + ORDER [ SIBLINGS ] BY{ expr | position | c_alias } [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] [, { expr | position | c_alias } [ ASC | DESC ][ NULLS FIRST | NULLS LAST ]]... + +windowing_clause: + { ROWS | RANGE } { BETWEEN { UNBOUNDED PRECEDING | CURRENT ROW | value_expr { + PRECEDING | FOLLOWING } } AND{ UNBOUNDED FOLLOWING | CURRENT ROW | value_expr { + PRECEDING | FOLLOWING } } | { UNBOUNDED PRECEDING | CURRENT ROW| value_expr + PRECEDING}} +``` + + + +SUM/MIN/MAX/COUNT/AVG +------------------------------------------ + +**声明** + +SUM 的语法为:`SUM([ DISTINCT | ALL ] expr) [ OVER (analytic_clause) ]` + +MIN 的语法为:`MIN([ DISTINCT | ALL ] expr) [ OVER (analytic_clause) ]` + +MAX 的语法为:`MAX([ DISTINCT | ALL ] expr) [ OVER (analytic_clause) ]` + +COUNT 的语法为:`COUNT({ * | [ DISTINCT | ALL ] expr }) [ OVER (analytic_clause) ]` + +AVG 的语法为:`AVG([ DISTINCT | ALL ] expr) [ OVER(analytic_clause) ]` + +**说明** + +以上分析函数都有对应的聚合函数,其中,`SUM` 返回 `expr` 的和,`MIN`/`MAX` 返回 `expr` 的最小值/最大值,`COUNT` 返回窗口中查询的行数,`AVG` 返回 `expr` 的平均值。 + +对于 `COUNT` 函数,如果指定了 `expr`,即返回 `expr` 不为 NULL 的统计个数,如果指定 `COUNT(*)` 返回所有行的统计数目。 + +**例子** + +```javascript +obclient> create table exployees(last_name char(10), salary decimal, job_id char(32)); +Query OK, 0 rows affected (0.17 sec) + +obclient> insert into exployees values('jim', 2000, 'cleaner'); +Query OK, 1 row affected (0.03 sec) + +obclient> insert into exployees values('mike', 12000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('lily', 13000, 'engineering'); +Query OK, 1 row affected (0.01 sec) + +obclient> insert into exployees values('tom', 11000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient>select last_name, sum(salary) over(partition by job_id) totol_s, min(salary) over(partition by job_id) min_s, max(salary) over(partition by job_id) max_s, count(*) over(partition by job_id) count_s from exployees; ++-----------+---------+-------+-------+---------+ +| last_name | totol_s | min_s | max_s | count_s | ++-----------+---------+-------+-------+---------+ +| jim | 2000 | 2000 | 2000 | 1 | +| mike | 36000 | 11000 | 13000 | 3 | +| lily | 36000 | 11000 | 13000 | 3 | +| tom | 36000 | 11000 | 13000 | 3 | ++-----------+---------+-------+-------+---------+ +4 rows in set (0.01 sec) +``` + + + +NTH_VALUE/FIRST_VALUE/LAST_VALUE +----------------------------------------------------- + +**声明** + +NTH_VALUE 的语法为:`NTH_VALUE (measure_expr, n) [ FROM { FIRST | LAST } ] [ { RESPECT | IGNORE } NULLS ] OVER (analytic_clause)` + +FIRST_VALUE 的语法为:`FIRST_VALUE { (expr) [ {RESPECT | IGNORE} NULLS ] | (expr [ {RESPECT | IGNORE} NULLS ])} OVER (analytic_clause)` + +LAST_VALUE 的语法为:`LAST_VALUE { (expr) [ {RESPECT | IGNORE} NULLS ] | (expr [ {RESPECT | IGNORE} NULLS ])} OVER (analytic_clause)` + +**说明** + +NTH_VALUE 函数表示第几个值,方向由 `[ FROM { FIRST | LAST } ]` 确定,默认为 `FROM FIRST`,含有是否忽略 NULL 值的标志。其窗口为统一的 `analytic_clause`。这里 `n` 应该是正数,如果 `n` 是 NULL,函数将返回错误;如果 `n` 大于窗口内所有的行数,此函数将返回 NULL。 + +FIRST_VALUE 和 LAST_VALUE 表示从第一个开始计数或者是从最后一个开始计数。 + +**例子** + +```javascript +obclient> create table exployees(last_name char(10), salary decimal, job_id char(32)); +Query OK, 0 rows affected (0.08 sec) + +obclient> insert into exployees values('jim', 2000, 'cleaner'); +Query OK, 1 row affected (0.11 sec) + +obclient> insert into exployees values('mike', 12000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('lily', 13000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('tom', 11000, 'engineering'); +Query OK, 1 row affected (0.01 sec) + +obclient> select last_name, first_value(salary) over(partition by job_id) totol_s, last_value(salary) over(partition by job_id) min_s, max(salary) over(partition by job_id) max_s from exployees; ++-----------+---------+-------+-------+ +| last_name | totol_s | min_s | max_s | ++-----------+---------+-------+-------+ +| jim | 2000 | 2000 | 2000 | +| mike | 12000 | 11000 | 13000 | +| lily | 12000 | 11000 | 13000 | +| tom | 12000 | 11000 | 13000 | ++-----------+---------+-------+-------+ +4 rows in set (0.01 sec) +``` + + + +LEAD/LAG +----------------------------- + +**声明** + +LEAD 的语法为:`LEAD { ( value_expr [, offset [, default]]) [ { RESPECT | IGNORE } NULLS ] | ( value_expr [ { RESPECT | IGNORE } NULLS ] [, offset [, default]] )} OVER ([ query_partition_clause ] order_by_clause)` + +LAG 的语法为:`LAG { ( value_expr [, offset [, default]]) [ { RESPECT | IGNORE } NULLS ] | ( value_expr [ { RESPECT | IGNORE } NULLS ] [, offset [, default]] )} OVER ([ query_partition_clause ] order_by_clause)` + +**说明** + +LEAD 和 LAG 含义为可以在一次查询中取出当前行的同一个字段的前面或后面第 N 行的数据,这种操作可以使用相同表的自连接来实现,但 LEAD/LAG 窗口函数有更高的效率。 + +其中,`value_expr` 是要做比对的字段,`offset` 是 `value_expr` 的偏移量,`default` 参数的默认值为 NULL,即如果在 LEAD/LAG 没有显示的设置 `default` 值的情况下,返回值为 NULL。例如:对 LAG 来说,当前行为 4,`offset` 值为 6,这时候所要找的数据就是第 -2 行,不存在此行即返回 `default` 的值。 + +`[ { RESPECT | IGNORE } NULLS ]` 的语法为是否考虑 NULL 值,默认为 `RESPECT`,考虑 NULL 值。 + +注意 LEAD/LAG 两个函数后必须有 `order_by_clause`,数据应该在一个列上排序之后才能有前多少行后多少行的概念。`query_partition_clause` 是可选的,如果没有 `query_partition_clause`,就是全局的数据。 + +**例子** + +```unknow +obclient> create table exployees(last_name char(10), salary decimal, job_id char(32)); +Query OK, 0 rows affected (0.08 sec) + +obclient> insert into exployees values('jim', 2000, 'cleaner'); +Query OK, 1 row affected (0.11 sec) + +obclient> insert into exployees values('mike', 12000, 'engineering'); +Query OK, 1 row affected (0.01 sec) + +obclient> insert into exployees values('lily', 13000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('tom', 11000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> select last_name, lead(salary) over(order by salary) lead, lag(salary) over(order by salary) lag from exployees; ++-----------+-------+-------+ +| last_name | lead | lag | ++-----------+-------+-------+ +| jim | 11000 | NULL | +| tom | 12000 | 2000 | +| mike | 13000 | 11000 | +| lily | NULL | 12000 | ++-----------+-------+-------+ +4 rows in set (0.01 sec) +``` + + + +STDDEV/VARIANCE/STDDEV_SAMP/STDDEV_POP +----------------------------------------------------------- + +**声明** + +VARIANCE 的语法为:`VARIANCE([ DISTINCT | ALL ] expr) [ OVER (analytic_clause) ]` + +STDDEV 的语法为:`STDDEV([ DISTINCT | ALL ] expr) [ OVER (analytic_clause) ]` + +STDDEV_SAMP 的语法为:`STDDEV_SAMP(expr) [ OVER (analytic_clause) ]` + +STDDEV_POP 的语法为:`STDDEV_POP(expr) [ OVER (analytic_clause) ]` + +**说明** + +VARIANCE 返回的是 `expr` 的方差,`expr` 可能是数值类型或者可以转换成数值类型的类型,方差的类型和输入的值的类型相同。 + +STDDEV 返回的是 `expr` 的标准差,参数类型方面和 VARIANCE 的相同。 + +STDDEV_SAMP 返回的是样本标准差。 + +STDDEV_POP 返回的是总体标准差。 + +**例子** + +```javascript +obclient> create table exployees(last_name char(10), salary decimal, job_id char(32)); +Query OK, 0 rows affected (0.08 sec) + +obclient> insert into exployees values('jim', 2000, 'cleaner'); +Query OK, 1 row affected (0.11 sec) + +obclient> insert into exployees values('mike', 12000, 'engineering'); +Query OK, 1 row affected (0.01 sec) + +obclient> insert into exployees values('lily', 13000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('tom', 11000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> select last_name, stddev(salary) over(order by salary) std, variance(salary) over(order by salary) var, stddev_pop(salary) over() std_pop, stddev_samp(salary) over() from exployees; ++-----------+-------------------+--------------------+-------------------+----------------------------+ +| last_name | std | var | std_pop | stddev_samp(salary) over() | ++-----------+-------------------+--------------------+-------------------+----------------------------+ +| jim | 0 | 0 | 4387.482193696061 | 5066.228051190222 | +| tom | 4500 | 20250000 | 4387.482193696061 | 5066.228051190222 | +| mike | 4496.912521077347 | 20222222.222222224 | 4387.482193696061 | 5066.228051190222 | +| lily | 4387.482193696061 | 19250000 | 4387.482193696061 | 5066.228051190222 | ++-----------+-------------------+--------------------+-------------------+----------------------------+ +4 rows in set (0.00 sec) +``` + + + +NTILE +-------------------------- + +**声明** + +`NTILE(expr) OVER ([ query_partition_clause ] order_by_clause)` + +**说明** + +NTILE 函数将分区中已经排序的行划分为大小尽可能相同的指定数量的分组,并返回给每行组号。`expr` 如果是 NULL,则返回 NULL。 + +例子 + +```javascript +obclient> create table exployees(last_name char(10), salary decimal, job_id char(32)); +Query OK, 0 rows affected (0.08 sec) + +obclient> insert into exployees values('jim', 2000, 'cleaner'); +Query OK, 1 row affected (0.11 sec) + +obclient> insert into exployees values('mike', 12000, 'engineering'); +Query OK, 1 row affected (0.01 sec) + +obclient> insert into exployees values('lily', 13000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('tom', 11000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> select last_name, ntile(10) over(partition by job_id order by salary) ntl from exployees; ++-----------+------+ +| last_name | ntl | ++-----------+------+ +| jim | 1 | +| tom | 1 | +| mike | 2 | +| lily | 3 | ++-----------+------+ +4 rows in set (0.01 sec) +``` + + + +ROW_NUMBER +------------------------------- + +声明 + +`ROW_NUMBER( ) OVER ([ query_partition_clause ] order_by_clause)` + +说明 + +ROW_NUMBER 函数按照 `order_by_clause` 子句中指定的行的顺序,为每一行分配一个编号。 + +例子 + +```javascript +obclient> create table exployees(last_name char(10), salary decimal, job_id char(32)); +Query OK, 0 rows affected (0.08 sec) + +obclient> insert into exployees values('jim', 2000, 'cleaner'); +Query OK, 1 row affected (0.11 sec) + +obclient> insert into exployees values('mike', 12000, 'engineering'); +Query OK, 1 row affected (0.01 sec) + +obclient> insert into exployees values('lily', 13000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('tom', 11000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> select last_name, row_number() over(partition by job_id order by salary) ntl from exployees; ++-----------+------+ +| last_name | ntl | ++-----------+------+ +| jim | 1 | +| tom | 1 | +| mike | 2 | +| lily | 3 | ++-----------+------+ +4 rows in set (0.00 sec) +``` + + + +RANK/DENSE_RANK/PERCENT_RANK +------------------------------------------------- + +**声** **明** + +RANK 的语法为:`RANK( ) OVER ([ query_partition_clause ] order_by_clause)` + +DENSE_RANK 的语法为:`DENSE_RANK( ) OVER([ query_partition_clause ] order_by_clause)` + +PERCENT_RANK 的语法为:`PERCENT_RANK( ) OVER ([ query_partition_clause ] order_by_clause)` + +**说明** + +RANK 计算每一行数据在某列上的排序,该列由 `order_by_clause` 中的列决定。例如,按照 salary 排序可以看出员工的收入排名。 + +DENSE_RANK 的语义基本和 RANK 函数相同,但是 RANK 的排序中间会有'跳过',但是 DENSE_RANK 中不会有。 + +PERCENT_RANK 的语义基本和 RANK 函数相同,但是 PERCENT_RANK 排序的结果是百分比,计算的是给定行的百分比。 + +**例子** + +```unknow +obclient> create table exployees(last_name char(10), salary decimal, job_id char(32)); +Query OK, 0 rows affected (0.10 sec) + +obclient> insert into exployees values('jim', 2000, 'cleaner'); +Query OK, 1 row affected (0.11 sec) + +obclient> insert into exployees values('mike', 12000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('lily', 13000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('tom', 11000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> select last_name, rank() over(partition by job_id order by salary) rank, dense_rank() over(partition by job_id order by salary) dense_rank, percent_rank() over(partition by job_id order by salary) percent_rank from exployees; ++-----------+------+------------+----------------------------------+ +| last_name | rank | dense_rank | percent_rank | ++-----------+------+------------+----------------------------------+ +| jim | 1 | 1 | 0.000000000000000000000000000000 | +| tom | 1 | 1 | 0.000000000000000000000000000000 | +| mike | 2 | 2 | 0.500000000000000000000000000000 | +| lily | 3 | 3 | 1.000000000000000000000000000000 | ++-----------+------+------------+----------------------------------+ +4 rows in set (0.01 sec) +``` + + + +CUME_DIST +------------------------------ + +**声明** + +`CUME_DIST() OVER ([ query_partition_clause ] order_by_clause)` + +**说明** + +该函数计算一个值的分布,返回值为大于 0 小于等于 1 的值。作为一个分析函数,CUME_DIST 在升序情况下计算比当前行的特定列小的数据的占比。例如如下例子中,按 job_id 分组并在薪水排序的情况下,每行数据在窗口内的排序列上的占比。 + +**例子** + +```unknow +obclient> create table exployees(last_name char(10), salary decimal, job_id char(32)); +Query OK, 0 rows affected (0.10 sec) + +obclient> insert into exployees values('jim', 2000, 'cleaner'); +Query OK, 1 row affected (0.11 sec) + +obclient> insert into exployees values('mike', 12000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('lily', 13000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> insert into exployees values('tom', 11000, 'engineering'); +Query OK, 1 row affected (0.00 sec) + +obclient> select last_name, cume_dist() over(partition by job_id order by salary) cume_dist from exployees; ++-----------+----------------------------------+ +| last_name | cume_dist | ++-----------+----------------------------------+ +| jim | 1.000000000000000000000000000000 | +| tom | 0.333333333333333333333333333333 | +| mike | 0.666666666666666666666666666667 | +| lily | 1.000000000000000000000000000000 | ++-----------+----------------------------------+ +4 rows in set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/3.functions/4.information-functions.md b/docs/docs/docs-cn/10.sql-reference/3.functions/4.information-functions.md new file mode 100644 index 000000000..12ed6267f --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/3.functions/4.information-functions.md @@ -0,0 +1,94 @@ +信息函数 +========================= + + + +FOUND_ROWS +------------------- + + + +**声明** + +`found_rows()` + +**说明** + +一个SELECT语句可能包含一个LIMIT子句,用来限制数据库服务器端返回客户端的行数。在某些情况下,我们需要不再次运行该语句而得知在没有LIMIT时到底该语句返回了多少行。我们可以在SELECT语句中选择使用SQL_CALC_FOUND_ROWS, 然后调用FOUND_ROW()函数,获取该语句在没有LIMIT时返回的行数。 + +例如: + +```javascript +mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name + -> WHERE id > 100 LIMIT 10; +mysql> SELECT FOUND_ROWS(); +``` + + + +第二个SELECT语句返回一个数字,表示在没有LIMIT子句的情况下,第一个SELECT语句返回了多少行。(若上述的SELECT语句在不使用SQL_CALC_FOUND_ROWS选项时,使用LIMIT和不使用LIMIT时候, FOUND_ROWS()可能会返回不同的结果)。 + +通过FOUND_ROWS()函数返回的有效行数是瞬时的,并且不能越过SELECT SQL_CALC_FOUND_ROWS语句后面的语句。如果你后续还需要用到这个值,就需要将其保存。 + +例如: + +```javascript +mysql> SELECT SQL_CALC_FOUND_ROWS * FROM ... ; +mysql> SET @rows = FOUND_ROWS(); +``` + + + +假如你正在使用SQL_CALC_FOUND_ROWS,系统必须计算出在全部结果集合中有多少行。尽管如此,这也还是比不用LIMIT而再次运行查询要快,原因是结果集合不需要被发送到客户端。 + +SQL_CALC_FOUND_ROWS和FOUND_ROWS()在当你希望限制一个查询返回的行数时是很有用的,同时还能不需要再次运行查询就可以确定全部结果集合中的行数。一个 **例子** 就是提供页式显示的Web脚本,该显示包含显示搜索结果其他部分的页的链接。使用FOUND_ROWS()使你确定剩下的结果需要多少其他的页。 + +SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 的应用对于UNION 查询比对于简单SELECT 语句更为复杂,原因是在UNION 中,LIMIT 可能会出现在多个位置。它可能适用于UNION中的独立的SELECT语句,或是整个的UNION 结果。 + +SQL_CALC_FOUND_ROWS对于 UNION的期望结果是它返回在没有全局的LIMIT的条件下而应返回的行数。SQL_CALC_FOUND_ROWS 和UNION 一同使用的条件是: + +* SQL_CALC_FOUND_ROWS 关键词必须出现在UNION的第一个 SELECT中。 + + + + + + +* FOUND_ROWS()的值只有在使用 UNION ALL时才是精确的。若使用不带ALL的UNION,则会发生两次删除,而FOUND_ROWS() 的指只需近似的。 + + + + + + +* 假若UNION 中没有出现LIMIT ,则SQL_CALC_FOUND_ROWS 被忽略,返回临时表中的创建的用来处理UNION的行数。 + + + + + + +LAST_INSERT_ID() +------------------------- + +**声明** + +`last_insert_id()` + +**说明** + +返回本session最后一次插入的自增字段值,如最近一条insert插入多条记录,LAST_INSERT_ID()返回第一条记录的自增字段值。 + +**例子** + +```javascript +mysql>select LAST_INSERT_ID(); ++------------------+ +| LAST_INSERT_ID() | ++------------------+ +| 5 | ++------------------+ +1 row in set (0.00 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/3.functions/5.other-functions.md b/docs/docs/docs-cn/10.sql-reference/3.functions/5.other-functions.md new file mode 100644 index 000000000..2a156b170 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/3.functions/5.other-functions.md @@ -0,0 +1,185 @@ +其它函数 +========================= + + + +COALESCE +----------------- + +**声明** + +`COALESCE(expr, expr, expr,...)` + +**说明** + +依次参考各参数表达式,遇到非NULL值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。 + +所有表达式必须是相同类型,或者可以隐性转换为相同的类型。 + +**例子** + +```javascript +Oceanbase>SELECT COALESCE(NULL,NULL,3,4,5), COALESCE(NULL,NULL,NULL); ++---------------------------+--------------------------+ +| COALESCE(NULL,NULL,3,4,5) | COALESCE(NULL,NULL,NULL) | ++---------------------------+--------------------------+ +| 3 | NULL | ++---------------------------+--------------------------+ +1 row in set (0.00 sec) +``` + + + + + +NVL +------------ + +**声明** + +`NVL(str1,replace_with)` + +**说明** + +如果 str1 为 NULL,则替换成 replace_with。 + +任何时候给它一个空值,它都返回一个你所选择的值。这种能够自动替换空值的能力有助于提供看上去更为完善的输出。其中 str1 一般是一个列名。replace_with 可以是任何值:直接值(即硬编码)、对其他列的引用或者表达式。 + +**例子** + +```javascript +Oceanbase>SELECT NVL(NULL, 0), NVL(NULL, 'a'); ++--------------+----------------+ +| NVL(NULL, 0) | NVL(NULL, 'a') | ++--------------+----------------+ +| 0 | a | ++--------------+----------------+ +1 row in set (0.00 sec) +``` + + + + + +SLEEP +-------------- + +**声明** + +`SLEEP(duration)` + +**说明** + +SLEEP函数根据duration指定的数值暂停相应的时间(单位为秒),并在暂停结束后返回0。 + +如果SLEEP单独执行且没有被中断,返回结果0; + +如果SLEEP单独执行期间被中断,返回结果1,但不会返回任何错误码; + +如果SLEEP是查询的一部分,且暂停期间被中断,将会返回错误码1317; + +**例子** + +```javascript +mysql> SELECT SLEEP(1000); ++------------------+ +| SLEEP(1000) | ++------------------+ +| 0 | ++------------------+ + +mysql> SELECT SLEEP(1000); ++------------------+ +| SLEEP(1000) | ++------------------+ +| 1 | ++------------------+ + +mysql> SELECT 1 FROM t1 WHERE SLEEP(1000); +ERROR 1317 (70100): Query execution was interrupted +``` + + + + + +全文查找函数 +--------------- + +**声明** + +```javascript +MATCH (col1,col2,...) AGAINST (expr [search_modifier]) +search_modifier: +{ + IN NATURAL LANGUAGE MODE + | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION + | IN BOOLEAN MODE + | WITH QUERY EXPANSION +} +``` + + + +**说明** + +OceanBase1.0已经支持使用全文查找函数来对全文索引进行查找,并且使用全文查找函数有以下要求: + +* 全文查找函数MATCH(col1,col2,...)中指定的列上必须有全文索引(OB目前只支持FULLTEXT CTXCAT索引) + + + + + + + + +* 在FULLTEXT CTXCAT索引中,全文查找函数MATCH(col1,col2,...)中指定的列必须完整的覆盖索引中的全文列,例如FULLTEXT INDEX(c1, c2, c3), CTXCAT(c2, c3) 必须是 MATCH(c2,c3) 才能完全的匹配 + + + + + + + + +* 全文查找函数可以通过上述的关键字来指定查找模式(OB目前只支持NATURAL LANGUAGE MODE和BOOLEAN MODE两种模式),缺省是NATURAL LANGUAGE MODE + + + + + + +默认情况下或者指定IN NATURAL LANGUAGE MODE标示符,MATCH...AGAINST将使用NATURAL LANGUAGE模式来进行全文查找,在NATURAL LANGUAGE模式下,AGAINST接受一个查找字符串,并且按照字符集的比较方式在索引中进行查找,对于表中的每一行数据,MATCH的返回值代表了查找字符串和行中数据的相关度,也就是查找字符串中的文本和数据表中的文本相似度。在默认情况下,OB创建的字符串相关的列是大小写不敏感的,因此,全文查找的关键字是不区分大小写的。如果需要区分大小写,可以为创建全文索引的列指定大小写敏感的数据类型,例如UTF8MB4_BIN。如果MATCH...AGAINST函数被用在WHERE子句中,MATCH被用来过滤跟关键字相关度不匹配的数据,MATCH...AGAINST=0表示没有和关键字相似的数据,目前OB只支持MATCH...AGAINST=0和MATCH...AGAINST\>0两种形式,即完全不相关或者有任意一个关键字相关即可。AGAINST参数中可以接受多个关键字,关键字之间使用' '隔开,表示OR关系,只要有任意一个关键字匹配,即认为符合查找的要求。 + +OB可以通过使用IN BOOLEAN MODE关键字来进行BOOLEAN模式的全文查找。在这种模式中,关键字前面一些特殊的操作符含有特殊的语义。例如: + +```javascript +SELECT * FROM t1 WHERE MATCH (a, b) AGAINST ('菊花 茉莉花' IN BOOLEAN MODE); ++----+------------+------------+ +| id | a | b | ++----+------------+------------+ +| 1 | 支付宝 | 菊花茶 | +| 2 | 淘宝 | 茉莉花 | ++----+------------+------------+ + +SELECT * FROM t1 WHERE MATCH (a, b) + AGAINST ('+菊花 -茉莉花' IN BOOLEAN MODE); ++----+------------+------------+ +| id | a | b | ++----+------------+------------+ +| 1 | 支付宝 | 菊花茶 | ++----+------------+------------+ +``` + + + +OB的BOOLEAN全文查找目前支持以下几种操作符:+ 代表AND关系,表示查找结果中同时要包含被+修饰的关键字- 代表NOT关系,表示查找结果中不能包含被-修饰的关键字。 + +```javascript +(no operator) 代表OR关系,表示查找结果中只要包含任意一个没有操作符修饰的关键字即可 +``` + + + +在BOOLEAN全文查找模式中有以下几点需要注意:操作符必须位于关键字的前面,关键字后面的操作符没有修饰意义,例如+菊花是有意义的操作符修饰,而菊花+中的操作符没有修饰意义。操作符和关键字必须紧密相连,不能被其它符号分割开,否者没有修饰意义,例如:+ 菊花前面的操作符没有修饰意义。 diff --git a/docs/docs/docs-cn/10.sql-reference/4.queries-and-subqueries/1.overview-8.md b/docs/docs/docs-cn/10.sql-reference/4.queries-and-subqueries/1.overview-8.md new file mode 100644 index 000000000..4fdf29622 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/4.queries-and-subqueries/1.overview-8.md @@ -0,0 +1,60 @@ +概述 +======================= + + + +查询(SQL)是指数据库中用来获取数据的方式,它可搭配条件限制的子句(如where),排列顺序的子句(如order by)等语句来获取查询结果。子查询是指嵌套在一个上层查询中的查询。上层的查询一般被称为父查询或外层查询。子查询的结果作为输入传递回"父查询"或"外部查询"。父查询将这个值结合到计算中,以便确定最后的输出。SQL语言允许多层嵌套查询,即一个子查询中还可以嵌套其他子查询。同时,子查询可以出现在SQL语句中的各种子句中,比如select语句,from语句,where语句等。 + +子查询 +------------ + +在数据库中,子查询可以分成有依赖关系的子查询和没有依赖关系的子查询。有依赖关系的子查询是指该子查询的执行依赖了外部查询的'变量',所以这种子查询通常会被计算多次。没有依赖关系的子查询是指该子查询的执行不依赖外部查询的'变量', 这种子查询一般只需要计算一次。下图分别展示了一个没有依赖关系的子查询和一个有依赖关系的子查询。 + +```javascript +OceanBase (root@test)> create table t1(a int primary key, b int, c int); +Query OK, 0 rows affected (0.70 sec) +OceanBase (root@test)> create table t2(a int primary key, b int, c int); +Query OK, 0 rows affected (0.92 sec) +-- 没有依赖关系的子查询 +OceanBase (root@test)> select * from t1 where t1.a in (select t2.a from t2); +Empty set (0.22 sec) +-- 有依赖关系的子查询,子查询中用到了外层查询变量t1.b +OceanBase (root@test)> select * from t1 where t1.a in (select t2.a from t2 where t2.b = t1.b); +Empty set (0.05 sec) +``` + + + + + +子查询展开(subquery unnesting) +---------------------------------- + +子查询展开是数据库的一种优化策略,它把一些子查询置于外层的父查询中,其实质是把某些子查询转化为等价的多表连接操作。这种策略带来的一个明显的好处就是,有写访问路径,连接方法和连接顺序可能被有效的利用,使得查询语句的层次尽可能的减少。下图展示了一个子查询展开的例子,既子查询被改写成了连接语句。 + +```javascript +OceanBase (root@test)> create table t1(a int primary key, b int, c int); +Query OK, 0 rows affected (0.70 sec) +OceanBase (root@test)> create table t2(a int primary key, b int, c int); +Query OK, 0 rows affected (0.92 sec) +--- 有依赖关系的子查询被展开改写成连接 +OceanBase (root@test)> explain select * from t1 where t1.a in (select t2.b from t2 where t2.c = t1.c); +| ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |HASH SEMI JOIN| |1 |2924| +|1 | TABLE SCAN |t1 |1000 |455 | +|2 | TABLE SCAN |t2 |1000 |455 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), + equal_conds([t1.a = t2.b], [t2.c = t1.c]), other_conds(nil) + 1 - output([t1.c], [t1.a], [t1.b]), filter(nil), + access([t1.c], [t1.a], [t1.b]), partitions(p0) + 2 - output([t2.c], [t2.b]), filter(nil), + access([t2.c], [t2.b]), partitions(p0) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/4.queries-and-subqueries/2.connection.md b/docs/docs/docs-cn/10.sql-reference/4.queries-and-subqueries/2.connection.md new file mode 100644 index 000000000..ceaa37d7b --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/4.queries-and-subqueries/2.connection.md @@ -0,0 +1,103 @@ +连接 +======================= + + + +数据库中的连接语句用于将数据库中的两个或多个表根据连接条件组合起来。由"连接"生成的集合, 可以被保存为表, 或者当成表来使用。连接语句的含义是把两张表的属性通过它们的值组合在一起。数据库中的连接类型一般包括inner join,outer join,semi-join和anti-join。其中Semi-join和Anti-join都是通过子查询改写得到,SQL本身并没有表述Anti-join和Semi-join的语法 + +连接条件 +------------- + +连接条件可以分为等值连接(比如t1.a = t2.b)和非等值连接(t1.a \< t2.b)。相比于非等值连接条件, 等值连接条件的一个好处是允许数据库中使用高效的连接算法,比如Hash Join和Merge-Sort join。 + +Self-join +------------------ + +Self-Join是指跟跟自己表做连接的join。下图展示了一个self join的例子。 + +```javascript +OceanBase (root@test)> create table t1(a int primary key, b int, c int); +Query OK, 0 rows affected (0.70 sec) +---一个self join的例子 +OceanBase (root@test)> select * from t1 as ta, t1 as tb where ta.b = tb.b +``` + + + + + +内连接(inner join) +------------------------ + +Inner Join(内连接)是数据库中最基本的连接操作。内连接基于连接条件将两张表(如 A 和 B)的列组合在一起,产生新的结果表。查询会将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接条件的组合。当连接条件被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。连接产生的结果集,可以定义为首先对两张表做笛卡尔积(交叉连接) -- 将 A 中的每一行和 B 中的每一行组合,然后返回满足连接条件的记录。 + +外连接(outer join) +------------------------ + +Outer Join(外连接)并不要求连接的两表的每一条记录在对方表中都一条匹配的记录。要保留所有记录(甚至这条记录没有匹配的记录也要保留)的表称为保留表 **。** 外连接可依据连接表保留左表, 右表或全部表的行而进一步分为左外连接, 右外连接和全连接。其中左外连接中左表的一行未在右表中找到的时候,就在右表自动填充NULL。右外连接中右表的一行未在左表中找到的时候,就在左表自动填充NULL。全连接就是左表或者右表找不匹配行的时候都会自动填充。 + +Semi连接 (semi-join) +--------------------------- + +当A表和B表进行left/right semi-join的时候,它只返回A/B表中所有能够在B/A中找到匹配的行。Semi-join只能通过子查询展开得到,如下图所示。 + +```javascript +OceanBase (root@test)> create table t1(a int primary key, b int, c int); +Query OK, 0 rows affected (0.70 sec) +OceanBase (root@test)> create table t2(a int primary key, b int, c int); +Query OK, 0 rows affected (0.92 sec) +--- 有依赖关系的子查询被展开改写成Semi-join +OceanBase (root@test)> explain select * from t1 where t1.a in (select t2.b from t2 where t2.c = t1.c); +| ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |HASH SEMI JOIN| |1 |2924| +|1 | TABLE SCAN |t1 |1000 |455 | +|2 | TABLE SCAN |t2 |1000 |455 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), + equal_conds([t1.a = t2.b], [t2.c = t1.c]), other_conds(nil) + 1 - output([t1.c], [t1.a], [t1.b]), filter(nil), + access([t1.c], [t1.a], [t1.b]), partitions(p0) + 2 - output([t2.c], [t2.b]), filter(nil), + access([t2.c], [t2.b]), partitions(p0) +``` + + + + + +Anti-连接(anti-join) +--------------------------- + +当A表和B表进行left/right anti-join的时候,它只返回A/B中所有不能再B/A中找到匹配的行。类似于Semi-join, anti-join也只能通过子查询展开得到,如下图所示。 + +```javascript +OceanBase (root@test)> create table t1(a int primary key, b int, c int); +Query OK, 0 rows affected (0.70 sec) +OceanBase (root@test)> create table t2(a int primary key, b int, c int); +Query OK, 0 rows affected (0.92 sec) +---有依赖关系的子查询被改写成Anti-join +OceanBase (root@test)> explain select * from t1 where t1.a not in (select t2.b from t2 where t2.c = t1.c); +| ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |HASH ANTI JOIN| |995 |3262| +|1 | TABLE SCAN |t1 |1000 |455 | +|2 | TABLE SCAN |t2 |1000 |455 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), + equal_conds([t2.c = t1.c]), other_conds([t1.a = t2.b OR (T_OP_IS, t2.b, NULL, 0)]) + 1 - output([t1.c], [t1.a], [t1.b]), filter(nil), + access([t1.c], [t1.a], [t1.b]), partitions(p0) + 2 - output([t2.c], [t2.b]), filter(nil), + access([t2.c], [t2.b]), partitions(p0) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/4.queries-and-subqueries/3.collection.md b/docs/docs/docs-cn/10.sql-reference/4.queries-and-subqueries/3.collection.md new file mode 100644 index 000000000..d40bf7851 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/4.queries-and-subqueries/3.collection.md @@ -0,0 +1,165 @@ +集合 +======================= + + + +数据库中的集合操作可以把多个查询的结果组合成一个结果集。集合操作主要包含: + +* UNION + + + + + + +* INTERSECT + + + + + + +* EXCEPT/MINUS在Ocenabase中,我们同时支持EXCEPT与MINUS,这两者的语义是相同的。这里需要注意的是参加集合操作的各查询结果的列数必须相同,对应的数据类型也必须兼容。对与UNION来说用户可以指定UNION的属性为ALL和DISTINCT/UNIQUE。分别代表集合可重复,和集合不可重复。而其它几种集合操作是不能指定ALL属性的(它们只有DISTINCT属性)。所有的集合操作默认的属性是DISTINCT。在Oceanbase中,集合操作中可以指定order by和 limit子句,但是不允许其他子句的出现,如下图所示 + + + + +```javascript +OceanBase (root@test)> create table t1(a int primary key, b int, c int); +Query OK, 0 rows affected (0.16 sec) +OceanBase (root@test)> create table t2(a int primary key, b int, c int); +Query OK, 0 rows affected (0.10 sec) +--支持union语句中出现order by和limit子句 +OceanBase (root@test)> (select * from t1 union all select * from t2) order by a limit 10; +Empty set (0.02 sec) +--不支持union语句中出现除order by和limit子句的其他子句,比如group by +OceanBase (root@test)> OceanBase (root@test)> (select * from t1 union all select * from t2) group by a limit 10; +ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'OceanBase (root@test)> (select * from t1 union all select * from t2) group by a ' at line 1 +``` + + + + + +UNION 例子 +----------------- + +该例子获取t1和t2中所有不重复的行。 + +```javascript +OceanBase (root@test)> create table t1(a int, b int, c int); +Query OK, 0 rows affected (0.12 sec) +OceanBase (root@test)> create table t2(a int, b int, c int); +Query OK, 0 rows affected (0.11 sec) +OceanBase (root@test)> insert into t1 values (1,1,1),(2,2,2),(3,3,3); +Query OK, 3 rows affected (0.07 sec) +Records: 3 Duplicates: 0 Warnings: 0 +OceanBase (root@test)> insert into t2 values (2,2,2),(3,3,3),(4,4,4); +Query OK, 3 rows affected (0.02 sec) +Records: 3 Duplicates: 0 Warnings: 0 +OceanBase (root@test)> select * from t1 union select * from t2; ++------+------+------+ +| a | b | c | ++------+------+------+ +| 1 | 1 | 1 | +| 2 | 2 | 2 | +| 3 | 3 | 3 | +| 4 | 4 | 4 | ++------+------+------+ +4 rows in set (0.01 sec) +``` + + + + + +UNION All 例子 +--------------------- + +该例子获取t1和t2中的所有行,不进行去重。 + +```javascript +OceanBase (root@test)> create table t1(a int, b int, c int); +Query OK, 0 rows affected (0.12 sec) +OceanBase (root@test)> create table t2(a int, b int, c int); +Query OK, 0 rows affected (0.11 sec) +OceanBase (root@test)> insert into t1 values (1,1,1),(2,2,2),(3,3,3); +Query OK, 3 rows affected (0.07 sec) +Records: 3 Duplicates: 0 Warnings: 0 +OceanBase (root@test)> insert into t1 values (2,2,2),(3,3,3),(4,4,4); +Query OK, 3 rows affected (0.02 sec) +Records: 3 Duplicates: 0 Warnings: 0 +OceanBase (root@test)> select * from t1 union all select * from t2; ++------+------+------+ +| a | b | c | ++------+------+------+ +| 1 | 1 | 1 | +| 2 | 2 | 2 | +| 3 | 3 | 3 | +| 2 | 2 | 2 | +| 3 | 3 | 3 | +| 4 | 4 | 4 | ++------+------+------+ +6 rows in set (0.02 sec) +``` + + + + + +INTERSECT 例子 +--------------------- + +该例子获取同时出现在t1和t2中行,并且去重。 + +```javascript +OceanBase (root@test)> create table t1(a int, b int, c int); +Query OK, 0 rows affected (0.12 sec) +OceanBase (root@test)> create table t2(a int, b int, c int); +Query OK, 0 rows affected (0.12 sec) +OceanBase (root@test)> insert into t1 values (1,1,1),(2,2,2),(3,3,3); +Query OK, 3 rows affected (0.02 sec) +Records: 3 Duplicates: 0 Warnings: 0 +OceanBase (root@test)> insert into t2 values (2,2,2),(3,3,3),(3,3,3),(4,4,4); +Query OK, 4 rows affected (0.01 sec) +Records: 4 Duplicates: 0 Warnings: 0 +OceanBase (root@test)> select * from t1 intersect select * from t2; ++------+------+------+ +| a | b | c | ++------+------+------+ +| 2 | 2 | 2 | +| 3 | 3 | 3 | ++------+------+------+ +2 rows in set (0.01 sec) +``` + + + + + +EXCEPT/MINUS 例子 +------------------------ + +该例子获取出现在t1中,但是不出现在t2中的行,并且去重。 + +```javascript +OceanBase (root@test)> create table t1(a int, b int, c int); +Query OK, 0 rows affected (0.12 sec) +OceanBase (root@test)> create table t2(a int, b int, c int); +Query OK, 0 rows affected (0.12 sec) +OceanBase (root@test)> insert into t1 values (1,1,1),(2,2,2),(3,3,3); +Query OK, 3 rows affected (0.02 sec) +Records: 3 Duplicates: 0 Warnings: 0 +OceanBase (root@test)> insert into t2 values (2,2,2),(3,3,3),(3,3,3),(4,4,4); +Query OK, 4 rows affected (0.01 sec) +Records: 4 Duplicates: 0 Warnings: 0 +OceanBase (root@test)> select * from t1 except select * from t2; ++------+------+------+ +| a | b | c | ++------+------+------+ +| 1 | 1 | 1 | ++------+------+------+ +1 row in set (0.02 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/1.general-syntax.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/1.general-syntax.md new file mode 100644 index 000000000..7358ef7bd --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/1.general-syntax.md @@ -0,0 +1,329 @@ +通用语法 +========================= + + + +常量 +----------- + +* `INT_VALUE`:匹配整数类型常量,如`123`。 + + + + + + +* `DECIMAL_VALUE`:匹配定点类型常量,如`123.456`。 + + + + + + +* `STR_VALUE`:匹配字符串常量,如`abc`。 + + + + + + +* `NULL`:匹配NULL常量。 + + + + + + +* `STORAGE_SIZE`:匹配存储长度常量,整数形式默认单位为字节,字符串形式可指定单位为M或G,如`1024`或`'500M'`。 + + + + +```javascript +const_value: + INT_VALUE + | DECIMAL_VALUE + | STR_VALUE + | NULL + | STORAGE_SIZE + +STORAGE_SIZE: + INT_VALUE + | 'INT_VALUE[M|G]' +``` + + + + + +字符集 +------------ + +```javascript +charset: + default_charset + | column_charset + +default_charset: + [DEFAULT] {CHARSET | CHARACTER SET} [=] {UTF8 | UTF8MB4 | BINARY} + +column_charset: + {CHARSET | CHARACTER SET} {UTF8 | UTF8MB4 | BINARY} +``` + + + + + +排序规则 +------------- + +```javascript +collate: + default_collate + | column_collate + +default_collate: + [DEFAULT] COLLATE [=] {UTF8MB4_GENERAL_CI | UTF8MB4_BIN | BINARY} + +column_collate: + COLLATE {UTF8MB4_GENERAL_CI | UTF8MB4_BIN | BINARY} +``` + + + + + +数据类型 +------------- + +```javascript +data_type: + TINYINT[(precision)] [UNSIGNED] [ZEROFILL] + | SMALLINT[(precision)] [UNSIGNED] [ZEROFILL] + | MEDIUMINT[(precision)] [UNSIGNED] [ZEROFILL] + | INT[(precision)] [UNSIGNED] [ZEROFILL] + | INTEGER[(precision)] [UNSIGNED] [ZEROFILL] + | BIGINT[(precision)] [UNSIGNED] [ZEROFILL] + | FLOAT[(precision, scale)] [UNSIGNED] [ZEROFILL] + | DOUBLE[(precision, scale)] [UNSIGNED] [ZEROFILL] + | DECIMAL[(precision [, scale])] [UNSIGNED] [ZEROFILL] + | NUMERIC[(precision [, scale])] [UNSIGNED] [ZEROFILL] + | DATETIME[(scale)] + | TIMESTAMP[(scale)] + | DATE + | TIME[(scale)] + | YEAR + | VARCHAR(length) column_charset column_collate + | VARBINARY(length) + | CHAR[(length)] column_charset column_collate + | BINARY[(length)] + | TINYTEXT column_charset column_collate + | TINYLOB + | TEXT[(length)] column_charset column_collate + | BLOB[(length)] + | MEDIUMTEXT column_charset column_collate + | MEDIUMBLOB + | LONGTEXT column_charset column_collate + | LONGBLOB + +precision | scale | length: + INT_VALUE +``` + + + + + +SQL属性 +-------------- + +* 对象名 + + + + +```javascript +tenant_name | pool_name | unit_name | zone_name | region_name: + STR_VALUE + +database_name | table_name | table_alias_name | column_name| column_alias_name | partition_name | subpartition_name: + STR_VALUE + +index_name | view_name | object_name | constraint_name | tablegroup_name: + STR_VALUE + +outline_name | user_name: + STR_VALUE + +table_factor: + [[database_name].] table_name + +column_factor: + [table_factor.] column_name +``` + + + + + +* 表达式 + + + + +```javascript +expression: + const_value + | column_factor + | operator_expression + | function_expression +``` + + + + + +* 注释 + + + + +```javascript +comment: + COMMENT 'comment_text' + +comment_text: + STR_VALUE +``` + + + + + +分布式属性 +-------------- + + + +* `PRIMARY_ZONE`:指定数据的主副本分布策略。 + + + + +```javascript +primary_zone: +PRIMARY_ZONE [=] zone_name +``` + + + + + +* `ZONE_LIST`:指定租户的资源分布策略。 + + + + +```javascript +zone_list: +ZONE_LIST [=] (zone_name [, zone_name ...]) +``` + + + + + +* `REPLICA_NUM`:指定数据的副本份数。 + + + + +```javascript +replica_num: +REPLICA_NUM [=] INT_VALUE +``` + + + + + +* `TABLEGROUP`:指定多份数据的主副本分布策略。 + + + + +```javascript +tablegroup: + default_tablegroup + | table_tablegroup + +default_tablegroup: + DEFAULT TABLEGROUP [=] {tablegroup_name | NULL} + +table_tablegroup: + TABLEGROUP [=] {tablegroup_name | NULL} +``` + + + + + +存储属性 +------------- + + + +* `BLOCK_SIZE`:指定对象存储的微块长度。 + + + + +```javascript +block_size: +BLOCK_SIZE [=] INT_VALUE +``` + + + + + +* `COMPRESSION`:指定对象存储的压缩算法。 + + + + +```javascript +compression: +COMPRESSION [=] {NONE | LZ4_1.0 | LZ0_1.0 | SNAPPY_1.0 | ZLIB_1.0} +``` + + + + + +* `PCTFREE`:指定对象存储的宏块预留百分比。 + + + + +```javascript +pctfree: +PCTFREE [=] INT_VALUE +``` + + + + + +* `TABLET_SIZE`:指定并行合并时单个任务的最小分片。 + + + + +```javascript +tablet_size: +TABLET_SIZE [=] INT_VALUE +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/10.alter-user.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/10.alter-user.md new file mode 100644 index 000000000..387414257 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/10.alter-user.md @@ -0,0 +1,109 @@ +ALTER USER +=============================== + + + +描述 +----------- + +该语句主要用于执行以下操作: + +* 修改 OceanBase 用户的密码。 + +* 锁定或者解锁用户,且被锁定的用户不允许登录。 + + + + + +**说明** + + + +必须拥有全局 UPDATE USER 的权限,才可以执行本命令。 + +格式 +----------- + +* 修改用户密码 + + + + +```javascript +ALTER USER 'username' IDENTIFIED BY 'password'; +``` + + + +* 锁定用户 + + + + +```javascript +ALTER USER user [lock_option] + +lock_option:{ +ACCOUNT LOCK +| ACCOUNT UNLOCK} +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|----------------|--------| +| ACCOUNT UNLOCK | 锁定用户。 | +| ACCOUNT UNLOCK | 解锁用户。 | + + + +示例 +----------- + +* 修改密码 + + + + +执行以下命令将用户 sqluser01 的密码修改为 abc123。 + +```javascript +ALTER USER 'sqluser01' IDENTIFIED BY 'abc123'; +``` + + + +* 锁定用户 + + + + +锁定用户 obsqluser01。 + +```javascript +ALTER USER 'obsqluser01' ACCOUNT LOCK; +``` + + + +* 解锁用户 + + + + +解锁用户 obsqluser01。 + +```javascript +ALTER USER 'obsqluser01' ACCOUNT UNLOCK; +``` + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/11.create-database.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/11.create-database.md new file mode 100644 index 000000000..4f4bfe0ad --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/11.create-database.md @@ -0,0 +1,74 @@ +CREATE DATABASE +==================================== + + + +描述 +----------- + +该语句用于创建数据库,并可以指定数据库的默认属性(如数据库默认字符集,校验规则等)。 + +格式 +----------- + +```javascript +create_database_stmt: + CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] database_name [database_option_list] + +database_option_list: + database_option [database_option ...] + +database_option: + [DEFAULT] {CHARACTER SET | CHARSET} [=] charset_name + | [DEFAULT] COLLATE [=] collation_name + | REPLICA_NUM [=] int_num + | PRIMARY_ZONE [=] zone_name + | {READ ONLY | READ WRITE} + | DEFAULT TABLEGROUP [=] {NULL | table_group_name} +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-------------------------------------|------------------------------------| +| database_name | 指定要修改属性的数据库名称。如果不指定,会对当前默认数据库进行修改。 | +| CHARSET charset_name | 指定要修改的字符集。 | +| COLLATE collation_name | 指定校对规则。 | +| REPLICA_NUM int_num | 指定副本数。 | +| PRIMARY_ZONE zone_name | 指定主Zone。 | +| READ ONLY \| READ WRITE | 设置数据库级只读或读写属性。 | +| DEFAULT TABLEGROUP table_group_name | 设置数据库默认表组信息,NULL表示取消数据库默认表组。 | + + + +示例 +----------- + +* 创建数据库 test2,并指定字符集为UTF8。 + + + + +```javascript +OceanBase(admin@test)>create database test2 default CHARACTER SET UTF8; +Query OK, 1 row affected (0.00 sec) +``` + + + +* 创建读写属性的数据库test3。 + + + + +```javascript +OceanBase(admin@test)>create database test3 READ WRITE; +Query OK, 1 row affected (0.03 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/12.create-index.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/12.create-index.md new file mode 100644 index 000000000..54201821c --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/12.create-index.md @@ -0,0 +1,102 @@ +CREATE INDEX +================================= + + + +描述 +----------- + +该语句用来创建索引。索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构。其作用主要在于提高查询的速度,降低数据库系统的性能开销。 + +格式 +----------- + +```javascript +CREATE [UNIQUE] INDEX indexname +     ON tblname (index_col_name,...) + [index_type] [index_options] +index_type: + USING BTREE + +index_options: + index_option [index_option...] + +index_option: + GLOBAL | LOCAL + | COMMENT 'string' + | COMPRESSION [=] {NONE | LZ4_1.0 | LZO_1.0 | SNAPPY_1.0 | ZLIB_1.0} + | BLOCK_SIZE [=] size + | STORING(columname_list) + | VISIBLE | INVISIBLE + +index_col_name: + colname [(length)] [ASC | DESC] + +columname_list: + colname [, colname...] +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-----------------|---------------------------------------------------------------------------------------------------------------------------| +| indexname | 指定要创建的索引名称。 | +| tblname | 指过索引所属的表名。 | +| index_col_name | 指定索引的列名,每个列名后都支持ASC(升序),不支持DESC(降序)。默认为升序。 建立索引的排序方式为:首先以index_col_name中第一个列的值排序;该列值相同的记录,按下一列名的值排序;以此类推。 | +| index_type | 索引类型,只支持USING BTREE,以B树为索引。 | +| UNIQUE | 指定为唯一索引。 | +| index_option | 指定索引选项,多个index_option以空格分隔。 | +| GLOBAL \| LOCAL | 指定该索引是全局索引或局部索引,默认是GLOBAL。 | +| COMMENT | 指定注释。 | +| COMPRESSION | 指定压缩算法。 | +| BLOCK_SIZE | 指定微块大小。 | +| STORING | 表示索引表中冗余存储某些列,以提高系统查询性能。 | + + + +示例 +----------- + +1. 执行以下命令,创建表test。 + + + + + + +```javascript +CREATE TABLE test (c1 int primary key, c2 VARCHAR(10)); +``` + + + +2. 执行以下命令,创建表test的索引。 + + + + + + +```javascript +CREATE INDEX test_index ON test (c1, c2 DESC); +``` + + + +3. 执行以下命令,查看表test的索引。 + + + + + + +```javascript +SHOW INDEX FROM test; +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/13.create-outline.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/13.create-outline.md new file mode 100644 index 000000000..46345feef --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/13.create-outline.md @@ -0,0 +1,92 @@ +CREATE OUTLINE +=================================== + + + +描述 +----------- + +该语句用来创建 OUTLINE。可以通过两种方式创建,一种是通过 SQL_TEXT(用户执行的带参数的原始语句),另一种是通过 SQL_ID 创建。 +**说明** + + + +创建 OUTLINE 需要进入对应的 DataBase 下执行。 + +格式 +----------- + +* **使用** **SQL_TEXT 创建** **OUTLINE** + + + + +```javascript +CREATE [OR REPLACE] OUTLINE outline_name ON stmt [ TO target_stmt ] +``` + + + +* **使用** **SQL_ID 创建** **OUTLINE** + + + + +```javascript +CREATE OUTLINE outline_name ON sql_id USING HINT hint; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| outline_name | 指定要创建的 OUTLINE 名称。 | +| OR REPLACE | 指定 OR REPLACE 后,如果要创建的 OUTLINE 已存在,则会替换原有的 OUTLINE。 | +| stmt | 一般为一个带有 hint 和原始参数的 DML 语句。 | +| TO target_stmt | 如果不指定 TO target_stmt, 则表示如果数据库接受的SQL参数化后与stmt去掉hint参数化文本相同,则将该SQL绑定stmt中hint生成执行计划;如果期望对含有hint的语句进行固定计划,则需要 TO target_stmt 来指明原始的SQL。 **注意** 在使用target_stmt时,严格要求stmt与target_stmt在去掉hint后完全匹配。 | +| sql_id | 如果sql_id对应的SQL语句已经有hint,则创建OUTLINE指定的hint会覆盖原始语句中所有hint。 | +| hint | 格式为 /\*+ xxx \*/ 。 | + + + +示例 +----------- + +* 使用 SQL_TEXT 创建 OUTLINE + + + + +```javascript +CREATE OUTLINE otl_idx_c2 +ON SELECT/*+ index(t1 idx_c2)*/ * FROM t1 WHERE c2 = 1; +``` + + + + + +* 使用 SQL_ID 创建 OUTLINE + + + + +```javascript +CREATE OUTLINE otl_idx_c2 +ON "ED570339F2C856BA96008A29EDF04C74" +USING HINT /*+ index(t1 idx_c2)*/ ; +``` + + + + + +注意事项 +------------- + +使用 SQL_TEXT 方式创建的 OUTLINE 会覆盖 SQL_ID 方式创建的 OUTLINE,SQL_TEXT 方式创建的优先级高。 diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/14.create-resource-pool.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/14.create-resource-pool.md new file mode 100644 index 000000000..54463ce81 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/14.create-resource-pool.md @@ -0,0 +1,50 @@ +CREATE RESOURCE POOL +========================================= + + + +描述 +----------------------- + +该语句用来创建资源池,用于描述可以分配给租户的资源单元集合。 + +格式 +----------------------- + +```javascript +CREATE RESOURCE POOL poolname +UNIT [=] unitname, +UNIT_NUM [=] unitnum, +ZONE_LIST [=] ('zone' [, 'zone' ...]); +``` + + + +参数解释 +------------------------- + + + +| **参数** | **描述** | +|-----------|---------------------------------------------------| +| poolname | 指定要创建的资源池的名称。 | +| UNIT | 指定资源单元的名称。 | +| UNIT_NUM | 指定要创建的单个 Zone 下的单元个数,取值要小于单个 Zone 中的 OBServer 个数。 | +| ZONE_LIST | 指定要创建的资源池所属的集群。 | + + + +示例 +----------------------- + +* 创建资源池 `pool1`,属于集群 `zone1`。 + + ```javascript + obclient> CREATE RESOURCE POOL pool1 UNIT='unit1', UNIT_NUM=1, ZONE_LIST=('zone1'); + Query OK, 0 rows affected (0.01 sec) + ``` + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/15.create-resource-unit.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/15.create-resource-unit.md new file mode 100644 index 000000000..d87b44696 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/15.create-resource-unit.md @@ -0,0 +1,72 @@ +CREATE RESOURCE UNIT +========================================= + + + +描述 +----------- + +该语句用来创建资源单元配置,描述了分配硬件资源的规格,用于给租户分配硬件资源。 + +格式 +----------- + +```javascript +CREATE RESOURCE UNIT unitname +MAX_CPU [=] cpunum, +MAX_MEMORY [=] memsize, +MAX_IOPS [=] iopsnum, +MAX_DISK_SIZE [=] disksize, +MAX_SESSION_NUM [=] sessionnum, +[MIN_CPU [=] cpunum,] +[MIN_MEMORY [=] memsize,] +[MIN_IOPS [=] iopsnum] ; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-----------------|---------------------------------------------------| +| MAX_CPU | 指定要修改的 CPU 最多数量 | +| MAX_MEMORY | 指定要修改的最大内存容量,取值范围为\[1073741824, +∞) 单位为字节,即最小值为1G | +| MAX_IOPS | 指定要修改的 IOPS 最多数量,取值范围为\[128,+∞) | +| MAX_DISK_SIZE | 指定要修改的最大硬盘容量,取值范围为[536870912,+∞]单位为字节,即最小值为512M | +| MAX_SESSION_NUM | 指定要修改的 session 最多数量,取值范围为\[64,+∞) | +| MIN_CPU | 指定要修改的 CPU 最少数量 | +| MIN_MEMORY | 指定要修改的最小内存容量 | +| MIN_IOPS | 指定要修改的 IOPS 最少数量 | + + + +示例 +----------- + +* 创建资源单元 unit1 配置为1 个 CPU,1G 内存,128 个 IOPS,10G 硬盘容量,运行64个 session。 + + + + +```javascript +OceanBase(admin@test)> CREATE RESOURCE UNIT unit1 max_cpu 1, max_memory '1G', max_iops 128,max_disk_size '10G', max_session_num 64, MIN_CPU=1, MIN_MEMORY= '1G', MIN_IOPS=128; +Query OK, 0 rows affected (0.02 sec) +``` + + + +* 创建资源单元 unit1 配置为1 个 CPU,1G 内存,128个 IOPS,10G 硬盘容量,运行64个 session。 + + + + +```javascript +OceanBase(admin@test)> CREATE RESOURCE UNIT unit1 max_cpu 1, max_memory 1073741824, max_iops 128, max_disk_size 10737418240, max_session_num 64, MIN_CPU=1, MIN_MEMORY=1073741824, MIN_IOPS=128; +Query OK, 0 rows affected (0.01 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/16.create-restore-point.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/16.create-restore-point.md new file mode 100644 index 000000000..4329d8e2e --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/16.create-restore-point.md @@ -0,0 +1,52 @@ +CREATE RESTORE POINT +========================================= + + + +描述 +----------------------- + +该语句用来创建还原点(Restore Point)。使用该功能可以保留当前时刻的数据快照,并在之后指定在这个数据快照上进行查询。目前还不支持将数据回滚到该还原点。 + +创建还原点后,可以在 V$RESTORE_POINT 视图中查询到该还原点的 SNAPSHOT 值,然后通过 `SELECT * FROM table_name AS OF SNAPSHOT snapshot;` 查询数据快照中的值。 +**注意** + + + +系统租户不支持创建还原点。 + +格式 +----------------------- + +```unknow +CREATE RESTORE POINT restore_point; +``` + + + +参数解释 +------------------------- + + + +| 参数 | 描述 | +|---------------|----------| +| restore_point | 指定还原点名称。 | + + + +示例 +----------------------- + +* 创建一个还原点 rp1。 + + ```unknow + obclient> CREATE RESTORE POINT rp1; + Query OK, 0 rows affected (0.01 sec) + ``` + + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/17.create-synonym.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/17.create-synonym.md new file mode 100644 index 000000000..ac5bd5295 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/17.create-synonym.md @@ -0,0 +1,134 @@ +CREATE SYNONYM +=================================== + + + +描述 +----------- + +该语句用来创建一个同义词。 + +格式 +----------- + +```javascript +CREATE [ OR REPLACE ] [ PUBLIC ] +SYNONYM [ DATABASE. ]synonym +FOR [ DATABASE. ]object; +``` + + + + + +参数说明 +------------- + + + +| **参数** | **描述** | +|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OR REPLACE | 表示如果要创建的同义词名称已存在,则使用新的定义重新创建同义词。 | +| PUBLIC | 指定PUBLIC来创建公共同义词,所有用户都可以使用。用户必须对基础对象具有相应的权限才能使用该同义词。 在解析对象的引用时,仅当对象没有指定DataBase时,才会使用公共同义词。 如果不指定PUBLIC,则同义词是私有的,只能当前DataBase访问,并且同义词名称在当前DataBase中必须唯一。 | +| \[ DataBase. \]synonym | DataBase指定当前同义词属于哪个DataBase,如果指定了PUBLIC,则对同义词不需要指定DataBase;synonym表示同义词的名称。 | +| \[ DataBase. \]object | 表示同义词对应对象的名称。 | + + + + + +举例 +----------- + +* 创建一个同义词。 + + + + +```javascript +OceanBase(admin@test)>create table t1(c1 int); +Query OK, 0 rows affected (0.18 sec) + +OceanBase(admin@test)>create synonym s1 for t1; +Query OK, 0 rows affected (0.05 sec) + +OceanBase(admin@test)>insert into s1 values(1); +Query OK, 1 row affected (0.02 sec) + +OceanBase(admin@test)>select * from s1; ++------+ +| c1 | ++------+ +| 1 | ++------+ +1 row in set (0.01 sec) +``` + + + +* 创建一个PUBLIC同义词 + + + + +```javascript +OceanBase(admin@test)>create public synonym syn_pub for t1; +Query OK, 0 rows affected (0.03 sec) + +OceanBase(admin@test)>select * from syn_pub; ++------+ +| c1 | ++------+ +| 1 | ++------+ +1 row in set (0.01 sec) +``` + + + + + +注意事项 +------------- + +创建同义词时,需要满足如下权限要求: + +* 在当前的DataBase下创建私有的synonym,需要CREATE SYNONYM权限 + +* 在非当前DataBase下创建私有的synonym,需要CREATE ANY SYNONYM权限 + +* 创建PUBLIC的synonym,需要CREATE PUBLIC SYNONYM权限 + +* 对于需要创建synonym的对象不需要存在,也不需要具有访问权限 + + + + +```javascript +连接sys用户: +OceanBase(ADMIN@TEST)>CREATE USER syn_user IDENTIFIED BY syn_user; +Query OK, 0 rows affected (0.06 sec) + +OceanBase(ADMIN@TEST)>grant CREATE on syn_user.* to syn_user; +Query OK, 0 rows affected (0.02 sec) + +OceanBase(ADMIN@TEST)>grant SELECT on syn_user.* to syn_user; +Query OK, 0 rows affected (0.03 sec) + + +连接syn_user +//创建同义词失败 +OceanBase(SYN_USER@(none))>create synonym syn_1 for t1; +ERROR-00600: internal error code, arguments: -5036, Access denied; you need (at least one of) the CREATE SYNONYM privilege(s) for this operation + +连接sys用户,给定CREATE SYNONYM权限 +OceanBase(ADMIN@TEST)>grant CREATE SYNONYM on *.* to syn_user; +Query OK, 0 rows affected (0.03 sec) + +连接syn_user +OceanBase(SYN_USER@(none))>create synonym syn_1 for t1; +Query OK, 0 rows affected (0.05 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/18.create-table.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/18.create-table.md new file mode 100644 index 000000000..6cd8497ae --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/18.create-table.md @@ -0,0 +1,289 @@ +CREATE TABLE +================================= + + + +描述 +----------- + +该语句用来在数据库中创建一张新表。 + +格式 +----------- + +```javascript +CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name + (table_definition_list) [table_option_list] [partition_option] [AS] select; + +CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name + LIKE table_name; + +table_definition_list: + table_definition [, table_definition ...] + +table_definition: + column_definition + | [CONSTRAINT [constraint_name]] PRIMARY KEY index_desc + | [CONSTRAINT [constraint_name]] UNIQUE {INDEX | KEY} [index_name] index_desc + | {INDEX | KEY} [index_name] index_desc + | FULLTEXT [INDEX | KEY] [index_name] fulltext_index_desc + +column_definition_list: + column_definition [, column_definition ...] + +column_definition: + column_name data_type + [DEFAULT const_value] [AUTO_INCREMENT] + [NULL | NOT NULL] [[PRIMARY] KEY] [UNIQUE [KEY]] comment + +index_desc: + (column_desc_list) [index_type] [index_option_list] + +fulltext_index_desc: + (column_desc_list) CTXCAT(column_desc_list) [index_option_list] + +column_desc_list: + column_desc [, column_desc ...] + +column_desc: + column_name [(length)] [ASC | DESC] + +index_type: + USING BTREE + +index_option_list: + index_option [ index_option ...] + +index_option: + [GLOBAL | LOCAL] + | block_size + | compression + | STORING(column_name_list) + | comment + +table_option_list: + table_option [ table_option ...] + +table_option: + [DEFAULT] {CHARSET | CHARACTER SET} [=] charset_name + | [DEFAULT] COLLATE [=] collation_name + | primary_zone + | replica_num + | table_tablegroup + | block_size + | compression + | AUTO_INCREMENT [=] INT_VALUE + | comment + | DUPLICATE_SCOPE [=] "none|zone|region|cluster" + | LOCALITY [=] "locality description" + | ROW_FORMAT [=] REDUNDANT|COMPACT|DYNAMIC|COMPRESSED|DEFAULT + | PCTFREE [=] num + | parallel_clause + +parallel_clause: + {NOPARALLEL | PARALLEL integer} + +partition_option: + PARTITION BY HASH(expression) + [subpartition_option] PARTITIONS partition_count + | PARTITION BY KEY([column_name_list]) + [subpartition_option] PARTITIONS partition_count + | PARTITION BY RANGE {(expression) | COLUMNS (column_name_list)} + [subpartition_option] (range_partition_list) + | PARTITION BY LIST {(expression) | COLUMNS (column_name_list)} + [subpartition_option] PARTITIONS partition_count + +subpartition_option: + SUBPARTITION BY HASH(expression) + SUBPARTITIONS subpartition_count + | SUBPARTITION BY KEY(column_name_list) + SUBPARTITIONS subpartition_count + | SUBPARTITION BY RANGE {(expression) | COLUMNS (column_name_list)} + (range_subpartition_list) + | SUBPARTITION BY LIST(expression) + +range_partition_list: + range_partition [, range_partition ...] + +range_partition: + PARTITION partition_name + VALUES LESS THAN {(expression_list) | MAXVALUE} + +range_subpartition_list: + range_subpartition [, range_subpartition ...] + +range_subpartition: + SUBPARTITION subpartition_name + VALUES LESS THAN {(expression_list) | MAXVALUE} + +expression_list: + expression [, expression ...] + +column_name_list: + column_name [, column_name ...] + +partition_name_list: + partition_name [, partition_name ...] + +partition_count | subpartition_count: + INT_VALUE +``` + + + +参数说明 +------------- + + + +| **参数** | **描述** | +|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| DUPLICATE_SCOPE | 用来指定复制表属性,取值如下: * none:表示该表是一个普通表 * zone:表示该表是一个复制表,leader需要将事务复制到本zone的所有F副本及R副本 * region:表示该表是一个复制表,leader需要将事务复制到本region的所有F副本及R副本 * cluster:表示该表是一个复制表,leader需要将事务复掉到cluster的所有F副本及R副本 不指定DUPLICATE_SCOPE的情况下,默认值为none。 | +| ROW_FORMAT | 指定表是否开启encoding存储格式 * redundant * compact * dynamic * compressed * default | +| BLOCK_SIZE | 指定表的微块大小 | +| COMPRESSION | 指定表的压缩算法,取值如下: 1. none:不使用压缩算法 2. lz4_1.0: 使用lz4压缩算法 3. zstd_1.0: 使用zstd压缩算法 4. snappy_1.0: 使用snappy压缩算法 | +| CHARSET \| CHARACTER SET | 指定表中列的默认字符集,可使用:utf8, utf8mb4, gbk, utf16, gb18030 | +| COLLATE | 指定表中列的默认比较规则,可使用: utf8_bin, utf8_general_ci, utf8_unicode_ci, gbk_bin, gbk_chinese_ci, utf8mb4_general_ci, utf8mb4__general_cs, utf8mb4_bin, utf8mb4_unicode_ci, utf16_general_ci, utf16_bin, utf16_unicode_ci, gb18030_chinese_ci, gb18030_bin | +| primary_zone | 指定主Zone(副本Leader所在 Zone)。 | +| replica_num | 指定副本数。 | +| table_tablegroup | 指定表所属的talegroup。 | +| AUTO_INCREMENT | 指定表中自增列的初始值。 | +| comment | 注释。 | +| LOCALITY | 描述副本在Zone间的分布情况,如:F@z1,F@z2,F@z3,R@z4 表示z1, z2, z3为全功能副本,z4为只读副本。 | +| PCTFREE | 指定宏块保留空间百分比。 | +| parallel_clause | 指定表级别的并行度: * NOPARALLEL:并行度为1,默认配置 * PARALLEL integer:指定并行度,integer 取值大于等于 1。 | + + + +举例 +----------- + +* 创建数据库表。 + + + + + + +```javascript +CREATE TABLE test (c1 int primary key, c2 VARCHAR(50)) REPLICA_NUM = 3, PRIMARY_ZONE = 'zone1'; +``` + + + +* 创建表,并指定垂直分区。其中第一个分区只有列 c3,第二个分区包含列 c1、c2,没有列出的 c4、c5 列为第三个分区。 + + + + + + +```javascript +CREATE TABLE t1(c1 int, +c2 int, +c3 int, +c4 int, +c5 int) +PARTITION BY CLOUMN ( c3, (c1, c2)); +``` + + + +* 创建一个复制表。 + + + + + + +```javascript +CREATE TABLE item() locality = 'F,R{all_server}@hz1, F,R{all_server}@hz2, +F,R{all_server}@hz3' DUPLICATE_SCOPE="cluster" +``` + + + +* 创建带索引的表。 + + + + + + +```javascript +create table t1 (c1 int primary key, c2 int, c3 int, index i1 (c2)); +``` + + + +* 创建 hash 分区,分区数为 8 的表。 + + + + + + +```javascript +create table t1 (c1 int primary key, c2 int) partition by hash(c1) partitions 8; +``` + + + +* 创建一级分区为 range 分区,二级分区为 key 分区的表。 + + + + + + +```javascript +create table t1 (c1 int, c2 int, c3 int) +partition by range(c1) subpartition by key(c2, c3) subpartitions 5 +(partition p0 values less than(0), partition p1 values less than(100)); +``` + + + +* 创建一列为 gbk, 一列为 utf8 的表。 + + + + + + +```javascript +create table t1 (c1 varchar(10), + c2 varchar(10) charset gbk collate gbk_bin) + default charset utf8 collate utf8mb4_general_ci; +``` + + + +* 开启 encoding 并使用 zstd 压缩,宏块保留空间为 5%。 + + + + + + +```javascript +create table t1 (c1 int, c2 int, c3 varchar(64)) +compression 'zstd_1.0' +ROW_FORMAT dynamic +pctfree 5; +``` + + + +* 创建表 t1,并设置并行度为 3。 + + + + + + +```unknow +create table t1(c1 int primary key, c2 int) parallel 3; +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/19.create-tablegroup.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/19.create-tablegroup.md new file mode 100644 index 000000000..6cb955942 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/19.create-tablegroup.md @@ -0,0 +1,101 @@ +CREATE TABLEGROUP +====================================== + + + +描述 +----------- + +该语句用来创建表组。 +**说明** + + + +只有租户下的管理员权限才可以创建表组。 + +格式 +----------- + +```javascript +CREATE TABLEGROUP [IF NOT EXISTS] tablegroupname [opt_tablegroup_option_list] [opt_tg_partition_option] + +opt_tablegroup_option_list: +tablegroup_option [tablegroup_option] + +tablegroup_option: +LOCALITY [=] locality_name +| PRIMARY_ZONE [=] primary_zone_name + +opt_tg_partition_option: +PARTITION BY + KEY COLUMN_NUM [tg_subpartition_option] PARTITIONS INTNUM +| HASH [tg_subpartition_option] PARTITIONS INTNUM +| RANGE [tg_subpartition_option] {PARTITION partition_name VALUES LESS THAN range_partition_expr, ...} +| RANGE COLUMNS COLUMN_NUM [tg_subpartition_option] {PARTITION partition_name VALUES LESS THAN range_partition_expr, ...} +| LIST [tg_subpartition_option] {PARTITION partition_name VALUES in list_partition_expr, ...} +| LIST COLUMNS COLUMN_NUM [tg_subpartition_option] {PARTITION partition_name VALUES in list_partition_expr, ...} + +tg_subpartition_option: +SUBPARTITION BY + RANGE SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...} +| RANGE COLUMNS COLUMN_NUM SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...} +| HASH [SUBPARTITIONS INTNUM] +| KEY COLUMN_NUM [SUBPARTITIONS INTNUM] +| LIST SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES in list_partition_expr, ...} +| LIST COLUMNS COLUMN_NUM SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES in list_partition_expr, ...} +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| tablegroupname | 表组名称,最长64个字符,字符只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能OceanBase的关键字。 如果要创建的表组名称已存在,并且没有指定IF NOT EXISTS,则会出现错误。 | +| opt_tablegroup_option_list | 表组的分区方式、locality、primary zone必须和组内的表完全一致。 组内的表信息不能独立变更某一项,只可以通过操作表组进行批量操作。 相同的locality:副本类型、个数、位置要完全一致 相同的primary zone:leader位置及其优先级要完全一致 相同的分区方式: * 分区类型相同(例如,都是hash+range分区)。 * 如果是key分区,要求引用的列数相同,且分区个数相同。 * 如果是hash分区,要求分区个数相同。 * 如果是range columns分区,要求引用的列数相同,且分区数相同,且range分割点相同。 * 如果是range分区,且分区数相同,且range分割点相同。 * 对于二级分区,根据分区类型,要求和1)\~4)一致 | +| opt_tg_partition_option | 表组的分区规则定义,与CREATE TABLE使用同样的分区方式。 表组没有具体的列定义,所以KEY、RANGE COLUMNS、LIST COLUMNS不需要写出具体的列,只需要指定列个数(COLUMN_NUM)。 | + + + +示例 +----------- + +* 创建名为 myTableGroup1 的表组。 + + + + +```javascript +OceanBase(admin@test)> CREATE TABLEGROUP myTableGroup1; +Query OK, 0 rows affected (0.07 sec) + +OceanBase(admin@test)> create table myt1 (c1 int, c2 int ) tablegroup = myTableGroup1; +Query OK, 0 rows affected (0.28 sec) + +OceanBase(admin@test)> create table myt2 (c1 int, c2 int ) tablegroup = myTableGroup1; +Query OK, 0 rows affected (0.26 sec) +``` + + + +* 创建 hash 分区的表组 tgh,同时创建 hash 分区的表ttgh,且分区个数相同。 + + + + +```javascript +OceanBase(admin@test)> create tablegroup tgh locality='F,R{ALL_SERVER}@z1' partition by hash partitions 10; +Query OK, 0 rows affected (0.09 sec) + +OceanBase(admin@test)> create table ttgh(c1 int, c2 int) locality='F,R{ALL_SERVER}@z1' partition by hash(c1) partitions 10; +Query OK, 0 rows affected (0.55 sec) + +OceanBase(admin@test)> create table ttgh2(c1 int, c2 int) locality='F,R{ALL_SERVER}@z1' partition by hash(c2) partitions 10; +Query OK, 0 rows affected (0.39 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/2.alter-database.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/2.alter-database.md new file mode 100644 index 000000000..dbc23850f --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/2.alter-database.md @@ -0,0 +1,69 @@ +ALTER DATABASE +=================================== + + + +描述 +----------- + +该语句用来修改 DataBase 的属性。 + +格式 +----------- + +```javascript +alter_database_stmt: + ALTER DATABASE [database_name] [SET] alter_specification_list; + +alter_specification_list: + alter_specification [alter_specification ...] + +alter_specification: + [DEFAULT] {CHARACTER SET | CHARSET} [=] charset_name + | [DEFAULT] COLLATE [=] collation_name + | REPLICA_NUM [=] int_num + | PRIMARY_ZONE [=] zone_name + | {READ ONLY | READ WRITE} + | DEFAULT TABLEGROUP [=] {NULL | table_group_name} +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-------------------------------------|------------------------------------| +| database_name | 指定要修改属性的数据库名称。如果不指定,会对当前默认数据库进行修改。 | +| CHARSET charset_name | 指定要修改的字符集。 | +| COLLATE collation_name | 指定校对规则。 | +| REPLICA_NUM int_num | 指定副本数。 | +| PRIMARY_ZONE zone_name | 指定主 Zone。 | +| READ ONLY \| READ WRITE | 设置数据库级只读或读写属性。 | +| DEFAULT TABLEGROUP table_group_name | 设置数据库默认表组信息,NULL 表示取消数据库默认表组。 | + + + +示例 +----------- + +* 修改数据库 test2 的字符集为 UTF8MB4,校对规则为 UTF8MB4_BIN,且为读写属性。 + + + + +```javascript +OceanBase(admin@test)>alter database test2 DEFAULT CHARACTER SET UTF8MB4; +Query OK, 0 rows affected (0.03 sec) + +OceanBase(admin@test)>alter database test2 DEFAULT COLLATE UTF8MB4_BIN; +Query OK, 0 rows affected (0.03 sec) + +OceanBase(admin@test)>alter database test2 READ WRITE; +Query OK, 0 rows affected (0.02 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/20.create-tenant.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/20.create-tenant.md new file mode 100644 index 000000000..706789bfa --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/20.create-tenant.md @@ -0,0 +1,92 @@ +CREATE TENANT +================================== + + + +描述 +----------- + +该语句用来创建租户。 + +格式 +----------- + +```javascript +CREATE TENANT [IF NOT EXISTS] tenantname + [tenant_characteristic_list] [opt_set_sys_var] + +tenant_characteristic_list: +tenant_characteristic [, tenant_characteristic...] + +tenant_characteristic: +COMMENT 'string' +|{CHARACTER SET | CHARSET} [=] charsetname +|COLLATE [=] collationname +|REPLICA_NUM [=] num +|ZONE_LIST [=] (zone [, zone...]) +|PRIMARY_ZONE [=] zone +|DEFAULT TABLEGROUP [=] {NULL | tablegroup} +|RESOURCE_POOL_LIST [=](poolname [, poolname...]) +|LOGONLY_REPLICA_NUM [=] num +|LOCALITY [=] 'locality description' + +opt_set_sys_var: +{ SET | SET VARIABLES | VARIABLES } system_var_name = expr [,system_var_name = expr] ... +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|--------------------------|----------------------------------------------------------------------------------------------------------------------| +| tenant_name | 指定租户名。最长64个字节,只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能是OceanBase的关键字。 | +| IF NOT EXISTS | 如果要创建的租户名已存在,并且没有指定IF NOT EXISTS,则会报错。 | +| RESOURCE_POOL_LIST | 资源池列表,为创建租户时的必填项,暂时只支持一个 RESOURCE POOL。 | +| DEFAULT TABLEGROUP | 设置租户默认表组信息,NULL 表示取消默认表组。如果不指定,默认为 NULL。 | +| COMMENT | 修改注释。 | +| CHARACTER SET \| CHARSET | 修改租户的字符集。 | +| COLLATE | 指定校对规则。 | +| REPLICA_NUM | 指定副本数。 | +| ZONE_LIST | 指定要修改的Zone列表。 | +| PRIMARY_ZONE | 指定主Zone。 | +| LOGONLY_REPLICA_NUM | 指定日志副本数。 | +| LOCALITY | 描述副本在Zone间的分布情况,如:F@z1,F@z2,F@z3,R@z4 表示z1, z2, z3为全功能副本,z4为只读副本。 | +| system_var_name | 指定租户系统变量值。其中 ob_compatibility_mode 系统变量用于指定租户的兼容模式(MySQL/Oracle),只能在创建时指定;如果不指定 ob_compatibility_mode ,默认兼容模式为MySQL。 | + + + +示例 +----------- + +* 创建租户。 + + + + +```javascript +CREATE TENANT IF NOT EXISTS t1 charset='utf8mb4', replica_num=1, zone_list=('zone1'), primary_zone='zone1', resource_pool_list=('pool1'); +``` + + + +* 创建oracle兼容模式租户 + + + + +```javascript +CREATE TENANT IF NOT EXISTS t1 zone_list=('zone1'), primary_zone='zone1', resource_pool_list=('pool1') SET ob_compatibility_mode='oracle'; +``` + + + + + +注意事项 +------------- + +只有用root用户连接到根租户(root@ROOT)才能执行 CREATE TENANT 去创建租户。 diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/21.create-user-1.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/21.create-user-1.md new file mode 100644 index 000000000..5ce862569 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/21.create-user-1.md @@ -0,0 +1,114 @@ +CREATE USER +================================ + + + +描述 +----------- + +该语句用于创建新的 OceanBase 用户。创建新用户后,可以使用该用户连接 OceanBase。 +**说明** + + + +必须拥有全局的CREATE USER权限,才可以使用CREATE USER命令。 + +格式 +----------- + +```javascript +create_user_stmt: + CREATE USER [IF NOT EXISTS] user_name [IDENTIFIED BY 'password']; + +alter_user_stmt: + ALTER USER user_name ACCOUNT {LOCK | UNLOCK}; + | ALTER USER user_name IDENTIFIED BY 'password'; + | SET PASSWORD [FOR user_name] = PASSWORD('password'); + | RENAME USER rename_user_action_list; + +drop_user_stmt: + DROP USER user_name_list; + +rename_user_action_list: + rename_user_action [, rename_user_action ...] + +rename_user_action: + user_name TO user_name + +user_name_list: + user_name [, user_name ...] + +password: + STR_VALUE + +CREATE USER [IF NOT EXISTS] user_specification_list; + +user_specification_list: +user_specification [, user_specification ...] + +user_specification: +user IDENTIFIED BY 'authstring' +| user IDENTIFIED BY PASSWORD 'hashstring' +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|------------------------------------------|----------------------------------------------------| +| user_name | 用户名,新建用户后,"mysql.user"表会新增一行该用户的表项。如果同名用户已经存在,则报错。 | +| IDENTIFIED BY | 使用自选的 IDENTIFIED BY 子句,可以为账户给定一个密码。 | +| user_name \[, user_name ...\] | 同时创建多个用户时,用","隔开。 | +| user IDENTIFIED BY 'authstring' | 此处密码为明文,存入"mysql.user"表后,服务器端会变为密文存储下来。 | +| user IDENTIFIED BY PASSWORD 'hashstring' | 此处密码为密文。 | + + + +示例 +----------- + +1. 执行以下命令创建名为 sqluser01 和 sqluser02 的用户,密码均为 123456。 + + + + +```javascript +CREATE USER 'sqluser01' IDENTIFIED BY '123456', 'sqluser02' IDENTIFIED BY '123456'; +``` + + + +2. 执行以下命令查看创建的用户。 + + + + +```javascript +SELECT user FROM mysql.user; +``` + + + +执行结果如下所示。 + +```javascript +mysql> CREATE USER 'sqluser01' IDENTIFIED BY '123456', 'sqluser02' IDENTIFIED BY '123456'; +Query OK, 0 rows affected (0.12 sec) +mysql> select user from mysql.user; ++-----------+ +| user | ++-----------+ +| root | +| admin | +| sqluser01 | +| sqluser02 | ++-----------+ +4 rows in set (0.00 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/22.create-view.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/22.create-view.md new file mode 100644 index 000000000..b3ead18aa --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/22.create-view.md @@ -0,0 +1,54 @@ +CREATE VIEW +================================ + + + +描述 +----------- + +该语句用于创建视图语句,如果指定了 OR REPLACE 子句,该语句能够替换已有的视图。 + +视图在数据库中实际上并不是以表的形式存在,每次使用时他们就会派生。视图是作为在 CREATE VIEW 语句中指定的 SELECT 语句的结果而派生出来的。 + +OceanBase 2.2.50 支持可更新视图。 + +格式 +----------- + +```javascript +create_view_stmt: + CREATE [OR REPLACE] VIEW view_name [(column_name_list)] AS select_stmt; + +column_name_list: + column_name [, column_name ...] +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OR REPLACE | 表示如果要创建的同义词名称已存在,则使用新的定义重新创建同义词。 | +| view_name | 视图名。 | +| select_stmt | 是一种 SELECT 语句。它给出了视图的定义。该语句可以从基表或其他视图进行选择。 | +| column_name_list | 视图必须具有唯一的列名,不得有重复,就像基表那样。默认情况下,由 SELECT 语句检索的列名将用作视图列名。 要想为视图列定义明确的名称,可使用可选的 column_name_list 子句,列出由逗号隔开的 ID。column_name_list 中的名称数目必须等于SELECT语句检索的列数。 SELECT 语句检索的列可以是对表列的简单引用。也可以是使用函数、常量值、操作符等的表达式。 | + + + +示例 +----------- + +选择表 t 中的 c1、c2 列来创建视图 v。 + +```javascript +create or replace view v(vc1, vc2) as select c1, c2 from t; +``` + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/23.DELETE.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/23.DELETE.md new file mode 100644 index 000000000..614f9f6f8 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/23.DELETE.md @@ -0,0 +1,267 @@ +DELETE +=========================== + + + +描述 +----------- + +该语句用来删除表中符合条件的行,包括单表删除及多表删除两种方式。 + +格式 +----------- + +```javascript +Single-Table-Delete Syntax: + DELETE [hint_options] FROM tbl_name + [PARTITION (partition_name,...)] + [WHERE where_condition] + [ORDER BY order_expression_list] + [LIMIT row_count] + +Multiple-Table-Delete Syntax: + DELETE [hint_options] tbl_name[.*] [, tbl_name[.*]] ... + FROM table_references + [WHERE where_condition] +Or: + DELETE [hint_options] FROM tbl_name[.*] [, tbl_name[.*]] ... + USING table_references + [WHERE where_condition] + +where_condition: + expression + +order_expression_list: + order_expression [, order_expression ...] + +order_expression: + expression [ASC | DESC] + +limit_row_count: + INT_VALUE + +table_references: + {tbl_name | joined_table | table_subquery | select_with_parens} [, ...] + +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-----------------------|----------------------| +| hint_options | 指定hint选项。 | +| tbl_name | 指定需要删除的表名。 | +| partition_name | 需要删除表的对应分区名。 | +| where_condition | 删除的表需要满足的过滤条件。 | +| order_expression_list | 删除的表的排序键列表。 | +| row_count | 删除的表的行数指定,指定的值只能为整数。 | +| table_references | 多表删除时指定的待选择的表序列。 | + + + +示例 +----------- + +示例表及数据基于以下定义: + +```javascript +OceanBase(admin@test)>create table t1(c1 int primary key, c2 int); +Query OK, 0 rows affected (0.16 sec) +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.06 sec) + +OceanBase(admin@test)>create table t2(c1 int primary key, c2 int) partition by key(c1) partitions 4; +Query OK, 0 rows affected (0.19 sec) +OceanBase(admin@test)>select * from t2; ++----+------+ +| c1 | c2 | ++----+------+ +| 5 | 5 | +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | ++----+------+ +4 rows in set (0.02 sec) +``` + + + +* 单表删除:删除 "c1=2" 的行,其中 c1 列为表 t1 中的 Primary Key。 + + + + +```javascript +OceanBase(admin@test)>DELETE FROM t1 WHERE c1 = 2; +Query OK, 1 row affected (0.02 sec) + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +3 rows in set (0.01 sec) +``` + + + +* 单表删除:删除表 t2 的按照 c2 列排序之后的第一行数据。 + + + + +```javascript +OceanBase(admin@test)>DELETE FROM t1 ORDER BY c2 LIMIT 1; +Query OK, 1 row affected (0.01 sec) + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +3 rows in set (0.00 sec) +``` + + + +* 单表删除:执行删除表 t2 的 p2 分区的数据。 + + + + +```javascript +OceanBase(admin@test)>DELETE FROM t2 PARTITION(p2); +Query OK, 3 rows affected (0.02 sec) + +OceanBase(admin@test)>select * from t2; ++----+------+ +| c1 | c2 | ++----+------+ +| 5 | 5 | ++----+------+ +1 row in set (0.02 sec) +``` + + + +* 多表删除:删除 t1,t2 表中 "t1.c1 = t2.c1" 的数据。 + + + + +```javascript +OceanBase(admin@test)>DELETE t1, t2 FROM t1, t2 WHERE t1.c1 = t2.c1; +Query OK, 3 rows affected (0.02 sec) + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 4 | 4 | ++----+------+ +1 row in set (0.01 sec) + +OceanBase(admin@test)>select * from t2; ++----+------+ +| c1 | c2 | ++----+------+ +| 5 | 5 | ++----+------+ +1 row in set (0.01 sec) +``` + + + +* 多表删除:删除 t1,t2 表中 "t1.c1 = t2.c1" 的数据。 + + + + +```javascript +OceanBase(admin@test)>DELETE FROM t1, t2 USING t1, t2 WHERE t1.c1 = t2.c1; +Query OK, 4 rows affected (0.02 sec) + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 4 | 4 | ++----+------+ +1 row in set (0.01 sec) + +OceanBase(admin@test)>select * from t2; +Empty set (0.01 sec) +``` + + + +* 多表删除:删除 t2 表中的 p2 分区中和 t1 表中 "t1.c1 = t2.c1" 的数据。 + + + + +```javascript +OceanBase(admin@test)>DELETE t2 FROM t1,t2 PARTITION(p2) WHERE t1.c1 = t2.c1; +Query OK, 3 rows affected (0.02 sec) + +OceanBase(admin@test)>select * from t2; ++----+------+ +| c1 | c2 | ++----+------+ +| 5 | 5 | ++----+------+ +1 row in set (0.01 sec) +``` + + + +* 对可更新视图v进行删除操作 + + + + +```javascript +OceanBase(admin@test)>create view v as select * from t1; +Query OK, 0 rows affected (0.07 sec) + +OceanBase(admin@test)>delete from v where v.c1 = 1; +Query OK, 1 row affected (0.02 sec) + +OceanBase(admin@test)>select * from v; ++----+------+ +| c1 | c2 | ++----+------+ +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +3 rows in set (0.01 sec) +``` + + + +注意事项 +------------- + +不管是多表删除还是单表删除都不支持直接对子查询进行删除操作,比如: + +`delete from (select * from t1);` diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/24.drop-database.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/24.drop-database.md new file mode 100644 index 000000000..ae84c88d2 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/24.drop-database.md @@ -0,0 +1,70 @@ +DROP DATABASE +================================== + + + +描述 +----------- + +DROP DATABASE 用于删除数据库。 + +格式 +----------- + +```javascript +drop_database_stmt: +DROP DATABASE [IF EXISTS] database_name; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|---------------|-------------------| +| IF EXISTS | 用于防止当数据库不存在时发生错误。 | +| database_name | 指定待删除的数据库名。 | + + + +示例 +----------- + +* 删除数据库 test2。 + + + + +```javascript +OceanBase(admin@test)>drop database test2; +Query OK, 0 rows affected (0.03 sec) +``` + + + +* 删除不存在的数据库 notest。 + + + + +```javascript +OceanBase(admin@test)>drop database notest; +ERROR 1008 (HY000): Can't drop database 'notest'; database doesn't exist + +OceanBase(admin@test)>drop database if exists notest; +Query OK, 0 rows affected, 1 warning (0.00 sec) + +OceanBase(admin@test)>show warnings; ++-------+------+------------------------------------------------------+ +| Level | Code | Message | ++-------+------+------------------------------------------------------+ +| Note | 1008 | Can't drop database 'notest'; database doesn't exist | ++-------+------+------------------------------------------------------+ +1 row in set (0.00 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/25.drop-index.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/25.drop-index.md new file mode 100644 index 000000000..534710fd4 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/25.drop-index.md @@ -0,0 +1,48 @@ +DROP INDEX +=============================== + + + +描述 +----------- + +该语句用来删除索引。当索引过多时,维护开销增大,因此,需要删除不必要的索引。 + +删除索引的时候需要等待一段时间才能完全删除。 + +格式 +----------- + +```javascript +DROP INDEX indexname +   ON tblname; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-----------|---------| +| indexname | 指定索引名称。 | +| tblname | 指定表名。 | + + + +示例 +----------- + +* 删除索引test_index。 + + + + +```javascript +DROP INDEX test_index ON test; +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/26.drop-outline.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/26.drop-outline.md new file mode 100644 index 000000000..9f02fdfcf --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/26.drop-outline.md @@ -0,0 +1,44 @@ +DROP OUTLINE +================================= + + + +描述 +----------- + +该语句用于删除 OceanBase 数据库中的 OUTLINE。 + +格式 +----------- + +```javascript +DROP OUTLINE outline_name; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|--------------|--------------------| +| outline_name | 指定要删除的 OUTLINE 名称。 | + + + +示例 +----------- + +* 删除 OUTLINE ol_1 + + + + +```javascript +DROP OUTLINE ol_1; +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/27.drop-resource-pool.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/27.drop-resource-pool.md new file mode 100644 index 000000000..75ec6332a --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/27.drop-resource-pool.md @@ -0,0 +1,45 @@ +DROP RESOURCE POOL +======================================= + + + +描述 +----------- + +该语句用来删除资源池。 + +格式 +----------- + +```javascript +DROP RESOURCE POOL poolname; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|----------|-----------| +| poolname | 要删除的资源池名称 | + + + +示例 +----------- + +* 删除资源池 pool1。 + + + + +```javascript +OceanBase(admin@test)> DROP RESOURCE POOL pool1; +Query OK, 0 rows affected (0.00 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/28.drop-resource-unit.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/28.drop-resource-unit.md new file mode 100644 index 000000000..db901e7fd --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/28.drop-resource-unit.md @@ -0,0 +1,47 @@ +DROP RESOURCE UNIT +======================================= + + + +描述 +----------- + +该语句用来删除资源单元配置。 + +格式 +----------- + +```javascript +DROP RESOURCE UNIT unitname +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|----------|---------------| +| unitname | 要删除的资源单元配置的名称 | + + + + + +示例 +----------- + +* 删除资源单元配置unit1。 + + + + +```javascript +OceanBase(admin@test)> DROP RESOURCE UNIT unit1; +Query OK, 0 rows affected (0.00 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/29.drop-restore-point.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/29.drop-restore-point.md new file mode 100644 index 000000000..bfd5bb927 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/29.drop-restore-point.md @@ -0,0 +1,50 @@ +DROP RESTORE POINT +======================================= + + + +描述 +----------------------- + +该语句用来删除还原点(Restore Point)。 +**注意** + + + +系统租户不支持删除还原点。 + +格式 +----------------------- + +```unknow +DROP RESTORE POINT restore_point; +``` + + + +参数解释 +------------------------- + + + +| 参数 | 描述 | +|---------------|----------| +| restore_point | 指定还原点名称。 | + + + +示例 +----------------------- + +* 删除一个还原点 rp1。 + + ```unknow + obclient> DROP RESTORE POINT rp1; + Query OK, 0 rows affected (0.01 sec) + ``` + + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/3.alter-outline.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/3.alter-outline.md new file mode 100644 index 000000000..93e3e4080 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/3.alter-outline.md @@ -0,0 +1,70 @@ +ALTER OUTLINE +================================== + + + +描述 +----------- + +该语句仅支持使用SQL_TEXT创建的 OUTLINE,可用于添加绑定OUTLINE和限流规则。 + +格式 +----------- + +```javascript +ALTER OUTLINE outline_name ADD stmt [ TO target_stmt ] +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| outline_name | 指定要创建的 OUTLINE 名称。 | +| stmt | 一般为一个带有 hint 和原始参数的 DML 语句。 | +| TO target_stmt | 如果不指定 TO target_stmt, 则表示如果数据库接受的SQL参数化后与stmt去掉hint参数化文本相同,则将该SQL绑定stmt中hint生成执行计划;如果期望对含有hint的语句进行固定计划,则需要 TO target_stmt 来指明原始的SQL。 **注意** 在使用target_stmt时,严格要求stmt与target_stmt在去掉hint后完全匹配。 | + + + +示例 +----------- + +* 通过ALTER OUTLINE来添加限流规则。 + + + + +```javascript +OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = 1 and c2 = ?; +OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = ? and c2 = 1; +``` + + + +* 通过ALTER OUTLINE来添加执行计划。 + + + + +```javascript +OceanBase (root@oceanbase)> create outline ol_2 on select /*+max_concurrent(1)*/ * from t1,t2 where t1.c1 = 1; +OceanBase (root@oceanbase)> alter outline ol_2 add select /*+use_nl(t2)*/ * from t1,t2 where t1.c1 = 1; +``` + + + +注意事项 +------------- + +* 同一个outline_name 只能指定一个执行计划。如果通过create outline语句指定了执行计划,则无法通过执行alter outline时再添加。 + +* 同create outline类似,在alter outline时不能同时指定限流规则和执行计划。 + +* 执行alter outline时,需要outline_name和signature同时匹配。 + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/30.drop-table.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/30.drop-table.md new file mode 100644 index 000000000..96413eced --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/30.drop-table.md @@ -0,0 +1,49 @@ +DROP TABLE +=============================== + + + +描述 +----------- + +该语句用于删除 OceanBase 数据库中的表。 + +格式 +----------- + +```javascript +DROP [TEMPORARY] {TABLE | TABLES} [IF EXISTS] +table_name [,table_name]... +[RESTRICT | CASCADE] +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|---------------------|--------------------------------------------| +| table_name | 指定要删除的表名,同时删除多个表时,用","隔开。 | +| IF EXISTS | 如果指定IF EXISTS,即使要删除的表不存在,也不会报错;如果不指定,则会报错。 | +| TEMPORARY | 删除临时表。 | +| RESTRICT \| CASCADE | 用于其它数据库迁移至OceanBase的场景。 | + + + +示例 +----------- + +* 删除表 test + + + + +```javascript +DROP TABLE IF EXISTS test; +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/31.drop-tablegroup.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/31.drop-tablegroup.md new file mode 100644 index 000000000..b74427f25 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/31.drop-tablegroup.md @@ -0,0 +1,41 @@ +DROP TABLEGROUP +==================================== + + + +描述 +----------- + +该语句用来删除表组。 + +格式 +----------- + +```javascript +DROP TABLEGROUP [IF EXISTS] tablegroupname +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|----------------|--------------------------------------------| +| tablegroupname | 表组名称。如果要删除的表组名称不存在,并且没有指定IF EXISTS,则会出现错误。 | + + + +示例 +----------- + +删除名为 myTableGroup1 的表组。 + +```javascript +OceanBase(admin@test)> DROP TABLEGROUP myTableGroup1; +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/32.drop-tenant.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/32.drop-tenant.md new file mode 100644 index 000000000..45f6d3225 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/32.drop-tenant.md @@ -0,0 +1,49 @@ +DROP TENANT +================================ + + + +描述 +----------- + +该语句用于删除一个 OceanBase 租户。 + +格式 +----------- + +```javascript +drop_tenant_stmt: +DROP TENANT [IF EXISTS] tenant_name; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-------------|---------------------------------------------------------------------| +| tenant_name | 指定要删除的租户名。 只能删除处于"锁定"状态下的租户,对非锁定状态下的租户执行 DROP 时会报错。 | + + + +示例 +----------- + +* 删除租户 TENANT1: + + + + +```javascript +DROP TENANT TENANT1; +``` + + + +注意事项 +------------- + +只有用root用户连接到根租户(root@ROOT)才能执行 DROP TENANT 去删除租户。 diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/33.drop-synonym.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/33.drop-synonym.md new file mode 100644 index 000000000..be2dfffa2 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/33.drop-synonym.md @@ -0,0 +1,100 @@ +DROP SYNONYM +================================= + + + +描述 +----------- + +该语句用来删除一个同义词。 + + + +格式 +----------- + +```javascript +DROP [PUBLIC] SYNONYM [ DATABASE. ]synonym; +``` + + + + + +参数说明 +------------- + +* PUBLIC + + 指定PUBLIC来删除公共同义词;如果不指定PUBLIC,则删除私有同义词。 + + + + + + + +* \[ DATABASE. \]synonym + + DATABASE指定当前同义词属于哪个DataBase,如果指定了PUBLIC,则对同义词不需要指定DataBase;synonym表示同义词的名称。 + + + + + + + +举例 +----------- + +* 删除一个同义词。 + + + + +```javascript +OceanBase(admin@test)>drop synonym test.s1; +Query OK, 0 rows affected (0.03 sec) +``` + + + +* 删除一个PUBLIC同义词 + + + + +```javascript +OceanBase(admin@test)>drop public synonym syn_pub; +Query OK, 0 rows affected (0.02 sec) +``` + + + + + +### 注意事项 + +**注意** + + + +* 删除私有同义词时,需要满足要删除的synonym在对应DataBase下并要有DROP ANY SYNONYM权限。 + + + + + + + + +* 删除公共同义词时,需要有DROP PUBLIC SYNONYM权限 。 + + + +* 删除public synonym时,必须指定PUBLIC关键字,且不能指定DataBase。 + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/34.drop-user.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/34.drop-user.md new file mode 100644 index 000000000..9a40d5dc2 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/34.drop-user.md @@ -0,0 +1,60 @@ +DROP USER +============================== + + + +描述 +----------- + +该语句用于删除一个或多个OceanBase用户。 +**说明** + + + +* 必须拥有全局的 CREATE USER 权限,才可以使用 DROP USER 命令。 + + + +* 不能对 mysql.user 表通过 DELETE 方式进行权限管理。 + + + +* 成功删除用户后,该用户的所有权限也会被一同删除。 + + + + + + +格式 +----------- + +```javascript +DROP USER username [, username...]; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|----------|-----------------------| +| username | 用户名。同时删除多个用户时,用","隔开。 | + + + +示例 +----------- + +执行以下命令,删除名为 sqluser02 的用户。 + +```javascript +oceanBase(admin@TEST)>drop user sqluser02; +Query OK, 0 rows affected (0.02 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/35.drop-view.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/35.drop-view.md new file mode 100644 index 000000000..acfa79af1 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/35.drop-view.md @@ -0,0 +1,60 @@ +DROP VIEW +============================== + + + +描述 +----------- + +该语句用于删除一个或多个视图。 +**说明** + + + +当前用户必须在每个视图上有 DROP 权限。 + +格式 +----------- + +```javascript +drop_view_stmt: + DROP VIEW [IF EXISTS] view_name_list [CASCADE | RESTRICT]; + +view_name_list: + view_name [, view_name_list] +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|------------------|-------------------------------------------------------------------------| +| IF EXISTS | 使用IF EXISTS关键字可以防止因不存在的视图而出错。 | +| view_name_list | 如果view_name_list中包含一部分存在和一部分不存在的视图,执行可能报错但是存在的视图依然会被删除。 | +| CASCADE、RESTRICT | CASCADE 和 RESTRICT 会被解析和忽略。 | + + + +示例 +----------- + +分别执行以下命令,删除 v1 和 v2 两个视图。如果 v1或 v2 至少有一个视图不存在,则第一条命令会报错。 + +```javascript +drop view v1, v2; + +drop view if exists v1, v2; +``` + + + + + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/36.EXPLAIN.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/36.EXPLAIN.md new file mode 100644 index 000000000..8a2adfd83 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/36.EXPLAIN.md @@ -0,0 +1,195 @@ +EXPLAIN +============================ + + + +描述 +----------- + +该语句用于解释 SQL 语句的执行计划,可以是SELECT、DELETE、INSERT、REPLACE或UPDATE语句。提供正则过滤功能,通过session变量explain_regex对输出行/JSON进行过滤。 + +格式 +----------- + +```javascript +获取表或列的信息: +{EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild] + +获取SQL计划信息: +{EXPLAIN | DESCRIBE | DESC} +[BASIC | OUTLINE | EXTENDED | EXTENDED_NOADDR | PARTITIONS | FORMAT = {TRADITIONAL| JSON}] +{SELECT statement | DELETE statement | INSERT statement | REPLACE statement| UPDATE statement} +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| tbl_name | 指定表名。 | +| col_name | 指定表的列名。 | +| BASIC | 指定输出计划的基础信息,如算子ID、算子名称、所引用的表名。 | +| OUTLINE | 指定输出的计划信息包含outline信息。 | +| EXTENDED | EXPLAIN产生附加信息,包括:每个算子的输入列和输出列,访问表的分区信息,当前使用的filter信息,如果当前算子使用了索引,显示所使用的索引列及抽取的query range。 | +| EXTENDED_NOADDR | 以简约的方式展示附加信息。 | +| PARTITIONS | 显示分区相关信息。 | +| FORMAT = {TRADITIONAL\| JSON} | 指定EXPALIN的输出格式: * TRADITIONAL:表格输出格式 * JSON:KEY:VALUE输出格式, JSON显示为JSON字符串,包括EXTENDED和PARTITIONS信息。 | + + + +示例 +----------- + +* **省略explain_type** + + + + +```javascript +OceanBase(admin@test)>explain select * from t1,t2 where t1.c2=t2.c2 and t2.c1 > 4\G +*************************** 1. row *************************** +Query Plan: ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |HASH JOIN | |9801000 |5933109| +|1 | TABLE SCAN|t2 |10000 |6219 | +|2 | TABLE SCAN|t1 |100000 |68478 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t2.c2], [t2.c1]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) +``` + + + +* **EXTENDED** + + + + +```javascript +OceanBase(admin@test)>explain extended_noaddr select * from t1,t2 where t1.c2=t2.c2 and t2.c1 > 4\G +*************************** 1. row *************************** +Query Plan: ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |HASH JOIN | |9801000 |5933109| +|1 | TABLE SCAN|t2 |10000 |6219 | +|2 | TABLE SCAN|t1 |100000 |68478 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t2.c2], [t2.c1]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0), + is_index_back=false, + range_key([t2.c1]), range(4 ; MAX), + range_cond([t2.c1 > 4]) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0), + is_index_back=false, + range_key([t1.__pk_increment], [t1.__pk_cluster_id], [t1.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true +``` + + + +* **TRADITIONAL** **格式** + + + + +```javascript +OceanBase(admin@test)>explain format=TRADITIONAL select * from t1,t2 where t1.c2=t2.c2 and t2.c1 > 4\G +*************************** 1. row *************************** +Query Plan: ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |HASH JOIN | |9801000 |5933109| +|1 | TABLE SCAN|t2 |10000 |6219 | +|2 | TABLE SCAN|t1 |100000 |68478 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t2.c2], [t2.c1]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) +``` + + + +* **JSON格式** + + + + +```javascript +OceanBase(admin@test)>explain format=JSON select * from t1,t2 where t1.c2=t2.c2 and t2.c1 > 4\G +*************************** 1. row *************************** +Query Plan: { + "ID":2, + "OPERATOR":"JOIN", + "NAME":"JOIN", + "EST.ROWS":9800999, + "COST":5933108, + "output": [ + "t1.c1", + "t1.c2", + "t2.c1", + "t2.c2" + ], + "TABLE SCAN": { + "ID":0, + "OPERATOR":"TABLE SCAN", + "NAME":"TABLE SCAN", + "EST.ROWS":10000, + "COST":6218, + "output": [ + "t2.c2", + "t2.c1" + ] + }, + "TABLE SCAN": { + "ID":1, + "OPERATOR":"TABLE SCAN", + "NAME":"TABLE SCAN", + "EST.ROWS":100000, + "COST":68477, + "output": [ + "t1.c2", + "t1.c1" + ] + } +} +``` + + + +EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列: + + +| **列名** | **说明** | +|----------|-----------------| +| ID | 计划执行序列号。 | +| OPERATOR | 执行算子。 | +| NAME | 算子所引用的表。 | +| EST.ROWS | 估计执行到当前算子输出的行数。 | +| COST | 执行到当前算子的CPU时间。 | + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/37.flashback-database.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/37.flashback-database.md new file mode 100644 index 000000000..8fd33e47a --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/37.flashback-database.md @@ -0,0 +1,89 @@ +FLASHBACK DATABASE +======================================= + + + +描述 +----------- + +用于从回收站中恢复被删除的DATABASE。 + +前置条件 +------------- + +回收站需要处于开启状态,可以通过 + +`show variables like 'recyclebin';` + +来查看回收站是否开启。 + +```javascript +OceanBase(admin@test)> show variables like 'recyclebin'; ++---------------+-------+ +| Variable_name | Value | ++---------------+-------+ +| recyclebin | ON | ++---------------+-------+ +1 row in set (0.00 sec) +``` + + + +果回收站处于关闭状态,可以通过 + +`set recyclebin = on;` + +来开启。回收站中的表没有被实际删除,仍然会占用资源,如果需要彻底删除,可以执行 + +`purge recyclebin;` + +格式 +----------- + +```javascript + FLASHBACK DATABASE object_name TO BEFORE DROP [RENAME TO db_name]; +``` + + + +参数解释 +------------- + + + +| **参数** | **解释** | +|-------------|----------------------------------------------------------------------| +| object_name | 指定要恢复的object名称,不支持指定DATABASE名称。恢复DATABASE时,也会将DATABASE下面的表、索引等都恢复出来。 | +| RENAME to | 恢复时将DATABASE重命名。 | + + + +示例 +----------- + +* 从回收站中恢复删除的DATABASE。 + + + + +```javascript +OceanBase(admin@test)> create database da; +Query OK, 1 row affected (0.03 sec) + +OceanBase(admin@test)> drop database da; +Query OK, 0 rows affected (0.04 sec) + +OceanBase(admin@test)> show recyclebin; ++--------------------------------------------------+---------------+----------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++--------------------------------------------------+---------------+----------+----------------------------+ +| __recycle_$_1_1099511628829_18446744073709551615 | da | DATABASE | 2017-10-20 17:36:15.838771 | ++--------------------------------------------------+---------------+----------+----------------------------+ +1 row in set (0.02 sec) + +OceanBase(admin@test)> flashback database __recycle_$_1_1099511628829_18446744073709551615 to before drop; +Query OK, 0 rows affected (0.03 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/38.flashback-table.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/38.flashback-table.md new file mode 100644 index 000000000..4433036e5 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/38.flashback-table.md @@ -0,0 +1,110 @@ +FLASHBACK TABLE +==================================== + + + +描述 +----------- + +用于从回收站中恢复被删除的TABLE。 + +前置条件 +------------- + +回收站需要处于开启状态,可以通过 + +`show variables like 'recyclebin';` + +来查看回收站是否开启。 + +```javascript +OceanBase(admin@test)> show variables like 'recyclebin'; ++---------------+-------+ +| Variable_name | Value | ++---------------+-------+ +| recyclebin | ON | ++---------------+-------+ +1 row in set (0.00 sec) +``` + + + +如果回收站处于关闭状态,可以通过 + +`set recyclebin = on;` + +来开启。回收站中的表没有被实际删除,仍然会占用资源,如果需要彻底删除,可以执行 + +`purge recyclebin;` + +格式 +----------- + +```javascript + FLASHBACK TABLE object_name TO BEFORE DROP [RENAME to db_name.table_name]; +``` + + + +参数解释 +------------- + + + +| **参数** | **解释** | +|-------------|-------------------------------------------------------------------------| +| object_name | 指定要恢复的object名称或表名,只有在表所在的database中才能执行。恢复TABLE时,也会将和TABLE相关的INDEX也恢复出来。 | +| RENAME to | 修改表名和表所属的库。 | + + + +示例 +----------- + +* 从回收站中恢复被删除的表t。 + + + + +```javascript +OceanBase(admin@test)> create table t(id int primary key, k int); +Query OK, 0 rows affected (0.04 sec) + +OceanBase(admin@test)> insert into t values(1,1); +Query OK, 1 row affected (0.00 sec) + +OceanBase(admin@test)> select * from t; ++----+------+ +| id | k | ++----+------+ +| 1 | 1 | ++----+------+ +1 row in set (0.00 sec) + +OceanBase(admin@test)> drop table t; +Query OK, 0 rows affected (0.01 sec) + +OceanBase(admin@test)> select * from t; +ERROR 1146 (42S02): Table 'test.t' does not exist +OceanBase(admin@test)> show recyclebin; ++--------------------------------+---------------+-------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++--------------------------------+---------------+-------+----------------------------+ +| __recycle_$_1_1597028971700936 | t | TABLE | 2020-08-10 11:09:31.701033 | ++--------------------------------+---------------+-------+----------------------------+ +1 row in set (0.00 sec) + +OceanBase(admin@test)> flashback table t to before drop; +Query OK, 0 rows affected (0.01 sec) + +OceanBase(admin@test)> select * from t; ++----+------+ +| id | k | ++----+------+ +| 1 | 1 | ++----+------+ +1 row in set (0.00 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/39.flashback-tenant.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/39.flashback-tenant.md new file mode 100644 index 000000000..77f0e4d54 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/39.flashback-tenant.md @@ -0,0 +1,67 @@ +FLASHBACK TENANT +===================================== + + + +描述 +----------------------- + +该语句用于从回收站中恢复被删除的租户。 + +前置条件 +------------------------- + +回收站需要处于开启状态,可以通过`show variables like 'recyclebin';`来查看回收站是否开启。 + +```unknow +OceanBase(admin@test)> show variables like 'recyclebin'; ++---------------+-------+ +| Variable_name | Value | ++---------------+-------+ +| recyclebin | ON | ++---------------+-------+ +1 row in set (0.00 sec) +``` + + + +如果回收站处于关闭状态,可以通过`set recyclebin = on;`来开启。回收站中的表没有被实际删除,仍然会占用资源,如果需要彻底删除,可以执行`purge recyclebin;` + +格式 +----------------------- + +```unknow +FLASHBACK TENANT tenant_name TO BEFORE DROP [RENAME to new_tenant_name]; +``` + + + +参数解释​ +-------------------------- + + + +| 参数 | 解释 | +|-----------------|---------------------------------------------------------------------------------------| +| tenant_name | 指定要恢复的租户名。可以使用原始租户名,也可以使用在回收站中的名字。回收站中的名字具有唯一性,可以指定确定的租户;原始租户名可能会重复,此时恢复的是最晚进入回收站的租户。 | +| new_tenant_name | 将恢复后的租户重新命名。 | + + + +示例 +----------------------- + +* 从回收站中恢复被删除的租户tenant1。 + + + + + + +```unknow +obclient> flashback tenant tenant1 to before drop; +Query OK, 0 rows affected (0.01 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/4.alter-resource-pool.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/4.alter-resource-pool.md new file mode 100644 index 000000000..28ba97262 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/4.alter-resource-pool.md @@ -0,0 +1,64 @@ +ALTER RESOURCE POOL +======================================== + + + +描述 +----------- + +该语句用来修改资源池。 + +格式 +----------- + +```javascript +ALTER RESOURCE POOL poolname +UNIT [=] unitname, +UNIT_NUM [=] unitnum, +ZONE [=] ('zone' [, 'zone' ...]); +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-----------|-----------------------------------------------------| +| UNIT | 指定要使用的资源单元配置的名称 | +| UNIT_NUM | 指定要创建的一个 ZONE 下的资源单元个数,取值要小于对应 ZONE 中的 OBServer 个数。 | +| ZONE_LIST | 指定要创建的资源单元的 ZONE 列表 | + + + + + +示例 +----------- + +* 不能同时修改 RESOURCE POOL 的 unit, unit_num, zone_list 多个属性,执行将报错。 + + + + +```javascript +OceanBase(admin@test)> ALTER RESOURCE POOL pool1 unit='unit2', unit_num=1, zone_list=('zone1'); +ERROR 1235 (0A000): alter unit_num, resource_unit, zone_list in one cmd not supported +``` + + + +* 修改 RESOURCE POOL 的单条 unit 属性。 + + + + +```javascript +OceanBase(admin@test)> ALTER RESOURCE POOL pool1 unit='unit2'; +Query OK, 0 rows affected (0.00 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/40.GRANT.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/40.GRANT.md new file mode 100644 index 000000000..e94a9517b --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/40.GRANT.md @@ -0,0 +1,138 @@ +GRANT +========================== + + + +描述 +----------- + +该语句用于系统管理员授予 User 某些权限。 +**说明** + + + +* 当前用户必须拥有被授予的权限(例如,user1 把表 t1 的 SELECT 权限授予 user2,则 user1 必须拥有表 t1 的 SELECT 的权限),并且拥有 GRANT OPTION 权限,才能授予成功。 + + + +* 用户授权后,该用户只有重新连接OceanBase,权限才能生效。 + + + + + + +格式 +----------- + +```javascript +GRANT priv_type +    ON priv_level +    TO user_specification [, user_specification]... + [WITH with_option ...] + +privilege_type: + ALTER + | CREATE + | CREATE USER + | CREATE VIEW + | DELETE + | DROP + | GRANT OPTION + | INDEX + | INSERT + | PROCESS + | SELECT + | SHOW DATABASES + | SHOW VIEW + | SUPER + | UPDATE + | USAGE + | CREATE SYNONYM + +priv_level: + * + | *.* + | db_name.* + | db_name.tbl_name + | tbl_name + | db_name.rountine_name + +user_specification: +user [IDENTIFIED BY [PASSWORD] 'password'] + +with_option: + GRANT OPTION +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|----------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| priv_type | 指定授予的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时把多个权限赋予用户时,权限类型用","隔开。 | +| priv_level | 指定授予权限的层级。权限可以分为以下几个层级: * 全局层级:适用于所有的数据库。使用 GRANT ALL ON \*.\*授予全局权限。 * 数据库层级:适用于一个给定数据库中的所有目标。使用 GRANT ALL ON db_name.\* 授予数据库权限。 * 表层级:表权限适用于一个给定表中的所有列。使用 GRANT ALL ON db_name.tbl_name 授予表权限。 用"\*"代替table_name,表示赋予全局权限,即对数据库中的所有表赋权。 | +| user_specification | 给特定用户授予权限。如果用户不存在,可以直接创建用户。 sql_mode='no_auto_create_user',同时没有identified by 指定密码时,不可以直接创建用户。 同时给多个用户授权时,用户名用","隔开。 | +| user IDENTIFIED BY 'password' | 此处密码为明文。 | +| user IDENTIFIED BY PASSWORD 'password' | 此处密码为密文。 | +| with_option | 指定权限是否允许转授 | + + + +可以授予的权限类型如下表所示。 + +**权限类型说明表** + + +| **权限** | **说明** | +|-------------------|-----------------------------------------------------------------| +| ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 | +| ALTER | ALTER TABLE的权限。 | +| CREATE | CREATE TABLE的权限。 | +| CREATE USER | CREATE USER,DROP USER,RENAME USER和REVOKE ALL PRIVILEGES的权限。 | +| CREATE TABLEGROUP | 全局CREATE TABLEGROUP的权限。 | +| DELETE | DELETE的权限。 | +| DROP | DROP的权限。 | +| GRANT OPTION | GRANT OPTION的权限。 | +| INSERT | INSERT的权限。 | +| SELECT | SELECT的权限。 | +| UPDATE | UPDATE的权限。 | +| SUPER | SET GLOBAL修改全局系统参数的权限。 | +| SHOW DATABASES | 全局 SHOW DATABASES的权限。 | +| INDEX | CREATE INDEX, DROP INDEX的权限 | +| CREATE VIEW | 创建、删除视图的权限。 | +| SHOW VIEW | SHOW CREATE VIEW权限。 | +| CREATE SYNONYM | 创建同义词的权限。 | + + + + +**说明** + + + +目前没有 change effective tenant 的权限控制,故 sys 租户下的用户都可以进行授权。 + +示例 +----------- + +* 执行以下命令给用户 obsqluser01 赋予所有权限。 + + + + +```javascript +OceanBase(admin@TEST)>GRANT ALL PRIVILEGES ON *.* TO obsqluser01 with grant option; +Query OK, 0 rows affected (0.03 sec) +``` + + + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/41.INSERT.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/41.INSERT.md new file mode 100644 index 000000000..a73e767c3 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/41.INSERT.md @@ -0,0 +1,245 @@ +INSERT +=========================== + + + +描述 +----------- + +该语句用于添加一个或多个记录到表中。 + +格式 +----------- + +```javascript +INSERT [IGNORE] [INTO] + single_table_insert + [ON DUPLICATE KEY UPDATE update_asgn_list] + +single_table_insert: + {dml_table_name values_clause + | dml_table_name '(' ')' values_clause + | dml_table_name '(' column_list ')' values_clause + | dml_table_name SET update_asgn_list} + +dml_table_name: + tbl_name [PARTITION (partition_name,...)] + +values_clause: + {{VALUES | VALUE} ({expr | DEFAULT},...) [, ...] + | select_stmt} + +column_list + column_name [, ...] + +update_asgn_list: + column_name = expr [, ...] +``` + + + +参数解释 +------------- + +**INSERT...ON DUPLICATE KEY UPDATE...** **语句执行,affect row的计算:** + +* 在没有设置client_capabilities中CLIENT_FOUND_ROWS的情况下: + + + + + + + + + + +* 如果设置了CLIENT_FOUND_ROWS: + + + + + + + + + + +* CLIENT_FOUND_ROWS的影响在于:不设置CLIENT_FOUND_ROWS的情况下,计算affected_row的值,只计算实际更新了行数,而设置了CLIENT_FOUND_ROWS的话,会把所有touched行数(满足冲突条件的行)都记上,而不管其是否发生了真正的数据修改。 + + + + + +| **参数** | **描述** | +|-------------------------|-----------------------------------------------------------------------------------------------------------------------------| +| IGNORE | 在INSERT语句执行过程中发生的错误将会被忽略。 | +| column_list | 用于指定插入数据的列,同时插入多列时,用","隔开。 | +| tbl_name | 指定要插入的表名。 | +| partition_name | 插入表指定的分区名。 | +| update_asgn_list | 赋值语句,例如:"c1 = 2" | +| ON DUPLICATE KEY UPDATE | 指定对重复主键或唯一键的处理。如果指定了ON DUPLICATE KEY UPDATE,当要插入的主键或唯一键有重复时,会用配置值替换待插入的值;如果不指定ON DUPLICATE KEY UPDATE,当要插入的主键或唯一键有重复时,插入报错。 | + + + +示例 +----------- + +示例表及数据基于以下定义: + +```javascript +OceanBase(admin@test)>create table t1(c1 int primary key, c2 int) partition by key(c1) partitions 4; +Query OK, 0 rows affected (0.16 sec) + +OceanBase(admin@test)>create table t2(c1 int primary key, c2 int); +Query OK, 0 rows affected (0.16 sec) +OceanBase(admin@test)>select * from t2; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.06 sec) +``` + + + +* 向表 t1 中插入一行数数据。 + + + + +```javascript +OceanBase(admin@test)>insert into t1 values(1,1); +Query OK, 1 row affected (0.01 sec) + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | ++----+------+ +1 row in set (0.04 sec) +``` + + + +* 向表 t1 中插入多行数据。 + + + + +```javascript +OceanBase(admin@test)>insert t1 values(1,1),(2,default),(2+2,3*4); +Query OK, 3 rows affected (0.02 sec) +Records: 3 Duplicates: 0 Warnings: 0 + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 2 | NULL | +| 4 | 12 | ++----+------+ +3 rows in set (0.02 sec) +``` + + + +* 向表 t1 指定的 p0 分区插入单行数据。 + + + + +```javascript +OceanBase(admin@test)>insert into t1 partition(p0) (c1) values(5); +Query OK, 1 row affected (0.02 sec) +OceanBase(admin@test)>select * from t1 partition(p0); ++----+------+ +| c1 | c2 | ++----+------+ +| 5 | NULL | ++----+------+ +1 row in set (0.01 sec) +``` + + + +* 将表 t2 的查询结果作为数据插入表 t1。 + + + + +```javascript +OceanBase(admin@test)>insert into t1 select * from t2; +Query OK, 4 rows affected (0.02 sec) +Records: 4 Duplicates: 0 Warnings: 0 + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.01 sec) +``` + + + +* 向表 t1 中插入重复主键值时利用 ON DUPLICATE KEY UPDATE 功能进行值更新 + + + + +```javascript +OceanBase(admin@test)>insert into t1 values(1,1),(1,2) ON DUPLICATE KEY UPDATE c1=100; +Query OK, 3 rows affected (0.01 sec) +Records: 2 Duplicates: 1 Warnings: 0 + +OceanBase(admin@test)>select * from t1; ++-----+------+ +| c1 | c2 | ++-----+------+ +| 100 | 1 | ++-----+------+ +1 row in set (0.02 sec) +``` + + + +* 对可更新视图v的插入值 + + + + +```javascript +OceanBase(admin@test)>create view v as select * from t1; +Query OK, 0 rows affected (0.07 sec) +OceanBase(admin@test)>insert into v values(1,1); +Query OK, 1 row affected (0.01 sec) + +OceanBase(admin@test)>select * from v; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | ++----+------+ +1 row in set (0.02 sec) +``` + + + +注意事项 +------------- + +INSERT语句不支持直接对子查询进行插入操作,比如: + +`insert into (select * from t1) values(1, 1);` + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/42.KILL.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/42.KILL.md new file mode 100644 index 000000000..ae0a9ed3e --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/42.KILL.md @@ -0,0 +1,60 @@ +KILL +========================= + + + +描述 +----------- + +该语句用来终止一个会话。 +**说明** + + + +如果您拥有 PROCESS 权限,则您可以查看所有会话。如果您拥有 SUPER 权限,您可以终止所有会话和语句。否则,您只能查看和终止您自己的会话和语句。 + +格式 +----------- + +```javascript +KILL [CONNECTION | QUERY] 'sessionid' +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-----------------|-----------------------------------| +| KILL CONNECTION | 与不含修改符的KILL一样,可终止给定的 *threadid* 。 | +| KILL QUERY | 可终止连接当前正在执行的语句,但是会保持连接的原状。 | + + + +示例 +----------- + +终止 sessionid 为 3221638213 的会话连接当前正在执行的语句后,再终止该会话。 + +```javascript +OceanBase(admin@test)>show processlist; ++------------+-------+--------------------+------+---------+------+--------+------------------+ +| Id | User | Host | db | Command | Time | State | Info | ++------------+-------+--------------------+------+---------+------+--------+------------------+ +| 3221638212 | admin | 1.11.111.127:11161 | test | Query | 0 | ACTIVE | show processlist | +| 3221638213 | admin | 1.11.111.127:11161 | test | Query | 0 | ACTIVE | select "abcedfg" | ++------------+-------+--------------------+------+---------+------+--------+------------------+ +1 row in set (0.03 sec) + +OceanBase(admin@test)>kill query 3221638213; +Query OK, 0 rows affected (0.01 sec) + +OceanBase(admin@test)>kill 3221638212; +Query OK, 0 rows affected (0.01 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/43.purge-database.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/43.purge-database.md new file mode 100644 index 000000000..9652b1c9d --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/43.purge-database.md @@ -0,0 +1,60 @@ +PURGE DATABASE +=================================== + + + +描述 +----------- + +该语句用于删除放在回收站的数据库。 + +格式 +----------- + +```javascript + PURGE DATABASE object_name; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-------------|--------------| +| object_name | 对象进入回收站后的新名字 | + + + +示例 +----------- + +* 删除放在回收站的数据库 __recycle_$_1_1597384386029184。 + + + + +```javascript +OceanBase(admin@test)> create database db1; +Query OK, 1 row affected (0.03 sec) + +OceanBase(admin@test)> drop database db1; +Query OK, 0 rows affected (0.04 sec) + +OceanBase(admin@test)> show recyclebin; ++--------------------------------+---------------+----------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++--------------------------------+---------------+----------+----------------------------+ +| __recycle_$_1_1597384386029184 | db1 | DATABASE | 2020-08-14 13:53:06.029367 | ++--------------------------------+---------------+----------+----------------------------+ +1 row in set (0.01 sec) + +OceanBase(admin@test)> purge database __recycle_$_1_1597384386029184; +Query OK, 0 rows affected (0.03 sec) + +OceanBase(admin@test)> show recyclebin; +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/44.purge-index.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/44.purge-index.md new file mode 100644 index 000000000..0ddb29406 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/44.purge-index.md @@ -0,0 +1,62 @@ +PURGE INDEX +================================ + + + +描述 +----------- + +该语句用来删除放在回收站中的索引表。 + +格式 +----------- + +```javascript + PURGE INDEX object_name; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-------------|--------------| +| object_name | 对象进入回收站后的新名字 | + + + +示例 +----------- + +* 删除放在回收站中的索引表 __recycle_$_1_1597387726700872。 + + + + +```javascript +OceanBase(admin@test)> create table t1(c1 int); +Query OK, 0 rows affected (0.09 sec) + +OceanBase(admin@test)> create index idx on t1(c1); +Query OK, 0 rows affected (0.48 sec) + +OceanBase(admin@test)> drop table t1; +Query OK, 0 rows affected (0.03 sec) + +OceanBase(admin@test)> show recyclebin; ++--------------------------------+----------------------------+-------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++--------------------------------+----------------------------+-------+----------------------------+ +| __recycle_$_1_1597387726700872 | __idx_1101710651081557_idx | INDEX | 2020-08-14 14:48:46.699145 | +| __recycle_$_1_1597387726712976 | t1 | TABLE | 2020-08-14 14:48:46.712643 | ++--------------------------------+----------------------------+-------+----------------------------+ +5 rows in set (0.01 sec) + +OceanBase(admin@test)> purge index __recycle_$_1_1597387726700872; +Query OK, 0 rows affected (0.04 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/45.purge-recyclebin.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/45.purge-recyclebin.md new file mode 100644 index 000000000..b28b5753a --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/45.purge-recyclebin.md @@ -0,0 +1,43 @@ +PURGE RECYCLEBIN +===================================== + + + +描述 +----------- + +该语句用于 root 用户清空回收站。 +**注意** + + + +PURGE RECYCLEBIN会清除回收站中的所有东西,只有 root 用户才能够执行这条语句,操作时请谨慎。 + +格式 +----------- + +```javascript + PURGE RECYCLEBIN; +``` + + + +参数解释 +------------- + +无。 + +示例 +----------- + +* root 用户清空回收站。 + + + + +```javascript +OceanBase(admin@test)> purge recyclebin; +Query OK, 0 rows affected (0.03 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/46.purge-table.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/46.purge-table.md new file mode 100644 index 000000000..238a67e6e --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/46.purge-table.md @@ -0,0 +1,59 @@ +PURGE TABLE +================================ + + + +描述 +----------- + +该语句用于删除放在回收站的表。 + +格式 +----------- + +```javascript + PURGE TABLE object_name; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-------------|--------------| +| object_name | 对象进入回收站后的新名字 | + + + +示例 +----------- + +* 删除放在回收站中的表 __recycle_$_1_1099511628776_1099511677778。 + + + + +```javascript +OceanBase(admin@test)> create table test(c1 int); +Query OK, 0 rows affected (0.16 sec) + +OceanBase(admin@test)> drop table test; +Query OK, 0 rows affected (0.03 sec) + +OceanBase(admin@test)> show recyclebin; ++-------------------------------------------+---------------+-------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++-------------------------------------------+---------------+-------+----------------------------+ +| __recycle_$_1_1099511628776_1099511677778 | test | TABLE | 2017-10-20 17:40:22.304025 | ++-------------------------------------------+---------------+-------+----------------------------+ +1 row in set (0.02 sec) + +OceanBase(admin@test)> purge table __recycle_$_1_1099511628776_1099511677778; +Query OK, 0 rows affected (0.04 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/47.purge-tenant.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/47.purge-tenant.md new file mode 100644 index 000000000..de8deded8 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/47.purge-tenant.md @@ -0,0 +1,63 @@ +PURGE TENANT +================================= + + + +描述 +----------------------- + +该语句用于删除放在回收站的租户。 +**注意** + + + +该语句只有系统租户可以执行。 + +格式 +----------------------- + +```unknow +PURGE TENANT tenant_name; +``` + + + +参数解释​ +-------------------------- + + + +| 参数 | 描述 | +|-------------|--------------------------------------------------------------------------------------| +| tenant_name | 租户名称。可以使用删除前的原始租户名,也可以使用在回收站中的名字。回收站中的名字具有唯一性,可以指定确定的租户;原始租户名可能会重复,此时删除的是最早进入回收站的租户。 | + + + +示例 +----------------------- + +* 删除放在回收站中的租户 mysql。 + + + + + + +```unknow +obclient>show recyclebin; ++--------------------------------+---------------+--------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++--------------------------------+---------------+--------+----------------------------+ +| __recycle_$_1_1599722585571328 | mysql | TENANT | 2020-09-10 15:36:54.712101 | ++--------------------------------+---------------+--------+----------------------------+ +1 row in set (0.02 sec) + +obclient>purge tenant mysql; +Query OK, 0 rows affected (0.17 sec) + +obclient>show recyclebin; +Empty set (0.02 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/48.rename-table.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/48.rename-table.md new file mode 100644 index 000000000..269215628 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/48.rename-table.md @@ -0,0 +1,96 @@ +RENAME TABLE +================================= + + + +描述 +----------- + +该语句用来对一个或多个表进行重命名。 + +格式 +----------- + +```javascript +RENAME TABLE tblname TO newtblname +[, tb1name2 TO newtblname ...]; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|---------------------------------------------------------------------------|------------------| +| tblname | 原表名。 | +| newtblname | 新表名。 | +| tblname TO newtblname \[, tb1name2 TO newtblname ...\]; | 多个表重命名时,使用","隔开。 | + + + +注意事项 +------------- + +* 重命名操作自动进行,重命名正在进行时,其他线程不能读取任何表。 + +* 如果此语句用于对多个表进行重命名,则重命名操作从左到右进行。 + +* 当您执行 RENAME 时,您不能有被锁定的表,也不能有处于活性状态的事务。还必须拥有原表的 ALTER 和 DROP 权限,以及新表的 CREATE 和 INSERT 权限。 + +* RENAME TABLE 也可以用于视图,只要确保是在同一个数据库中。 + + + + +示例 +----------- + +1. 创建表 t1 和 t2。 + + + + +```javascript +create table t1(c1 int); + +create table t2(c1 int); +``` + + + +2. 将表 t1 重命名为 t11。 + + + + +```javascript +rename table t1 to t11; +``` + + + +3. 将表 t11 重命名为 t111,表 t2 重命名为 t22。 + + + + +```javascript +rename table t11 to t111, t2 to t22; +``` + + + +4. 将表 t111 重命名为 t1111 后,再将表 t1111重命名为 t1。 + + + + +```javascript +rename table t111 to t1111, t1111 to t1; +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/49.rename-user.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/49.rename-user.md new file mode 100644 index 000000000..ad62b5b35 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/49.rename-user.md @@ -0,0 +1,110 @@ +RENAME USER +================================ + + + +描述 +----------- + +该语句用于修改 OceanBase 登录用户的用户名。 +**说明** + + + +必须拥有全局 CREATE USER 权限,才可以使用本命令。 + +格式 +----------- + +```javascript +RENAME USER +'oldusername' TO 'newusername' +[,'oldusername' TO 'newusername'...]; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|--------------------------------|-----------------------------------------------------------| +| oldusername | 旧用户名。 | +| newusername | 新用户名。用户名的占用字节小于或等于16。 | +| 'oldusername' TO 'newusername' | 修改用户名。同时修改多个用户名时,用","隔开。 修改前后,新旧用户权限保持一致。 | + + + +示例 +----------- + +1. 修改前,执行以下命令,查看用户。 + + + + +```javascript +SELECT user FROM mysql.user; +``` + + + +结果如下所示。 + +```javascript +mysql> SELECT user FROM mysql.user; ++-----------+ +| user | ++-----------+ +| root | +| admin | +| sqluser01 | +| sqluser02 | ++-----------+ +4 rows in set (0.00 sec) +``` + + + +2. 执行以下命令,将 sqluser01 用户的用户名修改为 obsqluser01。 + +```javascript +RENAME USER 'sqluser01' TO 'obsqluser01'; +``` + + + +3. 修改后,执行以下命令,查看用户。 + +```javascript +SELECT user FROM mysql.user; +``` + + + +结果如下所示。 sqluser01 用户的用户名被修改为 obsqluser01。 + +```javascript +mysql> RENAME USER 'sqluser01' TO 'obsqluser01'; +Query OK, 0 rows affected (0.04 sec) + +mysql> SELECT user FROM mysql.user; ++-------------+ +| user | ++-------------+ +| root | +| admin | +| obsqluser01 | +| sqluser02 | ++-------------+ +4 rows in set (0.00 sec) +``` + + + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/5.alter-resource-unit.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/5.alter-resource-unit.md new file mode 100644 index 000000000..67a6eb766 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/5.alter-resource-unit.md @@ -0,0 +1,60 @@ +ALTER RESOURCE UNIT +======================================== + + + +描述 +----------- + +该语句用来修改资源单元配置。 + +格式 +----------- + +```javascript +ALTER RESOURCE UNIT unitname +MAX_CPU [=] cpunum, +MAX_MEMORY [=] memsize, +MAX_IOPS [=] iopsnum, +MAX_DISK_SIZE [=] disksize, +MAX_SESSION_NUM [=] sessionnum, +[MIN_CPU [=] cpunum,] +[MIN_MEMORY [=] memsize,] +[MIN_IOPS [=] iopsnum] ; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-----------------|---------------------------------------------------| +| MAX_CPU | 指定要修改的 CPU 最多数量 | +| MAX_MEMORY | 指定要修改的最大内存容量,取值范围为\[1073741824, +∞) 单位为字节,即最小值为1G | +| MAX_IOPS | 指定要修改的 IOPS 最多数量,取值范围为\[128,+∞) | +| MAX_DISK_SIZE | 指定要修改的最大硬盘容量,取值范围为[536870912,+∞]单位为字节,即最小值为512M | +| MAX_SESSION_NUM | 指定要修改的 session 最多数量,取值范围为\[64,+∞) | +| MIN_CPU | 指定要修改的 CPU 最少数量 | +| MIN_MEMORY | 指定要修改的最小内存容量 | +| MIN_IOPS | 指定要修改的 IOPS 最少数量 | + + + +示例 +----------- + +* 修改资源单元 unit1 最高配置为 2个CPU,2G 的内存容量。 + + + + +```javascript +OceanBase(admin@test)> ALTER RESOURCE UNIT unit1 max_cpu 2, max_memory '2G'; +Query OK, 0 rows affected (0.02 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/50.REPLACE.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/50.REPLACE.md new file mode 100644 index 000000000..c06309141 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/50.REPLACE.md @@ -0,0 +1,124 @@ +REPLACE +============================ + + + +描述 +----------- + +该语句用于替换一个或多个记录到表。如果没有主键或唯一键冲突则插入记录,如果存在冲突则先删除冲突记录再插入新的记录。 + +格式 +----------- + +```javascript +replace_stmt: + REPLACE [INTO] table_factor [PARTITION (partition_name_list)] [(column_name_list)] + {VALUES | VALUE} column_value_lists; + +partition_name_list: + partition_name [, partition_name ...] + +column_name_list: + column_name [, column_name ...] + +column_value_lists: + (column_value_list) [, (column_value_list) ...] + +column_value_list: + column_value [, column_value ...] + +column_value: + {expression | DEFAULT} +``` + + + + + +### 参数解释 + + + +| **参数** | **描述** | +|---------------------|-----------| +| table_factor | 替换的表名 | +| column_name_list | 指定替换数据的列 | +| partition_name_list | 替换表指定的分区名 | + + + +### 示例 + +本示例基于如下表定义。 + +```javascript +OceanBase(admin@test)>create table test (c1 int primary key, c2 varchar(40)); +Query OK, 0 rows affected (0.23 sec) +``` + + + +1. 替换 test 表中的行一和行二的值分别为 'hello alibaba' 和 'hello ob'。 + + + + +```javascript +OceanBase(admin@test)>REPLACE INTO test VALUES (1, 'hello alibaba'),(2, 'hello ob'); +Query OK, 2 rows affected (0.01 sec) +Records: 2 Duplicates: 0 Warnings: 0 +``` + + + +2. 查看 test 表中的行一和行二内容。 + + + + +```javascript +OceanBase(admin@test)>SELECT * FROM test; ++----+---------------+ +| c1 | c2 | ++----+---------------+ +| 1 | hello alibaba | +| 2 | hello ob | ++----+---------------+ +2 rows in set (0.00 sec) +``` + + + +3. 替换表 test 中的行三和行二的内容分别为 'hello alibaba' 和 'hello oceanbase'。 + + + + +```javascript +OceanBase(admin@test)>REPLACE INTO test VALUES (3, 'hello alibaba'),(2, 'hello oceanbase'); +Query OK, 3 rows affected (0.00 sec) +Records: 2 Duplicates: 1 Warnings: 0 +``` + + + +4. 查看 test 表中的行一、行二和行三的内容。 + + + + +```javascript +OceanBase(admin@test)>SELECT * FROM test; ++----+-----------------+ +| c1 | c2 | ++----+-----------------+ +| 1 | hello alibaba | +| 2 | hello oceanbase | +| 3 | hello alibaba | ++----+-----------------+ +3 rows in set (0.00 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/51.REVOKE.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/51.REVOKE.md new file mode 100644 index 000000000..8206f70a5 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/51.REVOKE.md @@ -0,0 +1,113 @@ +REVOKE +=========================== + + + +描述 +----------- + +该语句用于系统管理员撤销 User 的某些权限。 + +使用说明如下: + +* 用户必须拥有被撤销的权限(例如,user1 要撤销 user2 对表 t1 的 SELECT 权限,则 user1 必须拥有表 t1 的 SELECT的权限),并且拥有 GRANT OPTION权限。 + +* 撤销 ALL PRIVILEGES 和 GRANT OPTION 权限时,当前用户必须拥有全局 GRANT OPTION 权限,或者对权限表的UPDATE 及 DELETE 权限。 + +* 撤销操作不会级联。例如,用户 user1 给 user2 授予了某些权限,撤回 user1 的权限不会同时也撤回 user2 的相应权限。 + + + + +格式 +----------- + +```javascript +REVOKE priv_type +     ON database.tblname +     FROM 'username'; + +privilege_type: + ALTER + | CREATE + | CREATE USER + | CREATE VIEW + | DELETE + | DROP + | GRANT OPTION + | INDEX + | INSERT + | PROCESS + | SELECT + | SHOW DATABASES + | SHOW VIEW + | SUPER + | UPDATE + | USAGE +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|------------------|---------------------------------------------------------------------------------------| +| priv_type | 指定撤销的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时对某个用户撤销多个权限时,权限类型用","隔开。 | +| database.tblname | 指定数据库中的表。 用"\*"代替 database 或 *table_name* ,表示撤销全局权限,即撤销对数据库中所有表的操作权限。 | +| username | 指定撤销权限的用户。同时撤销多个用户的授权时,用户名用","隔开。 | + + + +可以撤销的权限类型如下表所示。 + +**权限类型说明表** + + +| **权限** | **说明** | +|-------------------|-----------------------------------------------------------------| +| ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 | +| ALTER | ALTER TABLE的权限。 | +| CREATE | CREATE TABLE的权限。 | +| CREATE USER | CREATE USER,DROP USER,RENAME USER和REVOKE ALL PRIVILEGES的权限。 | +| CREATE TABLEGROUP | 全局CREATE TABLEGROUP的权限。 | +| DELETE | DELETE的权限。 | +| DROP | DROP的权限。 | +| GRANT OPTION | GRANT OPTION的权限。 | +| INSERT | INSERT的权限。 | +| SELECT | SELECT的权限。 | +| UPDATE | UPDATE的权限。 | +| SUPER | SET GLOBAL修改全局系统参数的权限。 | +| SHOW DATABASES | 全局 SHOW DATABASES的权限。 | +| INDEX | CREATE INDEX, DROP INDEX的权限。 | +| CREATE VIEW | 创建、删除视图的权限。 | +| SHOW VIEW | SHOW CREATE VIEW权限。 | +| CREATE SYNONYM | 创建同义词的权限。 | + + + + +**说明** + + + +目前没有change effective tenant 的权限控制,故 sys 租户下的用户都可以撤销权限。 + +示例 +----------- + +执行以下命令撤销用户 obsqluser01 的所有权限。 + +```javascript +OceanBase(admin@TEST)>REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'obsqluser01'; +Query OK, 0 rows affected (0.03 sec) +``` + + + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/52.SAVEPOINT.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/52.SAVEPOINT.md new file mode 100644 index 000000000..dcf022ec4 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/52.SAVEPOINT.md @@ -0,0 +1,140 @@ +SAVEPOINT +============================== + + + +描述 +----------- + +SAVEPOINT语句用来实现事务的部分回滚。 + +格式 +----------- + +1. 创建savepoint: + + + + +```javascript +SAVEPOINT spname +``` + + + + + +2. 回滚到savepoint: + + + + +```javascript +ROLLBACK [WORK] to [SAVEPOINT] spname +``` + + + + + +3. 删除savepoint: + + + + +```javascript +RELEASE SAVEPOINT spname +``` + + + + + +参数说明 +------------- + +* spname:指定savepoint的名称。savepoint是事务范围内唯一的,一个savepoint会覆盖前一个同名的savepoint。创建savepoint后可以将事务回滚到指定savepoint,也可以使用`ROLLBACK`语句回滚整个事务。 + + + + + + +举例 +----------- + +假设一个事务执行了如下语句: + + +| **sql_no** | **语句** | **分区** | +|------------|---------------|------------| +| 1 | update... | p1, p4 | +| | savepoint sp1 | | +| 2 | update... | p2, p4 | +| 3 | update... | p3, p5 | +| | savepoint sp2 | | +| 4 | update... | p1, p3, p6 | +| 5 | update... | p1, p5 | +| | savepoint sp3 | | +| 6 | select... | | +| 7 | update... | p5, p6 | +| | savepoint sp4 | | + + + +#### 记录savepoint + +用户在提交事务之前可以创建savepoint,需要根据savepoint创建的顺序,将事务的savepoint串成链表。以上事务包含了7条sql和4个savepoint,记录savepoint的链表如下图所示,其中每个节点记录了\的映射关系: + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/3501155061/p149175.png "image.png") + + + +#### 事务参与者列表 + +事务为了支持回滚某条sql之后的所有修改,需要将每条语句涉及的参与者以及对应的sql_no记录下来,以上事务执行了7条sql,涉及p1\~p6共6个partition: + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/3501155061/p149176.png "image.png") + + + +#### savepoint回滚过程 + +1. 根据savepoint链表查询spname对应的sql_no + + + + +假设用户执行`ROLLBACK to SAVEPOINT sp2`,根据savepoint链表查询到sp2对应的sql_no为3。 + +2. 根据事务参与者列表查询sql_no对应的partition + + + + +根据事务参与者列表查询到sql_no大于3的语句操作的分区涉及p1、p3、p5、p6。 + +3. 回滚分区数据 + + + + +根据第2步查询到的分区,调度程序向这些分区发起回滚请求,回滚当前事务在这些分区上sp2之后的所有修改。其中p1、p3、p5上关于本事务的部分修改被回滚掉,p6上关于本事务的所有修改都被回滚掉。 + +4. 更新事务参与者列表信息 + + + + +修改事务参与者列表,将sql_no大于3的操作信息从事务参与者列表中删除,由于p6上的所有修改都被回滚掉,因此p6可以从参与者列表中删除。 + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/3501155061/p149177.png "image.png") + +5. 删除无效的savepoint + + + + +用户执行`ROLLBACK to SAVEPOINT sp2`成功后,系统会删除sp3和sp4的savepoint,不允许再回滚到sp3和sp4。 + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/3501155061/p149178.png "image.png") diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/53.SCHEMA.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/53.SCHEMA.md new file mode 100644 index 000000000..4643f06a7 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/53.SCHEMA.md @@ -0,0 +1,6 @@ +SCHEMA +=========================== + + + +`SCHEMA`同`DATABASE`,请参考 CREATE DATABASE、ALTER DATABASE、DROP DATABASE 的详细描述。 diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/54.SELECT.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/54.SELECT.md new file mode 100644 index 000000000..97cb7d991 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/54.SELECT.md @@ -0,0 +1,376 @@ +SELECT +=========================== + + + +SELECT 的语法相对比较复杂。本节首先会介绍普通的 SELECT 语法结构,然后介绍集合类 SELECT 的语法结构。 + +SIMPLE SELECT +---------------------- + +### 描述 + +该语句用于查询表中的内容。 + +### 格式 + +```javascript +simple_select: +SELECT [/*+ hint statement */] [ALL | DISTINCT | UNIQUE | SQL_CALC_FOUND_ROWS] + select_expr_list FROM from_list [WHERE condition] + [GROUP BY group_expression_list [WITH ROLLUP] [HAVING condition]] + [ORDER BY order_expression_list] + [limit_clause] + [FOR UPDATE] + +select_expr: + table_name.* + | table_alias_name.* + | expr [[AS] column_alias_name] + +from_list: + table_reference [, table_reference ...] + +table_reference: + simple_table + | joined_table + +simple_table: + table_factor [partition_option] [[AS] table_alias_name] + | (select_stmt) [AS] table_alias_name + | (table_reference_list) + +joined_table: + table_reference [INNER] JOIN simple_table [join_condition] + | table_reference outer_join_type JOIN simple_table join_condition + +partition_option: + PARTITION (partition_name_list) + +partition_name_list: + partition_name [, partition_name ...] + +outer_join_type: + {LEFT | RIGHT | FULL} [OUTER] + +join_condition: + ON expression + +condition: + expression + +group_expression_list: + group_expression [, group_expression ...] + +group_expression: + expression [ASC | DESC] + +order_expression_list: + order_expression [, order_expression ...] + +order_expression: + expression [ASC | DESC] + +limit_clause: + LIMIT {[offset,] row_count |row_count OFFSET offset} +``` + + + +### 参数解释 + + + +| 参数 | 描述 | +|--------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ALL \| DISTINCT \| UNIQUE \| SQL_CALC_FOUND_ROWS | 在数据库表中,可能会包含重复值。 * 指定"DISTINCT",则在查询结果中相同的行只显示一行; * 指定"ALL",则列出所有的行; * 指定"SQL_CALC_FOUND_ROWS",则不输出数据,只返回数据行数; * 不指定时,默认为"ALL"。 | +| select_expr | 列出要查询的表达式或列名,用","隔开。也可以用"\*"表示所有列。 | +| AS othername | 为输出字段重新命名。 | +| FROM table_references | 指名了从哪个表或哪些表中读取数据(支持多表查询)。 | +| WHERE where_conditions | 可选项,WHERE 字句用来设置一个筛选条件,查询结果中仅包含满足条件的数据。where_conditions 为表达式。 | +| GROUP BY group_by_list | 用于进行分类汇总。 | +| HAVING search_confitions | HAVING 字句与 WHERE 字句类似,但是 HAVING 字句可以使用累计函数(如 SUM,AVG 等)。 | +| ORDER BY order_list order_list : colname \[ASC \| DESC\] \[,colname \[ASC \| DESC\]...\] | 用来按升序(ASC)或者降序(DESC)显示查询结果。不指定 ASC 或者 DESC 时,默认为 ASC。 | +| \[LIMIT {\[offset,\] row_count \|row_count OFFSET offset}\] | 强制 SELECT 语句返回指定的记录数。 LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。 * 如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。 * 如果只给定一个参数,它表示返回记录行的最大数目,偏移量为0。 | +| FOR UPDATE | 对查询结果所有行上排他锁,以阻止其他事务的并发修改,或阻止在某些事务隔离级别时的并发读取。 | +| PARTITION(partition_list) | 指定查询表的分区信息。例如:partition(p0,p1...) | + + + +### 示例 + +以如下表 a 为例。 + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5455055061/p179248.png "image.png") + +* 从表 a 中读取 name 数据。 + + + + + + +```javascript +SELECT name FROM a; +``` + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5455055061/p179249.png "image.png") + +* 在查询结果中对 name 进行去重处理。 + + + + + + +```javascript +SELECT DISTINCT name FROM a; +``` + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5455055061/p179250.png "image.png") + +* 从表 a 中查询 id,name,num,然后把 num 列除以2输出,输出的列名为 avg。 + + + + + + +```javascript +SELECT id, name, num/2 AS avg FROM a; +``` + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5455055061/p179251.png "image.png") + +* 从表 a 中根据筛选条件" name = 'a' " ,输出对应的 id 、name 和 num 。 + + + + + + +```javascript +SELECT id, name, num FROM a WHERE name = 'a'; +``` + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5455055061/p179252.png "image.png") + +* 从表 a 中查询 id,name,按照 name 分组对 num 求和,并输出。 + + + + + + +```javascript +SELECT id, name, SUM(num) FROM a GROUP BY name; +``` + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/6455055061/p179253.png "image.png") + +* 从表 a 中查询 id,name,按照 name 分组对 num 求和,查询 num 总和小于160的行,并输出。 + + + + + + +```javascript +SELECT id, name, SUM(num) as sum FROM a GROUP BY name HAVING SUM(num) < 160; +``` + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/6455055061/p179254.png "image.png") + +* 从表 a 中查询 id,name,num,根据 num 按升序(ASC)输出查询结果。 + + + + + + +```javascript +SELECT * FROM a ORDER BY num ASC; +``` + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/6455055061/p179255.png "image.png") + +* 从表 a 中查询 id,name,num,根据 num 按降序(DESC)输出查询结果。 + + ```javascript + SELECT * FROM a ORDER BY num DESC; + ``` + + ![](https://icms.alibaba-inc.com/api/v2/open/lite-inoe/cms/load?url=../images/p179256.png&langId=1&t=1604912832327) + +* 从表 a 中查询 id,name,num,使用 LIMIT强制从第2行开始,返回表 a 的两行结果。 + + ```javascript + SELECT * FROM a LIMIT 1,2; + ``` + + + + ​![](https://cdn.nlark.com/yuque/0/2020/png/1701278/1595841219661-e9f4c4ae-ec93-4828-be06-1d5f9004e788.png) + + + + + +集合类 SELECT +------------------- + +### 描述 + +该语句用于对多个 SELECT 查询的结果进行 UNION,MINUS,INTERSECT。 + +### 格式 + +```javascript +select_clause_set: + simple_select [ UNION | UNION ALL | EXCEPT | INTERSECT] select_clause_set_left + [ORDER BY sort_list_columns] [limit_clause] +select_clause_set_right: + simple_select | + select_caluse_set +``` + + + +### 参数解释 + + + +| 参数 | 描述 | +|-----------|--------------------------| +| UNION ALL | 合并两个查询的结果 | +| UNION | 合并两个查询的结果,并去重 | +| EXCEPT | 从左查询结果集中去重出现在右查询中的结果,并去重 | +| INTERSECT | 保留左查询结果集中出现在右查询中的结果,并去重 | + + + +### 示例 + +以如下两表的数据为例: + +```javascript +create table t1 (c1 int, c2 int); +create table t2 (c1 int, c2 int); +insert into t1 values (1, -1), (2, -2); +insert into t2 values (1, 1), (2, -2), (3, 3); +``` + + + +* 计算 T1, T2 的所有的记录 + + + + + + +```javascript +SELECT C1, C2 FROM T1 UNION ALL SELECT C1, C2 FROM T2; ++------+------+ +| C1 | C2 | ++------+------+ +| 1 | -1 | +| 2 | -2 | +| 1 | 1 | +| 2 | -2 | +| 3 | 3 | ++------+------+ +``` + + + +* 计算 T1, T2 的去重后的所有记录 + + + + + + +```javascript +SELECT C1, C2 FROM T1 UNION SELECT C1, C2 FROM T2; ++------+------+ +| C1 | C2 | ++------+------+ +| 1 | -1 | +| 2 | -2 | +| 1 | 1 | +| 3 | 3 | ++------+------+ +``` + + + +* 计算 T1 和 T2 的交集 + + + + + + +```javascript +SELECT C1, C2 FROM T1 INTERSECT SELECT C1, C2 FROM T2; ++------+------+ +| C1 | C2 | ++------+------+ +| 2 | -2 | ++------+------+ +``` + + + +* 计算 T1 和 T2 的差集 + + + + + + +```javascript +SELECT C1, C2 FROM T1 EXCEPT SELECT C1, C2 FROM T2; ++------+------+ +| C1 | C2 | ++------+------+ +| 1 | -1 | ++------+------+ +``` + + + +* 取 T1 和 T2 并集中 C2 排序最大的前两行 + + + + + + +```javascript +SELECT C1, C2 FROM T1 UNION SELECT C1, C2 FROM T2 ORDER BY C2 DESC LIMIT 2; ++------+------+ +| C1 | C2 | ++------+------+ +| 3 | 3 | +| 1 | 1 | ++------+------+ +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/55.SESSION.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/55.SESSION.md new file mode 100644 index 000000000..5347a1687 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/55.SESSION.md @@ -0,0 +1,63 @@ +SESSION +============================ + + + +描述 +----------- + +该语句用来强制结束 session。 + +格式 +----------- + +```javascript +session_stmt: + KILL [CONNECTION] session_id; + +session_id: + INT_VALUE +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|------------|-----------------| +| session_id | 要结束 session 的编号 | + + + +示例 +----------- + +* 强制结束编号为 3221502221和 3221750376 的 session。 + + + + +```javascript +OceanBase(admin@test)>show processlist; ++------------+-------+---------------------+------+---------+------+--------+----------------------------------+ +| Id | User | Host | db | Command | Time | State | Info | ++------------+-------+---------------------+------+---------+------+--------+----------------------------------+ +| 3221502221 | admin | 100.xx.xx.xx:44775 | test | Sleep | 10 | SLEEP | NULL | +| 3221502083 | admin | 100.xx.xx.xx:44720 | test | Query | 0 | ACTIVE | show processlist | +| 3221502317 | NULL | 100.xx.xx.xx:41414 | test | Query | 0 | ACTIVE | REMOTE/DISTRIBUTE PLAN EXECUTING | +| 3221750377 | NULL | 100.xx.xx.xx:41414 | test | Query | 0 | ACTIVE | REMOTE/DISTRIBUTE PLAN EXECUTING | +| 3221750376 | admin | 100.xx.xx.xx:43783 | test | Sleep | 4 | SLEEP | NULL | ++------------+-------+---------------------+------+---------+------+--------+----------------------------------+ +5 rows in set (0.04 sec) + +OceanBase(admin@test)>kill 3221502221; +Query OK, 0 rows affected (0.00 sec) + +OceanBase(admin@test)>kill connection 3221750376; +Query OK, 0 rows affected (0.05 sec) +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/56.set-password.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/56.set-password.md new file mode 100644 index 000000000..ba6151afd --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/56.set-password.md @@ -0,0 +1,49 @@ +SET PASSWORD +================================= + + + +描述 +----------- + +该用于修改 OceanBase 当前登录用户或其他用户的密码。 + +格式 +----------- + +```javascript +SET PASSWORD [FOR user] = password_option; + +password_option: { +PASSWORD('authstring') +|'hashstring' +} +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|----------|----------------------------------------------------------------------------------------------------------------------------------------------| +| FOR user | 如果没有 For user 子句,表示修改当前用户的密码。任何成功登录的用户都可以修改当前用户的密码。 如果有 For user 子句,表示修改指定用户的密码。必须拥有全局(MySQL库)的 CREATE USER 权限,才可以修改指定用户的密码。 | + + + +示例 +----------- + +执行以下命令将 sqluser01 用户的密码修改为 abc123。 + +```javascript +oceanBase(admin@TEST)>set password for sqluser01 = password('abc123'); +Query OK, 0 rows affected (0.02 sec) +``` + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/57.show-grants.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/57.show-grants.md new file mode 100644 index 000000000..d8e67eb49 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/57.show-grants.md @@ -0,0 +1,51 @@ +SHOW GRANTS +================================ + + + +描述 +----------- + +该语句用于系统管理员查看 User 的操作权限。 + +格式 +----------- + +```javascript +SHOW GRANTS [FOR username]; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|--------------|----------------------------------------------------------------------------------------------------| +| FOR username | 如果不指定用户名,则缺省显示当前用户的权限。当前用户可以查看自己的权限。 如果需要查看其他指定用户的权限,必须拥有对 mysql.user 的 SELECT 权限。 | + + + +示例 +----------- + +查看看用户 obsqluser01 的权限。 + +```javascript +oceanBase(admin@TEST)>show grants for obsqluser01; ++-------------------------------------+ +| Grants for obsqluser01@% | ++-------------------------------------+ +| GRANT USAGE ON *.* TO 'obsqluser01' | ++-------------------------------------+ +1 row in set (0.02 sec) +``` + + + + + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/58.show-recyclebin.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/58.show-recyclebin.md new file mode 100644 index 000000000..aff06660b --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/58.show-recyclebin.md @@ -0,0 +1,50 @@ +SHOW RECYCLEBIN +==================================== + + + +描述 +----------- + +该语句用于查看回收站中的内容。 + +格式 +----------- + +```javascript + SHOW RECYCLEBIN; +``` + + + +参数解释 +------------- + +无。 + +示例 +----------- + +* 查看回收站中的内容。 + + + + +```javascript +OceanBase(admin@test)> create table t1(c1 int); +Query OK, 0 rows affected (0.24 sec) + +OceanBase(admin@test)> drop table t1; +Query OK, 0 rows affected (0.07 sec) + +OceanBase(admin@test)> show recyclebin; ++-------------------------------------------+---------------+-------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++-------------------------------------------+---------------+-------+----------------------------+ +| __recycle_$_1_1099511628776_1099511677777 | t1 | TABLE | 2017-10-20 17:27:40.881506 | ++-------------------------------------------+---------------+-------+----------------------------+ +1 row in set (0.02 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/59.TRANSACTION.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/59.TRANSACTION.md new file mode 100644 index 000000000..41ad83de5 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/59.TRANSACTION.md @@ -0,0 +1,106 @@ +TRANSACTION +================================ + + + +描述 +----------- + +该语句用于开启事务。 + +数据库事务(Database Transaction)是指作为单个逻辑工作单元执行的一系列操作。事务处理可以用来维护数据库的完整性,保证成批的SQL操作全部执行或全部不执行。 + +显示事务是用户自定义或用户指定的事务。通过 BEGIN TRANSACTION,或 BEGIN 和 BEGIN WORK(被作为START TRANSACTION的别名受到支持)语句显示开始,以 COMMIT 或 ROLLBACK 语句显示结束。 + +格式 +----------- + +```javascript +transaction_stmt: + START TRANSACTION [READ ONLY | READ WRITE]; + | BEGIN [WORK]; + | COMMIT [WORK]; + | ROLLBACK [WORK]; + | SET TRANSACTION {READ ONLY | READ WRITE}; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| START TRANSACTION \[READ ONLY \| READ WRITE\] | 开启事务语句。一旦开启事务,则随后的 SQL 数据操作语句(即INSERT、UPDATE、DELETE等)直到显式提交时才会生效。 READ ONLY 子句表示事务是只读方式开启,事务内不允许执行修改操作。 READ WRITE 子句表示事务是读写方式开启,默认就是此种模式。 | +| BEGIN | BEGIN 和 BEGIN WORK 被作为 START TRANSACTION 的别名受到支持 | +| COMMIT | 提交当前事务。 | +| ROLLBACK | 回滚当前事务。 | +| SET TRANSACTION {READ ONLY \| READ WRITE} | 将当前事务设置成 READ ONLY 或者 READ WRITE 模式。 | + + + +示例 +----------- + +假设现有表 a 如下所示。 + + +| id | name | num | sell_date | +|----|------|-----|---------------------| +| 1 | a | 100 | 2013-06-21 10:06:43 | +| 2 | b | 200 | 2013-06-21 13:07:21 | +| 3 | a | 50 | 2013-06-21 13:08:15 | + + + +1. 依次执行以下命令开始执行事务,将 id 为 3 的的 name 改为 c,并插入一行当前卖出 a 的记录。 + + + + +```javascript +OceanBase(admin@test)> START TRANSACTION; +Query OK, 0 rows affected (0.00 sec) + +OceanBase(admin@test)> UPDATE a SET name = 'c' WHERE id = 3; +Query OK, 1 rows affected (0.00 sec) + +OceanBase(admin@test)> INSERT INTO a VALUES (4, 'a', 30, '2013-06-21 16:09:13'); +Query OK, 1 rows affected (0.00 sec) + +OceanBase(admin@test)> COMMIT; +Query OK, 0 rows affected (0.00 sec) +``` + + + +2. 事务提交后,执行命令查看表 a 信息。 + + + + +```javascript +SELECT * FROM a; +``` + + + +结果如下: + + +| id | name | num | sell_date | +|----|------|-----|---------------------| +| 1 | a | 100 | 2013-06-21 10:06:43 | +| 2 | b | 200 | 2013-06-21 13:07:21 | +| 3 | c | 50 | 2013-06-21 13:08:15 | +| 4 | a | 30 | 2013-06-21 16:09:13 | + + +**注意** + + + +在事务还没有 COMMIT 之前,您可以查看下本事务中的操作是否已经生效,比如可以在 COMMIT 前,加一句" **SELECT \* FROM a;** "。本事务 session 的访问能读到最新的结果,本事务 session 之外的访问结果肯定是没有生效,在事务还没有 COMMIT 前,你之前做的操作除当前事务连接之外都是不可见的。如果您想回滚该事务,直接用"ROOLBACK"代替"COMMIT"。 + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/6.alter-system.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/6.alter-system.md new file mode 100644 index 000000000..3e7e18a6e --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/6.alter-system.md @@ -0,0 +1,1356 @@ +ALTER SYSTEM +================================= + + + +ALTER SYSTEM 语句用来对 OceanBase 发送命令,执行某项指定操作。 + +BOOTSTRAP +------------------ + +#### 描述 + +该语句用于自举 OceanBase 集群。 + +#### 格式 + +```javascript +alter_system_bootstrap_stmt: + ALTER SYSTEM BOOTSTRAP opt_cluster_type region_zone_server_list; + +opt_cluster_type: + [CLUSTER cluster_role] + +cluster_role: + PRIMARY | STANDBY + +region_zone_server_list: + region_zone_server [, region_zone_server ...] + +region_zone_server: + [region] zone server + +region: + REGION [=] region_name + +zone: + ZONE [=] zone_name + +server: + SERVER [=] ip_port + +ip_port: + 'STR_VALUE:INT_VALUE' +``` + + + +#### 参数解释 + +系统自举时,需要指定 RootService 信息,多台 RootService 通过逗号(,)分隔。 + + +| **参数** | **描述** | +|--------------------|---------------------------------------| +| region_name | 指定 RootService 所在的地域,通过在"多地多中心"部署时指定。 | +| zone_name | 指定 RootService 所属的 Zone。 | +| ip_port | 指定 RootService 的 IP 和端口。 | +| PRIMARY \| STANDBY | 指定主备库。系统启动时需要指定主备库,如果不指定,默认采用主库启动。 | + + + +#### 示例 + +* 指定一台 RootService: + + + + + + +```javascript +ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.218.248.178:55410'; +``` + + + +* 多台 RootService 通过逗号(,)分隔: + + + + + + +```javascript +ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '172.24.65.24:55410', ZONE 'zone2' +SERVER '172.24.65.114:55410'; +``` + + + +* 启动备库 + + + + + + +```javascript +ALTER SYSTEM BOOTSTRAP CLUSTER STANDBY ZONE 'zone1' SERVER '10.218.248.178:55410'; +``` + + + + + +JOB +------------ + +#### 描述 + +该语句触发参数指定的后台任务。 + +#### 格式 + +```javascript +alter_system_job_stmt: +ALTER SYSTEM RUN JOB job_name +[zone | server]; +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| JOB job_name | 指定任务名称。有特殊字符时需要单引号,其它情况下单引号加与不加都支持,已支持的 JOB 有: * check_partition_table:OBServer 执行 partition table 核对删除任务 * root_inspection:触发 RootService 自检 | +| zone \| server | 该任务指定 Zone 或者 Server 执行。 | + + + +#### 示例 + +* 触发 RootService 自检任务。 + + + + + + +```javascript +ALTER SYSTEM RUN JOB "root_inspection"; +``` + + + + + +MERGE +-------------- + +#### 描述 + +该语句发起存储层合并。 + +#### 格式 + +```javascript +alter_system_merge_stmt: + ALTER SYSTEM merge_action; + +merge_action: + MAJOR FREEZE + | MINOR FREEZE + [tenant_list | replica] [server_list] [zone] + | START MERGE + zone + | {SUSPEND | RESUME} MERGE + [zone] + | CLEAN MERGE ERROR + +tenant_list: + TENANT [=] (tenant_name_list) + +tenant_name_list: + tenant_name [, tenant_name ...] + +replica: + PARTITION_ID [=] 'partition_id%partition_count@table_id' + +server_list: + SERVER [=] ip_port_list +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|---------------------------|---------------| +| MAJOR FREEZE | 发起每日合并。 | +| MINOR FREEZE | 发起转储。 | +| START MERGE | 开始每日合并。 | +| {SUSPEND \| RESUME} MERGE | 暂停或恢复每日合并。 | +| CLEAN MERGE ERROR | 清理合并出错的标记。 | +| tenant_name | 指定租户转储。 | +| PARTITION_ID | 指定副本转储。 | +| SERVER | 指定机器转储。 | +| zone | 指定 Zone 开始合并。 | + + + +#### 示例 + +* 发起每日合并。 + + + + + + +```javascript +OceanBase(root@oceanbase)>alter system major freeze; +Query OK, 0 rows affected (0.06 sec) +``` + + + + + +PARAMETER +------------------ + +#### 描述 + +该语句用来修改配置项信息。 + +#### 格式 + +```javascript +alter_system_parameter_stmt: + ALTER SYSTEM [SET] + parameter_name = expression [SCOPE = {MEMORY | SPFILE | BOTH}] [COMMENT [=} 'text'] + {SERVER [=] 'ip:port' | ZONE [=] 'zone'}; +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| parameter_name | 指定要修改的配置项名称。 | +| expression | 指定修改后的配置项的值。 | +| COMMENT 'text' | 用于添加关于本次修改的注释。该参数为可选,建议不要省略。 | +| SCOPE | 指定本次配置项修改的生效范围。它的值主要有以下三种: * MEMORY:表明只修改内存中的配置项,修改立即生效,且本修改在 Server 重启以后会失效(目前暂时没有配置项支持这种方式)。 * SPFILE:表明只修改配置表中的配置项值,当 Server 重启以后才生效。 * BOTH:表明既修改配置表,又修改内存值,修改立即生效,且 Server 重启以后配置值仍然生效。 SCOPE 默认值为 BOTH。对于不能立即生效的配置项,如果使用 BOTH 或 MEMORY,会报错 。 | +| SERVER | 只修改指定 Server 实例的某个配置项。 | +| ZONE | 表明本配置项的修改针对指定集群的特定 Server 类型,否则,针对所有集群的特定 Server 类型。 | + + +**说明** + + + +同时修改多个系统配置项时,用","隔开。 + +查看系统配置项的格式:`SHOW PARAMETERS [LIKE 'pattern' | WHERE expr];` + +#### 示例 + +* 修改配置项 enable_sql_audit 的信息。 + + + + + + +```javascript +OceanBase(root@oceanbase)>show parameters like 'enable_sql_audit'; ++------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | ++------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +| z1 | observer | 11.11.111.111 | 19510 | enable_sql_audit | NULL | True | specifies whether SQL audit is turned on. The default value is TRUE. Value: TRUE: turned on FALSE: turned off | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | ++------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +1 rows in set (0.02 sec) + +OceanBase(root@oceanbase)>alter system set enable_sql_audit = false scope = BOTH; +Query OK, 0 rows affected (0.05 sec) + +OceanBase(root@oceanbase)>show parameters like 'enable_sql_audit'; ++------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | ++------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +| z1 | observer | 11.11.111.111 | 19510 | enable_sql_audit | NULL | False | specifies whether SQL audit is turned on. The default value is TRUE. Value: TRUE: turned on FALSE: turned off | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | ++------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +1 rows in set (0.02 sec) +``` + + + + + +REFRESH +---------------- + +#### 描述 + +该语句系列用来触发刷新操作,包括刷新 schema、时区信息、各类缓存等。 + +#### 格式 + +```javascript +alter_system_refresh_stmt: + ALTER SYSTEM refresh_action; + +refresh_action: + REFRESH SCHEMA + [zone | server] + | REFRESH TIME_ZONE_INFO + | FLUSH cache_type CACHE + [tenant_list] [GLOBAL] + | FLUSH KVCACHE + [tenant] [CACHE [=] cache_name] + +cache_type: + ALL + | LOCATION + | CLOG + | ILOG + | COLUMN_STAT + | BLOCK_INDEX + | BLOCK + | ROW + | BLOOM_FILTER + | SCHEMA + | PLAN + +tenant: + TENANT [=] tenant_name + +cache_name: +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| REFRESH SCHEMA | 刷新 Schema。正常情况下,当系统执行 DDL 操作, RootService 都会主动通知所有 OBServer 刷新 Schema。当某些 OBServer 发生异常,和 RootService 网络中断,此时需要手动刷新 Schema。刷新Schema 可以针对单独的机器,也可以针对某个集群。 | +| REFRESH TIME_ZONE_INFO | 通知集群中的所有 Server 更新本地的时区信息。 | +| FLUSH cache_type CACHE | 清空指定 Cache 指令。 | +| FLUSH KVCACHE | 清空 KV Cache 指令。 * 如果指定 tenant 和 cache_name,则清除指定租户的指定 KV Cache * 如果只指定 tenant,则清除指定租户的全部KV Cache * 如果不指定 tenant 和 cache_name,则清除所有租户的全部KV Cache | + + + +#### 示例 + +* 刷新单台 OBServer 的 Schema: + + + + + + +```javascript +ALTER SYSTEM REFRESH SCHEMA SERVER='172.24.65.24:55410'; +``` + + + +* 刷新整个 Zone 的 Schema: + + + + + + +```javascript +ALTER SYSTEM REFRESH SCHEMA ZONE='zone1'; +``` + + + + + +REPLICA +---------------- + +#### 描述 + +该语句用来处理副本的迁移,复制,删除,副本类型转换,角色切换等行为。 + +#### 格式 + +```javascript +alter_system_replica_stmt: + ALTER SYSTEM replica_action; + +replica_action: + SWITCH REPLICA + {LEADER | FOLLOWER} + {replica server | server [tenant_name] | zone [tenant_name]} + | DROP REPLICA partition_id_desc + replica server [create_timestamp] [zone] [FORCE] + | {MOVE | COPY} REPLICA + replica source destination + | REPORT REPLICA partition_id_desc +     {zone | server} +   | RECYCLE REPLICA partition_id_desc +     {zone | server} +   | {ALTER | CHANGE | MODIFY} REPLICA   + replica server [set] REPLICA_TYPE = replica_type + +source: + SOURCE [=] 'ip:port' + +destination: + DESTINATION [=] 'ip:port' + +partition_id_desc + PARTITION_ID partition_id%partition_count@table_id + +partition_idx | partition_count | table_id | task_id: + INT_VALUE + +create_timestamp: + CREATE_TIMESTAMP [=] INT_VALUE + +tenant_name_list: + tenant_name [, tenant_name ...] + +replica_type: + {FULL | F} + | {READONLY | R} + | {LOGONLY | L} +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|-------------------------------------|---------------------------------------------------------------------------------------------------------------| +| SWITCH REPLICA | Leader 改选。 | +| DROP REPLICA | 副本删除。删除指定 OBServer 上的 Replica,必须指定 partition_id,OBServer 地址以及 create_timestamp。 | +| {MOVE \| COPY} REPLICA | 副本迁移/复制,需要指定源 OBServer 和目的 OBServer ,以及 partition_id。 | +| REPORT REPLICA | 副本汇报,强制要求某个 OBServer 或者某个 Zone 内的所有 OBServer 进行 Replica 汇报。 | +| RECYCLE REPLICA | 回收无用副本。 | +| {ALTER \| CHANGE \| MODIFY} REPLICA | 修改副本属性,可以修改指定副本的副本类型。现在已经支持的副本类型包括:FULL/READONLY/LOGONLY。'replica_type'的值可以是这三种副本类型的全称或者简写的首字符:'F/R/L';大小写通用。 | + + + +#### 示例 + +* 副本迁移 + + + + + + +```javascript +ALTER SYSTEM MOVE REPLICA PARTITION_ID '0%4@1100611139403777' +SOURCE '172.24.65.24:55410' +DESTINATION '172.24.65.26:55410'; +``` + + + +* 删除副本 + + + + + + +```javascript +ALTER SYSTEM DROP REPLICA PARTITION_ID '0%4@1100611139403777' +SERVER '172.24.65.26:55410'; +``` + + + +* 修改副本类型 + + + + + + +```javascript +ALTER SYSTEM CHANGE REPLICA PARTITION_ID '0%4@1100611139403777' +SERVER '172.24.65.26:55410'; +CHANGE REPLICA_TYPE = 'L'; +``` + + + +* Leader改选 + + + + + + +```javascript +ALTER SYSTEM SWITCH REPLICA LEADER PARTITION_ID '0%4@1100611139403777' +SERVER '172.24.65.26:55410'; +``` + + + + + +ROOTSERVICE +-------------------- + +#### 描述 + +切换 RS 的角色。 + +#### 格式 + +```javascript +alter_system_rootservice_stmt: +ALTER SYSTEM SWITCH ROOTSERVICE {LEADER | FOLLOWER} {zone | server}; +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|--------------------|---------------------------------| +| LEADER \| FOLLOWER | 把 RS 的角色设置为 Leader 或者 Follower。 | +| zone \| server | 修改指定 Zone 或 Server 的 RS 角色。 | + + + +#### 示例 + +* 把z1的 RS 切换为 Leader + + + + + + +```javascript +ALTER SYSTEM SWITCH ROOTSERVICE LEADER ZONE 'z1'; +``` + + + + + +SERVER +--------------- + +#### 描述 + +该语句维护系统中 OBServer 状态,控制 OBServer 的增、删、启、停等操作。 + +#### 格式 + +```javascript +alter_system_server_stmt: + ALTER SYSTEM server_action SERVER ip_port_list [zone]; + +server_action: + ADD + | DELETE + | CANCEL DELETE + | START + | STOP + | FORCE STOP + +ip_port_list: + ip_port [, ip_port ...] +``` + + + +#### 参数解释 + +服务器状态图如下: + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7401155061/p149171.png "image.png") + + +| **参数** | **描述** | +|---------------|-------------------------------------| +| ip_port | 指定 OBServer 的 IP 地址和端口 | +| zone | 如果指定 Zone,将会对待维护 Server 执行 Zone 校验。 | +| ADD | 新增服务器。 | +| DELETE | 删除服务器。 | +| CANCEL DELETE | 取消删除服务器。 | +| START | 启动服务器。 | +| STOP | 停止服务器。 | +| FORCE STOP | 强制停止服务器。 | + + + +#### 示例 + +* 新增服务器 + + + + + + +```javascript +ALTER SYSTEM ADD SERVER '172.24.65.113:55410' ZONE 'zone1'; +``` + + +**注意** + + + +* 通过 Add 和 Delete 命令将服务器加入到服务列表,只有服务列表中的服务器才可以提供服务。 + + + +* Delete 操作执行 leader 改选以及 replica 复制。 + + + +* Delete 操作执行时间很长,因此,允许通过 Cancel 命令取消该操作。 + + + + + + + + +THROTTLE +----------------- + +#### 描述 + +该语句用来设置特征限流。 + +#### 格式 + +```javascript +alter_system_throttle_stmt: + ALTER SYSTEM throttle_action; + +throttle_action: + ENABLE SQL THROTTLE [priority_option] [using_metric_option_list] + | DISABLE SQL + +priority_option: + FOR PRIORITY <= INT_VALUE + +using_metric_option_list: + USING metric_option_list + +metric_option_list: + metric_option [metric_option ...] + +metric_option: + RT = {INT_VALUE | DECIMAL_VALUE} + | CPU = {INT_VALUE | DECIMAL_VALUE} + | IO = INT_VALUE + | NETWORK = {INT_VALUE | DECIMAL_VALUE} + | QUEUE_TIME = {INT_VALUE | DECIMAL_VALUE} + | LOGICAL_READS = {INT_VALUE | DECIMAL_VALUE} +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|---------------|--------------------------| +| ENABLE SQL | 开启限流,后接限流特征及特征值 | +| FOR PRIORITY | 设定优先级,目的是只在部分 session 生效 | +| RT | 按请求执行时间限流 | +| CPU | 按 CPU 占用限流,暂未支持 | +| IO | 按 IO 次数限流,暂未支持 | +| NETWORK | 按传输的网络流量大小限流,暂未支持 | +| QUEUE_TIME | 按队列等待时间限流 | +| LOGICAL_READS | 按逻辑读次数限流,暂未支持 | +| DISABLE SQL | 关闭限流 | + + + +#### 示例 + +* 对 prioriy\<=100 的 session 上队列等待时间超过 0.1s 的请求限流。 + + + + + + +```javascript +alter system enable sql throttle for priority <= 100 using queue_time=0.1 +``` + + + + + +UNIT +------------- + +#### 描述 + +该语句负责 UNIT 资源迁移。 + +#### 格式 + +```javascript +alter_system_unit_stmt: + ALTER SYSTEM MIGRATE + UNIT [=] unit_id DESTINATION [=] ip_port + +unit_id: + INT_VALUE +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|---------|--------------------------| +| unit_id | UNIT 编号。 | +| ip_port | 将 UNIT 迁移到的目标 Server 地址。 | + + + +#### 示例 + +* 将 UNIT 1001 的资源迁移到 11.11.111.111:19510。 + + + + + + +```javascript +OceanBase(root@oceanbase)>alter system migrate unit = 1001 destination = '11.11.111.111:19510'; +Query OK, 0 rows affected (0.05 sec) +``` + + + + + +ZONE +------------- + +#### 描述 + +该语句负责维护 Zone 的状态,如 Zone 的增、删、启、停等操作。 + +#### 格式 + +```javascript +alter_system_zone_stmt: + ADD ZONE zone_name + [zone_option_list] + | {ALTER | CHANGE | MODIFY} ZONE zone_name + [SET] zone_option_list + | {DELETE | START | STOP | FORCE STOP} ZONE zone_name + +zone_option_list: + zone_option [, zone_option ...] + +zone_option: + region + | idc + | ZONE_TYPE {READONLY | READWRITE} + +idc: + STR_VALUE +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|----------------------------------|----------------------------------------------------------------------------------------------------------------------| +| ADD ZONE | 新增 Zone | +| {ALTER \| CHANGE \| MODIFY} ZONE | 修改 Zone 的 Region 属性 **说明** ALTER、CHANGE、MODIFY 三者功能相同,可以使用任意命令来修改 Zone 的 Region 属性。 | +| DELETE ZONE | 删除 Zone,删除前需要保证 Zone 中没有可用的 Server | +| START \| STOP | 主动上下线 Zone | + + + +#### 示例 + +* 删除 Zone。 + + + + + + +```javascript +OceanBase(root@oceanbase)>alter system delete zone 'z1'; +ERROR 4668 (HY000): The zone is not empty and can not be deleted. You should delete the servers of the zone. There are 1 servers alive and 0 not alive. +``` + + + + + +CLUSTER +---------------- + +#### 描述 + +集群管理相关操作,可以新增、删除、修改集群级相关属性。 + +#### 格式 + +```javascript +ALTER SYSTEM cluster_action cluster_name CLUSTER_ID INTNUM; +cluster_action: + ADD CLUSTER + | REMOVE CLUSTER + | ENABLE CLUSTER SYNCHRONIZATION + | DISABLE CLUSTER SYNCHRONIZATION + | MODIFY CLUSTER REDO_TRANSPORT_OPTIONS = 'SYNC|ASYNC' +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|---------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ADD CLUSTER | 新增一个备库。 | +| REMOVE CLUSTER | 删除一个已经存在的备库。 | +| ENABLE CLUSTER SYNCHRONIZATION | 允许一个备库的同步。 | +| DISABLE CLUSTER SYNCHRONIZATION | 禁掉一个备库的同步。 | +| MODIFY CLUSTER REDO_TRANSPORT_OPTIONS | 在主库上修改备库的日志同步方式: * SYNC:强同步 * ASYNC:异步同步 默认为 ASYCN 方式。 | + + + +#### 示例 + +* 新增备库 + + + + + + +```javascript +ALTER SYSTEM ADD CLUSTER 'ob1.test' cluster_id = 1; +``` + + + + + +SWITCHOVER +------------------- + +#### 描述 + +集群无损、有损切换语法,包括主库切成备库,备库切成主库。 + +#### 格式 + +```javascript +ALTER SYSTEM commit_switchover_clause; + +commit_switchover_clause: + COMMIT TO SWITCHOVER TO PRIMARY + | COMMIT TO SWITCHOVER TO PHYSICAL STANDBY + | ACTIVATE PHYSICAL STANDBY CLUSTER + | CONVERT TO PHYSICAL STANDBY +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|------------------------------------------|----------------------------------------------| +| COMMIT TO SWITCHOVER TO PRIMARY | 备库切成主库,在备库上执行,并且旧主库已经切换成主库,集群中没有其他的备库先切换成主库。 | +| COMMIT TO SWITCHOVER TO PHYSICAL STANDBY | 主库无损切换成备库,在主库上执行,并且备库已经同步成功。 | +| ACTIVATE PHYSICAL STANDBY CLUSTER | 在主库宕机的情况下,把一个集群拉成主库。 | +| CONVERT TO PHYSICAL STANDBY | 把一个主库切换成备库。 | + + + +#### 示例 + +* 主库切换成备库 + + + + + + +```javascript +ALTER SYSTEM COMMIT TO SWITCHOVER TO PHYSICAL STANDBY; +``` + + + +* 备库切换成主库 + + + + + + +```javascript +ALTER SYSTEM COMMIT TO SWITCHOVER TO PRIMARY; +``` + + + +* 主库宕机,备库切换成主库 + + + + + + +```javascript +ALTER SYSTEM ACTIVATE PHYSICAL STANDBY CLUSTER; +``` + + + +* 旧主库重启,切成备库 + + + + + + +```javascript +ALTER SYSTEM CONVERT TO PHYSICAL STANDBY; +``` + + + + + +BALANCE TASK +--------------------- + +#### 描述 + +该语句用来清除没有正在调度的负载均衡任务。 + +#### 格式 + +```javascript +ALTER SYSTEM REMOVE BALANCE TASK opt_tenant_list opt_zone_list opt_balance_task_type; + +opt_tenant_list + TENANT [=] name,name_list + +opt_zone_list + ZONE [=] zone_name, zone_list + +opt_balance_task_type + ALL + | MANUAL + | AUTO +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| opt_tenant_list | 租户列表,如果不指定,就会清除所有租户的任务。 | +| opt_zone_list | Zone 的列表,可不指定。 | +| opt_balance_task_type | 待清除的任务类型: * ALL:所有的任务; * AUTO:自动生成的任务; * MANUAL:用户手动发起的任务。 | + + + +#### 示例 + +* 清除所有租户所有没有在调度的任务。 + + + + + + +```javascript +ALTER SYSTEM REMOVE BALANCE TASK; +``` + + + +CANCEL MIGRATE UNIT +---------------------------- + +#### 描述 + +该语句用来取消 UNIT 的迁移。 + +#### 格式 + +```javascript +ALTER SYSTEM CANCEL MIGRATE UNIT unit_id; +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|---------|------------------| +| unit_id | 指定迁移的 UNIT 的 ID。 | + + + +#### 示例 + +* 取消 UNIT 1001 的迁移。 + + + + + + +```javascript +ALTER SYSTEM CANCEL MIGRATE UNIT 1001; +``` + + + + + +RESTORE +---------------- + +#### 描述 + +该语句用来恢复租户的数据。 + +#### 格式 + +```javascript +alter system restore dest_tenant from source_tenant at 'uri' until 'timestamp' with 'restore_option'; +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| dest_tenant | 指恢复的新租户的名字。 | +| source_tenant | 指原集群的租户。 | +| uri | 指备份的时候设置的 backup_dest。 | +| timestamp | 恢复的时间戳,需要大于等于最早备份的基线备份的 CDB_OB_BACKUP_SET_DETAILS 的START_TIME,小于等于日志备份 CDB_OB_BACKUP_ARCHIVELOG_SUMMARY 的 MAX_NEXT_TIME。 | +| restore_option | 恢复选项,支持以下几种: * backup_cluster_name:源集群的名字,必选项 * backup_cluster_id:源集群的 cluster_id,必选项 * pool_list:用户的资源池,必选项 * locality:租户的 locality 信息,可选项 * kms_encrypt:为 true 表示需要恢复的时候指定kms_encrypt_info,可选项 | + + + +#### 示例 + +* 恢复租户的数据。 + + + + + + +```javascript +alter system restore restored_trade from trade + at 'oss://antsys-oceanbasebackup/backup_rd/20200323?host=cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com&access_id=xxx&access_key=xxx' + until ' 2020-03-23 08:59:45' + with 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool'; + +alter system restore restored_trade from trade + at 'file:///data/nfs/physical_backup_test/20200520' + until '2020-05-21 09:39:54.071670' + with 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool&locality=F@z1,F@z2,F@z3'; +``` + + + + + +CHANGE TENANT +---------------------- + +#### 描述 + +该语句用来切换租户。 + +#### 格式 + +```javascript +ALTER SYSTEM CHANGE TENANT tenant_name; + +ALTER SYSTEM CHANGE TENANT TENANT_ID [=] INTNUM; +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|-------------|---------------| +| tenant_name | 指定要切换到的租户名称。 | +| TENANT_ID | 指定要切换到的租户 ID。 | + + + +#### 示例 + +* 切换至 ID 为 1001 的租户。 + + + + + + +```javascript +ALTER SYSTEM CHANGE TENANT TENANT_ID = 1001; +``` + + + +#### 注意事项 + +1. 需以系统租户身份登陆,普通租户无法执行该命令。 + + + +2. 需直连 OBServer 执行,断连接后需重新执行。 + + + +3. 不能在事务执行过程中执行该命令。 + + + +4. 切换到非系统租户后,无法执行 DDL 操作。 + + + + + + +BACKUP +--------------- + +#### 描述 + +该语句用来触发备份。 + +#### 格式 + +```javascript +设置备份的介质路径 : alter system set backup_dest = +开启 logarchive 的 SQL: alter system archivelog +关闭 logarchive 的 SQL: alter system noarchivelog +触发基线备份(只支持集群级别): alter system backup database; +取消当前备份: alter system cancel backup +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|------------|--------------------------------------| +| backup_uri | 指定备份的路径,目前支持 oss 和 file 两种,具体格式参考示例。 | + + + +#### 示例 + +* 设置备份的路径。 + + + + + + +```javascript +alter system set backup_dest='oss://antsys-oceanbasebackup/backup_dir?host=xxx&access_id=xxx&access_key=xxx'; +alter system set backup_dest='file:///data/nfs/physical_backup_dir'; +``` + + + +#### 注意事项 + +需以系统租户身份登陆,普通租户无法执行该命令。 + +MAXIMIZE +----------------------------- + +描述 + +该语句用来设置主备库的保护模式,只能在主库上执行。 + +#### 格式 + +```javascript +ALTER SYSTEM SET STANDBY CLUSTER TO MAXIMIZE {AVAILABILITY | PERFORMANCE | PROTECTION}; +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|--------------|------------------| +| AVAILABILITY | 设置为最大可用模式。 | +| PERFORMANCE | 设置为最大性能模式,为默认配置。 | +| PROTECTION | 设置为最大保护模式。 | + + + +#### 示例 + +* 设置主备库的保护模式为最大可用模式。 + + + + + + +```unknow +ALTER SYSTEM SET STANDBY CLUSTER TO MAXIMIZE AVAILABILITY; +``` + + + +DELETE BACKUPSET +------------------------------------- + +描述 + +该语句用来清理一个备份。 + +#### 格式 + +```javascript +ALTER SYSTEM DELETE BACKUPSET backup_set_id +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|---------------|-----------------------------------------------------------------------------------| +| backup_set_id | 指定要清理的备份对应的 backup_set 的编号。用户发起一次备份时会有对应的 id,在 CDB_OB_BACKUP_SET_DETAILS 视图中可以查到。 | + + + +#### 示例 + +* 清理 backup_set_id 为 1 的备份数据。 + + + + + + +```unknow +ALTER SYSTEM DELETE BACKUPSET 1; +``` + + + +DELETE OBSOLETE BACKUP +------------------------------------------- + +描述 + +该语句用来清理过期的备份数据。 +**说明** + + + +使用该语句清理过期的备份数据之前,需要先配置过期时间。 + +#### 格式 + +```javascript +ALTER SYSTEM SET backup_recovery_window = <过期时间>; +ALTER SYSTEM DELETE OBSOLETE BACKUP; +``` + + + +#### 参数解释 + + + +| **参数** | **描述** | +|------------------------|------------------------------------------------------------------------------| +| backup_recovery_window | 该配置项用于表示成功备份的数据可以提供恢复的时间窗口,默认值为 0,表示永久保留;建议设置为'7d',表示备份数据保留一周,一周之后备份数据会被清理掉。 | + + + +#### 示例 + +* 设置备份数据的过期时间为一周,一周后备份数据被清理。 + + + + + + +```unknow +ALTER SYSTEM SET backup_recovery_window = '7d'; +ALTER SYSTEM DELETE OBSOLETE BACKUP; +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/60.truncate-table.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/60.truncate-table.md new file mode 100644 index 000000000..850d97d46 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/60.truncate-table.md @@ -0,0 +1,55 @@ +TRUNCATE TABLE +=================================== + + + +描述 +----------- + +该语句用于完全清空指定表,但是保留表结构,包括表中定义的 Partition 信息。从逻辑上说,该语句与用于删除所有行的DELETE FROM语句相同。执行TRUNCATE语句,必须具有表的删除和创建权限。它属于DDL语句。 + +TRUNCATE TABLE 语句与 DELETE FROM 语句有以下不同: + +* 删减操作会取消并重新创建表,这比一行一行的删除行要快很多。 + +* TRUNCATE TABLE 语句执行结果显示影响行数始终显示为 0 行。 + +* 使用 TRUNCATE TABLE 语句,表管理程序不记得最后被使用的 AUTO_INCREMENT 值,但是会从头开始计数。 + +* TRUNCATE 语句不能在进行事务处理和表锁定的过程中进行,如果使用,将会报错。 + +* 只要表定义文件是合法的,则可以使用 TRUNCATE TABLE 把表重新创建为一个空表,即使数据或索引文件已经被破坏。 + + + + +格式 +----------- + +```javascript +TRUNCATE [TABLE] table_name; +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|------------|--------| +| table_name | 指定表名。 | + + + +示例 +----------- + +完全清空表 tb1。 + +```javascript +TRUNCATE [TABLE] tb1; +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/61.UPDATE.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/61.UPDATE.md new file mode 100644 index 000000000..1347d55a2 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/61.UPDATE.md @@ -0,0 +1,263 @@ +UPDATE +=========================== + + + +描述 +----------- + +该语句用于修改表中的字段值。 + +格式 +----------- + +```javascript +UPDATE [IGNORE] table_references + SET update_asgn_list + [WHERE where_condition] + [ORDER BY order_list] + [LIMIT row_count]; + +table_references: + tbl_name [PARTITION (partition_name,...)] [, ...] + +update_asgn_list: + column_name = expr [, ...] + +order_list: + column_name [ASC|DESC] [, column_name [ASC|DESC]...] +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|------------------|-----------------------------| +| IGNORE | 在 INSERT 语句执行过程中发生的错误将会被忽略。 | +| table_references | 指定修改表名,多表修改时,表名直接','作为间隔。 | +| where_condition | 指定过滤条件。 | +| row_count | 限制的行数。 | +| tbl_name | 插入表名。 | +| partition_name | 插入表指定的分区名。 | +| column_name | 列名。 | +| column_name ASC | 按列名升序修改。 | +| column_name DESC | 按列名降序修改。 | + + + +注意事项 +------------- + +不管是多表还是单表更新都不支持直接对子查询进行更新值操作,例如:`update (select * from t1) set c1 = 100;` + +示例 +----------- + +1. 创建示例表 t1 和 t2。 + + + + +```javascript +OceanBase(admin@test)>create table t1(c1 int primary key, c2 int); +Query OK, 0 rows affected (0.16 sec) +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.06 sec) + +OceanBase(admin@test)>create table t2(c1 int primary key, c2 int) partition by key(c1) partitions 4; +Query OK, 0 rows affected (0.19 sec) +OceanBase(admin@test)>select * from t2; ++----+------+ +| c1 | c2 | ++----+------+ +| 5 | 5 | +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | ++----+------+ +4 rows in set (0.02 sec) +``` + + + +2. 将表 t1 中 "t1.c1=1" 对应的那一行数据的 c2 列值修改为 100。 + + + + +```javascript +OceanBase(admin@test)>update t1 set t1.c2 = 100 where t1.c1 = 1; +Query OK, 1 row affected (0.02 sec) +Rows matched: 1 Changed: 1 Warnings: 0 + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 100 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.01 sec) +``` + + + +3. 将表 t1 中按照 c2 列排序的前两行数据的 c2 列值修改为 100。 + + + + +```javascript +OceanBase(admin@test)>update t1 set t1.c2 = 100 order by c2 limit 2; +Query OK, 2 rows affected (0.02 sec) +Rows matched: 2 Changed: 2 Warnings: 0 + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 100 | +| 2 | 100 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.01 sec) +``` + + + +4. 将表 t2 中 p2 分区的数据中 "t2.c1 \> 2" 的对应行数据的 c2 列值修改为 100。 + + + + +```javascript +OceanBase(admin@test)>update t2 partition(p2) set t2.c2 = 100 where t2.c1 > 2; +Query OK, 1 row affected (0.02 sec) +Rows matched: 1 Changed: 1 Warnings: 0 + +OceanBase(admin@test)>select * from t2; ++----+------+ +| c1 | c2 | ++----+------+ +| 5 | 5 | +| 1 | 1 | +| 2 | 2 | +| 3 | 100 | ++----+------+ +4 rows in set (0.06 sec) +``` + + + +5. 修改多个表。将 t1 表和 t2 表中满足 "t1.c1 = t2.c1" 对应行的数据 t1 表中的 c2 列值修改为 100,t2 表中的 c2 列值修改为 200。 + + + + +```javascript +OceanBase(admin@test)>update t1,t2 set t1.c2 = 100, t2.c2 = 200 where t1.c2 = t2.c2; +Query OK, 6 rows affected (0.03 sec) +Rows matched: 6 Changed: 6 Warnings: 0 + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 100 | +| 2 | 100 | +| 3 | 100 | +| 4 | 4 | ++----+------+ +4 rows in set (0.00 sec) + +OceanBase(admin@test)>select * from t2; ++----+------+ +| c1 | c2 | ++----+------+ +| 5 | 5 | +| 1 | 200 | +| 2 | 200 | +| 3 | 200 | ++----+------+ +4 rows in set (0.01 sec) +``` + + + +6. 修改多个表。修改 t1 表和 t2 表的p2分区中满足 "t1.c1 = t2.c1" 对应行的数据 t1 表中的 c2 列值修改为 100,t2 表中的 c2 列值修改为 200。 + + + + +```javascript +OceanBase(admin@test)>update t1,t2 partition(p2) set t1.c2 = 100, t2.c2 = 200 where t1.c2 = t2.c2; +Query OK, 6 rows affected (0.02 sec) +Rows matched: 6 Changed: 6 Warnings: 0 + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 100 | +| 2 | 100 | +| 3 | 100 | +| 4 | 4 | ++----+------+ +4 rows in set (0.01 sec) + +OceanBase(admin@test)>select * from t2; ++----+------+ +| c1 | c2 | ++----+------+ +| 5 | 5 | +| 1 | 200 | +| 2 | 200 | +| 3 | 200 | ++----+------+ +4 rows in set (0.01 sec) +``` + + + +7. 对可更新视图 v 进行更新值。 + + + + +```javascript +OceanBase(admin@test)>create view v as select * from t1; +Query OK, 0 rows affected (0.07 sec) + +OceanBase(admin@test)>update v set v.c2 = 100 where v.c1 = 1; +Query OK, 1 row affected (0.02 sec) +Rows matched: 1 Changed: 1 Warnings: 0 + +OceanBase(admin@test)>select * from v; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 100 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.01 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/7.alter-table.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/7.alter-table.md new file mode 100644 index 000000000..7ba7e1335 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/7.alter-table.md @@ -0,0 +1,253 @@ +ALTER TABLE +================================ + + + +描述 +----------- + +该语句用来修改已存在的表的结构,比如:修改表及表属性、新增列、修改列及属性、删除列等。 + +格式 +----------- + +```javascript +alter_table_stmt: + ALTER TABLE table_name + alter_table_action_list; + | RENAME TABLE rename_table_action_list; + +alter_table_action_list: + alter_table_action [, alter_table_action ...] + +alter_table_action: + ADD [COLUMN] {column_definition | (column_definition_list)} + | CHANGE [COLUMN] column_name column_definition + | MODIFY [COLUMN] column_definition + | ALTER [COLUMN] column_name {SET DEFAULT const_value | DROP DEFAULT} + | DROP [COLUMN] column_name + | ADD [CONSTRAINT [constraint_name]] UNIQUE {INDEX | KEY} [index_name] index_desc + | ADD {INDEX | KEY} [index_name] index_desc + | ADD FULLTEXT [INDEX | KEY] [index_name] fulltext_index_desc + | ALTER INDEX index_name [VISIBLE | INVISIBLE | parallel_clause] + | DROP {INDEX | KEY} index_name + | ADD PARTITION (range_partition_list) + | DROP PARTITION (partition_name_list) + | REORGANIZE PARTITION name_list INTO partition_range_or_list + | TRUNCATE PARTITION name_list + | [SET] table_option_list + | RENAME [TO] table_name + | DROP TABLEGROUP + | DROP FOREIGN KEY fk_name + +rename_table_action_list: + rename_table_action [, rename_table_action ...] + +rename_table_action: + table_name TO table_name + +column_definition_list: + column_definition [, column_definition ...] + +column_definition: + column_name data_type + [DEFAULT const_value] [AUTO_INCREMENT] + [NULL | NOT NULL] [[PRIMARY] KEY] [UNIQUE [KEY]] comment + +index_desc: + (column_desc_list) [index_type] [index_option_list] + +fulltext_index_desc: + (column_desc_list) CTXCAT(column_desc_list) [index_option_list] + +column_desc_list: + column_desc [, column_desc ...] + +column_desc: + column_name [(length)] [ASC | DESC] + +index_type: + USING BTREE + +index_option_list: + index_option [ index_option ...] + +index_option: + [GLOBAL | LOCAL] + | block_size + | compression + | STORING(column_name_list) + | comment + +table_option_list: + table_option [ table_option ...] + +table_option: + | primary_zone + | replica_num + | table_tablegroup + | block_size + | compression + | AUTO_INCREMENT [=] INT_VALUE + | comment + | DUPLICATE_SCOPE [=] "none|zone|region|cluster" + | parallel_clause + +parallel_clause: + {NOPARALLEL | PARALLEL integer} + +partition_option: + PARTITION BY HASH(expression) + [subpartition_option] PARTITIONS partition_count + | PARTITION BY KEY([column_name_list]) + [subpartition_option] PARTITIONS partition_count + | PARTITION BY RANGE {(expression) | COLUMNS (column_name_list)} + [subpartition_option] (range_partition_list) + +subpartition_option: + SUBPARTITION BY HASH(expression) + SUBPARTITIONS subpartition_count + | SUBPARTITION BY KEY(column_name_list) + SUBPARTITIONS subpartition_count + | SUBPARTITION BY RANGE {(expression) | COLUMNS (column_name_list)} + (range_subpartition_list) + +range_partition_list: + range_partition [, range_partition ...] + +range_partition: + PARTITION partition_name + VALUES LESS THAN {(expression_list) | MAXVALUE} + +range_subpartition_list: + range_subpartition [, range_subpartition ...] + +range_subpartition: + SUBPARTITION subpartition_name + VALUES LESS THAN {(expression_list) | MAXVALUE} + +expression_list: + expression [, expression ...] + +column_name_list: + column_name [, column_name ...] + +partition_name_list: + partition_name [, partition_name ...] + +partition_count | subpartition_count: + INT_VALUE +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|---------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ADD \[COLUMN\] | 增加列,目前不支持增加主键列。 | +| CHANGE \[COLUMN\] | 修改列名和列属性。 | +| MODIFY \[COLUMN\] | 修改列属性。 | +| ALTER \[COLUMN\] | 修改列的默认值。 | +| DROP \[COLUMN\] | 删除列,不允许删除主键列或者包含索引的列。 | +| ADD \[UNIQUE INDEX\] | 增加唯一索引。 | +| ADD \[INDEX\] | 增加普通索引 | +| ALTER \[INDEX\] | 修改索引属性。 | +| ADD \[PARTITION\] | 增加分区。 | +| DROP \[PARTITION\] | 删除分区。 | +| REORGANIZE \[PARTITION\] | 分区重组。 | +| TRUNCATE \[PARTITION\] | 删除分区数据。 | +| RENAME \[TO\] table_name | 表重命名。 | +| DROP \[TABLEGROUP\] | 删除表组。 | +| DROP \[FOREIGN KEY\] | 删除外键。 | +| SET BLOCK_SIZE | 设置Partition表BLOCK大小。 | +| SET REPLICA_NUM | 设置表的副本数(指表的副本总数)。 | +| SET COMPRESSION | 设置表的压缩方式。 | +| SET USE_BLOOM_FILTER | 设置是否使用BloomFilter。 | +| SET COMMENT | 设置注释信息。 | +| SET PROGRESSIVE_MERGE_NUM | 设置渐进合并步数,取值范围是1\~64。 | +| parallel_clause | 指定表级别的并行度: * NOPARALLEL:并行度为1,默认配置 * PARALLEL integer:指定并行度,integer 取值大于等于 1。 | + + + +示例 +----------- + +* 把表 t2 的字段 d 改名为 c,并同时修改字段类型 + + + + + + +```javascript +ALTER TABLE t2 CHANGE COLUMN d c CHAR(10); +``` + + + +* 增加、删除列 + + + + + + + + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8401155061/p149172.png "image.png") + + + +```javascript +ALTER TABLE test ADD c3 int; +``` + + + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8401155061/p149173.png "image.png") + + + +```javascript +ALTER TABLE test DROP c3; +``` + + + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8401155061/p149174.png "image.png") + +* 设置表格 test 的副本数,并且增加列 c5 + + + + + + +```javascript +ALTER TABLE test SET REPLICA_NUM=2, ADD COLUMN c5 INT; +``` + + + +* 修改表 t1 的并行度为 2 + + + + + + +```unknow +ALTER TABLE t1 PARALLEL 2; +``` + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/8.alter-tablegroup.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/8.alter-tablegroup.md new file mode 100644 index 000000000..9a6564fd9 --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/8.alter-tablegroup.md @@ -0,0 +1,118 @@ +ALTER TABLEGROUP +===================================== + + + +描述 +----------- + +该语句用来执行以下操作: + +* 对一个表组增加多张表。 + +* 修改表组的分区规则。 + +* 修改表组的 locality 和 primary zone。 + + + + +格式 +----------- + +* 对一个表组增加多张表。 + + + + +```javascript +ALTER TABLEGROUP tablegroupname ADD [TABLE] tblname [, tblname...] +``` + + + +* 修改表组的分区规则。 + + + + +```javascript +ALTER TABLEGROUP tablegroupname alter_tg_partition_option +alter_tg_partition_option: +DROP PARTITION '(' name_list ')' +| ADD PARTITION opt_range_partition_list +| modify_tg_partition_info +``` + + + +* 修改表组的 locality 和 primary zone。 + + + + +```javascript +ALTER TABLEGROUP tablegroupname alter_tablegroup_actions +alter_tablegroup_actions: +alter_tablegroup_action +| alter_tablegroup_action, alter_tablegroup_action +alter_tablegroup_action: +SET LOCALITY [=] locality_name +|SET PRIMARY_ZONE [=] primary_zone_name +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|--------------------------------|--------------------------------------------------------------------------------------------------------------------------| +| tablegroupname | 指定表组。 | +| tblname | 表名。对一个表组增加多张表时,表与表之间以逗号(',')分隔。 当添加多个表时,允许表名重复。如果待添加的表已经属于 *tablegroupname* 的表格组,系统不报错。 | +| modify_tg_partition_info | 修改表组的分区规则。 | +| LOCALITY locality_name | 指定表组的 locality。 | +| PRIMARY_ZONE primary_zone_name | 指定表组的主Zone。 | + + + +示例 +----------- + +创建表组 tgh 和两张关系表 ttgh 和 ttgh2 ,并将表组的 locality 修改为 F@z1。 + +```javascript +OceanBase(admin@test)> create tablegroup tgh locality='F,R{ALL_SERVER}@z1' partition by hash partitions 10; +Query OK, 0 rows affected (0.09 sec) + +OceanBase(admin@test)> create table ttgh(c1 int, c2 int) tablegroup = tgh locality='F,R{ALL_SERVER}@z1'; +Query OK, 0 rows affected (0.55 sec) + +OceanBase(admin@test)> create table ttgh2(c1 int, c2 int) tablegroup = tgh locality='F,R{ALL_SERVER}@z1'; +Query OK, 0 rows affected (0.39 sec) + +OceanBase(admin@test)> alter tablegroup tgh set locality ='F@z1'; +Query OK, 0 rows affected (0.09 sec) + +OceanBase(admin@test)> select locality from oceanbase.__all_tablegroup where tablegroup_name ='tgh'; ++------------+ +| locality | ++------------+ +| FULL{1}@z1 | ++------------+ +1 row in set (0.05 sec) + +OceanBase(admin@test)> select locality from oceanbase.__all_table where tablegroup_id=(select tablegroup_id from oceanbase.__all_tablegroup where tablegroup_name ='tgh'); ++------------+ +| locality | ++------------+ +| FULL{1}@z1 | +| FULL{1}@z1 | ++------------+ +2 rows in set (0.04 sec) +``` + + + diff --git a/docs/docs/docs-cn/10.sql-reference/5.sql-statement/9.alter-tenant.md b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/9.alter-tenant.md new file mode 100644 index 000000000..e016a876a --- /dev/null +++ b/docs/docs/docs-cn/10.sql-reference/5.sql-statement/9.alter-tenant.md @@ -0,0 +1,83 @@ +ALTER TENANT +================================= + + + +描述 +----------- + +该语句用来修改租户信息。 + +格式 +----------- + +```javascript +ALTER TENANT {tenant_name | ALL} + [SET] [tenant_option_list] [opt_global_sys_vars_set] + +tenant_option_list: + tenant_option [, tenant_option ...] + +tenant_option: + COMMENT [=]'string' + |{CHARACTER SET | CHARSET} [=] charsetname + |COLLATE [=] collationname + |REPLICA_NUM [=] num + |ZONE_LIST [=] (zone [, zone...]) + |PRIMARY_ZONE [=] zone + |RESOURCE_POOL_LIST [=](poolname [, poolname...]) + |DEFAULT TABLEGROUP [=] {NULL | tablegroupname} + |{READ ONLY | READ WRITE} + |LOGONLY_REPLICA_NUM [=] num + |LOCALITY [=] 'locality description' + |LOCK|UNLOCK; + +opt_global_sys_vars_set: + VARIABLES system_var_name = expr [,system_var_name = expr] ... +``` + + + +参数解释 +------------- + + + +| **参数** | **描述** | +|--------------------------|---------------------------------------------------------------------------------------| +| tenant_name | 指定要修改的租户名。 | +| ALTER TENANT ALL | 同时修改所有租户。 | +| RESOURCE_POOL_LIST | 资源池列表,为创建租户时的必填项,暂时只支持一个 RESOURCE POOL。 | +| DEFAULT TABLEGROUP | 设置租户默认表组信息,NULL 表示取消ovtn库默认表组。 | +| LOCK\|UNLOCK | 租户锁定和解锁。对租户进行锁定后,不能在该租户上创建新的连接,已有连接保持不变。通常在客户费用到期未续费的场景下使用,客户费用到期后对租户进行锁定,客户续费后再进行解锁。 | +| COMMENT | 修改注释。 | +| CHARACTER SET \| CHARSET | 修改租户的字符集。 | +| COLLATE | 指定校对规则。 | +| REPLICA_NUM | 指定副本数。 | +| ZONE_LIST | 指定要修改的Zone列表。 | +| PRIMARY_ZONE | 指定主Zone。 | +| READ ONLY \| READ WRITE | 指定租户的只读或读写属性。 | +| LOGONLY_REPLICA_NUM | 指定日志副本数。 | +| LOCALITY | 描述副本在Zone间的分布情况,如:F@z1,F@z2,F@z3,R@z4 表示z1, z2, z3为全功能副本,z4为只读副本。 | +| system_var_name | 修改租户的系统变量值。 | + + + +示例 +----------- + +* 锁定租户TENANT1。 + + + + +```javascript +ALTER TENANT TENANT1 LOCK; +``` + + + +注意事项 +------------- + +ALTER TENANT语句系统租户有权限执行,同时本租户的管理员能执行。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/1.sql-overview.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/1.sql-overview.md new file mode 100644 index 000000000..b01feb9cb --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/1.sql-overview.md @@ -0,0 +1,120 @@ +SQL 概述 +=========================== + + + +结构化查询语言(Structured Query Language)简称 SQL,是一种有特殊目的的编程语言。和当下流行的其他关系数据库一样,所有程序和用户都可以使用 SQL 来访问 OceanBase 数据库中的数据。即便有一些平台、工具允许用户直接通过接口或界面的方式访问数据库,但这些平台、工具底层实际上依旧是使用 SQL 来访问数据库。 + +SQL 的历史 +------------------- + +1970 年 6 月,IBM 公司 San Jose,California 实验室的 E. F. Codd 博士在 ACM(Association for Computing Machinery)期刊上发表了论文《大型共享数据银行的关系模型》(A Relational Model of Data for Large Shared Data Banks)并首次提出了关系模型的概念。 + +1974 年,同实验室的 D.D.Chamberlin 和 R.F.Boyce 在 IBM 公司研制的关系数据库系统 SystemR 中,研制出了一套规范语言 SEQUEL(Structured English QUEry Language),并在 1976 年 11 月的 IBM Journal of R\&D 上公布了新版本的 SQL(称为 SEQUEL/2,1980年改名为 SQL)。 + +1979 年,Oracle 公司首先提供商用的 SQL,同时 IBM 公司在 DB2 和 SQL/DS 数据库系统中也实现了 SQL。 + +时至今日,SQL 已经成为了关系数据库管理系统(Relational Database Management System:RDBMS)的标准语言。 + +SQL 的标准 +------------------- + +1986 年 10 月,美国国家标准协会 ANSI 采用 SQL 作为关系数据库管理系统的标准语言,并命名为 ANSI X3. 135-1986,后来国际标准化组织(ISO)也采纳 SQL 作为国际标准。 + +1989 年,ANSI 采纳并使用了在 ANSI X3.135-1989 报告中定义的 SQL 标准语言,并称之为 ANSI SQL 89,该标准替代了之前的 ANSI X3.135-1986 版本。 + +下面是 SQL 发展的简要历史: + +* 1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86。 + + + +* 1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89。 + + + +* 1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2)。 + + + +* 1999年,ISO/IEC 9075:1999,SQL:1999(SQL3)。 + + + +* 2003年,ISO/IEC 9075:2003,SQL:2003。 + + + +* 2008年,ISO/IEC 9075:2008,SQL:2008。 + + + +* 2011年,ISO/IEC 9075:2011,SQL:2011。 + + + + + + +现在,绝大多数被提及的 SQL 标准,其中涉及的内容其实都是 SQL 92 里最基本、最核心的一部分。OceanBase 目前也遵循的是 SQL 92 标准。 + +SQL 的运行 +------------------- + +SQL 是用来访问关系数据库,如 OceanBase、Oracle 和 MySQL 的接口,所有的 SQL 语句都是对数据库的指令。 + +通常,SQL 可以分为 5 个部分: + +1. 数据查询语言 DQL(Data Query Language):也称为数据检索语言,用以从表中获得数据,并描述怎样将数据返回给程序输出。DQL 并不改变数据库中存储的数据内容。 + + + +2. 数据操作语言 DML(Data Manipulation Language):用以改变数据库中存储的数据内容,即增加、修改和删除数据。 + + + +3. 事务控制语言 TCL(Transaction Control Language):保证数据库的完整性、一致性,在同一个事务中的 DML 语句要么同时成功,要么同时失败。 + + + +4. 数据控制语句 DCL(Data Control Language):对数据访问权限控制的命令。可以控制特定账号对特定数据库资源的访问权限。 + + + +5. 数据定义语言 DDL(Data Definition Language):对数据库中资源进行定义、修改和删除,如新建表和删除表等。 + + + + + + +SQL 的移植性 +-------------------- + +SQL 是访问数据库的标准语言,所有的主要关系数据库都支持 SQL,因此所有用 SQL 编写的程序都是可移植的。通常进行少量的修改就可以从一个关系数据库移植到另一个关系数据库上。 + +词汇惯例 +---------------- + +* **粗体** 表示与操作或以文本或词汇表定义的术语相关联的图形用户界面元素。 + +* 保留字、关键字、标识符和参数中的大小写不敏感。为方便阅读与识别,这些字会以大写形式书写。 + + + +* 在不同的编程环境中,SQL 语句终止方式不同。本文档中以分号 ";" 来标识一个 SQL 的结尾。 + + + +* `行内代码` 表示文档中引用的代码。 + +* 为了突出重要信息,本文档会加粗"说明"、"注意"和"重要"等文字。 + + + +* 本文档中可选参数文本用方括号括起,如 \[-n, -quiet\]。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/2.pseudo-column.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/2.pseudo-column.md new file mode 100644 index 000000000..16ed39035 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/2.pseudo-column.md @@ -0,0 +1,225 @@ +伪列 +======================= + + + +伪列(Pseudocolumn)的行为与表中的列相同,但并未存储具体数值。因此,伪列只具备读属性,您不可以对伪列进行插入、更新、删除的等行为。 + +层次查询伪列 +------------------ + +层次查询伪列仅在层次查询中有效,要在查询中定义层次结构关系,必须使用 `CONNECT BY` 子句。 + +### CONNECT_BY_ISCYCLE 伪列 + +`CONNECT_BY_ISCYCLE` 伪列用来协助标记循环是从哪一行开始的。如当前行的子节点同时也是其祖先节点之一,则`CONNECT_BY_ISCYCLE` 返回 1,否则返回 0。 + +`CONNECT_BY_ISCYCLE` 需要配合 `CONNECT BY` 子句的 `NOCYCLE` 使用,否则查询结果会因树状结果存在循环而报错。 + +### CONNECT_BY_ISLEAF 伪列 + +`CONNECT_BY_ISLEAF` 伪列用来协助标记层次结构的叶子节点。如当前行无子节点即为树的叶子节点时,返回 1,否则返回 0。 + +### LEVEL 伪列 + +`LEVEL` 伪列用来协助标记节点的层次。层次结构中,根为第 1 层,根的子结点为第 2 层,之后以此类推。例如,根节点的 `LEVEL` 值会返回 1,根节点的子节点的 `LEVEL` 值会返回 2,之后以此类推。 + +序列伪列 +---------------- + +序列(Sequence)伪列是数据库按照一定规则生成的自增数字序列。因其自增的特性,通常被用作主键和唯一键。序列伪列有两种取值方法: + +* `CURRVAL`:返回序列的当前值。 + +* `NEXTVAL`:返回序列的下一个自增值。 + + + + +使用序列伪列时,必须在 `CURRVAL`、`NEXTVAL` 前带上序列的名称,并用句点(.)引用。例如,序列的名称为 **SEQ_FOO** ,则可以通过 `SEQ_FOO.CURRVAL` 获取 **SEQ_FOO** 序列的当前值。同样,可以通过 `SEQ_FOO.NEXTVAL` 获取 **SEQ_FOO** 序列的下一个自增值。 + +### 序列伪列的应用场景 + +序列伪列 `CURRVAL` 和 `NEXTVAL` 的值可以用于以下位置: + +* 非子查询、物化视图或者视图中的 `SELECT` 语句的选择列表中。 + + + +* `INSERT` 语句中子查询的选择列表中。 + +* `INSERT` 语句中的 `VALUE` 子句中。 + +* `UPDATE` 语句中的 `SET` 子句中。 + + + + +序列伪列 `CURRVAL` 和 `NEXTVAL` 的值不能用于以下位置: + +* `DELETE`、`SELECT` 或者 `UPDATE` 语句的子查询中。 + +* 视图或者物化视图的查询中。 + + + +* 带 `DISTINCT` 运算符的 `SELECT` 语句中。 + + + +* 带 `GROUP BY` 子句或者 `ORDER BY` 子句的 `SELECT` 语句中。 + + + +* 与另一个 `SELECT` 语句通过 `UNION`、`INTERSECT` 或者 `MINUS` 集合运算符进行联合的 `SELECT` 语句中。 + + + +* `SELECT` 语句的 `WHERE` 子句中。 + +* `CREATE TABLE` 或者 `ALTER TABLE` 语句中列的 `DEFAULT` 值。 + +* `CHECK` 约束的条件中。 + + + + +### 如何使用序列伪列 + +创建序列时,需要明确其初始值和步长。第一次引用 `NEXTVAL` 将返回序列的初始值,后续对 `NEXTVAL` 的引用将按照上一次序列的返回值加上序列定义的步长后返回一个新值。任何时候对 `CURRVAL` 的引用,都将返回当前序列的值,即最后一次对 `NEXTVAL` 引用时返回的值。 + +在会话中引用序列的 `CURRVAL` 伪列前,都应首先应用序列的 `NEXTVAL` 伪列来初始化本次会话的序列值。 + +创建序列时,可以定义其初始值以及其值之间的增量。对 `NEXTVAL` 的第一次引用将返回序列的初始值。对 `NEXTVAL` 的后续引用将会使序列值按照定义的增量递增,并返回新值。任何对 `CURRVAL` 的引用总是返回该序列的当前值,即最后一次对 `NEXTVAL` 引用时返回的值。对序列的创建的相关内容,请参考文档 [CREATE SEQUENCE](/zh-CN/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/12.create-sequence.md) 章节。 + +在单条 SQL 语句中引用 `NEXTVAL` 时,OceanBase 数据库按照以下方式递增序列: + +* `SELECT` 语句的外部查询块每返回一行递增一次。这类查询块可以出现在以下地方: + + + + + + + + + + +* `UPDATE` 语句每更新一行序列就递增一次。 + +* 每有一条包含 `VALUES` 子句的 `INSERT` 语句就递增一次。 + + + +* `MERGE` 语句每合并一行序列递增一次。`NEXTVAL` 可以出现在 `merge_insert_clause` 或者`merge_update_clause` 子句中,也可两者同时出现。`NEXTVAL` 会随着每一行的更新和插入而递增,即使序列数值没有用于更新或者插入操作。如果 `NEXTVAL` 在这些位置中被指定了多次,那么对应每一行都递增一次序列,而且该行中出现的所有 `NEXTVAL` 都返回相同的值。 + + + + +当这些位置多次引用一个序列的 `NEXTVAL` 伪列时,该序列都只递增一次,即为所有被引用的 `NEXTVAL` 伪列返回当前序列的下一个序列值。 + +当这些位置同时引用一个序列的 `CURRVAL` 和 `NEXTVAL` 伪列时,OceanBase 将递增该序列,即为被引用的 `CURRVAL` 和 `NEXTVAL` 伪列都返回当前序列的下一个序列值。 + +序列可以同时被许多用户访问,不存在等待和锁定。 + +ROWSCN 伪列 +--------------------- + +`ORA_ROWSCN` 伪列将最新更改的系统更改号(SCN:System Change Number)反映到一行,该更改号表示这一行数据修改所在事务的提交时间。 + +ROWNUM 伪列 +--------------------- + +`ROWNUM` 伪列会对查询结果中的每一行进行编号,其值为该行在查询结果集中的具体位置。第一行返回值 1,第二行返回值 2,之后以此类推。 + +ROWNUM 的用法说明 +------------------------ + +`ROWNUM` 可以限制返回的行数,例如以下示例,将返回 **employees** 表中的 5 条数据: + +```sql +SELECT * FROM employees WHERE rownum <=5; +``` + + + +如果在 `ROWNUM` 后有 `ORDER BY` 子句,则将对满足 `WHERE` 条件句的结果进行重排序。如果将 `ORDER BY` 子句嵌入子查询中,并将 `ROWNUM` 伪列作为条件放置在顶级查询中,则可以强制 `ROWNUM` 条件在行排序之后执行。例如,使用以下语句查询年龄最大的 5 名员工信息是得不到预期结果的,该语句只是将查询结果中的前 5 条员工信息进行年龄排序: + +```sql +SELECT * FROM employees WHERE rownum <=5 ORDER BY age DESC; +``` + + + +正确的用法应该如下: + +```javascript +SELECT * FROM (SELECT * FROM employees ORDER BY age DESC) WHERE rownum <= 5; +``` + + + +在 `WHERE` 子句中,指定 `ROWNUM` 大于任何一个正整数时总是返回 **FALSE** ,例如以下 SQL 语句将不返回任何信息: + +```javascript +SELECT * FROM employees WHERE rownum > 1; +``` + + + +因为在获得表的第一行结果时,改行的 `ROWNUM` 伪列值将被赋值为 1,此时在 `WHERE` 条件判断时结果为 **FALSE** ,则此行被舍去。在获得第二行结果时,该行的 `ROWNUM` 伪列值任然被赋值为 1,`WHERE` 条件判断的结果依旧为 **FALSE** ,此行再次被舍去。以此类推,所以所有行都不满足条件,因此不返回任何数据。 + +也可以通过 `UPDATE` 语句将`ROWNUM` 数值赋值给表中的某一列,例如: + +```javascript +UPDATE employees SET id = rownum; +``` + + + +此语句将对表 **employees** 的 **id** 列进行 `ROWNUM` 赋值,即依次对 **id** 列赋值 1、2、... 直至该表总行数。 +**注意** + + + +在查询中使用 `ROWNUM` 可能会影响视图优化。 + +ROWID 伪列 +----------------------------- + +ROWID 伪列提供了快速定位表中某一行的能力,ROWID 值由主键编码得到,不会进行实际的存储,类型是 UROWID。使用方法如下: + +1. 从 employees 表中查询到 ROWID 值 + + ```sql + obclient> SELECT ROWID, last_name FROM employees WHERE department_id = 20; + +-------------------+-----------+ + | ROWID | LAST_NAME | + +-------------------+-----------+ + | *AAIKAQAAAAAAAAA= | xxx | + +-------------------+-----------+ + 1 row in set (0.01 sec) + ``` + + + +2. 使用 ROWID 值进行 update 操作 + + ```sql + obclient> UPDATE employees SET last_name = 'yyy' WHERE ROWID = '*AAIKAQAAAAAAAAA='; + Query OK, 1 row affected (0.01 sec) + Rows matched: 1 Changed: 1 Warnings: 0 + + obclient> select last_name, department_id from employees; + +-----------+---------------+ + | LAST_NAME | DEPARTMENT_ID | + +-----------+---------------+ + | yyy | 20 | + +-----------+---------------+ + 1 row in set (0.01 sec) + ``` + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/1.overview-of-built-in-data-types.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/1.overview-of-built-in-data-types.md new file mode 100644 index 000000000..106186a17 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/1.overview-of-built-in-data-types.md @@ -0,0 +1,41 @@ +内建数据类型概述 +============================= + + + +OceanBase 数据库操作的每个值都有一个数据类型。值的数据类型将一组固定的属性与值相关联,这些属性使 OceanBase 将一种数据类型的值与另一种数据类型的值区别对待。OceanBase 数据库提供了许多内建数据类型, 这些内建数据类型也称 OceanBase 基本数据类型。 + +数据类型 +------------------------- + +OceanBase 支持如下数据类型,与 Oracle 数据类型保持一致: + +* 字符数据类型 + + + +* 数值数据类型 + + + +* 日期时间类型 + + + +* RAW 数据类型 + + + +* 大对象数据类型 + + + + + + + + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/1.overview-of-character-data-types.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/1.overview-of-character-data-types.md new file mode 100644 index 000000000..715900980 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/1.overview-of-character-data-types.md @@ -0,0 +1,27 @@ +字符数据类型概述 +============================= + + + +字符数据类型在数据库字符集或国家字符集中存储字符(字母数字)数据,即单词和自由格式的文本。字符数据类型与其他数据类型相比具有限制性,因此属性较少。 + +字符数据存储在字符串中,其字节值与创建数据库时指定的字符集之一相对应。OceanBase 支持单字节和多字节字符集。 +**说明** + + + +字符数据类型的列可以存储所有字母数字值,但是 `NUMBER` 数据类型的列只能存储数字值。 + + + + +| **数据类型** | **长度** | **使用说明** | **长度说明** | +|---------------------------------|--------|------------------------------------------|--------------------------------------------------------------------| +| CHAR(size \[BYTE \| CHAR\]) | 定长 | 索引效率高,程序里面使用 `trim` 去除多余的空白。 | 参数 `size` 必须是一个介于 1\~2000 之间的数值,存储大小为 `size` 个字节。 | +| NCHAR\[(size)\] | 定长 | 使用 UNICODE 字符集(所有的字符使用两个字节表示) 。 | 参数 `size` 必须是一个介于 1\~2000 之间的数值,存储大小为 `size` 字节的两倍。 | +| NVARCHAR2(size) | 变长 | 使用 UNICODE 字符集(所有的字符使用两个字节表示)。 | 参数 `size` 的值必须介于 1\~32767 之间,字节的存储大小是所输入字符个数的两倍。 | +| VARCHAR2(size \[BYTE \| CHAR\]) | 变长 | 使用 UNICODE 字符集(所有的字符使用两个字节表示)。 | 参数 `size` 必须是一个介于 1\~32767 之间的数值,存储大小为输入数据的字节的实际长度,而不是 `size` 个字节。 | +| VARCHAR(size \[BYTE \| CHAR\]) | 变长 | OceanBase 中 `VARCHAR` 和 `VARCHAR2` 没有区别。 | 参数 `size` 必须是一个介于 1\~32767 之间的数值,存储大小为输入数据的字节的实际长度,而不是 `size` 个字节。 | + + +其中,`CHAR` 和 `VARCHAR2` 数据类型需要指定 `length` 语义,其默认值由系统变量 `NLS_LENGTH_SEMANTICS` 控制。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/2.char-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/2.char-data-type.md new file mode 100644 index 000000000..f20001839 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/2.char-data-type.md @@ -0,0 +1,54 @@ +CHAR 数据类型 +============================== + + + +`CHAR` 数据类型指定了固定长度的字符串。OceanBase 确保存储在 `CHAR` 数据类型列中的所有值的长度等于 `size` 指定的固定长度。如果您插入的值短于指定长度,则 OceanBase 将用空格填充剩余长度。如果您插入的值超过列长度,则 OceanBase 会返回错误。 + +`BYTE` 和 `CHAR` 限定符会覆盖由 `NLS_LENGTH_SEMANTICS` 参数指定的语义,而该参数默认字节语义。为了确保具有不同字符集的数据库之间,能够进行正确的数据转换,`CHAR` 数据必须由格式正确的字符串组成。 + +语法 +-------------- + +```javascript +CHAR [(size [BYTE | CHAR])] +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|----------------------| +| size | 表示指定的固定长度 | +| BYTE | 表示以字节(BYTE)为单位提供列的长度 | +| CHAR | 表示以字符(CHAR)为单位提供列的长度 | + + +`CHAR` 数据类型的列的默认长度为 1 个字节,允许的最大长度为 2000 个字节。 + +示例 +-------------- + +当创建带有 `CHAR` 数据类型列的表时,默认情况下,您以字节为单位提供列的长度。`BYTE` 与默认值相同。 + +如果使用 `CHAR` 限定符。则以字符为单位提供列长。 + +* **示例 1** + + + + + + +将一个 1 字节的字符串插入 `CHAR(10)` 类型的列中,在存储该字符串之前,将为其空白填充为 10 个字节。 + +* **示例 2** + + + + +`CHAR(10 CHAR)`,表示以字符为单位提供列长。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/3.nchar-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/3.nchar-data-type.md new file mode 100644 index 000000000..fdd0adca5 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/3.nchar-data-type.md @@ -0,0 +1,83 @@ +NCHAR 数据类型 +=============================== + + + +`NCHAR` 是 `UNICODE` 字符数据类型,长度固定。您在创建数据库时,列的最大长度由国家字符集定义确定。创建包含 `NCHAR` 数据类型列的表时,以字符定义列长度。字符数据类型 `NCHAR` 的宽度规范是指字符数。允许的最大列大小为 2000 字节。 + +如果希望用较少的空间来存储中文,可以选择 `NCHAR` 类型。 + +使用 `NCHAR` 来存储数据时,如果存储的数据没有达到指定长度,那么数据库将自动补足空格。指定长度时,采用 `CHAR` 为计量单位,不可以手动指定其他单位。 +**注意** + + + +您不能将 `CHAR` 值插入 `NCHAR` 列,也不能将 `NCHAR` 值插入 `CHAR` 列。 + +语法 +-------------- + +```javascript +NCHAR[(size)] +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------|-----------------------------------------------------------------| +| `size` | 表示定长字符数据的长度大小,最大大小由国家字符集定义确定,上限为 2000 个字节。默认定长字符数据的长度最小为 1 个字符。 | + + + +更多信息 +---------------- + +### UNICODE 字符集 + +UNICODE 字符集是对字符的一种编码,具体的编码方式有 UTF-8、UTF-16、UTF-32 和压缩转换等,编码方式决定了一个字符的存储大小,中英文在不同的存储方式上使用的空间是不一样的。 + +**三种编码方式的对比** + + +| **编码方式** | **编码字节数** | **BOM** | **优点** | **缺点** | +|------------|-----------------------------------------------------------|-------------------------------------------------------|------------------------------------------------------------------------------|--------------------------------------------------| +| **UTF-8** | 不定长编码方式,单字节(ASCII 字符)或多字节(非 ASCII 字符);最小 Code Unit 是 8 位。 | 无字节序:如果一个文本的开头有字节流 EF BB BF,表示是 UTF-8 编码。 | 较为理想的 UNICODE 编码方式:与 ASCII 编码完全兼容;无字节序;自同步和纠错能力强,适合网络传输和通信;扩展性好。 | 变长编码方式不利于程序内部处理。 | +| **UTF-16** | 双字节或者四字节;最小 Code Unit 是 16 位。 | 有字节序:UTF-16LE(小端序)以 FF FE 代表,UTF-16BE(大端序)以 FE FF 代表。 | 最早的 Unicode 编码方式,已被应用于大量环境中;适合内存中 Unicode 处理;很多编程语言的 API 中作为 string 类型的编码方式。 | 无法兼容于 ASCII 编码;增补平面码点编码使用代理对,编码复杂;扩展性差。 | +| **UTF-32** | 固定四字节;最小 Code Unit 是 16 位。 | 有字节序:UTF-16LE(小端序)以 FF FE 代表,UTF-16BE(大端序)以 FE FF 代表。 | 固定字节编码读取简单,编译程序内部处理;Unicode 码点和 Code Unit 一一对应关系。 | 所有字符以固定四字节编码,浪费存储空间和带宽;与 ASCII 编码不兼容;扩展性差;实际使用少。 | + + + +### 数据库字符集 + +* 用来存储 `CHAR`、`VARCHAR2`、`CLOB` 等类型数据。 + + + +* 用来标示诸如表名、列名以及 PL 变量等。 + + + +* 用来存储 SQL 和 PL 程序单元等。 + + + + + + +### 国家字符集 + +* 用来存储 `NCHAR`、`NVARCHAR2`、`NCLOB` 等类型数据。 + + + +* 国家字符集实质上是为 OceanBase 数据库选择的附加字符集,主要作用是为了增强 OceanBase 数据库的字符处理能力,`NCHAR` 数据类型使用国家字符集,在使用 `CHAR` 数据类型提供的数据库字符集的同时,`NCHAR` 类型提供了除了数据库字符集之外的另一种字符集选择。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/4.nvarchar2-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/4.nvarchar2-data-type.md new file mode 100644 index 000000000..a63e9a109 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/4.nvarchar2-data-type.md @@ -0,0 +1,29 @@ +NVARCHAR2 数据类型 +=================================== + + + +`NVARCHAR2` 是 `UNICODE` 字符数据类型。列的长度可变,最大存储长度为 32767 个字节,最小值为 1 个字节。创建包含 `NVARCHAR2` 数据类型列的表时,您必须为 `NVARCHAR2` 指定可以容纳的最大字符数,默认采用 `CHAR` 为计量单位,不可以手动指定其他单位。 + +如果不确定存储的数据长度,而且有可能包含中文,可以选择 `NVARCHAR2` 类型。 + +格式 +-------------- + +```javascript +NVARCHAR2(size) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|---------------------------------------------------------------------------------------------------------------| +| size | 表示列的长度,可变长度。您必须为 `NVARCHAR2` 指定大小,对于 AL16UTF16 编码,字节数最大为两倍,对于 UTF8 编码,字节数最大为三倍。字节数大小由国家字符集定义确定,上限为 32767 个字节。 | + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/5.varchar2-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/5.varchar2-data-type.md new file mode 100644 index 000000000..1096e4b6e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/5.varchar2-data-type.md @@ -0,0 +1,70 @@ +VARCHAR2 数据类型 +================================== + + + +`VARCHAR2` 数据类型存储一个可变长度的字符串,最大长度为 32767。当您创建 `VARCHAR2` 列时,您必须为 `VARCHAR2` 列指定最大长度。尽管允许存储的实际字符串为零长度字符串(''),但该最大值必须至少为 1 个字节。OceanBase 会将每个值完全按照您指定的方式存储在列中。 +**注意** + + + +* 从技术上讲,字符是数据库字符集的代码点。 + + + +* 创建具有该列或属性,且在列或属性定义中未包含任何明确限定词的数据库对象时,长度语义由会话的 `NLS_LENGTH_SEMANTICS` 参数的值决定。 + + + +* OceanBase 使用未填充的比较语义比较 `VARCHAR2` 值。 + + + +* 具有不同字符集的数据库之间进行正确的数据转换时,必须确保 `VARCHAR2` 数据由格式正确的字符串组成。 + + + + + + +语法 +-------------- + +```javascript +VARCHAR2(size [BYTE | CHAR]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|--------------------| +| size | 表示存储的字节数或字符数的长度大小。 | +| BYTE | 表示该列将具有字节长度的语义。 | +| CHAR | 指示该列将具有字符语义。 | + + + +示例 +-------------- + +您可以使用 `CHAR` 限定符,以字符为单位提供最大长度。 + +```javascript +VARCHAR2(10 CHAR) +``` + + + +您可以使用 `BYTE` 限定符,以字节为单位明确给出最大长度。 + +```javascript +VARCHAR2(10 BYTE) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/6.varchar-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/6.varchar-data-type.md new file mode 100644 index 000000000..ceb84de53 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/2.character-data-type/6.varchar-data-type.md @@ -0,0 +1,31 @@ +VARCHAR 数据类型 +================================= + + + +`VARCHAR` 数据类型用于存储可变长度的字符串。当您创建 `VARCHAR` 数据类型的列时,您必须为 `VARCHAR` 列指定最大长度。尽管允许存储的实际字符串为零长度字符串(''),但该最大值必须至少为 1 个字节。OceanBase 会将每个值完全按照您指定的方式存储在列中。如果插入值超过指定长度,OceanBase 会返回错误。 + +在 OceanBase 中 `VARCHAR` 数据类型和 `VARCHAR2` 数据类型没有区别,一般会用 `VARCHAR2`。 + +语法 +-------------- + +```javascript +VARCHAR(size [BYTE | CHAR]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|--------------------| +| size | 表示存储的字节数或字符数的长度大小。 | +| BYTE | 表示该列将具有字节长度的语义。 | +| CHAR | 指示该列将具有字符语义。 | + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/1.overview-of-numeric-data-types.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/1.overview-of-numeric-data-types.md new file mode 100644 index 000000000..b3bf2c110 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/1.overview-of-numeric-data-types.md @@ -0,0 +1,16 @@ +数值数据类型概述 +============================= + + + +OceanBase 为我们提供了四种存储数值的数据类型,它们分别是 `NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`。您可以通过这四种数值类型存储定点数、浮点数和零。在数值计算时,数值类型具有不同的优先级,具体信息请查阅 [数值类型的优先级](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/5.numeric-priority.md)。 + + +| **数据类** | **长度(字节)** | **说明** | +|---------------|------------|-----------------------------------------------------------------| +| NUMBER | 4\~40 | `NUMBER(p,s)` 存储变长、十进制精度的定点数;也可以存储浮点数,此时 `NUMBER` 没有 `p` 和 `s`。 | +| FLOAT | 4\~40 | `FLOAT(p)` 是 `NUMBER` 数据类型的子类型。二进制精度范围为 1\~126。`FLOAT` 不是浮点数。 | +| BINARY_FLOAT | 4 | 二进制精度浮点数,是一种 32 位单精度浮点数数据类型。 | +| BINARY_DOUBLE | 8 | 二进制精度浮点数,是一种 64 位双精度浮点数数据类型。 | + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/2.number-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/2.number-data-type.md new file mode 100644 index 000000000..292389c04 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/2.number-data-type.md @@ -0,0 +1,99 @@ +NUMBER 数据类型 +================================ + + + +`NUMBER` 是变长、精确的数值类型,占 4\~40 字节存储空间,其中 4 字节存放 `NUMBER` 的元数据信息, 36 字节存放 `NUMBER` 的具体数值。可以存储零、浮点数、正的定点数和负的定点数,其绝对值范围 1.0 × 10^-130^ \~ 1.0 × 10^126^(不包括 1.0 × 10^126^)。如果您指定的算术表达式的绝对值大于或等于 1.0 × 10^-130^,OceanBase 会返回错误。 + +`NUMBER` 数据类型具有较好的数据精确度、通用性强、可移植性强,运算效率相对浮点类型偏低。 + +语法 +-------------- + +```javascript +NUMBER [(p[s])] +``` + + + +参数 +-------------- + + + +| 参数 | 取址范围 | 说明 | +|----|----------|---------------------------------------------------| +| p | 1\~38 | 表示精度,最大有效十进制数字,其中最高有效数字是最左边的非零数字,最低有效数字是最右边的已知数字。 | +| s | -84\~127 | 表示小数位数,从小数点到最低有效数字的位数。比例尺范围是 -84\~127。 | + + +**说明** + + + +* 若 s\>0,精确到小数点右边 `s` 位,四舍五入。然后检验有效位是否小于等于 `p`。 + + + +* 若 s\<0,精确到小数点左边 `s` 位,四舍五入。然后检验有效位是否小于等于 `p + |s|`。 + + + +* 若 s=0, 表示整数。 + + + + + +**注意** + + + +* 小数位数正标度是小数点右边到最低有效位数(包括最低有效位数)的有效位数。精度和小数位都用十进制数字表示。 + + + +* 小数位数负数标度是小数点左边的有效位数,但不包括最低有效位数。对于负比例,最低有效数字在小数点的左侧,因为实际数据四舍五入到小数点左侧的指定位数。 + + + + + + +示例 +-------------- + +* **示例 1:** 使用以下格式指定整数。 + + + + +`NUMBER(p)` 表示精度为 `p` 且标度为 0 的定点数,等效于 `NUMBER(p,0)`。 + +`NUMBER` 表示浮点数,缺少精度和小数位数指示符。 + +* **示例 2:** 使用不同的精度和小数位数存储数据。为了避免 OceanBase 存储的数据超过精度,我们需要为定点数字列指定小数位数和精度,对输入进行额外的完整性检查。但这不会强制固定定点数字列的长度。若实际存储的数据超过精度,则 OceanBase 会返回错误。如果存储的数据超过小数位数,则 OceanBase 对其进行四舍五入。 + + + + + +| 实际数据 | 指定为 | 存储为 | +|----------|----------------|---------| +| 123.89 | `NUMBER` | 123.89 | +| 123.89 | `NUMBER(3)` | 124 | +| 123.89 | `NUMBER(3,2)` | 超过精度 | +| 123.89 | `NUMBER(4,2)` | 超过精度 | +| 123.89 | `NUMBER(5,2)` | 123.89 | +| 123.89 | `NUMBER(6,1)` | 123.9 | +| 123.89 | `NUMBER(6,-2)` | 100 | +| .01234 | `NUMBER(4,5)` | .01234 | +| .00012 | `NUMBER(4,5)` | .00012 | +| .000127 | `NUMBER(4,5)` | .00013 | +| .000012 | `NUMBER(2,7)` | .000012 | +| .0000123 | `NUMBER(2,7)` | .000012 | +| 1.2e-4 | `NUMBER(2,5)` | .00012 | +| 1.2e-5 | `NUMBER(2,5)` | .00001 | + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/3.float-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/3.float-data-type.md new file mode 100644 index 000000000..98fe7649b --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/3.float-data-type.md @@ -0,0 +1,96 @@ +FLOAT 数据类型 +=============================== + + + +`FLOAT` 数据类型是具有精度(precision)的 `NUMBER` 数据类型的子类型,需要占 4\~40 字节存储空间。它的精度是按二进制有效位数计算的,范围为 1\~126,小数位数不可自定义。`FLOAT` 类型为变长、非精确数值类型。 + +语法 +-------------- + +```javascript +FLOAT [(p)] +``` + + + +参数 +-------------- + + + +| 参数 | 定义 | 范围 | 说明 | +|----|----|--------|----------------------------------------| +| p | 精度 | 1\~126 | 定义数值精度,按二进制有效位数计算,转换为十进制精度要乘以 0.30103。 | + + +**说明** + + + +* 二进制精度转换为十进制精度的换算关系: `十进制精度 = int(二进制精度 x 0.30103)`。 + + + +* 十进制精度转换为二进制精度的换算关系: `二进制精度 = int(十进制精度 x 3.32193)`。 + + + + + + +示例 +-------------- + +* **示例 1:** 使用 `FLOAT` 设置二进制精度为 2,转换为十进制精度 int(2 x 0.30103) = 0.6,结果向下取整,则 `FLOAT(2)` 的十进制精度为 0。 + + + + + + +```javascript +FLOAT(2) +``` + + + +* **示例 2:** 创建 **test** 表,并向里面插入数据。其中 **col1** 列是 `NUMBER` 类型, **col2** 列是 `FLOAT` 类型。`NUMBER(5,2)` 表示十进制精度的定点数,有效位数为 5,结果保留小数点后 2 位。`FLOAT(5)` 的二进制精度为 5,转换为十进制精度为`int(5 x 0.30103) = 1.50515`,向下取整后十进制精度为 1。如 123.45 用科学计数法表示为 1.2345 x 10^2^,1.2345 小数点后保留 1 位,四舍五入变为 1.2,最后显示为 1.2 x 10^2^ = 120。执行以下语句: + + + + + + +```javascript +CREATE TABLE test (col1 NUMBER(5,2), col2 FLOAT(5)); +INSERT INTO test VALUES (1.23, 1.23); +INSERT INTO test VALUES (7.89, 7.89); +INSERT INTO test VALUES (12.79, 12.79); +INSERT INTO test VALUES (123.45, 123.45); +``` + + + +执行 SELECT 语句查看 **test** 表,返回结果如下: + +```javascript +obclient> SELECT * FROM test; ++--------+------+ +| COL1 | COL2 | ++--------+------+ +| 1.23 | 1.2 | +| 7.89 | 7.9 | +| 12.79 | 13 | +| 123.45 | 120 | ++--------+------+ +4 rows in set (0.00 sec) +``` + + +**说明** + + + +当转换 `ANSI FLOAT` 数据时,您可以使用 OceanBase 数据库内部使用的 `FLOAT` 数据类型。但是建议您改用 `BINARY_FLOAT` 和 `BINARY_DOUBLE` 浮点数字。 + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/4.floating-point-number.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/4.floating-point-number.md new file mode 100644 index 000000000..7dd3625d5 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/4.floating-point-number.md @@ -0,0 +1,28 @@ +浮点数字 +========================= + + + +浮点数字(FLOAT-Point Numbers)可以有小数点,从第一位到最后一位,或者根本没有小数点。您可以选择在数字后使用指数来增加范围,例如 1.666 e^-20^。小数位数不适用于浮点数,因为小数点后可以出现的位数不受限制。 +**注意** + + + +二进制浮点数与 `NUMBER` 的区别,在于值是由 OceanBase 数据库内部存储的。`NUMBER` 数据类型使用十进制精度存储,所存储的数据都会精确存储。二进制浮点数(FLOAT-Point Numbers)是使用二进制精度(数字 0 和 1)存储的,这种存储值的方式不能精确地表达使用十进制精度的所有值。 + +语法 +-------------- + +OceanBase 数据库为浮点数提供了两种数字数据类型: + +* `BINARY_FLOAT`,是一种 32 位单精度浮点数数据类型。每个 `BINARY_FLOAT` 值需要 4 个字节。 + + + +* `BINARY_DOUBLE`,是一种 64 位双精度浮点数数据类型。每个 `BINARY_DOUBLE` 值需要 8 个字节。 + +* 您可以根据值域范围指定浮点数。 + +* OceanBase 浮点数据类型的实现基本上符合电气和电子工程师协会(IEEE)的二进制浮点算法标准。 + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/5.numeric-priority.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/5.numeric-priority.md new file mode 100644 index 000000000..1b62b2c27 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/3.numeric-data-type/5.numeric-priority.md @@ -0,0 +1,31 @@ +数值类型的优先级 +============================= + + + +不同的数值数据类型在操作时有不同的优先级。在 OceanBase 中,`BINARY_DOUBLE` 的优先级最高,其次是 `BINARY_FLOAT`,最后是 `NUMBER` 。 + +在对多个数值进行操作时: + +* 若有一个操作数为 `BINARY_DOUBLE`,OceanBase 会在执行该操作之前将所有操作数转换为 + + `BINARY_DOUBLE`。 + +* 若有一个操作数为 `BINARY_FLOAT`,OceanBase 会在执行该操作之前将所有操作数转换为 `BINARY_FLOAT`。 + + + +* 若有一个操作数都不是 `BINARY_DOUBLE` 和 `BINARY_FLOAT`,OceanBase 会在执行该操作之前将所有操作数转换为 `NUMBER`。 + + + +* 若所需要的转换失败,则该操作将失败。 + + + +* 与其他数据类型相比,数值数据类型的优先级低于日期时间与间隔数据类型,高于字符和所有其他数据类型。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/1.overview-of-date-time-and-interval-data-types.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/1.overview-of-date-time-and-interval-data-types.md new file mode 100644 index 000000000..e9e749bf2 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/1.overview-of-date-time-and-interval-data-types.md @@ -0,0 +1,48 @@ +日期时间和间隔数据类型概述 +================================== + + + +与 Oracle 中的数据类型一致,OceanBase 也支持日期时间和间隔数据类型。 + +日期时间数据类型 +-------------------- + +日期时间数据类型被用来在数据库中保存日期和时间,此类别中有以下数据类型: + + +| 数据类型 | 说明 | +|--------------------------------|------------------------------| +| DATE | 存储日期和时间信息,精确到秒,不带时区。 | +| TIMESTAMP | `DATE` 数据类型的扩展,精确到纳秒,不带时区。 | +| TIMESTAMP WITH TIME ZONE | `DATE` 数据类型的扩展,精确到纳秒,带时区信息。 | +| TIMESTAMP WITH LOCAL TIME ZONE | 带有本地时区的 `TIMESTAMP`,存储数据库时区。 | + + + +间隔数据类型 +------------------ + +与日期时间数据类型存储特定的一个时间点不同,间隔数据类型用来存储一段时间。间隔数据类型有效的存储了两个日期时间值之间的差异,此类别中有以下数据类型: + + +| **数据类型** | **说明** | +|------------------------|----------------------| +| INTERVAL YEAR TO MONTH | 存储以年和月为单位的时间段。 | +| INTERVAL DAY TO SECOND | 存储以天、小时、分钟和秒为单位的时间段。 | + + + +更多信息 +---------------- + +* [夏令时](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/4.timestamp-with-time-zone-data-type.md) + + + +* [日期时间 DATE 和间隔 INTERVAL 的计算](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/8.calculation-of-date-time-and-interval.md) + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/2.date-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/2.date-data-type.md new file mode 100644 index 000000000..cad9dc14f --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/2.date-data-type.md @@ -0,0 +1,96 @@ +DATE 数据类型 +============================== + + + +`DATE` 数据类型存储日期和时间信息。尽管日期和时间信息可以用字符和数字数据类型表示,但 `DATE` 数据类型具有特殊的关联属性。对于每个 `DATE` 值,OceaBase 存储以下信息:年、月、日、小时、分钟和秒,但是并不包含时区信息。 + +格式 +-------------- + +`DATE` 数据类型的默认输入输出格式由 `NLS_DATE_FORMAT` 决定,运行以下 SQL 语句查看默认格式: + +```javascript +SELECT @@NLS_DATE_FORMAT FROM DUAL; +``` + + + +返回结果: + +```javascript +DD-MON-RR +``` + + + +如果您需要自定义数据的格式,可以使用转换函数。在插入数据时,您可以通过函数 TO_DATE (char,fmt) 指定数据的输入格式。查询数据时,您可以通过函数 TO_CHAR (datetime,fmt) 指定数据的输出格式。这两个转换函数会将字符串转化为参数 `fmt` 中定义的格式。在 `fmt` 未指明的情况下,使用默认格式。 +**注意** + + + +`DATE` 数据类型储存小时、分钟和秒等时间信息,但是默认格式中并不包含时间信息。 + +取值范围 +---------------- + +`0001-01-01 00:00:00`\~`9999-12-31 23:59:59` + +示例 +-------------- + +* **示例1:** 返回当前的系统日期,由于未指定参数 `fmt`,所以 `TO_CHAR` 按数据类型的默认格式返回数据。 + + + + +```javascript +SELECT TO_CHAR(sysdate) FROM DUAL; +``` + + + +返回结果: + +```javascript ++------------------+ +| TO_CHAR(SYSDATE) | ++------------------+ +| 24-FEB-20 | ++------------------+ +``` + + + + + +* **示例2:** 在未指定 `DATE` 字面量的情况下,数据库将返回系统默认值: + + + + + + + + +本示例将使用 `TO_DATE(string, format)` 插入日期数据。`TO_DATE` 会将 `string` 中的字符串转化为`format` 中定义的格式。 + +例如当前查询是 2020 年 2 月发出的: + +```javascript +SELECT TO_CHAR(TO_DATE('2020', 'YYYY'),'YYYY-MM-DD HH24:MI:SS') FROM DUAL; +``` + + + +返回结果: + +```javascript ++----------------------------------------------------------+ +| TO_CHAR(TO_DATE('2020', 'YYYY'),'YYYY-MM-DD HH24:MI:SS') | ++----------------------------------------------------------+ +| 2020-02-01 00:00:00| ++----------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/3.timestamp-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/3.timestamp-data-type.md new file mode 100644 index 000000000..57b010811 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/3.timestamp-data-type.md @@ -0,0 +1,110 @@ +TIMESTAMP 数据类型 +=================================== + + + +日期时间数据类型中除了 `DATE` 数据类型以外还有 `TIMESTAMP[(scale)]` 时间戳数据类型。它是 `DATE` 数据类型的扩展,跟 `DATE` 数据类型一样,它存储了年、月、日、时、分和秒等信息,但是不存储时区信息,它的时间最大可以精确到纳秒。所以它常用于存储时间精确度高和不需要考虑时区变换的数据。 + +语法 +-------------- + +```javascript +TIMESTAMP [(scale)] +``` + + + +参数 +-------------- + + + +| 参数 | 取值范围 | 说明 | +|-------|------|-----------------------------------------------------------------------------------------------------| +| scale | 0\~9 | `TIMESTAMP[(scale)]` 的范围和精确度取决于 `scale` 的值,最大值为 9(纳秒,即秒数精确至小数点 9 位),最小值为 0(秒,即秒数精确至小数点 0 位),默认值为 6。 | + + + +格式 +-------------- + +`TIMESTAMP` 数据类型的默认输入输出格式由 `NLS_TIMESTAMP_FORMAT` 决定,运行以下 SQL 语句查看默认格式: + +```javascript +SELECT @@NLS_TIMESTAMP_FORMAT FROM DUAL; +``` + + + +返回结果: + +```javascript +DD-MON-RR HH.MI.SSXFF AM +``` + + + +如果您需要自定义数据的格式,可以使用转换函数。在插入数据时,您可以通过函数 TO_TIMESTAMP (char,fmt) 指定数据的输入格式。查询数据时,您可以通过函数 TO_CHAR (datetime,fmt) 指定数据的输出格式。这两个转换函数会将字符串转化为参数 `fmt` 中定义的格式。在 `fmt` 未指明的情况下,使用默认格式。 + +取值范围 +---------------- + +`0001-01-01 00:00:00.000000000` \~ `9999-12-31 23:59:59.999999999` + +示例 +-------------- + +* **示例1** :如下代码所示,在表 **Timestamp_Sample** 中创建了数据类型为 `TIMESTAMP` 的两列 **timestp1** 和 **timestp2** , 并且为 **timestp2** 指定了时间的精度为 3。向两列同时使用 `TO_TIMESTAMP(string, format)` 插入日期值 **2020-01-01 11:00:00** 。 + + + + + + +```javascript +CREATE TABLE Timestamp_Sample(timestp1 TIMESTAMP, timestp2 TIMESTAMP(3)); +INSERT INTO Timestamp_Sample(timestp1,timestp2) VALUES(TO_TIMESTAMP('2020-01-01 11:00:00','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2020-01-01 11:00:00','YYYY-MM-DD HH24:MI:SS')); +SELECT * FROM Timestamp_Sample; +``` + + + +结果如下,可以看到 **timestp1** 由于没有指定 `scale` 的值,所以结果时间精度默认为 6 位, **timestp2** 在指定后精度为 3 位: + +```javascript ++------------------------------+---------------------------+ +| timestamp1 | timestamp2 | ++------------------------------+---------------------------+ +| 01-JAN-20 11.00.00.000000 AM | 01-JAN-20 11.00.00.000 AM | ++------------------------------+---------------------------+ +``` + + + + + +* **示例2** :以下语句使用函数 `TO_CHAR (datetime,fmt)` 指定输出格式。 + + + + + + +```javascript +SELECT TO_CHAR(TO_TIMESTAMP_TZ('25-FEB-20 11:00:00 AM America/Los_Angeles','DD-MON-RR HH:MI:SSXFF PM TZR'),'YYYY-MM-DD HH:MI:SSXFF PM TZR') Timestamp +FROM DUAL; +``` + + + +返回结果: + +```javascript ++------------------------------------------------------+ +| Timestamp | ++------------------------------------------------------+ +| 2020-02-25 11:00:00.000000000 AM America/Los_Angeles | ++------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/4.timestamp-with-time-zone-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/4.timestamp-with-time-zone-data-type.md new file mode 100644 index 000000000..dd8f88d82 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/4.timestamp-with-time-zone-data-type.md @@ -0,0 +1,129 @@ +TIMESTAMP WITH TIME ZONE 数据类型 +================================================== + + + +`TIMESTAMP [(scale)] WITH TIME ZONE` 是 `TIMASTAMP [(scale)]` 的变体,与 `TIMASTAMP [(scale)]` 一样,它存储了年、月、日、时、分和秒等信息,阈值和精确度取决于 `scale` 的值。但是与 `TIMASTAMP [(scale)]` 不同的是它还可以存储时区信息,所以常用于存储跨地理区域的日期时间信息。 + +语法 +-------------- + +```javascript +TIMESTAMP [(scale)] WITH TIME ZONE +``` + + + +参数 +-------------- + + + +| 参数 | 取值范围 | 说明 | +|-------|------|----------------------------------------------------------------------------------------------------------------------| +| scale | 0\~9 | `TIMESTAMP [(scale)] WITH TIME ZONE` 的阈值和精确度取决于 `scale` 的值,最大值为 9 (纳秒,即秒数精确至小数点 9 位),最小值为 0(秒,即秒数精确至小数点 0 位),默认值为 6。 | + + + +格式 +-------------- + +`TIMESTAMP WITH TIME ZONE` 数据类型的默认输入输出格式由 `NLS_TIMESTAMP_TZ_FORMAT` 决定,运行以下 SQL 语句查看默认格式: + +```javascript +SELECT @@NLS_TIMESTAMP_TZ_FORMAT FROM DUAL; +``` + + + +返回结果: + +```javascript +DD-MON-RR HH.MI.SSXFF AM TZR +``` + + + +如果您需要自定义数据的格式,可以使用转换函数。在插入数据时,您可以通过函数 TO_TIMESTAMP_TZ (char,fmt) 指定数据的输入格式。查询数据时,您可以通过函数 TO_CHAR (datetime,fmt) 指定数据的输出格式。这两个转换函数会将字符串转化为参数 `fmt` 中定义的格式。在 `fmt` 未指明的情况下,使用默认格式。 + +取值范围 +---------------- + +`0001-01-01 00:00:00.000000000` \~ `9999-12-31 23:59:59.999999999` + +示例 +-------------- + +以下示例都使用 `TO_TIMESTAMP_TZ (char,fmt)` 输入时间戳值。 + +在插入时区时, OceanBase 支持使用时区偏移量和时区区域名称: + +* 时区偏移量:与格林尼治标准时间 GMT 的差(小时和分钟) + + + +* 时区区域名称(TZR)及时区缩写(TZD):国家/城市 时区缩写 + + + + + + +### 使用时区偏移量 + +执行以下语句,使用时区偏移量插入数值: + +```javascript +SELECT TO_TIMESTAMP_TZ('2020-01-01 11:00:00 -05:00','YYYY-MM-DD HH:MI:SS TZH:TZM') FROM DUAL; +``` + + + +返回结果: + +```javascript +01-JUN-20 11.00.00.000000000 AM AMERICA/LOS_ANGELES +``` + + + +### 使用时区区域名称及时区缩写 + +执行以下语句,使用时区区域名称及缩写插入数值: + +```javascript +SELECT TO_TIMESTAMP_TZ('2020-01-01 11:00:00 America/Los_Angeles PST','YYYY-MM-DD HH:MI:SS TZR TZD') FROM DUAL; +``` + + + +返回结果: + +```javascript +01-JUN-20 11.00.00.000000000 AM America/Los_Angeles PST +``` + + + +夏令时 +--------------- + +OceanBase 支持夏令时且用时区缩写表示夏令时信息,以 America/Los_Angeles 为例,夏令时 PDT 从每年的 3 月的第二个星期日到 11 月的第一个星期日执行,其余时间为 PST。当插入的值中只包含时区区域名称时,OceanBase 会根据插入的时间信息判断当前插入的时区区域是否在夏令时时段,并在返回的结果中会包含时区缩写,以此指明当前时间是夏令时。 + +您可以执行以下示例代码: + +```javascript +SELECT TO_TIMESTAMP_TZ('2020-02-01 11:00:00 America/Los_Angeles','YYYY-MM-DD HH:MI:SS TZR') FROM DUAL; +SELECT TO_TIMESTAMP_TZ('2020-06-01 11:00:00 America/Los_Angeles','YYYY-MM-DD HH:MI:SS TZR') FROM DUAL; +``` + + + +返回结果: + +```javascript +01-JUN-20 11.00.00.000000000 AM America/Los_Angeles PST +01-JUN-20 11.00.00.000000000 AM America/Los_Angeles PDT +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/5.timestamp-with-local-time-zone-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/5.timestamp-with-local-time-zone-data-type.md new file mode 100644 index 000000000..89956509f --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/5.timestamp-with-local-time-zone-data-type.md @@ -0,0 +1,99 @@ +TIMESTAMP WITH LOCAL TIME ZONE 数据类型 +======================================================== + + + +`TIMESTAMP [(scale)] WITH LOCAL TIME ZONE` 数据类型的时区信息是当前会话发生的时区。与 `TIMASTAMP [(scale)] WITH TIME ZONE` 的区别在于用户不需要自己输入时区信息,OceanBase 直接存储默认的数据库时区 +00:00 (不可更改)。当用户检索数据时,OceanBase 会返回本地会话时区(可更改)。此数据类型常用于始终在两层应用程序中的客户端系统的时区中显示的日期信息。 + +语法 +-------------- + +```javascript +TIMASTAMP [(scale)] WITH TIME ZONE +``` + + + +参数 +-------------- + + + +| 参数 | 取值范围 | 说明 | +|-------|------|--------------------------------------------------------------------------| +| scale | 0\~9 | `TIMESTAMP [(scale)]` 的阈值和精确度取决于 `scale` 的值,最大值为 9(纳秒),最小值为 0(秒),默认值为 6。 | + + + +格式 +-------------- + +`TIMESTAMP WITH LOCAL TIME ZONE` 数据类型的默认输入输出格式由 `NLS_TIMESTAMP_FORMAT` 决定,运行以下 SQL 语句查看日期时间格式: + +```javascript +SELECT @@NLS_TIMESTAMP_FORMAT FROM DUAL; +``` + + + +返回结果: + +```javascript +DD-MON-RR HH.MI.SSXFF AM +``` + + + +如果您需要自定义数据的格式,可以使用转换函数。您可以通过函数 TO_CHAR (datetime,fmt) 指定数据的输出格式。这个转换函数会将字符串转化为参数 fmt 中定义的格式。在 `fmt` 未指明的情况下 `TO_CHAR` 按数据类型的默认格式返回数据。关于 `TIMESTAMP WITH TIME ZONE` 数据类型值的输入格式,您可以参阅文档 [时间戳字面量](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/4.date-and-time-literal/2.timestamp-literal.md)。 + +取值范围 +---------------- + +`0001-01-01 00:00:00.000000000` \~ `9999-12-31 23:59:59.999999999` + +示例 +-------------- + +`TIMESTAMP WITH TIME ZONE` 数据类型没有专门的字面量为其赋值,时区信息由 **SESSIONTIMEZONE** 返回本地对话时区。 **SESSIONTIMEZONE** 的值取自自定义参数 **TIME_ZONE** 。 + +```javascript +CREATE TABLE LocalTZ ( ltzcol TIMESTAMP WITH LOCAL TIME ZONE); +INSERT INTO LocalTZ VALUES (TIMESTAMP '2020-02-25 11:10:08.123'); +ALTER SESSION SET TIME_ZONE='+08:00'; +SELECT SESSIONTIMEZONE, ltzcol FROM LocalTZ; +``` + + + +返回结果: + +```javascript ++-----------------+------------------------------+ +| SESSIONTIMEZONE | ltzcol | ++-----------------+------------------------------+ +| +08:00 | 25-FEB-20 11:10:08.123000 AM | ++-----------------+------------------------------+ +``` + + + +可通过更改自定义参数 **TIME_ZONE** 的值而改变 **SESSIONTIMEZONE** : + +```javascript +ALTER SESSION SET TIME_ZONE='+00:00'; +SELECT SESSIONTIMEZONE, ltzcol FROM LocalTZ; +``` + + + +返回结果: + +```javascript ++-----------------+------------------------------+ +| SESSIONTIMEZONE | ltzcol | ++-----------------+------------------------------+ +| +00:00 | 25-FEB-20 03:10:08.123000 AM | ++-----------------+------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/6.interval-year-to-month-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/6.interval-year-to-month-data-type.md new file mode 100644 index 000000000..18e8e495d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/6.interval-year-to-month-data-type.md @@ -0,0 +1,152 @@ +INTERVAL YEAR TO MONTH 数据类型 +================================================ + + + +与 `DATE` 和 `TIMESTAMP` 数据类型储存特定的时间点日期不同,`INTERVAL YEAR TO MONTH` 使用日期元素 `YEAR` 和 `MONTH` 来储存一段时间,此数据类型对于表示两个日期时间值之间的差异很有用。 + +语法 +-------------- + +```javascript +INTERVAL YEAR [(percision)] TO MONTH +``` + + + +参数 +-------------- + + + +| 参数 | 值 | 说明 | +|-----------|------|------------------------------------------------------------------------------------------------------------------------| +| percision | 0\~9 | 代表了 `YEAR` 元素的精度,默认值为 2。也就是说在不指定该参数的情况下,最大可以存储 99 年 11 个月的间隔日期 (最大不能超过 100 年)。如果存储的参数超过了默认精度 2 位,那么这个参数的值不能为空,必须被明确指定。 | + + + +日期格式 +---------------- + +在插入 `INTERVAL YEAR TO MONTH` 数据类型的值时,有以下几种格式,更多关于间隔数据类型值的指定请参阅 [间隔字面量](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/5.interval-literal.md): + + +| **语法** | **示例** | **说明** | +|-------------------------------------------------|------------------------------------|--------------------------------------------------------------| +| INTERVAL 'year-month' YEAR(percision) TO MONTH | INTERVAL '120-3' YEAR(3) TO MONTH | 间隔 120 年 3 个月。由于 `YEAR` 元素的值大于默认精度 2,所以必须指定 `YEAR` 元素的精度为 3. | +| INTERVAL 'year' YEAR(percision) | INTERVAL '50' YEAR | 间隔 50 年。 | +| INTERVAL 'month' MONTH | INTERVAL '500' MONTH | 间隔 500 个月或者间隔 41 年 8 个月。 | + + + +示例 +-------------- + +如下代码所示,在表 **Interval_Sample** 中创建了数据类型为 `INTERVAL YEAR TO MONTH` 的三列 **interval1** 、 **interval2** 和 **interval3** ,并向其中插入数值: + +```javascript +CREATE TABLE Interval_Sample ( + interval1 INTERVAL YEAR TO MONTH, + interval2 INTERVAL YEAR(3) TO MONTH, + interval3 INTERVAL YEAR TO MONTH +); +INSERT INTO Interval_Sample (interval1, interval2, interval3) +VALUES (INTERVAL '12-3' YEAR TO MONTH, INTERVAL '120-3' YEAR(3) TO MONTH, INTERVAL '40' MONTH); +SELECT * FROM Interval_Sample; +``` + + + +返回结果: + +```javascript ++-----------+-----------+-----------+ +| interval1 | interval2 | interval3 | ++-----------+-----------+-----------+ +| +12-03 | +120-03 | +03-04 | ++-----------+-----------+-----------+ +``` + + + +间隔与其他日期类型的计算 +------------------------ + +OceanBase 支持数据类型间的转换,所以间隔数据类型的值可以与其他日期值进行数学运算,但是数据库并不支持数据类型间任意的进行加、减、乘、除运算。请参阅文档 [日期时间 DATE 和间隔 INTERVAL 的计算](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/8.calculation-of-date-time-and-interval.md) 中查看目前支持的日期类型计算矩阵图和 [数据类型转换](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/6.data-type-conversion.md) 了解数更多数据类型转换的信息。 + +* **示例 1** :间隔与间隔的计算,返回的值仍为间隔数据类型。 + + + + +```javascript +SELECT INTERVAL '2-2' YEAR TO MONTH -INTERVAL '1-1' YEAR TO MONTH calculate1, INTERVAL '2-2' YEAR TO MONTH + INTERVAL '1-1' YEAR TO MONTH calculate2 FROM DUAL; +``` + + + +返回结果: + +```javascript ++---------------+----------------+ +| calculate1 | calculate2 | ++--------------------------------+ +| +000000001-01 | +000000003-03 | ++---------------+----------------+ +``` + + + + + +* **示例 2** :间隔与日期时间的计算,返回的值为日期数据类型。`SYSDATE` 返回当前的时间 **2020-02-27 16:13:50** ,以下示例会返回从现在起两个月后的日期值。数据库只支持间隔+日期时间,而间隔-日期时间是无效运算。但是日期时间+间隔和日期时间-间隔都是有效运算。 + + + + +```javascript +SELECT TO_CHAR(INTERVAL '2' MONTH +SYSDATE,'YYYY-MM-DD HH24:MI:SS') calculate3 FROM DUAL; +``` + + + +返回结果: + +```javascript ++---------------------+ +| calculate3 | ++---------------------+ +| 2020-04-27 16:13:50 | ++---------------------+ +``` + + + +* **示例 3** :间隔和数字的运算,返回的值仍为间隔数据类型。 + + + + + + +间隔可以与数字进行乘除运算。以下示例展示了间隔 2 月乘以 2 的计算和间隔 2 天除以 3 的计算。 + +```javascript +SELECT INTERVAL '2' MONTH*2 calculate4, INTERVAL '2' DAY/3 calculate5 FROM DUAL; +``` + + + +返回结果为间隔 4 月和间隔 16 小时: + +```javascript ++---------------+-------------------------------+ +| calculate4 | calculate5 | ++---------------+-------------------------------+ +| +000000000-04 | +000000000 16:00:00.000000000 | ++---------------+-------------------------------+ +``` + + + +[](qqvecg) diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/7.interval-day-to-second-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/7.interval-day-to-second-data-type.md new file mode 100644 index 000000000..6dd264e88 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/7.interval-day-to-second-data-type.md @@ -0,0 +1,76 @@ +INTERVAL DAY TO SECOND 数据类型 +================================================ + + + +`INTERVAL DAY TO SECOND` 可存储以天、小时、分钟和秒为单位的时间段。此数据类型对于表示两个日期时间值之间的精确差异很有用。 + +语法 +-------------- + +```javascript +INTERVAL DAY [(precision)] TO SECOND [(fractional_seconds_precision)] +``` + + + +参数 +-------------- + + + +| 参数 | 值 | 说明 | +|------------------------------|------|--------------------------------| +| precision | 0\~9 | 代表了 `DAY` 元素的精度,默认值为 2。 | +| fractional_seconds_precision | 0\~9 | 代表了 `SECOND` 元素小数部分的精度,默认值为 6。 | + + + +示例 +-------------- + +在插入 `INTERVAL DAY TO SECOND` 数据类型的值时,有以下几种格式,更多关于间隔数据类型值的指定请参阅 [间隔字面量](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/5.interval-literal.md): + + +| 语法 | 示例 | 说明 | +|--------------------------------------------------------------------------------|----------------------------------------------------|-----------------------------------| +| INTERVAL 'dd hh:mm:ss' DAY(precision) TO SECOND(fractional_seconds_precision) | INTERVAL '140 5:12:10.2222222' DAY(3) TO SECOND(7) | 间隔 140 天 5 小时 12 分钟 10.2222222 秒。 | +| INTERVAL 'dd hh'DAY(precision) TO HOUR | INTERVAL '400 5' DAY(3) TO HOUR | 间隔 400 天 5 小时。 | +| INTERVAL 'dd hh:mm'DAY(precision) TO MINUTE | INTERVAL '4 5:12' DAY TO MINUTE | 间隔 4 天 5 小时 12 分钟。 | +| INTERVAL 'hh:mm' HOUR TO MINUTE | INTERVAL '11:20' HOUR TO MINUTE | 间隔 11 小时 20 分钟。 | +| INTERVAL 'hh:mm:ss' HOUR TO SECOND(fractional_seconds_precision) | INTERVAL '11:12:10.2222222' HOUR TO SECOND(7) | 间隔 11 小时 12 分钟 10.2222222 秒。 | +| INTERVAL 'dd' DAY(precision) | INTERVAL '14' DAY | 间隔 14 天。 | +| INTERVAL 'hh' HOUR | INTERVAL '160' HOUR | 间隔 160 小时。 | +| INTERVAL 'mm' MINUTE | INTERVAL '14' MINUTE | 间隔 14 分钟。 | +| INTERVAL 'ss' SECOND(fractional_seconds_precision) | INTERVAL '14.666' SECOND(2, 3) | 间隔 14.666 秒。 | + + + +如下代码所示,在表 **Interval_Sample** 中创建了数据类型为 `INTERVAL DAY TO SECOND` 的两列 **interval1** 、 **interval2** 并向这两列中插入数值: + +```javascript +CREATE TABLE Interval_Sample (interval1 INTERVAL DAY TO SECOND, interval2 INTERVAL DAY(3) TO SECOND(3)); +INSERT INTO Interval_Sample (interval1, interval2) VALUES ( INTERVAL '15 06:10:08' DAY TO SECOND, INTERVAL '150 06:10:08' DAY(3) TO SECOND(3)); +SELECT * FROM Interval_Sample; +``` + + + +返回结果: + +```javascript ++---------------------+-------------------+ +| interval1 | interval2 | ++---------------------+-------------------+ +| +15 06:10:08.000000 | +150 06:10:08.000 | ++---------------------+-------------------+ +``` + + + +间隔与其他日期类型的计算 +------------------------ + +OceanBase 支持数据类型间的转换,所以间隔数据类型的值可以与其他日期值进行数学运算。但是数据库并不支持数据类型间任意的进行加、减、乘、除运算。请参阅文档 [日期时间 DATE 和间隔 INTERVAL 的计算](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/8.calculation-of-date-time-and-interval.md) 中查看目前支持的日期类型计算矩阵图和参阅文档 [数据类型转换](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/6.data-type-conversion.md) 了解数更多数据类型转换的信息。 + +关于间隔与其他数据类型计算的示例,请参阅文档 [INTERVAL YEAR TO MONTH 数据类型](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/6.interval-year-to-month-data-type.md) 。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/8.calculation-of-date-time-and-interval.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/8.calculation-of-date-time-and-interval.md new file mode 100644 index 000000000..d79eff228 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/4.date-time-and-interval-data-types/8.calculation-of-date-time-and-interval.md @@ -0,0 +1,73 @@ +日期时间 DATE 和间隔 INTERVAL 的计算 +=============================================== + + + +您可以在日期(`DATE`)、时间戳(`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE` 和 `TIMESTAMP WITH LOCAL TIME ZONE`)和间隔(`INTERVAL YEAR TO MONTH` 和 `INTERVAL DAY TO SECOND`)上执行许多算术运算。 + +OceanBase 根据以下规则计算结果: + +* 您可以在日期和时间戳值(而非间隔值)的算术运算中使用 `NUMBER` 常数。OceanBase 在内部将时间戳值转换为日期值,并将算术日期时间和间隔表达式中的 `NUMBER` 常量解释为天数。例如,`SYSDATE` +1 是明天。`SYSDATE`-7 是一周前。`SYSDATE` +(10/1440)是十分钟之后。 + + **注意** + + + + 您不能乘以或除以日期或时间戳值。 + + +* OceanBase 将 `BINARY_FLOAT` 和 `BINARY_DOUBLE` 操作数转换为 `NUMBER`。 + + + +* 每个 `DATE` 值都包含一个时间成分,许多日期运算的结果都包含一个分数。此分数表示一天的一部分。例如,1.5 天是 36 个小时。OceanBase 内置函数还返回这些分数,以对 `DATE` 数据执行常见操作。例如,`MONTHS_BETWEEN` 函数返回两个日期之间的月数。结果的小数部分代表一个 31 天月份的那部分。 + + + +* 如果一个操作数是 `DATE` 值或数字值,但都不包含时区或小数秒部分,则: + + + + + + + + + + + + +* 当您将时间戳,时间间隔或数字值传递给仅限于 `DATE` 数据类型使用的内置函数时,OceanBase 将把非 `DATE` 值转换为 `DATE` 值。 + + + +* 当间隔计算返回日期时间值时,结果必须是实际的日期时间值,否则数据库将返回错误。例如,以下两个语句返回错误: + + + + + + +```javascript +SELECT TO_DATE("31-AUG-2004','DD-MON-YYYY") + TO_YMINTERVAL("0-1") FROM DUAL; +SELECT TO_DATE("29-FEB-2004','DD-MON-YYYY") + TO_YMINTERVAL("1-0") FROM DUAL; +``` + + + +第一条语句失败,因为在一个有31天的月份上增加一个月,导致计算结果为 9 月 31 日,这不是有效的日期。第二条语句失败,因为在仅每四年存在的日期上增加一年是无效的。但是,在 2 月 29 日之前加上四年是有效的,计算结果为2008年2月29日: + +```javascript +SELECT TO_DATE("29-FEB-2004", "DD-MON-YYYY") + TO_YMINTERVAL("4-0") FROM DUAL; +``` + + + +* 下表是日期时间算术运算的矩阵。"---"表示不支持的操作。 + + + + + + +![1582879347833-8be1cad5-b40b-4671-ab9a-f13cdbd939a8 (1).png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9055055061/p179242.png "1582879347833-8be1cad5-b40b-4671-ab9a-f13cdbd939a8 (1).png") diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/5.raw-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/5.raw-data-type.md new file mode 100644 index 000000000..e70e4f6a0 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/5.raw-data-type.md @@ -0,0 +1,139 @@ +RAW 数据类型 +============================= + + + +`RAW` 是一种可变长度的数据类型,在不同平台上传输时,传送的都是二进制信息,即使字符集不同也不需要转换。OceanBase 数据库中用于保存二进制数据或字节字符串。 + +`RAW` 类似于 `VARCHAR2`,声明方式是 `RAW(length)`,`length` 为长度,以字节为单位,作为数据库列最大存储 2000 个字节,作为变量最大存储 2000 字节。 + +语法 +-------------- + +```javascript +RAW(length) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------|--------------------------------------------------------| +| length | 表示长度,以字节为单位,作为数据库列最大存储 2000 字节的数据,作为变量最大存储 2000 字节的数据。 | + + + +示例 +-------------- + +* **示例 1:** 在 **test_raw** 表中声明 `RAW` 型数据,并向表中插入一条数据。 + + + + + + +```javascript +CREATE TABLE test_raw (c1 RAW(10)); +INSERT INTO test_raw VALUES (utl_raw.cast_to_raw('1234567890')); +``` + + + +执行以下语句: + +```javascript +SELECT utl_raw.cast_to_varchar2(c1) FROM test_raw; +``` + + + +查询结果如下: + +```javascript ++-------------------------------+ +| UTL_RAW.CAST_TO_RAW(C1) | ++-------------------------------+ +| 1234567890 | ++-------------------------------+ +``` + + + +* **示例 2:** 向 **raw_test** 表中插入 2 条数据。 + + + + + + +```javascript +CREATE TABLE raw_test (id number, raw_date raw(10)); +INSERT INTO raw_test VALUES (1, hextoraw('ff')); +INSERT INTO raw_test VALUES (2, utl_raw.cast_to_raw('051')); +``` + + + +执行以下语句: + +```javascript +SELECT * FROM raw_test; +``` + + + +查询结果如下: + +```javascript ++------+----------+ +| ID | RAW_DATE | ++------+----------+ +| 1 | FF | +| 2 | 303531 | ++------+----------+ +``` + + + +SQL 函数 `HEXTORAW()` 会把字符串中数据转换为 16 进制数。SQL 函数 `UTL_RAW.CAST_TO_RAW([VARCHAR2])` 会把字符串中每个字符的 ASCII 码存放到 `RAW` 类型的字段中。例如, **051** 转换为 **303531** 。 + +* **示例 3:** OceanBase 数据库将 `RAW` 数据转换为字符数据,每个字符代表 `RAW` 数据的四个连续位的十六进制数(0\~9 和 A\~F 或 a\~f)。 + + + + +如:二进制位数 11001011,其 `RAW` 数据转换后为字符 **CB** 。 + +OceanBase 数据库将字符数据转换为 `RAW`,它是把每个连续的输入字符解释为二进制数据的四个连续位,通过把这些位进行级联,来构建结果 `RAW` 值。 +**注意** + + + +如果任一输入字符不是十六进制数(0\~9 和 A\~F 或 a\~f),则将报告错误。如果字符数为奇数,则结果不确定。 + +更多信息 +---------------- + +### 字符转换 + +在数据库之间传输数据,或者在数据之间传输数据库字符集和客户端字符集时,OceanBase 数据库会自动在不同数据库字符集之间转换 `CHAR` 和 `VARCHAR2` 数据。而传输 `RAW` 数据时 OceanBase 数据库不执行字符转换。 + +### RAW 的函数 + + + +| 函数 | 说明 | +|------------------------------------------------------|----------------------------------------------------------------------------------------------| +| HEXTORAW() | 当使用 `hextoraw` 时,会把字符串中数据转换成 16 进制串,字符串中的每两个字符表示了结果 `RAW` 中的一个字节。 | +| RAWTOHEX(rawvalue) | 将 `RAW` 类数值 `rawvalue` 转换为一个相应的十六进制表示的字符串。 `rawvalue` 中的每个字节都被转换为一个双字节的字符串。 | +| UTL_RAW_CAST_TO_RAW(\[VARCHAR2\]) | 保持数据的存储内容不变,仅改变数据类型,将 `VARCHAR2` 转换为 `RAW` 类型。 | +| UTL_RAW_CAST_TO_VARCHAR2(\[RAW\]) | 保持数据的存储内容不变,仅改变数据类型,将 `RAW` 类型转换为 `VARCHAR2` 类型。 | +| UTL_RAW.BIT_OR()、UTL_RAW.BIT_AND()、UTL_RAW.BIT_XOR() | 位操作。 | + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/6.large-object-data-type/1.data-types-of-large-objects.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/6.large-object-data-type/1.data-types-of-large-objects.md new file mode 100644 index 000000000..679fe3c4d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/6.large-object-data-type/1.data-types-of-large-objects.md @@ -0,0 +1,19 @@ +大对象数据类型概述 +============================== + + + +大对象数据类型(Large Object),简称 LOB,用来存储大型和非结构化数据,例如文本、图像、视频和空间数据等。包括 `BLOB` 和 `CLOB` 。 + +您在创建表时,可以选择为 LOB 列或 LOB 对象属性指定与表中指定的不同的表空间和存储特征。 + +OceanBase 支持以下大对象数据类型: + + +| 类型 | 长度 | **定义长度上限(字符)** | 字符集 | +|------|----|----------------|---------| +| BLOB | 变长 | 48M | BINARY | +| CLOB | 变长 | 48M | UTF8MB4 | + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/6.large-object-data-type/2.blob-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/6.large-object-data-type/2.blob-data-type.md new file mode 100644 index 000000000..c107e9f69 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/6.large-object-data-type/2.blob-data-type.md @@ -0,0 +1,23 @@ +BLOB 数据类型 +============================== + + + +`BLOB` 全称为二进制大型对象(Binary Large Object)。它用于存储数据库中的大型二进制对象,可以将 `BLOB` 对象视为没有字符集语义的位流。`BLOB` 存储的二进制数据,其字节的长度上限为 48M,字符集是 `BINARY`。 + +`BLOB` 对象具有完整的事务支持。通过 `SQL`、`DBMS_ LOB` 软件包进行的更改将完全参与事务。可以提交和回滚 `BLOB` 值操作。但是,您不能在一个事务中将 `BLOB` 定位器保存在 PL 中,然后在另一事务或会话中使用它。 +**注意** + + + +存储的二进制文件过大,会使数据库的性能下降。 + +在数据库中,通常像图片、文件、音乐等大文件信息就用 `BLOB` 字段来存储,它先将大文件转为二进制再存储进去。 + +如下,创建表 **blob_table** ,并设置 **blob_cl** 列为 `BLOB` 数据类型。 + +```javascript +CREATE TABLE blob_table (blob_cl BLOB); +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/6.large-object-data-type/3.clob-data-type.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/6.large-object-data-type/3.clob-data-type.md new file mode 100644 index 000000000..6d823c693 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/6.large-object-data-type/3.clob-data-type.md @@ -0,0 +1,19 @@ +CLOB 数据类型 +============================== + + + +`CLOB` 全称为字符大型对象(Character Large Object)。它用于存储单字节和多字节字符数据。支持固定宽度和可变宽度字符集,且都使用数据库字符集。`CLOB` 不支持宽度不等的字符集。可存储字节的长度上限(字符)是 48 M,字符集是 `UTF8MB4`。 + +`CLOB` 对象具有完整的事务支持。通过 `SQL`、`DBMS_ LOB` 软件包进行的更改将完全参与事务。可以提交和回滚 `CLOB` 值操作。但是,您不能在一个事务中将 `CLOB` 定位器保存在 PL 中,然后在另一事务或会话中使用它。 + +由于 `VARCHAR2` 类型字段长度最大 32767,若需要保存的字段长度大于 32767,可以使用 `CLOB` 类型。另外,可以使用 `CLOB` 来保存 `CHAR` 数据,如 XML 文档就是用 `CLOB` 数据保存内容。 + +例如,创建表 **temp** ,设置 **temp_clob** 列为 `CLOB` 数据类型。 + +```javascript +CREATE TABLE temp (temp_clob CLOB); +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/1.overview-of-data-type-comparison-rules.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/1.overview-of-data-type-comparison-rules.md new file mode 100644 index 000000000..4d525d345 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/1.overview-of-data-type-comparison-rules.md @@ -0,0 +1,41 @@ +数据类型比较规则概述 +=============================== + + + +数据类型比较规则规定了 OceanBase 数据库如何比较每种数据类型的值。 + +OceanBase 数据类型比较规则支持以下数据值: + +* 数值 + + + +* 日期值 + + + +* 字符值 + + + + + + +更多信息 +---------------- + +* [数据类型优先级](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/5.data-type-priority.md) + + + +* [数据类型转换](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/6.data-type-conversion.md) + + + +* [数据转换的安全注意事项](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/7.security-considerations-for-data-conversion.md) + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/2.numeric-value.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/2.numeric-value.md new file mode 100644 index 000000000..fcfdd323f --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/2.numeric-value.md @@ -0,0 +1,11 @@ +数值 +=== + +数值数据有定点数、浮点数和零。 + +数值数据比较规则如下: + +* 较大的值大于较小的值,如:5.5 \> 2.1。 +* 负数均小于零,如 -3 \< 0, -200 \< -1。 +* 正数均大于零,如 20 \> 0, 100 \> 1。 + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/3.date-value.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/3.date-value.md new file mode 100644 index 000000000..4d384ca73 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/3.date-value.md @@ -0,0 +1,23 @@ +日期值 +======================== + + + +`DATE` 数据类型存储日期和时间信息。每个 `DATE` 值,OceanBase 存储以下信息:年、月、日、小时、分钟和秒,但是并不包含时区信息。 + +日期数据比较规则如下: + +* 现在的时间大于过去的时间,如 2018 年 5 月 1 日的日期值大于 2012 年 5 月 1 日的日期值。 + + + +* 下午的时间大于早上的时间,如 2019 年 2 月 2 日下午 3:30 的日期时间值大于 2019 年 2 月 2 日 上午 10:30 的日期时间值。 + + + +* 早上的时间大于昨天的时间,如 2019 年 3 月 5 日上午 2:30 的日期时间值大于 2019 年 3 月 4 日下午 23:30 的日期时间值。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/4.character-value.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/4.character-value.md new file mode 100644 index 000000000..ce3b6be38 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/4.character-value.md @@ -0,0 +1,67 @@ +字符值 +======================== + + + +字符数据是根据字符值大小比较的,而字符值则根据以下两种度量进行比较: + +* 二进制和语言比较 + + + +* 空白填充或非填充比较语义 + + + + + + +二进制和语言比较 +-------------------- + +### 二进制比较 + +在默认的二进制比较中,OceanBase 根据数据库字符集中字符的数字代码的级联值比较字符串。如果一个字符在字符集中的数值大于另一个,则该字符更大。OceanBase 不支持 ASCII 字符集和 EBCDIC 字符集。 + +### 语言比较 + +在语言排序中,SQL 排序和比较都按照 `NLS_SORT` 指定的语言规则。若字符编码的二进制序列与字符集要求的语言序列不匹配,则使用语言比较。若 `NLS_SORT` 参数的设置不是 `BINARY`,且 `NLS_COMP` 参数设置为 `LINGUISTIC`,则使用语言比较。 + +空白填充和非填充比较语义 +------------------------ + +### 空白填充比较语义 + +使用空白填充语义,若两个值的长度不同,则 OceanBase 首先将空格添加到较短的空格的末尾,以便它们的长度相等。然后,OceanBase 逐个字符地比较值,直到第一个不同的字符为止。在第一个不同位置具有较大字符的值被认为较大。如果两个值没有不同的字符,则认为它们相等。此规则意味着两个值仅在尾随空白数上不同时相等。 +**注意** + + + +只有当比较中的两个值都是数据类型 `CHAR`、`NCHAR`、文本文字或 `USER` 函数返回的值时,OceanBase 就会使用空白填充的比较语义。 + +### 非填充比较语义 + +使用非填充语义,OceanBase 逐个字符地比较两个值,直到第一个不同的字符为止。该位置上具有较大字符的值被认为较大。如果两个不同长度的值在较短的值之前一直相同,则较长的值被认为较大。如果两个长度相等的值没有不同的字符,则认为这些值相等。 +**注意** + + + +只要比较中的一个或两个值的数据类型为 `VARCHAR2` 或 `NVARCHAR2`,OceanBase 就会使用非填充比较语义。 + +### 示例 + +使用不同的比较语义比较两个字符值的结果不同。本示例显示了使用空白填充语义和非填充语义比较。 + + +| 空白填充 | 非填充 | +|-----------------|-----------------| +| 'ac' \> 'ab' | 'ac' \> 'ab' | +| 'ab' \> 'a ' | 'ab' \> 'a ' | +| 'ab' \> 'a' | 'ab' \> 'a' | +| 'ab' = 'ab' | 'ab' = 'ab' | +| 'ac' \> 'ab' | 'ac' \> 'ab' | +| 'a ' = 'a' | 'a ' \> 'a' | + + + +通常,空白填充和非填充比较的结果是相同的。而最后一行的比较示例说明了空白填充和非填充比较语义之间的区别。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/5.data-type-priority.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/5.data-type-priority.md new file mode 100644 index 000000000..2175a2ac8 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/5.data-type-priority.md @@ -0,0 +1,29 @@ +数据类型优先级 +============================ + + + +OceanBase 使用数据类型优先级来确定隐式数据类型转换顺序。 + +OceanBase 数据类型的转换优先级如下(由高到低): + +1. 日期时间和间隔数据类型 + + + +2. `BINARY_DOUBLE` 数据类型 + +3. `BINARY_FLOAT` 数据类型 + +4. `NUMBER` 数据类型 + +5. 字符数据类型 + + + +6. 所有其他内置数据类型 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/6.data-type-conversion.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/6.data-type-conversion.md new file mode 100644 index 000000000..63aa776bf --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/6.data-type-conversion.md @@ -0,0 +1,181 @@ +数据类型转换 +=========================== + + + +通常,表达式不能包含不同数据类型的值。但是为了使表达式能够进行计算,OceanBase 支持从一个数据类型到另一个数据类型的值的隐式转换和显式转换。 + +隐式数据类型转换 +-------------------- + +当转换有意义时,OceanBase 数据库会自动将一个值从一种数据类型转换为另一种数据类型。隐式数据类型的转换规则: + +* `INSERT` 和 `UPDATE` 操作时,OceanBase 把变量值转换成列类型。 + +* `SELECT FROM` 操作时,OceanBase 把列数据类型转换成目标变量类型。 + +* 字符值和数字值比较时,OceanBase 把字符值转换成数字值。 + + + +* 在处理数值时,OceanBase 会调整精度和小数位数。由此产生的数字数据类型与基础表中找到的数字数据类型不同。 + + + +* 字符值或数值和浮点数值之间的转换可以是不精确的,因为字符类型和数量使用十进制精度来表示数值,浮点数使用二进制精度。 + + + +* 当一个 `CLOB` 值转换为一个字符类型如 `VARCHAR2`,或 `BLOB` 转换为 `RAW` 时。如果要转换的数据大于目标数据类型,那么数据库会返回一个错误。 + + + +* 在从时间戳值转换为 `DATE` 值的过程中,时间戳值的小数秒部分被截断,且时间戳值的小数秒部分进行四舍五入。 + + + +* 从 `BINARY_FLOAT` 转换为 `BINARY_DOUBLE` 是准确的。 + + + +* 如果 `BINARY_DOUBLE` 的精度位数超出了 `BINARY_FLOAT` 支持的位数,`BINARY_DOUBLE` 转换为 `BINARY_FLOAT` 是不精确的。 + + + +* 当将字符值与 `DATE` 值进行比较时,OceanBase 将字符数据转换为 `DATE`。 + + + +* 赋值操作时,OceanBase 把等号右边的值转换成左边赋值目标数据类型。 + + + +* 连接操作时,OceanBase 把非字符类型转换成字符类型或国家字符类型。 + + + + + + +**隐式数据类型转换矩阵** + +下表显示了所有的隐式数据类型转换,您不需要考虑转换的方向或转换的上下文。"-"表示不支持转换。 + + +| **数据类型** | **CHAR** | **VARCHAR2** | **NCHAR** | **NVARCHAR2** | **DATE** | **DATETIME / INTERVAL** | **NUMBER** | **BINARY_FLOAT** | **BINARY_DOUBLE** | **RAW** | **CLOB** | **BLOB** | +|---------------------|----------|--------------|-----------|---------------|----------|------------------------------------|------------|------------------|-------------------|---------|----------|----------| +| CHAR | - | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | +| VARCHAR2 | Yes | - | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | +| NCHAR | Yes | Yes | - | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | +| NVARCHAR2 | Yes | Yes | Yes | - | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - | +| DATE | Yes | Yes | Yes | Yes | - | - | - | - | - | - | - | - | +| DATETIME / INTERVAL | Yes | Yes | Yes | Yes | - | - | - | - | - | - | - | - | +| NUMBER | Yes | Yes | Yes | Yes | - | - | - | Yes | Yes | - | - | - | +| BINARY_FLOAT | Yes | Yes | Yes | Yes | - | - | Yes | - | Yes | - | - | - | +| BINARY_DOUBLE | Yes | Yes | Yes | Yes | - | - | Yes | Yes | - | - | - | - | +| RAW | Yes | Yes | Yes | Yes | - | Yes ^[1](#note-1)^ | - | - | - | - | Yes | - | +| CLOB | Yes | Yes | Yes | Yes | - | - | - | - | - | - | - | Yes | +| BLOB | - | - | - | - | - | - | - | - | - | Yes | - | - | + + + +^[1]()^ 您不能直接将 `RAW` 转换为 `INTERVAL`,但是可以使用 `UTL_RAW.CAST_TO_VARCHAR2([RAW])` 将`RAW` 转换为 `VARCHAR2`,然后将所得的 `VARCHAR2` 值转换为 `INTERVAL`。 + +**不同字符类型之间隐式转换的方向** + + +| **数据类型** | **TO_CHAR** | **TO_VARCHAR2** | **TO_NCHAR** | **TO_NVARCHAR2** | +|----------------|-------------|-----------------|--------------|------------------| +| from CHAR | - | VARCHAR2 | NCHAR | NVARCHAR2 | +| from VARCHAR2 | VARCHAR2 | - | NVARCHAR2 | NVARCHAR2 | +| from NCHAR | NCHAR | NCHAR | - | NCHAR2 | +| from NVARCHAR2 | NVARCHAR2 | NVARCHAR2 | NVARCHAR2 | - | + + + +**隐式数据类型转换示例** + +执行以下语句: + +```javascript +SELECT 5 * 10 + 'james' FROM DUAL; +``` + + + +语句执行失败,且您收到以下报错: + +```javascript +invalid number +``` + + + +这是由于 OceanBase 使用了隐式数据类型转换,将 `'james'` 转换为数字类型,但是转换失败。 + +本示例将字符串 **'2'** 从 `CHAR` 数据类型隐式转换为了数字数据类型 **2** ,计算结果为 **52** 。 + +执行以下语句: + +```javascript +SELECT 5 * 10 + '2' FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+ +| 5 * 10 + '2' | ++---------------------+ +| 52 | ++---------------------+ +``` + + + +显式数据类型转换 +-------------------- + +您可以使用 SQL 转换函数转换数据类型,SQL 函数显式转换一个数据类型为另一个数据类型。 + +**显示类型转换矩阵** + + +| **数据类型** | **To CHAR、VARCHAR2、NCHAR、NVARCHAR2** | **To NUMBER** | **To Datetime/ Interval** | **To RAW** | **To CLOB、BLOB** | **To_BINARY_FLOAT** | **To_BINARY_DOUBLE** | +|----------------------------------------|--------------------------------------|---------------|------------------------------------------------------------------|------------|------------------|---------------------|----------------------| +| **From CHAR、VARCHAR2、NCHAR、NVARCHAR2** | TO_CHAR(char . ) 、TO_NCHAR(char . ) | TO_NUMBER | TO_DATE、TO_TIMESTAMP、TO_TIMESTAMP_TZ、TO_YMINTERVAL、TO_DSINTERVAL | HEXTORAW | TO_CLOB | TO_BINARY_FLOAT | TO_BINARY_DOUBLE | +| **From NUMBER** | TO_CHAR(number) 、TO_NCHAR(number) | -- | TO_DATE、NUMTOYM_INTERVAL、NUMTOOLS_INTERVAL | -- | -- | TO_BINARY_FLOAT | TO_BINARY_DOUBLE | +| **From Datetime/Interval** | TO_CHAR(date ) 、TO_NCHAR(date) | -- | -- | -- | -- | -- | -- | +| **From RAW** | RAWTOHEX、RAWTONHEX | -- | -- | -- | TO_BLOB | -- | -- | +| **From CLOB、BLOB** | TO_CHAR、TO_NCHAR | -- | -- | -- | TO_CLOB | -- | -- | +| **From BINARY_FLOAT** | TO_CHAR(char . ) 、TO_NCHAR(char . ) | TO_NUMBER | -- | -- | -- | TO_BINARY_FLOAT | TO_BINARY_DOUBLE | +| **From BINARY_DOUBLE** | TO_CHAR(char . ) 、TO_NCHAR(char . ) | TO_NUMBER | -- | -- | -- | TO_BINARY_FLOAT | TO_BINARY_DOUBLE | + + + +**显式数据类型转换示例** + +当前的时间通过 `TO_CHAR` 函数显式转换为想要的格式输出。 + +执行以下语句: + +```javascript +SELECT TO_CHAR(SYSDATE, 'YYYY_MM_DD') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------------------------+ +| TO_CHAR(SYSDATE,'YYYY_MM_DD') | ++-------------------------------+ +| 2020_02_27 | ++-------------------------------+ +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/7.security-considerations-for-data-conversion.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/7.security-considerations-for-data-conversion.md new file mode 100644 index 000000000..14a6844df --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/2.data-type-comparison-rules/7.security-considerations-for-data-conversion.md @@ -0,0 +1,26 @@ +数据转换的安全注意事项 +================================ + + + +通过隐式转换或不指定格式模型的显式转换将日期时间值转换为文本时,格式模型由一个全局会话参数定义。根据源数据类型,这些参数名称为 `NLS_DATE_FORMAT`、`NLS_TIMESTAMP_FORMAT` 或 `NLS_TIMESTAMP_TZ_ FORMAT`。这些参数的值可以在客户端环境或 `ALTER SESSION` 语句中指定。 + +当不指定格式模型的显式转换对动态构造的 SQL 语句中的日期时间值进行显式转换时,格式模型对会话参数的选择过程会对数据库安全性产生负面影响。 + +动态构造的 SQL 语句是指由程序或者存储过程生成的 SQL 语句。执行动态构造的 SQL 语句,需要 OceanBase 内置的 PL 包 `DBMS_SQL` 或与 PL 语句 `EXECUTE IMMEDIATE` 相关,但这些并不是唯一执行动态构造的 SQL 文本的方式。 + +如下所示,`start_date` 的数据类型为 `DATE`,使用会话参数 `NLS_DATE_FORMAT` 中指定的格式模型将 `start_date` 的值转换为文本,再将结果传递到 SQL 文本中。日期时间格式模型可以简单地由双引号所包含的文本组成。 + +```javascript +SELECT last_name FROM employees WHERE hire_date > '' || start_date || ''; +``` + + +**说明** + + + +为显式转换的格式模型设置全球化参数的用户可以决定上述转换产生了什么文本。 + +若 SQL 语句由过程执行,则该过程的执行可能会由于session变量的修改而被SQL注入。当某些过程具有更高权限(例如Definer's Rights Procedure)时,造成的安全方面的影响可能更大。 + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/1.literal-overview.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/1.literal-overview.md new file mode 100644 index 000000000..415ea81c7 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/1.literal-overview.md @@ -0,0 +1,26 @@ +字面量概述 +========================== + + + +字面量(Literals)是用于表达一个固定值的表示法。许多函数和 SQL 语句都需要指定字面量,字面量也可以作为表达式和条件的一部分。OceanBase 支持以下字面量: + +* 文本字面量 + + + +* 数值字面量 + + + +* 日期时间字面量 + + + +* 间隔字面量 + + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/2.literal-value-of-text.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/2.literal-value-of-text.md new file mode 100644 index 000000000..f477a33ac --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/2.literal-value-of-text.md @@ -0,0 +1,30 @@ +文本字面量 +========================== + + + +文本字面量(Text Literals)是使用单引号 `' '` 引起来的字符串,用来在表达式、条件、SQL 函数、SQL 语句中指定字符串的值。 + +文本字面量本身具有 `CHAR` 和 `VARCHAR2` 数据类型的属性: + +* 在表达式和条件中,OceanBase 通过使用空白填充的比较语义进行比较,将文本字面量视为数据类型为 `CHAR`。 + + + +* 指定文本字面量时,`CHAR` 数据类型的值的长度最大是 2000,`VARCHAR2` 数据类型的值的长度最大是 32767。 + + + + + + +以下是一些有效的文本字面量,若要在字符串中表现一个单引号,需要在字符串中的单引号前再插入一个单引号: + +```javascript +'Jackie''s raincoat' +'Hello' +'09-MAR-98' +'今天天气很好' +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/3.numeric-literal.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/3.numeric-literal.md new file mode 100644 index 000000000..33e5516cd --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/3.numeric-literal.md @@ -0,0 +1,77 @@ +数值字面量 +========================== + + + +数值字面量(Numberic Literals)使用数值字面量指定固定数和浮点数的值。 + +整数字面量 +----------------- + +当表达式、条件、SQL 函数和 SQL 语句中出现整数时,需要用整数(Integer)字面量来指定值。 + +下面是一些有效的整数字面量: + +```javascript +8 ++186 +-15 +``` + + + +数字和浮点数字面量 +--------------------- + +当表达式、条件、SQL 函数和 SQL 语句中出现数字时,需要用数字(Number)或浮点字(Floating-Point)面量来指定值。 + +以下是一些有效的数字 NUMBER 字面量: + +```javascript +12 ++6.87 +0.5 +25e-03 +-9 +``` + + + +以下是一些有效的浮点数 Floating-Point 字面量: + +```javascript +25f ++6.34F +0.5d +-1D +``` + + + +数字字面量最大可以储存精度为 38 位的数字。如果字面量要求的精度比 `NUMBER`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 所提供的精度更高,则 OceanBase 将截断该值。如果字面量的范围超出 `NUMBER`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 支持的范围,则 OceanBase 会抛出错误。 + +示例 +-------------- + +数值字面量中的小数点分隔符始终是点(.)。在期望数值字面量的地方指定了文本字面量,则该文本字面量被转换为数值字面量。 + +在下面的示例中,计算了 **2** 乘以数值字面量 **2.2** 和 **2** 乘以文本字面量 **'3.3'** : + +```javascript +SELECT 2*2.2, 2*'3.3' FROM DUAL; +``` + + + +返回结果: + +```javascript ++-------+---------+ +| 2*2.2 | 2*'3.3' | ++-------+---------+ +| 4.4 | 6.6 | ++-------+---------+ +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/4.date-and-time-literal/1.date-literal.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/4.date-and-time-literal/1.date-literal.md new file mode 100644 index 000000000..202f3f54d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/4.date-and-time-literal/1.date-literal.md @@ -0,0 +1,122 @@ +日期字面量 +========================== + + + +日期(DATE)字面量可以通过字符串指定,或者可以使用 `TO_DATE` 函数将字符或数字值转换为日期值。日期字面量是唯一接受用 `TO_DATE` 表达式代替字符串指定值的: + +```javascript +TO_DATE('2020-03-25 11:05:00', 'YYYY-MM-DD HH24:MI:SS') +``` + + + +使用日期值指定日期字面量时,必须使用公历的日期值。同时也可以如下所示,使用 ANSI 来指定日期字面量,ANSI 日期字面量不包含时间信息,而且必须使用 **YYYY-MM-DD** 的格式: + +```javascript +DATE '2020-03-25' +``` + + + +此外,还可以使用数据库默认日期值来指定日期字面量,当在日期表达式中使用默认值时,OceanBase 会自动将默认日期格式的字符值转换为日期值。数据库的默认日期值由初始化参数 `NLS_DATE_FORMAT` 指定,此示例中默认格式为 **DD-MON-RR** : + +```javascript +TO_DATE('25-FEB-20', 'DD-MON-RR') +``` + + + +如果您指定不带时间成分的日期值,则默认时间为午夜(24 小时制 00:00:00 和 12 小时制 12:00:00)。如果指定的日期值不带日期成分,则默认日期为当前月份的第一天。 + +OceanBase 数据库中默认的日期格式为 **DD-MON-RR** ,如果需要同时显示时间值,可以通过执行` alter session set NLS_DATE_FORMAT = 'DD-MON-RR HH24:MI:SS';` 命令修改变量 `NLS_DATE_FORMAT` 的值。因此,如果查询 `DATE` 列,则必须在查询中指定时间字段,或确保 `DATE` 列中的时间字段设置为午夜。否则,数据库可能不会返回您期望的查询结果。比如创建一张具有 **id** 列和 **datecol** 日期列的表 **Date_Literals** : + +```javascript +CREATE TABLE Date_Literals (id NUMBER, datecol DATE); +``` + + + +在表中插入当前会话的系统日期时间 **SYSDATE** ,此示例使用了 TRUNC 函数将时间字段设置为午夜,`TRUNC` 函数会截取 **SYSDATE** 的日期部分,这样 **datecol** 列中的时间会自动填充默认的午夜时间: + +```javascript +INSERT INTO Date_Literals VALUES (1,SYSDATE); +INSERT INTO Date_Literals VALUES (2,TRUNC(SYSDATE)); +``` + + + +此时表中数据为: + +```javascript ++------+---------------------+ +| id | datecol | ++------+---------------------+ +| 1 | 25-FEB-20 11:28:16 | +| 2 | 25-FEB-20 00:00:00 | ++------+---------------------+ +``` + + + +当查询中不包含时间信息时,可以在查询中使用大于或小于条件,而不是等于或不等于条件: + +```javascript +SELECT * FROM Date_Literals WHERE datecol > TO_DATE('2020-02-24', 'YYYY-MM-DD'); +``` + + + +返回结果: + +```javascript ++------+---------------------+ +| id | datecol | ++------+---------------------+ +| 1 | 25-FEB-20 11:28:16 | +| 2 | 25-FEB-20 00:00:00 | ++------+---------------------+ +``` + + + +当使用等于条件时,由于查询中不包含时间信息,所以结果只返回了时间信息为午夜值的日期: + +```javascript +SELECT * FROM Date_Literals WHERE datecol = TO_DATE('2020-02-25', 'YYYY-MM-DD'); +``` + + + +返回结果: + +```javascript ++------+---------------------+ +| id | datecol | ++------+---------------------+ +| 2 | 25-FEB-20 00:00:00 | ++------+---------------------+ +``` + + + +反过来,可以过滤掉 **datecol** 列中的时间字段,只查询日期字段: + +```javascript +SELECT * FROM Date_Literals WHERE TRUNC(datecol) = DATE '2020-02-25'; +``` + + + +返回结果: + +```javascript ++------+---------------------+ +| id | detacol | ++------+---------------------+ +| 1 | 25-FEB-20 11:28:16 | +| 2 | 25-FEB-20 00:00:00 | ++------+---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/4.date-and-time-literal/2.timestamp-literal.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/4.date-and-time-literal/2.timestamp-literal.md new file mode 100644 index 000000000..0eef3db86 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/4.date-and-time-literal/2.timestamp-literal.md @@ -0,0 +1,88 @@ +时间戳字面量 +=========================== + + + +OceanBase 支持以下三种时间戳字面量: + +* TIMESTAMP + + + +* TIMESTAMP WITH TIME ZONE + + + +* TIMESTAMP WITH LOCAL TIME ZONE + + + + + + +TIMESTAMP 字面量 +------------------------- + +`TIMESTAMP[(scale)]` 数据类型存储了年、月、日、时、分、秒和小数秒值的值。当指定 TIMESTAMP 字面量时,秒字段最大可以指定精度到第9位的纳秒: + +```javascript +TIMESTAMP '2020-02-25 11:26:18.316' +``` + + + +TIMESTAMP WITH TIME ZONE 字面量 +---------------------------------------- + +TIMESTAMP WITH TIME ZONE 字面量是包含时区信息的时间戳字面量。 + +`TIMESTAMP [(scale)] WITH TIME ZONE` 数据类型是 `TIMESTAMP[(scale)]` 数据类型的一种变体,它在`TIMESTAMP[(scale)]` 数据类型的基础上还存储时区偏移量或者时区区域名称等信息。在指定 TIMESTAMP WITH TIME ZONE 字面量时,需要指定时区信息并且秒字段最大可以指定精度到第9位的纳秒,以下示例使用时区偏移量指定了时区字段的值: + +```javascript +TIMESTAMP '2020-02-25 11:26:18.316 +08:00' +``` + + + +当两个 TIMESTAMP WITH TIME ZONE 字面量中的值表示 GMT 时区的同一时刻,那么尽管它们的时区字段的值不同,它们也被视为相同的字面量。如以下示例所示,GMT-8 时区的早上 8 点和 GMT-5 时区的早上11点其实是同一时刻: + +```javascript +TIMESTAMP '2020-04-25 08:26:18.316 -08:00' +TIMESTAMP '2020-04-25 11:26:18.316 -05:00' +``` + + + +同样的,在字面量中我们可以使用时区区域名称替换时区偏移量,如下所示的示例中将 **-08:00** 替换为了 **America/Los_Angeles** : + +```javascript +TIMESTAMP '2020-02-01 11:00:00 America/Los_Angeles' +``` + + + +由于一些地区有夏令时的转换,为了消除夏令时转换时时间的歧义,在指点字面量的值时可以同时使用 时区区域名称(TZR)和相应的缩写 (TZD)以确保字面量的值为夏令时: + +```javascript +TIMESTAMP '2020-06-01 11:00:00 America/Los_Angeles PDT' +``` + + + +TIMESTAMP WITH LOCAL TIME ZONE 字面量 +---------------------------------------------- + +`TIMESTAMP [(scale)] WITH LOCAL TIME ZONE` 数据类型是包含本地时区信息的数据类型。OceanBase 中并没有专门的 TIMESTAMP WITH LOCAL TIME ZONE 字面量,是通过其他有效的日期时间字面量来为`TIMESTAMP [(scale)] WITH LOCAL TIME ZONE` 数据类型赋值的。下表显示了一些可用于将值插入 TIMESTAMP WITH LOCAL TIME ZONE 列的格式,以及查询返回的相应值: + + +| **INSERT 语句中指定的值** | **查询返回的值** | +|----------------------------------------------------|------------------------------| +| '25-FEB-20' | 25-FEB-20 00.00.000000 | +| SYSTIMESTAMP | 25-FEB-20 14:28:41.264258 | +| TO_TIMESTAMP('25-FEB-2020', 'DD-MON-YYYY') | 25-FEB-20 00.00.000000 | +| SYSDATE | 25-FEB-20 02.55.29.000000 PM | +| TO_DATE('25-FEB-20', 'DD-MON-YYYY') | 25-FEB-20 12.00.00.000000 AM | +| TIMESTAMP'2020-02-25 8:00:00 America/Los_Angeles' | 25-FEB-20 08.00.00.000000 AM | + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/5.interval-literal.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/5.interval-literal.md new file mode 100644 index 000000000..bd1780782 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/3.literal-1/5.interval-literal.md @@ -0,0 +1,75 @@ +间隔字面量 +========================== + + + +间隔字面量用来指定一段时间的值。OceanBase 支持两种类型的间隔字面量: + +* INTERVAL YEAR TO MONTH + + + +* INTERVA DAY TO SECOND + + + + + + +前导字段和尾随字段 +--------------------- + +每种间隔字面量都包含一个前导字段和一个可选的尾随字段。前导字段定义了要测量的日期或时间的基本单位,尾随字段定义了所考虑的基本单位的最小增量。例如,DAY TO MINUTE 用来指定最小单位到月份的间隔字面量,其中前导字段是 `YEAR`,尾随字段是 `MINUTE`。尾随字段是可选的,在指定间隔字面量时可以省去。 + +在间隔字面量中有以下字段:`YEAR`、`MONTH`、`DAY`、`HOUR`、`MINUTE` 和 `SECOND`。它们的权重从 `YEAR` 开始按顺序递减。当需要指定尾随字段时,字面量中尾随字段的权重一定要低于前导字段,否则是无效的指定。例如,`INTERVAL '1-2' DAY TO YEAR` 是个无效的字面量。 + +前导字段值的位数范围为 0\~9,默认值为 2。`SECOND` 字段指定了秒数,该字段最大可以精确到小数点后 9 位,最小是小数点 0 位,默认值精度是小数点 6 位。字段的值超出指定的范围后,数据库会返回错误。`SECOND` 字段的小数位数如果超出指定精度,会四舍五入到符合指定精度的值。 + +INTERVAL YEAR TO MONTH 字面量 +-------------------------------------- + +`INTERVAL YEAR TO MONTH` 字面量用来指定以年和月为单位的一段时间。 + +以下是一些 `INTERVAL YEAR TO MONTH` 字面量的示例: + + +| 示例 | 说明 | +|-----------------------------------|-------------------------------------------------------| +| INTERVAL '265-2' YEAR(3) TO MONTH | 间隔 265 年 2 个月。前导字段 `YEAR` 的精度大于默认的 2 位,需要指定与值位数相符的精度值 | +| INTERVAL '265' YEAR(3) | 表示间隔 265 年。 | +| INTERVAL '500' MONTH(3) | 表示间隔 500 个月或 41 年 8 个月。 | +| INTERVAL '10' MONTH | 表示隔 10 个月。 | +| INTERVAL '123' YEAR | 返回错误,值 123 超出了默认精度 2 位。 | + + + +可以在一个 `INTERVAL YEAR TO MONTH` 字面量之间添加或减去另一个 `INTERVAL YEAR TO MONTH` 字面量。例如:`INTERVAL '6-2' YEAR TO MONTH` + `INTERVAL'21' MONTH` = `INTERVAL '7-11' YEAR TO MONTH`。 + +INTERVAL DAY TO SECOND 字面量 +-------------------------------------- + +`INTERVAL DAY TO SECOND` 字面量用来指定以天和具体时间为单位的一段时间。 + +以下是一些 `INTERVAL DAY TO SECOND` 字面量的示例: + + +| 示例 | 说明 | +|-----------------------------------------------|-----------------------------------------------------------------------------------------------------| +| INTERVAL '4 5:12:10.222' DAY TO SECOND(3) | 表示间隔 4 天 5 小时 12 分钟 10.222 秒。 `SECOND` 字段小数点默认精度是 6,这里如果不手动指定精度为 3,返回的结果中会用 0 补齐位数。 | +| INTERVAL '4 5:12' DAY TO MINUTE | 表示间隔 4 天 5 小时 12 分钟 | +| INTERVAL '400 5' DAY(3) TO HOUR | 表示间隔 400 天 5 小时。前导字段 `DAY` 超出默认精度 2 位,这里手动指定精度为 3。 | +| INTERVAL '400' DAY(3) | 表示间隔 400 天。 | +| INTERVAL '11:12:10.2222222' HOUR TO SECOND(7) | 表示间隔 11 小时 12 分钟 10.2222222 秒。 `SECOND` 字段的值超出默认精度 6 位,这里手动指定了和值相符的精度。 | +| INTERVAL '11:20' HOUR TO MINUTE | 表示间隔 11 小时 20 分钟。 | +| INTERVAL '10' HOUR | 表示间隔 10 小时 | +| INTERVAL '10:22' MINUTE TO SECOND | 表示间隔 10 分钟 22 秒。 | +| INTERVAL '10' MINUTE | 表示间隔 10 分钟。 | +| INTERVAL '4' DAY | 表示间隔 4 天。 | +| INTERVAL '25' HOUR | 表示间隔 25 小时。 | +| INTERVAL '40' MINUTE | 表示间隔 40 分钟。 | +| INTERVAL '120' HOUR(3) | 表示间隔 120 小时。 | +| INTERVAL '30.12345' SECOND(2,4) | 表示间隔 30.1235 秒。秒的小数点位数超出指定精度,所以四舍五入到小数点第 4 位。 | + + + +可以在一个 `INTERVAL DAY TO SECOND` 字面量之间添加或减去另一个 `INTERVAL DAY TO SECOND` 字面量。例如:`INTERVAL'20' DAY` - `INTERVAL'239' HOUR` = `INTERVAL'10-1' DAY TO SECOND`。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/1.formatting-overview.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/1.formatting-overview.md new file mode 100644 index 000000000..03bd0c0e4 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/1.formatting-overview.md @@ -0,0 +1,33 @@ +格式化概述 +========================== + + + +格式化指定了存储在数据库中的日期时间数据或数值数据的格式。当您将字符串转换为日期时间或数字时,格式化会告诉 OceanBase 数据库如何转换并存储该字符串。在 SQL 语句中,您可以通过 `TO_CHAR` 、`TO_NUMBER` 和 `TO_DATE` 等函数的参数来指定: + +* OceanBase 数据库返回值的格式 + + + +* 存储在数据库中值的格式 + + + + + + +OceanBase 支持以下几种数据格式化: + +**数值格式化** + +数值格式化指定了存储在数据库中的定点数和浮点数的格式。当您需要将 SQL 语句中出现 `NUMBER`,`BINARY_FLOAT` 或 `BINARY_ DOUBLE` 值转换为 `VARCHAR2` 数据类型时,您可以使用函数中的数值格式化。数值格式化是由一个或多个数值格式化元素组成,具体信息请查阅 [数值格式化](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/2.format-1.md)。 + +**日期时间格式化** + +日期时间格式化指定了存储在数据库中日期时间数据的格式。日期时间格式化的总长度不能超过 22 个字符。当您需要将非默认格式的字符值转换为日期时间格式的值时,您可以使用函数中的日期时间格式化。日期时间格式化是由一个或多个日期时间格式化元素组成,具体信息请查阅 [日期时间格式化](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/3.date-and-time-formatting.md)。将字符串值转换为日期值,是有一些转换规则,关于规则请查阅 [字符串到日期的转换规则](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/5.conversion-rules-from-string-to-date.md)。 + +`RR` 日期时间格式化元素类似于 `YY` 日期时间格式化元素,但它为跨世纪日期值存储提供了额外的灵活性,关于 RR 日式格式化元素,请查阅 [RR 日期时间格式化元素](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/4.rr-date-and-time-format-element.md)。 + +**格式化修饰符** + +OceanBase 数据库暂不支持格式化修饰符 `FX` 和 `FM`。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/2.format-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/2.format-1.md new file mode 100644 index 000000000..28923e8fa --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/2.format-1.md @@ -0,0 +1,129 @@ +数值格式化 +========================== + + + +数值格式化指定了存储在数据库中的定点数和浮点数的格式。 + +函数中的数值格式化 +--------------------- + +以下数值数据类型转换函数使用了数值格式化: + +* 当表达式、条件、SQL 函数和 SQL 语句中出现 `NUMBER`,`BINARY_FLOAT` 或 `BINARY_ DOUBLE` 时,且您需要它们的值转换为 `VARCHAR2` 数据类型时,需要用 `TO_CHAR` 函数的参数指定这些数值的格式。 + + + +* 当表达式、条件、SQL 函数和 SQL 语句中出现 `CHAR` 或 `VARCHAR2` 时,如果您需要将他们的值转换为 `NUMBER` 数据类型时,需要用 `TO_NUMBER` 函数的参数(暂不支持 `NLS_NUMERIC_CHARACTERS`)指定这些数值的格式。如果您需要将他们的值转换为 `BINARY_FLOAT` 或 `BINARY_DOUBLE` 时,需要用 `TO_BINARY_FLOAT` 和 `TO_BINARY_DOUBLE` 函数的参数指定数值格式。 + + + + + + +数值格式化会将数值四舍五入,并取有效数字位数。如果某个值的小数位数,左边的有效位数比格式中指定的位数高,则用 `#` 代替该值。如果 `NUMBER` 的正值非常大且无法以指定的格式表示,则使用无穷大符号(〜)替换该值。如果负 `NUMBER` 值非常小且无法用指定的格式表示,则使用负无穷大符号(-〜)替换该值。 + +数值格式化的元素 +-------------------- + +与 Oracle 不同,OceanBase 数据库数值格式化元素仅支持标准的数值格式。下表为 OceanBase 数据库支持的数值格式化元素: + + +| 元素 | 示例 | 说明 | +|--------|-----------|---------------------------------------------------------------------| +| .(小数点) | 99.99 | 返回一个小数,且小数点在指定位置。 **限制条件** :在数字格式化中,您只能指定一个小数点。 | +| 0 | 0999 9990 | 0999 返回前导零。9990 返回尾随零。 | +| 9 | 9999 | 返回具有指定位数的值。如果为正,则返回带有有前导空格的数;如果为负,则返回前导负数。前导零返回 0,除了零值,定点数的小数部分返回零。 | + + + +如果省略格式参数,会将数值转为足够长的 `VARCHAR2` 以保留其所有的有效数字。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_CHAR(0, '99.99') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++--------------------+ +| TO_CHAR(0,'99.99') | ++--------------------+ +| .00 | ++--------------------+ +``` + + + +下表显示了对不同数值的 **number** 按照格式化元素 'fmt' 查询得到的结果。 + +```javascript +SELECT TO_CHAR(number, 'fmt') FROM DUAL; +``` + + + + +| number | 'fmt' | Result | +|----------|---------|------------| +| 0 | 99.99 | '.00' | +| +0.1 | 99.99 | '.10' | +| -0.2 | 99.99 | '-.20' | +| 0 | 90.99 | '0.00' | +| +0.1 | 90.99 | '0.10' | +| -0.2 | 90.99 | '-0.20' | +| 0 | 9999 | '0' | +| 1 | 9999 | '1' | +| +123.456 | 999.999 | '123.456' | +| -123.456 | 999.999 | '-123.456' | + + + +当省略'fmt'参数的时候: + +```javascript +SELECT TO_CHAR(123.456) FROM DUAL; +``` + + + +显示结果如下: + +```javascript ++------------------+ +| TO_CHAR(123.456) | ++------------------+ +| 123.456 | ++------------------+ +``` + + + +当 `TO_CHAR` 结果超过40字节,或者传入参数为 binary_double/binary_float 类型时,结果将被转为科学计数法。 + +例如: + +```javascript +SELECT TO_CHAR(12355555555555555555555555555555555555555555555555) FROM DUAL; +``` + + + +显示结果如下: + +```javascript ++-------------------------------------------------------------+ +| TO_CHAR(12355555555555555555555555555555555555555555555555) | ++-------------------------------------------------------------+ +| 1.2355555555555555555555555555555556E+49 | ++-------------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/3.date-and-time-formatting.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/3.date-and-time-formatting.md new file mode 100644 index 000000000..24d128e39 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/3.date-and-time-formatting.md @@ -0,0 +1,264 @@ +日期时间格式化 +============================ + + + +日期时间格式化指定了存储在数据库中日期时间数据的格式。日期时间格式化的总长度不能超过 22 个字符。 + +函数中的日期时间格式化 +----------------------- + +日期时间格式化出现在下面的数据类型转换中: + +* 将非默认格式的字符值转换为日期时间值时,需要 `TO_DATE`、`TO_TIMESTAMP` 和 `TO_TIMESTAMP_TZ` 函数的参数指定日期时间的格式。 + + + +* 将日期时间值转换为非默认格式的字符值时,需要指定 `TO_CHAR` 函数的参数。 + + + + + + +您可以通过以下方式指定日期时间格式。 + +* 通过会话参数 `NLS_DATE_FORMAT`、`NLS_TIMESTAMP_FORMAT` 或 `NLS_TIMESTAMP_TZ_FORMAT` 显式指定。 + + + +* 通过会话参数 `NLS_TERRITORY` 隐式指定。 + + + +* `ALTER SESSION` 语句更改会话的默认日期时间格式。 + + + + +日期时间格式化 +------------------- + +日期时间格式化由一个或多个日期时间格式化元素组成。OceanBase 数据库支持的格式化元素请查阅 **日期时间格式化元素表** 。 + +* 在格式化字符串中,相同的格式化元素不能出现两次,表示类似信息的格式化元素不能组合。例如,您不能在一个格式化字符串中同时使用 `SYYYY` 和 `BC` 元素。 + + + +* 所有格式化元素都可以在 `TO_CHAR`、`TO_DATE`、`TO_TIMESTAMP` 和 `TO_TIMESTAMP_TZ` 函数中使用。 + + + +* 日期时间格式化元素 `FF`、`TZD`、`TZH`、`TZM` 和 `TZR` 可以出现在时间戳和间隔格式化中,但不能出现在 `DATE` 格式中。 + + + +* 许多日期时间格式元素被空白填充或用零填充至指定的长度。 + + + + + +**注意** + + + +建议您使用 4 位数的年份元素(`YYYY`),较短的年份元素会影响查询优化,因为年份只能在运行时确定。 + +### 日期时间格式化元素表 + + + +| 元素 | 日期时间函数是否支持? | 说明 | +|---------------------|-------------|------------------------------------------------------------------------------| +| - / , 。 ; : "文字" | 是 | 标点和引用的文本会在结果中复制。 | +| AD A.D. | 是 | 表示公元纪年法,带有或不带有点号。 | +| AM A.M. | 是 | 表示上午,带有或不带有点号。 | +| BC B.C. | 是 | 表示公元前的年份,带有或不带有点号。 | +| D | 是 | 星期几(1-7)。 | +| DAY | 是 | 一天的名称。 | +| DD | 是 | 每月的一天(1-31)。 | +| DDD | 是 | 一年中的某天(1-366)。 | +| DL | 是 | 只能打印类似 "Monday, January, 01, 1996" 的固定格式。 | +| DS | 是 | 只能打印类似 "10-10-1996" 的固定格式。 | +| DY | 是 | 日期的缩写,返回星期值。 | +| FF \[1..9\] | 是 | 小数秒。使用数字 1\~9 来指定返回值的小数秒部分的位数。默认为日期时间数据类型指定的精度。在时间戳和间隔格式中有效,但在 `DATE` 格式中无效。 | +| FX | 是 | 需要字符数据和格式模型之间的精确匹配。 | +| HHHH12 | 是 | 小时(1-12)。12 小时制 | +| HH24 | 是 | 小时(0-23)。24 小时制 | +| YYYY | 是 | 包含4位数字的年份。 | +| MI | 是 | 分钟(0-59)。 | +| MM | 是 | 月(01-12;一月份表示为 01 )。 | +| MON | 是 | 月份的缩写。 | +| MONTH | 是 | 月份名称。 | +| PM P.M. | 是 | 表示下午,带有或不带有点号。 | +| Q | 是 | 季度(1、2、3、4; 1月-3月是第 1 季度)。 | +| RR | 是 | RR 匹配两位数的年份。 | +| RRRR | 是 | 年。接受4位或2位输入。 | +| SS | 是 | 秒(0-59)。 | +| SSSSS | 是 | 午夜后的秒(0-86400)。 | +| TZD | 是 | 夏令时信息。TZD 值是带有夏令时信息的缩写时区字符串。在时间戳和间隔格式中有效,但在 `DATE` 格式中无效。 | +| TZH | 是 | 时区小时。在时间戳和间隔格式中有效,但在 `DATE` 格式中无效。 | +| TZM | 是 | 时区分钟。在时间戳和间隔格式中有效,但在 `DATE` 格式中无效。 | +| TZR | 是 | 时区区域信息。在时间戳和间隔格式中有效,但在 `DATE` 格式中无效。 | +| X | 是 | 小数点,永远是 '.' 。 | +| Y,YYY | 是 | 带逗号的年。 | +| YYYYSYYYY | 是 | 4位数字的年份。 S 代表用一个负号表示公元前的日期。 | +| YYYYYY | 是 | 年份的后 3、2 或 1 位数字。 | + + +**说明** + + + +日期时间函数指的是 `TO_CHAR`、`TO_DATE`、`TO_TIMESTAMP` 和 `TO_TIMESTAMP_TZ` 。 + +注意,以上转化要求输入的字符串日期能够与格式元素相匹配,否则会报错,例如: + +```javascript +obclient> SELECT TO_DATE( '31 Aug 2020', 'DD MON YYYY' ) FROM DUAL; ++----------------------------------+ +| TO_DATE('31AUG2020','DDMONYYYY') | ++----------------------------------+ +| 2020-08-31 00:00:00 | ++----------------------------------+ +1 row in set (0.00 sec) +``` + + +**注意** + + + +OceanBase 数据库中默认的日期格式为 **DD-MON-RR** ,如果要显示为上面的格式,可以通过执行 `alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';` 修改当前会话的日期时间格式。 + +当您的格式串漏掉了一些元素时,会得到系统的报错信息: + +```javascript +obclient> SELECT TO_DATE( '31 Aug 2020', 'DD MON YYY' ) FROM DUAL; +ORA-01830: date format picture ends before converting entire input string +``` + + + +### 日期格式化元素中的大写字母 + +拼写出来的单词、缩写词或罗马数字中的大写字母在相应的格式元素中也跟着大写。例如,日期格式元素 `DAY` 产生的 `MONDAY` 也大写,`Day` 和 `Monday` 格式一样,`day` 和 `monday` 格式一样。 + +```javascript +obclient> SELECT TO_CHAR(sysdate,'mon') AS nowMonth FROM DUAL; ++----------+ +| NOWMONTH | ++----------+ +| mar | ++----------+ +1 row in set (0.00 sec) + +obclient> SELECT TO_CHAR(sysdate,'MON') AS nowMonth FROM DUAL; ++----------+ +| NOWMONTH | ++----------+ +| MAR | ++----------+ +1 row in set (0.00 sec) +``` + + + +### 日期时间格式化中的标点符号和字符字面量 + +以下字符需要日期格式化,这些字符出现在返回值中的位置与格式化中字符的位置相同: + +* 标点符号,例如连字符,斜杠,逗号,句号和冒号。 + + + +* 字符字面量,用双引号引起来。 + + + + + + +OceanBase 数据库可以灵活的将字符串转换为日期。当您使用 `TO_DATE` 函数时,若输入字符串中的每个数字元素都包含格式化允许的最大位数,则格式字符串将与输入的字符串匹配。 + +* **示例 1** :格式元素 **MM/YY** ,其中 **02** 对应 **MM** , **07** 对应 **YY** 。 + + + + +执行以下语句: + +```javascript +SELECT TO_CHAR(TO_DATE('0207','MM/YY'),'MM/YY') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------------------------------------+ +| TO_CHAR(TO_DATE('0207','MM/YY'),'MM/YY') | ++------------------------------------------+ +| 02/07 | ++------------------------------------------+ +``` + + + +* **示例 2** :OceanBase 数据库允许非字母数字字符与格式化中的标点字符匹配, **#** 对应 **/** 。 + + + + +执行以下语句: + +```javascript + SELECT TO_CHAR (TO_DATE('02#07','MM/YY'), 'MM/YY') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------+ +| TO_CHAR(TO_DATE('02#07','MM/YY'),'MM/YY') | ++-------------------------------------------+ +| 02/07 | ++-------------------------------------------+ +``` + + + +日期格式化元素与全球化支持 +------------------------- + +在 OceanBase 数据库中,日期时间格式化元素的语言可以通过参数 `NLS_DATE_LANGUAGE` 和 `NLS_LANGUAGE` 指定。默认值是 `AMERICAN`,不支持修改,所以不支持全球化。 + +**示例** :日期时间格式化的语言参数默认是 `American`,不支持其他语言。 + +```javascript +SELECT TO_CHAR (SYSDATE, 'DD/MON/YYYY', 'nls_date_language=''Traditional Chinese'' ') FROM DUAL; +``` + + + +查询结果报错,语言参数不支持。 + +```javascript +ORA-12702: invalid NLS parameter string used in SQL function +``` + + + +更多信息 +---------------- + +* [字符串到日期的转换规则](bq7tvb) + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/4.rr-date-and-time-format-element.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/4.rr-date-and-time-format-element.md new file mode 100644 index 000000000..16d427d54 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/4.rr-date-and-time-format-element.md @@ -0,0 +1,56 @@ +RR 日期时间格式化元素 +================================= + + + +`RR` 日期时间格式化元素类似于 `YY` 日期时间格式化元素,但它为跨世纪日期值存储提供了额外的灵活性。在 `YY` 日期时间格式化元素里,您需要指定年份的全部数字。而在 `RR` 日期时间格式化元素里,您只需指定年份数字的最后两位数,便可以存储日期值。 + +`RR` 日期时间格式化元素与 `TO_DATE` 函数一起使用,返回值的世纪根据指定的两位数字年份和当前年份的最后两位数字而变化。如果 `YY` 日期时间格式化元素与 `TO_DATE` 函数一起使用,则返回的年份始终与当前年份具有相同的世纪。 + +如果指定的两位数字年份是 00\~49,当前年份的最后两位数字是 00\~49,则返回的年份与当前年份具有相同的世纪。当前年份的后两位数字是 50\~99,则返回年份的前两位数字为下一个世纪。 + +如果指定的两位数字年份是 50\~99,当前年份的后两位数字为 00 到 49,则返回年份的前两位数字为当前年份 的上一个世纪。当前年份的最后两位数字是 50\~99,则返回的年份与当前年份处于同一个世纪。 + +如下所示,`RR` 日期时间格式化元素根据前两位数字不同的年份返回相同的值。假设这些查询是在 1950\~1999 年期间发出的,执行以下语句: + +```javascript +SELECT TO_CHAR(TO_DATE('27-OCT-98', 'DD-MON-RR'), 'YYYY') "Year1" , +TO_CHAR(TO_DATE('27-OCT-17', 'DD-MON-RR'), 'YYYY') "Year2" FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------+-------+ +| Year1 | Year2 | ++-------+-------+ +| 1998 | 2017 | ++-------+-------+ +``` + + + +假设这些查询是在 2000\~2049 年期间发出的,执行以下语句: + +```javascript +SELECT TO_CHAR(TO_DATE('27-OCT-98', 'DD-MON-RR'), 'YYYY') "Year1" , +TO_CHAR(TO_DATE('27-OCT-17', 'DD-MON-RR'), 'YYYY') "Year2" FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------+-------+ +| Year1 | Year2 | ++-------+-------+ +| 1998 | 2017 | ++-------+-------+ +``` + + + +通过上面 2 个示例的查询结果可见,无论是在 2000 年之前还是之后查询,都将返回相同的值。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/5.conversion-rules-from-string-to-date.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/5.conversion-rules-from-string-to-date.md new file mode 100644 index 000000000..cc5f1d742 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/4.format/5.conversion-rules-from-string-to-date.md @@ -0,0 +1,21 @@ +字符串到日期的转换规则 +================================ + + + +将字符串值转换为日期值时,会有下列转换规则: + +* 如果指定了数值格式化元素的所有数值(包括前导零点),则可以从日期字符串中省略格式化字符串中包含的标点符号。为两位数格式化元素(如 `MM`、`DD` 和 `YY`)指定 02 而不是 2。 + + + +* 您可以从日期字符串中省略在格式化字符串末尾找到的时间字段。 + + + +* 您可以在日期字符串中使用任何非字母数值字符来匹配格式化字符串中的标点符号。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/1.empty-value-overview.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/1.empty-value-overview.md new file mode 100644 index 000000000..79c115866 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/1.empty-value-overview.md @@ -0,0 +1,28 @@ +空值概述 +========================= + + + +空值(Null)指数据库表中无效的、未指定的、未知的或不可预知的值。空值的出现不受 `NOT NULL` 或 `PRIMARY KEY` 主键约束。任何包含 `NULL` 的算术表达式结果都为 `NULL` 。 + +OceanBase 支持以下 3 种空值类型。 + +**SQL 函数中的空值** + +SQL 函数中的空值 指的是 SQL 函数的参数为空值,当 SQL 函数的参数为空值时,大多数标量函数都返回 `NULL`,分析函数会忽略空值。此类别中有以下两种 SQL 函数: + + +| 空值 | 说明 | +|------------|-----------------------------------------------------------------------| +| NVL 函数中的空值 | 在表达式中 `NVL(expr1,expr2)`中,如果 `expr1` 不是 NULL,返回 `expr1`,否则返回 `expr2`。 | +| 分析函数中的空值 | 使用 `AVG`、`MAX`、`SUM` 或 `COUNT` 等分析函数时,为 NULL 的纪录会被忽略。 | + + + +**比较条件中的空值** + +比较条件中的空值 指与任何其他条件做比较的 `NULL` 。测试空值只能用比较运算符 `IS NULL` 和 `IS NOT NULL` 。因为 `NULL` 表示缺少数据,所以 `NULL` 和其它值没有可比性,即不能用等于、不等于、大于或小于和其它数值比较,当然也包括空值本身。 + +**条件判断表达式中的空值** + +条件判断表达式中的空值 指的是条件 `= NULL`、`!= NULL`、 `NULL =`、`NULL !=` 中的 `NULL`,作逻辑判断使用,判断结果不返回任何行,即 `UNKNOWN`。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/2.null-values-in-sql-functions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/2.null-values-in-sql-functions.md new file mode 100644 index 000000000..79d48bee5 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/2.null-values-in-sql-functions.md @@ -0,0 +1,88 @@ +SQL 函数中的空值 +=============================== + + + +SQL 函数中的空值指的是 SQL 函数的参数存在空值,当 SQL 函数的参数为空值时,大多数标量函数都返回 `NULL`,分析函数会忽略空值。您可以通过 `NVL` 函数的返回值确定空值。 + +NVL 函数中的空值 +---------------------- + +`NVL` 函数的表达式为 `NVL(expr1,expr2)`,如果 `expr1` 不是 `NULL`,返回 `expr1`,否则返回 `expr2`。 + +如下所示,给定 `expr1` 参数为 `NULL`,查询 `NVL(expr1,0)` 表达式的返回值。 + +执行以下语句: + +```javascript +SELECT NVL(NULL,0) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| NVL(NULL,0) | ++-------------+ +| 0 | ++-------------+ +``` + + + +`expr1` 是 `NULL`,则表达式 `NVL(expr1,0)` 的返回值为 0;`expr1` 不是 `NULL`,则表达式的返回值为 `expr1`。 + +分析函数中的空值 +-------------------- + +在使用 `AVG`,`MAX`,`SUM`,`COUNT` 等分析函数时,为 `NULL` 的纪录会被忽略。 + +如下所示,向 **tbl_a** 表中插入数据并执行以下语句: + +```javascript +CREATE TABLE tbl_a (col_a varchar2(1), col_b int ); +INSERT INTO tbl_a VALUES (NULL, 3); +INSERT INTO tbl_a VALUES (NULL, NULL); +INSERT INTO tbl_a VALUES (NULL, 1); +``` + + + +执行以下语句: + +```javascript +SELECT * FROM tbl_a; +``` + + + +查询结果如下: + +```javascript ++-------+-------+ +| COL_A | COL_B | ++-------+-------+ +| NULL | 3 | +| NULL | NULL | +| NULL | 1 | ++-------+-------+ +``` + + + +查询的结果如下: + +```javascript +SELECT AVG(col_b) FROM tbl_a; -- 结果为 2 , +SELECT MAX(col_b) FROM tbl_a; -- 结果为 3 +SELECT SUM(col_b) FROM tbl_a; -- 结果为 4 +SELECT COUNT(col_b) FROM tbl_a; -- 结果为 2 +SELECT COUNT(col_a) FROM tbl_a; -- 结果为 0 +SELECT COUNT(*) FROM tbl_a; -- 结果为 3 +``` + + + +`NULL` 的纪录被忽略了。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/3.null-values-in-comparison-conditions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/3.null-values-in-comparison-conditions.md new file mode 100644 index 000000000..d13053c2f --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/3.null-values-in-comparison-conditions.md @@ -0,0 +1,21 @@ +比较条件中的空值 +============================= + + + +比较条件中的空值指与任何其他条件做比较的 `NULL`。测试空值只能用比较运算符 `IS NULL` 和 `IS NOT NULL` 。因为 `NULL` 表示缺少数据,所以 `NULL` 和其它值没有可比性,即不能用等于、不等于、大于或小于和其它数值比较,当然也包括空值本身。 + +另外,OceanBase 数据库在计算 `DECODE` 函数时认为两个空值是相等的。若两个空值出现在复合键中,则它们也相等。 + +如下所示,根据 A 值判断比较条件的结果。 + + +| 条件 | A 值 | 结果 | +|---------------|------|-------| +| A IS NULL | 10 | FALSE | +| A IS NOT NULL | 10 | TRUE | +| A IS NULL | NULL | TRUE | +| A IS NOT NULL | NULL | FALSE | + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/4.null-values-in-conditional-expressions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/4.null-values-in-conditional-expressions.md new file mode 100644 index 000000000..b1b5509fb --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/5.null/4.null-values-in-conditional-expressions.md @@ -0,0 +1,24 @@ +条件判断表达式中的空值 +================================ + + + +条件判断表达式中的空值指的是条件 `= NULL`、`!= NULL`、 `NULL =`、`NULL !=` 中的 `NULL`,作逻辑判断使用,判断结果不返回任何行,即 `UNKNOWN`。 + +在 OceanBase 中,测试空值要用比较运算符 `IS NULL` ,返回结果为 `TRUE` 或 `FALSE` 。但是条件判断表达式中空值的判断结果 `UNKNOWN` 与 `FALSE` 不同,`NOT FALSE` 判断结果为 `TRUE`, `NOT UNKNOWN` 判断结果仍然为 `UNKNOWN`。 + +如下所示,根据 A 值判断条件判断表达式的结果。 + + +| 条件 | A 值 | 结果 | +|-----------|------|---------| +| A = NULL | 10 | UNKNOWN | +| A != NULL | 10 | UNKNOWN | +| A = NULL | NULL | UNKNOWN | +| A != NULL | NULL | UNKNOWN | +| A = 10 | NULL | UNKNOWN | +| A != 10 | NULL | UNKNOWN | + + + +如果在 `SELECT` 语句的 `WHERE` 子句中使用了判断结果为 `UNKNOWN` 的条件,则该查询将不返回任何行。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/1.annotation-overview.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/1.annotation-overview.md new file mode 100644 index 000000000..732725518 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/1.annotation-overview.md @@ -0,0 +1,21 @@ +注释概述 +========================= + + + +OceanBase 中用户可以创建三种注释: + +* [SQL 语句的注释](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/2.comments-on-the-sql-statement.md):被存储为执行 SQL 语句的应用程序代码的一部分。 + + + +* [Schema 与非 Schema 对象的注释](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/3.comment-on-schema-and-non-schema-objects.md):与对象本身的元数据一起存储在数据字典中。 + + + +* [Hint](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/1.hint-overview.md):一种在 SQL 语句中将指令传递给 OceanBase 数据库优化器的注释。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/2.comments-on-the-sql-statement.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/2.comments-on-the-sql-statement.md new file mode 100644 index 000000000..a509ada18 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/2.comments-on-the-sql-statement.md @@ -0,0 +1,64 @@ +SQL 语句的注释 +============================== + + + +注释可以使应用程序更易于阅读和维护。例如,您可以在语句中用注释以描述该语句在应用程序中的用途。除 Hint 外,SQL 语句中的注释不会影响语句的执行。 + +注释可以出现在语句中的任何关键字、参数或标点符号之间。您可以通过两种方式在语句中添加注释: + +* 以斜杠和星号(/\*)为开头的注释。斜杠和星号后跟着注释的文本。此文本可以跨越多行,并用星号和斜杠(\*/)结束注释。开头和结尾的符号不必与文本用空格或换行符进行分隔。 + + + +* 以两个连字符(--)为开头的注释。符号后跟着注释的文本。此文本不能扩展到新行,并以换行符结束注释。 + + + + + + +一个 SQL 语句可以同时包含这两种风格的多个注释。注释的文本可以包含数据库字符集中的任何可打印字符。 + +以下示例展示了多种形式的以斜杠和星号(/\*)为开头的注释: + +```javascript +SELECT last_name, employee_id, salary + NVL(commission_pct, 0), + job_id, e.department_id + /* Select all employees whose compensation is + greater than that of Pataballa.*/ + FROM employees e, departments d + /*The DEPARTMENTS table is used to get the department name.*/ + WHERE e.department_id = d.department_id + AND salary + NVL(commission_pct,0) > /* Subquery: */ + (SELECT salary + NVL(commission_pct,0) + /* total compensation is salary + commission_pct */ + FROM employees + WHERE last_name = 'Pataballa') + ORDER BY last_name, employee_id; +``` + + + +以下示例中的语句包含多种形式的以两个连字符(- -)为开头的注释: + +```javascript +SELECT last_name, -- select the name + employee_id -- employee id + salary + NVL(commission_pct, 0), -- total compensation + job_id, -- job + e.department_id -- and department + FROM employees e, -- of all employees + departments d + WHERE e.department_id = d.department_id + AND salary + NVL(commission_pct, 0) > -- whose compensation + -- is greater than + (SELECT salary + NVL(commission_pct,0) -- the compensation + FROM employees + WHERE last_name = 'Pataballa') -- of Pataballa + ORDER BY last_name -- and order by last name + employee_id -- and employee id. +; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/3.comment-on-schema-and-non-schema-objects.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/3.comment-on-schema-and-non-schema-objects.md new file mode 100644 index 000000000..f6a326e80 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/3.comment-on-schema-and-non-schema-objects.md @@ -0,0 +1,43 @@ +Schema 与非 Schema 对象的注释 +=========================================== + + + +可以使用 `COMMENT` 语句将注释与 Schema 对象(表、视图、物化视图、运算符、索引类型)或非 Schema 对象(Edition)关联起来。还可以在表模式对象的列上创建注释。与 Schema 和非 Schema 对象关联的注释存储在数据字典中。 + +语法格式 +------------------------- + +```javascript +COMMENT ON {TABLE table | COLUMN column | INDEXTYPE indextype +| OPERATOR operator | VIEW view} IS string +``` + + + +示例 +----------------------- + +* 对 user 表注释 + + ```unknow + COMMENT ON TABLE test.user is "这是记录用户信息的表"; + ``` + + + +* 对 user_name 列注释 + + ```unknow + COMMENT ON COLUMN test.user.user_name is "这里记录了用户的姓名"; + ``` + + + + + + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/1.hint-overview.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/1.hint-overview.md new file mode 100644 index 000000000..15480ef9a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/1.hint-overview.md @@ -0,0 +1,102 @@ +Hint 概述 +============================ + + + +Hint 是 SQL 语句中将指令传递给 OceanBase 数据库优化器或服务器的一种注释。通过 Hint 可以使优化器或服务器生成某种特定的计划。 一般情况下,优化器会为用户查询选择最佳的执行计划,不需要用户主动使用 Hint 指定,但在某些场景下,优化器生成的执行计划可能不满足用户的要求,这时就需要用户使用 Hint 来主动指定并生成特殊的执行计划。 + +Hint 应该少用,仅在您收集了相关表的统计信息并且使用 `EXPLAIN PLAN` 语句在没有 Hint 的情况下评估了优化器计划之后,才谨慎考虑使用。更改数据库条件以及在后续版本中增强查询性能可能会导致您代码中的 Hint 对性能产生重大影响。 + +Hint 的使用 +-------------------- + +一个语句块只能有一个注释包含 Hint,并且该注释必须跟随 `SELECT`、`UPDATE`、`INSERT`、`MERGE` 或 `DELETE` 关键字。 + +以下是 Hint 在语句块注释中的语法格式: + +```javascript +/*+[hint text]*/ +``` + + + +Hint 从语法上看是一种特殊的 SQL 注释, 所不同的是在注释的左标记后增加了一个加号(+)。 如果服务器端无法识别 SQL 语句中的 Hint,那么优化器会选择忽略用户指定的 Hint 而使用默认计划所生成逻辑。另外需要指明的是,Hint 只影响优化器所生成的计划的逻辑,而不影响 SQL 语句的语义。 + +以下是定义 Hint 时需要注意的一些规则: + +* 加号(+)使数据库将注释解释为 Hint 列表。加号必须紧跟在注释左标记符后,不允许有空格。 + + + +* 加号(+)和 Hint 文本之间的空格是可选的。如果注释中包含多个 Hint,则 Hint 间至少用一个空格进行分隔。 + + + +* Hint 包含拼写错误或语法错误时会被忽略。但是,数据库会考虑在同一注释中其他正确指定的 Hint。 + + + +* 不跟随 `DELETE`、`INSERT`、`MERGE`、`SELECT` 或 `UPDATE` 关键字的 Hint 无效。 + + + +* Hint 的组合相互冲突时 Hint 无效。但是,数据库会在同一注释中考虑其他不冲突的 Hint。 + + + +* 数据库环境使用 PL/SQL 版本 1 时 Hint 无效,例如 Forms 版本 3 触发器。 + + + + + + +在 Hint 中定义查询块 +------------------------- + +您可以通过在许多 Hint 中定义一个可选的查询块名称,以此来指定该 Hint 适用的查询块。使用此语法,允许您在外部查询中指定一个应用于嵌入式视图的 Hint。 + +查询块参数的语法格式为 `@queryblock`,其中 `queryblock` 是在查询中被指定的查询块的标识符。`queryblock` 标识符可以是系统生成的,也可以是用户自己指定的。当您在查询块中直接指定要应用的 Hint 时,将忽略 `@queryblock`。 + +* 系统生成的标识符可以通过对查询使用 `EXPLAIN PLAN` 生成,预转换查询块的名称可以通过对使用了 `NO_QUERY_TRANSFORMATION` Hint 的查询运行 `EXPLAIN PLAN` 生成。 + + + +* 可以使用 QB_NAME 来指定用户自定义的名称。 + + + + + + +定义全局 Hint +--------------------- + +许多 Hint 既可以应用于特定的表或索引,也可以更全局地应用于视图中的表或一部分索引的列。语法元素 `tablespec` 和 `indexspec` 定义了这些全局 Hint。 + +以下是 `tablespec` 的语法: + +```javascript +[ view.[ view. ]... ]table +``` + + + +您必须完全按照在语句中显示的方式来指定要访问的表。如果该语句使用表的别名,则在 Hint 中使用也使用别名而不是表名。但是,即使 Schema 名称出现在语句中,也不要在 Hint 中使用的表名中包含 Schema 名称。 +**注意** + + + +使用 `tablespec` 子句指定全局 Hint 对于使用 ANSI 连接的查询不起作用,因为优化器在解析期间会生成额外的视图。相反,可以通过 `@queryblock` 来指定该提示所应用到的查询块。 + +以下是 `indexspec` 的语法: + +```javascript +{ index +| ( [ table. ]column [ [ table. ]column ]...) +} +``` + + + +在 Hint 的说明部分,当 `tablespec` 后跟着 `indexspec` 时,允许但不要求使用逗号来分隔表名和索引名。也允许(但不是必需)使用逗号分隔多次出现的 `indexspec`。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/1.the-hint-related-to-the-access-path.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/1.the-hint-related-to-the-access-path.md new file mode 100644 index 000000000..7ba527072 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/1.the-hint-related-to-the-access-path.md @@ -0,0 +1,71 @@ +与访问路径相关的 Hint +================================== + + + +INDEX Hint +---------------------- + +`INDEX` Hint 指示优化器对指定的表使用索引扫描。您可以将 `INDEX` Hint 用于基于函数、域、B - 树、位图和位图连接的索引。 + +以下是 `INDEX` Hint 的语法: + +```javascript +/*+ INDEX ( [ @ queryblock ] tablespec [ indexspec [ indexspec ]... ] ) */ +``` + + + +Hint 的行为取决于 `indexspec` 规范: + +* 如果 `INDEX` Hint 指定了一个单个可用索引,则数据库将对该索引执行扫描。优化器不考虑全表扫描或表上另一个索引的扫描。 + + + +* 如果 `INDEX` Hint 指定了可用索引的列表,那么优化器将考虑扫描列表中每个索引的成本,然后以最低的成本执行索引扫描。如果数据库从这个列表中扫描多个索引并合的访问路径成本最低,数据库将选用这种扫描方案。数据库不考虑对没有在列表中的索引进行全表扫描或扫描。 + + + +* 如果 `INDEX` Hint 没有指定具体的索引,那么优化器将考虑表上每个可用索引的扫描成本,然后以最低的成本执行索引扫描。如果数据库扫描多个索引并合的访问路径成本最低,数据库将选用这种扫描方案。优化器不考虑全表扫描。 + + + + + + +示例如下: + +```javascript +SELECT /*+ INDEX (employees emp_department_ix)*/ employee_id, department_id +FROM employees +WHERE department_id > 50; +``` + + + +FULL Hint +--------------------- + +`FULL` Hint 指示优化器对指定的表执行全表扫描。 + +以下是 `FULL` Hint 的语法: + +```javascript +/*+ FULL ( [ @ queryblock ] tablespec ) */ +``` + + + +示例如下: + +```javascript +SELECT /*+ FULL(e) */ employee_id, last_name +FROM hr.employees e +WHERE last_name LIKE :b1; +``` + + + +数据库对表 **employees** 执行一次完整的表扫描来执行这条语句,即使有一个由 `WHERE` 子句中的条件提供的索引在列 **last_name** 上。 + +在 `FROM` 子句中,表 **employees** 有个别名 **e** ,因此 Hint 必须根据表的别名而不是名称来引用该表。即使在 `FROM` 子句中指定了 Schema 名,也不要在 Hint 中引用它们。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/2.hint-related-to-the-join-order.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/2.hint-related-to-the-join-order.md new file mode 100644 index 000000000..352194e74 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/2.hint-related-to-the-join-order.md @@ -0,0 +1,46 @@ +与联接顺序相关的 Hint +================================== + + + +LEADING Hint +--------------------- + +`LEADING` Hint 指示优化器在执行计划中使用指定的表集作为前缀,它可以用来指定表的联接顺序。这个 Hint 比 `ORDERED` Hint 更通用。 + +以下是 `LEADING` Hint 的语法: + +```javascript +/*+ LEADING ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +`LEADING` Hint 为确保按照用户指定的顺序联接表,所以会进行严格的检查。如果发现 Hint 指定的 `table_name` 不存在,则 `LEADING` Hint 失效。如果发现 Hint 中存在重复表,则 `LEADING` Hint 失效。如果在优化器联接期间,无法找到对应的表,那么该表及后面的表指定的联接顺序失效,该表前面指定的顺序依然有效。如果由于联接图中的依赖关系,无法首先按照指定的顺序联接指定的表,则 `LEADING` Hint 失效。如果指定两个或多个相互冲突的 `LEADING` Hint,则 `LEADING` Hint 失效。如果您指定了 `ORDERED` Hint,它将覆盖所有的 `LEADING` Hint。 + +示例如下: + +```javascript +SELECT /*+ LEADING(e j) */ * + FROM employees e, departments d, job_history j + WHERE e.department_id = d.department_id + AND e.hire_date = j.start_date; +``` + + + +ORDERED Hint +------------------------ + +`ORDERED` Hint 指示数据库按照表在 `FROM` 子句中出现的顺序联接表。建议使用 `LEADING` Hint,它比 `ORDERED` Hint 更通用。 + +以下是 `ORDERED` Hint 的语法: + +```javascript +/*+ ORDERED */ +``` + + + +当您从需要联接的SQL语句中省略 `ORDERED` Hint 时,将由优化器将选择联接表的顺序。但是优化器不知道从每个表中要选择的行数,此时您可以使用 `ORDERED` Hint 来指定联接顺序。这样使您能够比优化器更好地选择内部表和外部表。如果在指定该 `ORDERED` Hint 后发生了改写,那么就按照改写后的语句中的 `FROM` 子句的顺序联接表。 + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/3.hints-related-to-join-operations.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/3.hints-related-to-join-operations.md new file mode 100644 index 000000000..36275a1e3 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/3.hints-related-to-join-operations.md @@ -0,0 +1,191 @@ +与联接操作相关的 Hint +================================== + + + +USE_MERGE Hint +-------------------------- + +`USE_MERGE` Hint 指示优化器使用一个 `sort-merge` 联接将每个指定的表与另一个行资源联接起来。建议在使用 `USE_NL` 和 `USE_MERG` Hint 时和 `LEADING` 与 `ORDERED` Hint 一起使用。当被引用的表是联接的内部表时,优化器将使用这些提示。如果被引用的表是外部表,则忽略 Hint。 + +以下是 `USE_MERGE` Hint 的语法: + +```javascript +/*+ USE_MERGE ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +`USE_MERGE` 指定表作为内部表时候使用 MERGE-JOIN 算法。OceanBase 中使用 MERGE-JOIN 算法时必须有等值条件的 `join-condition`,因此无等值条件的两个表做联结时,`USE_MERGE` 失效。 + +以下是 `USE_MERGE` 的示例: + +```javascript +SELECT /*+ USE_MERGE(employees departments) */ * +FROM employees, departments +WHERE employees.department_id = departments.department_id; +``` + + + +NO_USE_MERGE Hint +----------------------------- + +`NO_USE_MERGE` Hint 指示优化器在使用指定表作为内部表并联接到另一个行资源时排除 `USE_MERGE` Hint 使用的联接。 + +以下是 `NO_USE_MERGE` Hint 的语法: + +```javascript +/*+ NO_USE_MERGE ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +以下是 `NO_USE_MERGE` Hint 的示例: + +```javascript +SELECT /*+ NO_USE_MERGE(e d) */ * +FROM employees e, departments d +WHERE e.department_id = d.department_id; +``` + + + +USE_HASH Hint +------------------------- + +`USE_HASH` Hint 指示优化器使用 HASH-JOIN 算法将每个指定的表与另一个行资源联接起来。 + +以下是 `USE_HASH` Hint 的语法: + +```javascript +/*+ USE_HASH ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +以下是 `USE_HASH` Hint 的示例: + +```javascript +SELECT /*+ USE_HASH(l h) */ * + FROM orders h, order_items l + WHERE l.order_id = h.order_id + AND l.order_id > 2400; +``` + + + +NO_USE_HASH Hint +---------------------------- + +`NO_USE_HASH` Hint 指示优化器在使用指定表作为内部表并联接到另一个行资源时排除 `USE_HASH` Hint 使用的联接。 + +以下是 `NO_USE_HASH` Hint 的语法: + +```javascript +/*+ NO_USE_HASH ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +以下是 `NO_USE_HASH` Hint 的示例: + +```javascript +SELECT /*+ NO_USE_HASH(e d) */ * +FROM employees e, departments d +WHERE e.department_id = d.department_id; +``` + + + +USE_NL Hint +----------------------- + +`USE_NL` Hint 指示优化器使用嵌套循环联接将每个指定的表连接到另一个行资源,并使用指定的表作为内部表,指定表作为内部表时使用 NL-JOIN 算法。建议在使用 `USE_NL` 和 `USE_MERG` Hint 时和 `LEADING` 与 `ORDERED` Hint 一起使用。当被引用的表是联接的内部表时,优化器将使用这些提示。如果被引用的表是外部表,则忽略 Hint。 + +以下是 `USE_NL` Hint 的语法: + +```javascript +/*+ USE_NL ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +在下面的示例中,Hint 强制执行了嵌套循环,通过全表扫描访问了 **orders** 并且筛选条件 `l.order_id = h.order_id` 应用在了每一行。对于满足筛选条件的每一行,通过索引 **order_id** 访问 **order_items** : + +```javascript +SELECT /*+ USE_NL(l h) */ h.customer_id, l.unit_price * l.quantity +FROM orders h, order_items l +WHERE l.order_id = h.order_id; +``` + + + +NO_USE_NL Hint +-------------------------- + +`NO_USE_NL` Hint 指示优化器在使用指定表作为内部表并联接到另一个行资源时排除 Nest-Loop 联接。 + +以下是 `NO_USE_NL` Hint 的语法: + +```javascript +/*+ NO_USE_NL ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +以下是 `NO_USE_NL` Hint 的示例: + +```javascript +SELECT /*+ NO_USE_NL(e d) */ * +FROM employees e, departments d +WHERE e.department_id = d.department_id; +``` + + + +USE_BNL Hint +------------------------ + +`USE_BNL` Hint 指示优化器使用块嵌套循环联接将每个指定的表连接到另一个行资源,并使用指定的表作为内部表,指定表作为内部表时使用 BNL-JOIN 算法。建议在使用 `USE_BN` Hint 时和 `LEADING` 与 `ORDERED` Hint 一起使用。当被引用的表是联接的内部表时,优化器将使用这些提示。如果被引用的表是外部表,则忽略 Hint。 + +以下是 `USE_BNL` Hint 的语法: + +```javascript +/*+ USE_BNL ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +在下面的示例中,Hint 强制执行了块嵌套循环,通过全表扫描访问了 **orders** 并且筛选条件 `l.order_id = h.order_id` 应用在了每一行。对于满足筛选条件的每一行,通过索引 **order_id** 访问 **order_items** : + +```javascript +SELECT /*+ USE_BNL(l h) */ h.customer_id, l.unit_price * l.quantity +FROM orders h, order_items l +WHERE l.order_id = h.order_id; +``` + + + +NO_USE_BNL Hint +--------------------------- + +`NO_USE_BNL` Hint 指示优化器在使用指定表作为内部表并联接到另一个行资源时排除 `USE_BNL` Hint 使用的联接。 + +以下是 `NO_USE_BNL` Hint 的语法: + +```javascript +/*+ NO_USE_BNL ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +以下是 `NO_USE_BNL` Hint 的示例: + +```javascript +SELECT /*+ NO_USE_BNL(e d) */ * +FROM employees e, departments d +WHERE e.department_id = d.department_id; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/4.hints-related-to-parallel-execution.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/4.hints-related-to-parallel-execution.md new file mode 100644 index 000000000..cce0e3e41 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/4.hints-related-to-parallel-execution.md @@ -0,0 +1,207 @@ +与并行执行相关的 Hint +================================== + + + +PARALLEL Hint +------------------------- + +`PARALLEL` Hint 是语句级的 Hint,用来指示优化器指定并行操作可使用的并行服务器的数量。此 Hint 将覆盖初始化参数 `PARALLEL_DEGREE_ POLICY` 的值。该 Hint 适用于语句的 `SELECT`、`INSERT`、`MERGE`、`UPDATE` 和 `DELETE` 部分,以及表扫描的部分。如果违反了任何的并行限制,则 `PARALLEL` Hint 被忽略。 + +以下是 `PARALLEL` Hint 的语法: + +```javascript +/*+ PARALLEL [ ( DEFAULT | AUTO | MANUAL | integer ) ] */ +``` + + +**注意** + + + +如果还进行了排序或分组操作,那么可以使用的服务器数量是 `PARALLEL` Hint 中的值的两倍。 + +`PARALLE` Hint 中指定参数的值时: + +* `PARALLEL`:数据库计算并行度,可以为 2 或更大。语句一直并行执行。 + +* `PARALLEL(DEFAULT)` :优化器计算的并行度等于所有参与实例上可用的 CPU 数量乘以初始化参数 `PARALLEL_THREADS_PER_CPU` 的值。 + +* `PARALLEL(AUTO)` :数据库计算并行度,结果可以大于等于 1,如果计算出的并行度为 1,则该语句按顺序运行。 + +* `PARALLEL(MANUAL)`:优化器被强制使用语句中设置的对象的并行度。 + +* `PARALLEL(integer)`:优化器使用参数 `integer` 指定的整数值为并行度。 + + + + +以下示例中数据库计算并行度,并且语句一直并行执行: + +```javascript +SELECT /*+ PARALLEL */ last_name +FROM employees; +``` + + + +以下示例中数据库计算并行度,但是并行度为 1,所以该语句串行执行: + +```javascript +SELECT /*+ PARALLEL (AUTO) */ last_name +FROM employees; +``` + + + +在以下示例中,`PARALLEL` Hint 建议优化器使用语句中设定的,当前对表本身有效的并行度 5: + +```javascript +CREATE TABLE parallel_table (col1 number, col2 VARCHAR2(10)) PARALLEL 5; +SELECT /*+ PARALLEL (MANUAL) */ col2 + FROM parallel_table; +``` + + + +USE_PX Hint +----------------------- + +`USE_PX` Hint 强制指示服务器在执行 SQL 语句时使用 PX 模式,PX 模式允许在执行语句时采用多线程方式。一般 `USE_PX` Hint 和 `PARALLEL` Hint 配合使用。 + +以下是 `USE_PX` Hint 的语法: + +```javascript +/*+ USE_PX */ +``` + + + +示例如下: + +```javascript +SELECT /*+ USE_PX PARALLEL(4)*/ e.department_id, sum(e.salary) +FROM employees e +WHERE e.department_id = 1001; +GROUP BY e.department_id; +``` + + + +NO_USE_PX Hint +-------------------------- + +`NO_USE_PX` Hint 强制指示服务器在执行 SQL 语句时避免使用 PX 模式。 + +以下是 `NO_USE_PX` Hint 的语法: + +```javascript +/*+ NO_USE_PX */ +``` + + + +示例如下: + +```javascript +SELECT /*+ NO_USE_PX*/ e.department_id, sum(e.salary) +FROM employees e +WHERE e.department_id = 1001; +GROUP BY e.department_id; +``` + + + +PQ_DISTRIBUTE Hint +------------------------------ + +`PQ_DISTRIBUTE` Hint 指示优化器怎样在程序(查询)服务器和消耗(负载)查询服务器之间分配行。您可以通过该 Hint 控制联接或负载的行分布`PQ_DISTRIBUTE` Hint 的语法: + +```javascript +/*+ PQ_DISTRIBUTE + ( [ @ queryblock ] tablespec + { distribution | outer_distribution inner_distribution } + ) */ +``` + + + +### 控制负载的分配 + +您可以控制并行语句 `INSERT ... SELECT` 和并行语句 `CREATE TABLE ... AS SELECT` 的行分布,以此来确定如何在程序(查询)服务器和消耗(负载)服务器之间进行行分配。使用语法的上分支来指定分发方法。分布方法的值及其语义如下表所示: + + +| 分布方法 | 说明 | +|--------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| NONE | 没有分配。即将查询和负载操作组合到每个查询服务器中。所有服务器将加载所有分区。这种分配方法的缺失有助于避免在没有偏离的情况下行分配的开销。由于空段或语句中的谓词会过滤掉查询评估的所有行,因此可能会发生偏离。如果由于使用此方法而发生偏斜,则请改用 `RANDOM` 或 `RANDOM_ LOCAL` 分布。 **注意** 请谨慎使用此分配方法。每个进程加载的 PGA 内存最少需要 512 KB。如果还使用压缩,则每台服务器消耗大约 1.5 MB 的 PGA 内存。 | +| PARTITION | 此方法使用 `tablespec` 的分区信息将行从查询服务器分发到消耗服务器。当不可能或不希望将查询和加载操作组合在一起时和当正在加载的分区数量大于或等于加载服务器的数量并且输入数据将均匀地分布在正在加载的分区之间(即没有偏离)时,请使用此分步方法。 | +| RANDOM | 此方法以循环方式将来自程序的行分发给消耗。当输入数据高度倾斜时,使用这种分布方法。 | +| RANDOM_LOCAL | 此方法将来自程序的行分布到一组服务器,这些服务器负责维护给定的一组服务器。两个或多个服务器可以加载同一分区,但是没有服务器加载所有分区。当输入数据发生偏移并且由于内存限制而无法合并查询和加载操作时,请使用此分布方法。 | + + + +例如,在以下直接装入插入操作中,该操作的查询和负载部分被组合到每个查询服务器中: + +```javascript +INSERT /*+ APPEND PARALLEL(target_table, 16) PQ_DISTRIBUTE(target_table, NONE) */ +INTO target_table +SELECT * FROM source_table; +``` + + + +在下面的示例中,创建表时优化器使用表 **target_table** 的分区来分配行: + +```javascript +CREATE /*+ PQ_DISTRIBUTE(target_table, PARTITION) */ TABLE target_table +NOLOGGING PARALLEL 16 +PARTITION BY HASH (l_orderkey) PARTITIONS 512 +AS SELECT * FROM source_table; +``` + + + +### 控制联接的分配 + +您可以通过指定两种分配方法来控制联接的分配方法,如语法中的下部分支所示,一种外部表的分布方法,一种内部表的分布方法: + +* `outside_distribution` 是外部表的分布方法。 + +* `inner_distribution` 是内部表的分布方法。 + + + + +分布方法的值是 `HASH`、`BROADCAST`、`PARTITION` 和 `NONE`。只有下表中的 6 种分布方法组合是有效的: + + +| 分布方法 | 说明 | +|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| HASH, HASH | 使用联接键上的哈希函数,将每个表的行映射到消耗查询服务器。映射完成后,每个查询服务器都会在一对结果分区之间执行联接。当表的大小可比较并且联接操作是通过哈希联接或排序合并联接实现时,建议使用此分布方法。 | +| BROADCAST, NONE | 外部表的所有行都广播到每个程序查询服务器。内部表行是随机分区的。当外部表与内部表相比非常小时,建议使用此分布方法。通常,当内部表大小乘以查询服务器的数量大于外部表大小时,也建议使用此分布方法。 | +| NONE, BROADCAST | 内部表的所有行都广播给每个消耗查询服务器。外部表行是随机分区的。当内部表与外部表相比非常小时,建议使用此分布方法。通常,当内部表大小乘以查询服务器的数量小于外部表大小时,也建议使用此分布方法。 | +| PARTITION, NONE | 外部表的行使用以内部表的分区进行映射。内部表必须在联接键上进行分区。当外部表的分区数等于或几乎等于查询服务器数的倍数时,建议使用此分布方法。例如,有 14 个分区和 15 个查询服务器。 **注意** 如果内部表未分区或未在分区键上等分联接时,则优化器将忽略此 Hint。 | +| NONE, PARTITION | 内部表的行使用外部表的分区进行映射。外部表必须在联接键上进行分区。当外部表的分区数等于或几乎等于查询服务器数的倍数时,建议使用此分布方法。例如,有 14 个分区和 15 个查询服务器。 **注意** 如果外部表未在分区键上进行分区或未等分联时接,则优化器将忽略此 Hint | +| NONE, NONE | 每个查询服务器在一对匹配的分区之间执行联接操作,每个表中都有一个。两个表必须在连接键上等分。 | + + + +例如,给定两个使用哈希联接来联接表 **r** 和 **s** ,以下查询包含使用哈希分配的 Hint: + +```javascript +SELECT /*+ORDERED PQ_DISTRIBUTE(s HASH, HASH) USE_HASH (s)*/ column_list +FROM r,s +WHERE r.c=s.c; +``` + + + +要广播外部表 **r** ,查询语句为: + +```javascript +SELECT /*+ORDERED PQ_DISTRIBUTE(s BROADCAST, NONE) USE_HASH (s) */ column_list +FROM r,s +WHERE r.c=s.c; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/5.hints-related-to-the-query-policy.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/5.hints-related-to-the-query-policy.md new file mode 100644 index 000000000..ffefaa4dc --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/5.hints-related-to-the-query-policy.md @@ -0,0 +1,194 @@ +与查询策略相关的 Hint +================================== + + + +USE_JIT Hint +------------------------ + +`USE_JIT` Hint 指示服务器在执行 SQL 语句时强制使用 JIT 模式编译执行表达式。 + +以下是 `USE_JIT` Hint 的语法: + +```javascript +/*+ USE_JIT */ +``` + + + +示例如下: + +```javascript +SELECT /*+ USE_JIT*/ e.department_id, sum(e.salary) +FROM employees e +WHERE e.department_id = 1001; +GROUP BY e.department_id; +``` + + + +NO_USE_JIT Hint +--------------------------- + +`NO_USE_JIT` Hint 指示服务器在执行 SQL 语句时避免使用 JIT 模式编译执行表达式。 + +以下是 `NO_USE_JIT` Hint 的语法: + +```javascript +/*+ NO_USE_JIT*/ +``` + + + +示例如下: + +```javascript +SELECT /*+NO_USE_JIT*/ e.department_id, sum(e.salary) +FROM employees e +WHERE e.department_id = 1001; +GROUP BY e.department_id; +``` + + + +USE_HASH_AGGREGATION Hint +------------------------------------- + +`USE_HASH_AGGREGATION` Hint 指示优化器在生成计划时强制使用 HASH 聚合算法运行该 SQL 语句。 + +以下是 `USE_HASH_AGGREGATION` Hint 的语法: + +```javascript +/*+ USE_HASH_AGGREGATION */ +``` + + + +示例如下: + +```javascript +SELECT /*+ USE_HASH_AGGREGATION */ e.department_id, sum(e.salary) +FROM employees e +WHERE e.department_id = 1001; +GROUP BY e.department_id; +``` + + + +NO_USE_HASH_AGGREGATION Hint +---------------------------------------- + +`NO_USE_HASH_AGGREGATION` Hint 指示优化器在执行 SQL 语句时避免使用 HASH 聚合算法运行该语句。 + +以下是 `NO_USE_HASH_AGGREGATION` Hint 的语法: + +```javascript +/*+ NO_USE_HASH_AGGREGATION */ +``` + + + +示例如下: + +```javascript +SELECT /*+ NO_USE_HASH_AGGREGATION */ e.department_id, sum(e.salary) +FROM employees e +WHERE e.department_id = 1001; +GROUP BY e.department_id; +``` + + + +USE_LATE_MATERIALIZATION Hint +----------------------------------------- + +`USE_LATE_MATERIALIZATION` Hint 指示优化器延迟物化视图。 + +以下是 `USE_LATE_MATERIALIZATION` Hint 的语法: + +```javascript +/*+ USE_LATE_MATERIALIZATION */ +``` + + + +示例如下: + +```javascript +SELECT /*+ USE_LATE_MATERIALIZATION*/ e.department_id, sum(e.salary) +FROM employees e +WHERE e.department_id = 1001; +GROUP BY e.department_id; +``` + + + +NO_USE_LATE_MATERIALIZATION Hint +-------------------------------------------- + +`NO_USE_LATE_MATERIALIZATION` Hint 指示优化器禁止延迟物化视图。 + +以下是 `NO_USE_LATE_MATERIALIZATION` Hint 的语法: + +```javascript +/*+ NO_USE_LATE_MATERIALIZATION */ +``` + + + +示例如下: + +```javascript +SELECT /*+ NO_USE_LATE_MATERIALIZATION*/ e.department_id, sum(e.salary) +FROM employees e +WHERE e.department_id = 1001; +GROUP BY e.department_id; +``` + + + +USE_NL_MATERIALIZATION Hint +--------------------------------------- + +`USE_NL_MATERIALIZATION` Hint 强制指示优化器指定表为内部表(子树)时生成一个物化算子来缓存数据。 + +以下是 `USE_NL_MATERIALIZATION` Hint 的语法: + +```javascript +/*+ USE_NL_MATERIALIZATION ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +示例如下: + +```javascript +SELECT /*+ USE_NL_MATERIALIZATION(departments) */ * +FROM employees, departments +WHERE employees.department_id = departments.department_id; +``` + + + +NO_USE_NL_MATERIALIZATION Hint +------------------------------------------ + +`NO_USE_NL_MATERIALIZATION` Hint 强制指示优化器在指定表为内部表(子树)时避免生成一个物化算子来缓存数据。 + +以下是 `NO_USE_NL_MATERIALIZATION` Hint 的语法: + +```javascript +/*+ NO_USE_NL_MATERIALIZATION ( [ @ queryblock ] tablespec [ tablespec ]... ) */ +``` + + + +示例如下: + +```javascript +SELECT /*+ NO_USE_NL_MATERIALIZATION(departments) */ * +FROM employees, departments +WHERE employees.department_id = departments.department_id; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/6.hints-related-to-query-transformation.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/6.hints-related-to-query-transformation.md new file mode 100644 index 000000000..742061404 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/6.hints-related-to-query-transformation.md @@ -0,0 +1,262 @@ +与查询转换相关的 Hint +================================== + + + +NO_REWRITE Hint +--------------------------- + +`NO_REWRITE` Hint 指示优化器为禁用查询去重写查询块,并覆盖了参数 `QUERY_REWRITE_ENABLED` 的设置。 + +以下是 `NO_REWRITE` 的语法: + +```javascript +/*+ NO_REWRITE [ ( @ queryblock ) ] */ +``` + + + +示例如下: + +```javascript +SELECT /*+ NO_REWRITE */ sum(s.amount_sold) AS dollars +FROM sales s, times t +WHERE s.time_id = t.time_id +GROUP BY t.calendar_month_desc; +``` + + + +NO_EXPAND Hint +-------------------------- + +`NO_EXPAND` Hint 指示优化器不要对 `WHERE` 子句中具有 `OR` 条件或 `IN` 列表的查询考虑 `OR` 扩展。 通常,优化器会使用 `OR` 扩展,当确定使用 `OR` 扩展的成本低于不使用它时。 + +以下是 `NO_EXPAND` Hint 的语法: + +```javascript +/*+ NO_EXPAND [ ( @ queryblock ) ] */ +``` + + + +示例如下: + +```javascript +SELECT /*+ NO_EXPAND */ * + FROM employees e, departments d + WHERE e.manager_id = 108 + OR d.department_id = 110; +``` + + + +USE_CONCAT Hint +--------------------------- + +`USE_CONCAT` Hint 指示优化器使用 `UNION ALL` 运算符将查询 `WHERE`子句中的组合 `OR` 条件转换为复合查询。 如果没有这个 Hint,则仅当使用串联查询的成本低于比没有串联查询的成本时,才会发生此转换。`USE_CONCAT` Hint 将覆盖成本注意事项。 + +以下是 `USE_CONCAT` Hint 的语法: + +```javascript +/*+ USE_CONCAT [ ( @ queryblock ) ] */ +``` + + + +示例如下: + +```javascript +SELECT /*+ USE_CONCAT */ * + FROM employees e + WHERE manager_id = 108 + OR department_id = 110; +``` + + + +MERGE Hint +---------------------- + +`MERGE` Hint 使您可以在查询中合并视图。 + +以下是 `MERGE` Hint 的语法: + +```javascript +/*+ MERGE [ ( @ queryblock ) | ( [ @ queryblock ] tablespec ) ] */ +``` + + + +如果视图的查询块在 `SELECT` 列表中包含 `GROUP BY` 子句或 `DISTINCT` 运算符时,只有启用了复杂的视图合并后,优化器才能将视图合并到正在访问的语句中。 如果子查询不相关,则也可以使用复杂合并将 `IN` 子查询合并到访问语句中。 + +示例如下: + +```javascript +SELECT /*+ MERGE(v) */ e1.last_name, e1.salary, v.avg_salary + FROM employees e1, + (SELECT department_id, avg(salary) avg_salary + FROM employees e2 + GROUP BY department_id) v + WHERE e1.department_id = v.department_id + AND e1.salary > v.avg_salary + ORDER BY e1.last_name; +``` + + + +当不带参数使用 `MERGE` Hint 时,应将其放在视图查询块中。 当视图名称作为参数使用 + +`MERGE` Hint 时,应将其放在周边查询中。 + +NO_MERGE Hint +------------------------- + +`NO_MERGE` Hint 指示优化器不要将外部查询和任何内联视图查询合并到单个查询中。 + +以下是 `NO_MERGE` Hint 的语法: + +```javascript +/*+ NO_MERGE [ ( @ queryblock ) | ( [ @ queryblock ] tablespec ) ] */ +``` + + + +此 Hint 会影响您访问视图的方式。 例如,以下语句导致视图 **seattle_dept** 不被合并: + +```javascript +SELECT /*+ NO_MERGE(seattle_dept) */ e1.last_name, seattle_dept.department_name + FROM employees e1, + (SELECT location_id, department_id, department_name + FROM departments + WHERE location_id = 1700) seattle_dept + WHERE e1.department_id = seattle_dept.department_id; +``` + + + +在视图查询块中使用 `NO_MERGE` Hint 时,不需要为它指定参数。 在周围的查询中使用 `NO_MERGE` Hint 时,需要将视图名称指定为它的参数。 + +UNNEST Hint +----------------------- + +`UNNEST` Hint 指示优化器不要嵌套而是并将子查询的主体合并到包含该 Hint 的查询块的主体中,从而使优化器在评估访问路径和联接时将它们一起考虑在内。 + +以下是 `UNNEST` Hint 的语法: + +```javascript +/*+ UNNEST [ ( @ queryblock ) ] */ +``` + + + +在取消嵌套子查询之前,优化器首先验证子查询是否有效,并且必须通过探索和查询优化测试。 使用 `UNNEST` Hint 时优化器仅检查子查询块的有效性。 如果子查询块有效,那么将直接取消嵌套子查询,而无需通过探索和查询优化测试。 + +示例如下: + +```javascript +SELECT AVG(t1.c) FROM t1 +WHERE t1.b >= + (SELECT /*+unnest*/AVG(t2.b) + FROM t2 + WHERE t1.a = t2.a); +``` + + + +NO_UNNEST Hint +-------------------------- + +`NO_UNNEST` Hint 用来关闭取消嵌套的操作。 + +以下是 `NO_UNNEST` Hint 的语法: + +```javascript +/*+ NO_UNNEST [ ( @ queryblock ) ] */ +``` + + + +示例如下: + +```javascript +SELECT /*+no_unnest(@qb1)*/AVG(t1.c) +FROM t1 WHERE t1.b >= + (SELECT /*+qb_name(qb1)*/AVG(t2.b) + FROM t2) + WHERE t1.a = t2.a); +``` + + + +PLACE_GROUP_BY Hint +------------------------------- + +`PLACE_GROUP_BY` Hint指示优化器采用 GROUP BY 位置替换规则,此时优化器不考虑转换之后的代价增大。 + +以下是`PLACE_GROUP_BY` Hint的语法: + +```javascript +/*+ PLACE_GROUP_BY [ ( @ queryblock ) ] */ +``` + + + +示例如下: + +```javascript +SELECT /*+place_group_by*/SUM(t1.c),SUM(t2.c) FROM t1, t2 +WHERE t1.a = t2.a AND t1.b > 10 AND t2.b > 10 +GROUP BY t1.a; +``` + + + +NO_PLACE_GROUP_BY Hint +---------------------------------- + +`NO_PLACE_GROUP_BY` Hint 用来关闭 GROUP BY 位置替换转换。 + +以下是`NO_PLACE_GROUP_BY` Hint的语法: + +```javascript +/*+ NO_PLACE_GROUP_BY [ ( @ queryblock ) ] */ +``` + + + +示例如下: + +```javascript +SELECT /*+no_place_group_by*/SUM(t1.c),SUM(t2.c) FROM t1, t2 +WHERE t1.a = t2.a AND t1.b > 10 AND t2.b > 10 +GROUP BY t1.a; +``` + + + +NO_PRED_DEDUCE Hint +------------------------------- + +`NO_PRED_DEDUCE` Hint 用来指示优化器不是用谓词推导转换规则。 + +以下是`NO_PRED_DEDUCE` Hint的语法: + +```javascript +/*+ NO_PRED_DEDUCE [ ( @ queryblock ) ] */ +``` + + + +示例如下: + +```javascript +SELECT /*+no_pred_deduce(@qb1)*/ * +FROM ( + SELECT /*+no_merge qb_name(qb1)*/ t1.a, t2.b + FROM t1, t2 + WHERE t1.a = t2.a) v, t3 +WHERE t3.a = 1 AND t3.a = v.a; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/7.other-hints.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/7.other-hints.md new file mode 100644 index 000000000..4d1ad3d6d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/2.hint-list/7.other-hints.md @@ -0,0 +1,261 @@ +其他 Hint +============================ + + + +QB_NAME Hint +------------------------ + +使用 `QB_NAME` Hint 来定义查询块的名称。然后,可以在外部查询的 Hint 中使用这个名称,也可以在内联视图的 Hint 中使用这个名称,从而影响查询在被命名查询块中的表上的执行。更多关于查询块名称的信息,请参阅文档 [Hint 概述](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/4.Hint/1.hint-overview.md) 中的在 Hint 中定义查询块。 + +以下是 `QB_NAME` Hint 的语法: + +```javascript +/*+ QB_NAME ( queryblock ) */ +``` + + + +如果两个或多个查询块具有相同的名称,或者同一个查询块两次被 Hint 指定了不同的名称,那么优化器将忽略所有引用该查询块的名称和 Hint。未使用 `QB_NAME` Hint 命名的查询块具有由系统生成的惟一名称。这些名称可以显示在计划表中,也可以在查询块中的其他 Hint 中使用。 + +以下是 `QB_NAME` Hint 的示例: + +```javascript +SELECT /*+ QB_NAME(qb) FULL(@qb e) */ employee_id, last_name +FROM employees e +WHERE last_name = 'Smith'; +``` + + + +READ_CONSISTENCY Hint +--------------------------------- + +`READ_CONSISTENCY` Hint 指示服务器去指定某条 SQL 所读取的表模式为弱一致(指定参数 + +`WEAK`)或强一致性(指定参数 `STRONG`)。 + +以下是 `READ_CONSISTENCY` Hint 的语法: + +```javascript +/*+ READ_CONSISTENCY(WEAK[STRONG]) */ +``` + + + +示例如下: + +```javascript +SELECT /*+ READ_CONSISTENCY(WEAK) */ * +FROM employees +WHERE employees.department_id = 1001; +``` + + + +FROZEN_VERSION Hint +------------------------------- + +`FROZEN_VERSION` Hint 指示服务器读取某个基线数据的版本。 + +以下是 `FROZEN_VERSION` Hint 的语法: + +```javascript +/*+ FROZEN_VERSION (intnum) */ +``` + + + +示例如下: + +```javascript +SELECT /*+ FROZEN_VERSION(1000) */ * +FROM employees e +WHERE e.department_id = 1001; +``` + + + +QUERY_TIMEOUT Hint +------------------------------ + +`QUERY_TIMEOUT` Hint 指示服务器设定某条 SQL 执行时的超时时间,单位为微妙。 + +以下是 `QUERY_TIMEOUT` Hint 的语法: + +```javascript +/*+ QUERY_TIMEOUT (intnum) */ +``` + + + +示例如下,当该查询 1 秒之内未执行完该语句即返回超时错误: + +```javascript +SELECT /*+ QUERY_TIMEOUT(1000000) */ * +FROM employees e +WHERE e.department_id = 1001; +``` + + + +LOG_LEVEL Hint +-------------------------- + +`LOG_LEVEL` Hint 指示服务器运行某句 SQL 时采用何种日志级别来执行。 + +以下是 `LOG_LEVEL` Hint 的语法: + +```javascript +/*+ LOG_LEVEL ([']log_level[']) */ +``` + + + +以下示例采用 `DEBUG` 日志级别来执行该 SQL 语句: + +```javascript +SELECT /*+ LOG_LEVEL(DEBUG) */ * +FROM employees e +WHERE e.department_id = 1001; +``` + + + +USE_PLAN_CACHE Hint +------------------------------- + +`USE_PLAN_CACHE` Hint 指示服务器执行某条 SQL 时是否要在计划缓存机制下运行,参数 `NONE` 为不执行计划缓存机制,参数 `DEFAULT` 表示按照服务器本身的设置来决定是否执行计划缓存机制。 + +以下是 `USE_PLAN_CACHE` Hint 的语法: + +```javascript +/*+ USE_PLAN_CACHE (NONE[DEFAULT]) */ +``` + + + +示例如下,以下语句不执行计划缓存机制: + +```javascript +SELECT /*+ USE_PLAN_CACHE(NONE) */ * +FROM employees e +WHERE e.department_id = 1001; +``` + + + +TRANS_PARAM Hint +---------------------------- + +`TRANS_PARAM` Hint 指示服务器执行事务时是否要按照参数 `param` 指定的参数来执行,现在支持的参数只有事务层面的提前解行锁 `FORCE_EARLY_LOCK_FREE` 参数,`FORCE_EARLY_LOCK_FREE` 的值为 **TRUE** 时表示支持, **FALSE** 表示不支持。注意这里的参数名和参数值要用单引号(' ')引起来,当参数的值为数值型时可以不用引号引起来。 + +以下是 `TRANS_PARAM` Hint 的语法: + +```javascript +/*+ TRANS_PARAM ['param' , 'param_value'] */ +``` + + + +示例如下: + +```javascript +SELECT /*+ TRANS_PARAM('FORCE_EARLY_LOCK_FREE' 'TRUE') */ * +FROM employees e +WHERE e.department_id = 1001; +``` + + + +TRACING Hint +------------------------ + +`TRACING` Hint 指示服务器对某些执行计划中的算子采用 `TRACING` 跟踪。 + +以下是 `TRACING` Hint 的语法: + +```javascript +/*+ TRACING(TRACING_NUM_LIST)*/ +``` + + + +示例如下: + +```javascript +SELECT /*+ TRACING(1) */ * +FROM employees e +WHERE e.department_id = 1001; +``` + + + +STAT Hint +--------------------- + +`STAT` Hint 指示对某些执行计划中的算子采用 `STAT` 显示信息。 + +以下是 `STAT` Hint 的语法: + +```javascript +/*+ STAT(TRACING_NUM_LIST) */ +``` + + + +示例如下: + +```javascript +SELECT /*+ STAT(1) */ * +FROM employees e +WHERE e.department_id = 1001; +``` + + + +TOPK Hint +--------------------- + +`TOPK` Hint 指示服务器设置模糊查询的精度和最小行数。其中参数 `PRECSION` 的值为整型,取值范围为 0\~100,表示执行模糊查询时的行数百分比,参数 `MINIMUM_ROWS` 用来指定最小的返回行数。 + +以下是 `TOPK` Hint 的语法: + +```javascript +/*+ TOPK(PRECISION MINIMUM_ROWS) */ +``` + + + +示例如下: + +```javascript +SELECT /*+ TOPK(1,10) */ * +FROM employees e +WHERE e.department_id = 1001; +``` + + + +TRACE_LOG Hint +-------------------------- + +`TRACE_LOG` Hint 指示服务器收集跟踪日志(Trace log),收集的跟踪日志(Trace log)在运行 `SHOW TRACE` 命令时展示。 + +以下是 `TRACE_LOG` Hint 的语法: + +```javascript +/*+ TRACE_LOG */ +``` + + + +示例如下: + +```javascript +SELECT /*+ TRACE_LOG */ * +FROM employees e +WHERE e.department_id = 1001; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/7.database-objects/1.schema-object.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/7.database-objects/1.schema-object.md new file mode 100644 index 000000000..a1f8a03ce --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/7.database-objects/1.schema-object.md @@ -0,0 +1,22 @@ +Schema 对象 +========= + +Schema 是数据的逻辑结构和 Schema 对象的集合。每个 OceanBase 数据库的使用者都拥有一个 Schema,并且Schema 拥有和使用者相同的名字。 + +可以使用 SQL 来创建和处理用户数据库对象,并且 Schema 对象有以下类型: + +* 约束 Constraints +* 数据库链接 Database links +* 数据库触发器 Database triggers +* 索引 Indexes +* 对象表 Object tables +* 对象类型 Object types +* 对象视图 Object views +* 包 Packages +* 序列 Sequences +* 存储函数 Stored functions +* 存储过程 Stored procedures +* 同义词 Synonyms +* 表 Tables +* 视图 Views + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/1.overview-of-database-object-naming-conventions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/1.overview-of-database-object-naming-conventions.md new file mode 100644 index 000000000..8d53a99ba --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/1.overview-of-database-object-naming-conventions.md @@ -0,0 +1,12 @@ +数据库对象命名规范概述 +================================ + + + +一些数据库对象由用户可以命名的部分和用户必须命名的部分组成。例如,表或视图中的列,索引、表分区和表的子分区,表的完整性约束以及存储在包中的对象(包括程序和存储函数)。本章将讨论: + +• 数据库对象命名规则 + +• Schema 对象命名示例 + +• Schema 对象命名准则 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/2.database-object-naming-rules.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/2.database-object-naming-rules.md new file mode 100644 index 000000000..360d52515 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/2.database-object-naming-rules.md @@ -0,0 +1,117 @@ +数据库对象命名规则 +============================== + + + +数据库对象标识符 +-------------------- + +每个数据库对象都有名字。在 SQL 语句中您可以使用引用标识符和非引用标识符来命名任何数据库对象: + +* 引用标识符:以双引号 `" "` 为开头和结尾的标识符。如果使用引用标识符命名 Schema 对象,则在引用该对象时必须使用双引号。 + + + +* 非引用标识符:标识符中不包含任何标点符号。 + + + + + + +但是,数据库名称、全局数据库名称、数据库链接名称、磁盘组名称和可插入数据库(PDB)始终不区分大小写,并以大写形式存储。如果使用引用标识符为它们命名,那么引号将被忽略。 +**注意** + + + +OceanBase 并不建议您使用引用标识符来命名数据库对象。这些引用标识符在 SQL PLUS 中兼容,但是在其他数据库对象管理工具中可能不被识别。 + +标识符使用规则 +------------------- + +以下是一些适用于引用标识符和非引用标识符的规则,除非另有说明,否则以下规则对引用标识符和非引用标识符同时适用。 + +### 标识符的长度 + +标识符的长度为 1\~128 字节。 + +如果标识符包含由句点分隔的多个部分,则每个部分最长都可达 128 字节。每个句点分隔符以及旁边的引号都算作一个字节。例如以下字符串: + +```javascript +"schema"."table"."column" +``` + + + +示例名称中的三部分 **schema** 、 **table** 和 **column** 各自最长可以是 128 字节,每个引号和句点都是单字节字符,所以示例中标识符的总长度为 392 字节。 + +### 保留字做标识符 + +非引用标识符不能是 OceanBase SQL 保留字。引用标识符可以是保留字,但不建议这样做。根据您计划用于访问数据库对象的工具不同,名称可能进一步受到其他产品特定的保留字限制。 +**注意** + + + +保留字 `ROWID` 是这个规则的一个例外。不能使用大写单词 `ROWID` 作为列的名称,无论是带引号的还是不带引号的。但是,引用标识符作为列名时,不可以使用全大写单词,但是可以包含一个或多个小写字母(例如,"Rowid"或"Rowid")。 + +### 特殊含义单词做标识符 + +OceanBase 中的 SQL 语言包含了其他具有特殊含义的单词。这些词包括数据类型、Schema 名、函数名、虚拟系统表 `DUAL` 和关键字(SQL 语句中的大写单词,如 `DIMENSION`、`SEGMENT`、`ALLOCATE`、`DISABLE` 等)。这些词不是保留字,但是,OceanBase 在内部以特定的方式使用它们。因此,如果您使用这些词作为对象和对象部件的名称,SQL 语句可能会难以阅读,并可能导致不可预测的结果。尤其是不要使用 SQL 内置函数的名称作为 Schema 对象和用户自定义函数的名称。 + +### ASCII 字符做标识符 + +在数据库名称、全局数据库名称和数据库链接名称中您应该使用 ASCII 字符集中的字符,因为这些字符拥有跨不同平台和操作系统的最佳兼容性。多租户容器数据库(CDB)中的通用用户和通用角色的名称只能使用 ASCII 字符集中的字符。 + +### 密码中的字符 + +密码中可以包含多位字节的字符,如汉字或中文标点等。 + +### 标识符的开头 + +非引用标识符必须以数据库字符集中的字母字符开头。引用标识符可以以任何字符开头。 + +### 标识符中的符号 + +非引用标识符只能包含来自数据库字符集的字母数字字符和下划线(_)。但是用于数据库链接名称时可以包含句点(.)和符号 @。引用标识符可以包含任何字符、标点符号和空格。但是,引用标识符和非引用标识符都不能包含双引号或空字符(\\0)。 + +### 对象名称在名称空间中的限制 + +在同一个名称空间中,表、视图、私有同义词不能拥有相同的名称。 + +### 标识符的大小写 + +非引用标识符不区分大小写,OceanBase 将他们存储为大写。引用标识符区分大小写,所以通过将名称括在双引号里,在同一命名空间的不同对象可以拥有以下类型的名称: + +```javascript +"employees" +"Employees" +"EMPLOYEES" +``` + + + +由于非引用标识符不区分大小写,所以 OceanBase 认为以下名称是相同的,他们不能作为同一名称空间下不同对象的名字: + +```javascript +employees +EMPLOYEES +"EMPLOYEES" +``` + + + +### 大写标识符 + +存储或比较大写的标识符时,每个字符的大写形式是通过应用数据库字符集的大写规则来确定的。由对话设置 `NLS_SORT` 所设定的特定语言规则不在考虑的范围内。此行为是将 SQL 函数 `UPPER` 应用于标识符,而不是将函数 `NLS_UPPER` 应用于标识符。 + +数据库字符集的大写规则被应用到自然语言时可能产生不正确的结果。例如,德国小写字母 `ß`,它在数据库字符集大写规则中并没有对应的大写形式, 所以当含有它的标识符被转换为大写形式时它并不会被转变。 + +数据库字符集大写规则确保标识符在任何语言配置的会话中的样式是相同的。如果希望标识符在某种自然语言中看起来正确,那么可以通过引号来保留它的小写形式,或者在使用该标识符时使用对应语言上正确的大写形式。 + +### 列的名称 + +同一表或视图中的列不能具有相同的名称。但是,不同表或视图中的列可以具有相同的名称。 + +### 程序和函数的名称 + +如果同一包中的程序或函数所包含的参数的数量和数据类型不同,则它们可以具有相同的名称。在同一个包中使用不同的参数创建具有相同名称的多个过程或函数称为重载过程或函数。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/3.schema-object-naming-example.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/3.schema-object-naming-example.md new file mode 100644 index 000000000..14cef23c9 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/3.schema-object-naming-example.md @@ -0,0 +1,21 @@ +Schema 对象命名示例 +================================== + + + +以下是一些有效的 Schema 对象命名示例: + +* `last_name` + +* `horse` + +* `hr.hire_date` + +* `"EVEN THIS & THAT!"` + +* `a_very_long_and_valid_name` + + + + +这些示例都遵循了 [数据库对象命名规则](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/2.database-object-naming-rules.md) 中列出的规则。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/4.schema-object-naming-guidelines.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/4.schema-object-naming-guidelines.md new file mode 100644 index 000000000..1af960adb --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/8.database-naming-convention/4.schema-object-naming-guidelines.md @@ -0,0 +1,27 @@ +Schema 对象命名准则 +================================== + + + +以下是一些有用的用来命名对象及其部分的准则: + +* 使用完整的、描述性的、可发音的名称或众所周知的缩写。 + + + +* 使用一致的命名规则。 + + + +* 使用相同的名称来描述跨表的相同实体或属性。 + + + + + + +在命名对象时,要在简单易用和名称具有描述性的目标之间取得平衡。如果无法平衡,请选择更具描述性的名称,因为数据库中的对象可能会在很长一段时间内被使用,从现在开始十年后的用户可能难以理解名称为 **pmdd** 的表列是用来存储什么信息的,但是 **payment_due_date** 却更清楚明了。 + +使用一致的命名规则可以帮助用户理解每个表在应用程序中扮演的角色。例如,以 **fin_** 为开头命名所有属于 **FINANCE** 应用程序的表的名称。 + +使用相同的名称描述表中的相同内容。例如,雇员和部门表的部门号列其实存储的是一样的值,那么在雇员表和部门表中这一列均被命名为 **department_id** 。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/1.overview-of-database-object-references.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/1.overview-of-database-object-references.md new file mode 100644 index 000000000..70d7a2e00 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/1.overview-of-database-object-references.md @@ -0,0 +1,21 @@ +数据库对象引用概述 +============================== + + + +本章将讨论如何在 SQL 语句的上下文中引用 Schema 对象。本章包括: + +* 引用 Schema 对象 + + + +* 引用分区表和索引 + + + +* 引用对象类型属性和方法 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/2.reference-a-schema-object.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/2.reference-a-schema-object.md new file mode 100644 index 000000000..ce3e35e90 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/2.reference-a-schema-object.md @@ -0,0 +1,81 @@ +引用 Schema 对象 +================================= + + + +当在 SQL 语句中引用对象时,OceanBase 会考虑 SQL 语句的上下文并在适当的名称空间中找到该对象。找到对象后,OceanBase 执行 SQL 语句对该对象指定的操作。如果在适当的名称空间中找不到命名的对象,则返回错误。 + +引用用户的 Schema 中的对象 +----------------------------- + +以下示例说明了 OceanBase 如何解析 SQL 语句中对象的引用。 + +执行以下语句,向名为 **departments** 的表中添加了一行数据: + +```javascript +INSERT INTO departments +VALUES (280, 'ENTERTAINMENT_CLERK', 206, 1700); +``` + + + +根据 SQL 语句的上下文, **departments** 在数据库中可能是: + +* 一张在您自己 Schema 中的表 + + + +* 一个在您自己 Schema 中的视图 + + + +* 一个表或视图的专有同义词 + + + +* 一个公共同义词 + + + + + + +OceanBase 始终会先尝试在您自己的 Schema 中的名称空间里解析被引用对象,然后再考虑该 Schema 之外的名称空间。在此示例中,OceanBase 尝试解析如下: + +1. 首先,OceanBase 尝试在您自己的包含了表、视图和专用同义词的 Schema 中的名称空间里去定位对象。如果对象是专用同义词,则 OceanBase 会找到该同义词所代表的对象。该对象可以在您自己的 Schema 中,也可以在其他 Schema 中或者在另一个数据库中。该对象也可以是其他的同义词,在这种情况下,OceanBase 会找到同义词所代表的对象。 + + + +2. 如果对象在名称空间中被找到,则 OceanBase 尝试对该对象执行 SQL 语句。在此示例中,OceanBase 尝试将一行数据添加到 **departments** 中。如果此对象的类型不是该 SQL 语句所需要的类型,则 OceanBase 返回错误。在此示例中, **departments** 必须是表、视图或者可以是可以解析为表或视图的专用同义词。如果 **departments** 是序列,则 OceanBase 返回错误。 + + + +3. 如果该对象到目前为止没有在任何名称空间中被搜索到,则 OceanBase 将搜索包含公共同义词的名称空间。如果对象在包含公共同义词的名称空间中,则 OceanBase 尝试对该对象执行该语句。如果此对象的类型不是该 SQL 语句所需要的类型,则 OceanBase 返回错误,例如在此示例中,如果 **departments** 是一个代表了序列的公共同义词,那么 OceanBase 将返回错误。 + + + + + + +如果公共同义词包含任何依赖表或用户定义类型,则不能在与依赖对象相同的 Schema 中创建与同义词同名的对象。 + +反之,如果同义词没有任何依赖表或用户定义的类型,则可以在与依赖对象相同的 Schema 中创建具有相同名称的对象。OceanBase 会使所有依赖对象无效,并在下一次访问它们时重新验证它们。 + +引用其他 Schema 中的对象 +---------------------------- + +要引用您的 Schema 之外的 Schema 中的对象,需要在对象名称前添加 Schema 名称: + +```javascript +schema.object +``` + + + +例如,以下示例展示了在名为 **hr** 的 Schema 中删除表 **employees** : + +```javascript +DROP TABLE hr.employees; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/3.reference-objects-in-a-remote-database/1.create-database-link.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/3.reference-objects-in-a-remote-database/1.create-database-link.md new file mode 100644 index 000000000..2f97fc9cb --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/3.reference-objects-in-a-remote-database/1.create-database-link.md @@ -0,0 +1,66 @@ +创建数据库链接 +============================ + + + +要引用除本地数据库以外的其他数据库中的对象,需要在对象名称后加上指向该数据库的数据库链接的名称。数据库链接是一个 Schema 对象,它使 OceanBase 连接到远程数据库以访问里面的对象。 + +可以使用语句 CREATE DATABASE LINK 创建数据库链接,使用该语句时需要指定以下数据库链接的信息: + +* 租户名、用户名和密码。 + + + +* 网络地址、端口号。 + + + + + + +OceanBase 将上述信息存储在数据字典中。 + +创建链接限制 +------------------ + +1. 只支持创建 OceanBase 中的 Oracle 模式租户连接到另一个 Oracle 模式租户的数据库链接,OceanBase 目前不支持创建连接到外部 Oracle 数据库的数据库链接。 + + + +2. 一个租户可以反复创建、删除数据库链接,但最多只能同时存在 15 个数据库链接。 + + + + + + +数据库连接串格式 +-------------------- + +```javascript +user_name@tenant_name IDENTIFIED BY password HOST 'ip:port' +``` + + + +* **user_name** :用户名。 + +* **tenant_name** :租户名。 + +* **password** :密码。 + +* **ip** :网络地址。 + +* **port** :端口号。 + + + + +以下是创建数据库链接的示例: + +```javascript +CREATE DATABASE LINK my_link CONNECT TO +root@oracle IDENTIFIED BY abcdef HOST '192.168.0.0:1521'; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/3.reference-objects-in-a-remote-database/2.reference-database-links.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/3.reference-objects-in-a-remote-database/2.reference-database-links.md new file mode 100644 index 000000000..ac05ea8e7 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/3.reference-objects-in-a-remote-database/2.reference-database-links.md @@ -0,0 +1,29 @@ +引用数据库链接 +============================ + + + +当您发出包含数据库链接的 SQL 语句时,需要使用存储在数据字典中的完整数据库链接名,更多关于数据库链接名称的信息请查看文档 [创建数据库链接](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/3.reference-objects-in-a-remote-database/1.create-database-link.md)。 + +OceanBase 在连接远程数据库时,将使用数据库连接字符串访问远程数据库。使用数据库字符串、用户名和密码后连接成功,则 OceanBase 使用文档 [引用 Schema 对象](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/2.reference-a-schema-object.md) 中的规则来访问远程数据库上的指定对象,但请注意相关限制: + +1. 只能执行只读语句。 + + + +2. 只能访问表对象,不支持访问其它对象,如视图、序列等。 + + + +3. 访问表对象时必须显式指定数据库名,如:`test.t1@my_link`。 + + + +4. 不支持部分计划和算子: + + + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/4.reference-partition-table-and-indexes.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/4.reference-partition-table-and-indexes.md new file mode 100644 index 000000000..bd1860c97 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/4.reference-partition-table-and-indexes.md @@ -0,0 +1,79 @@ +引用分区表和索引 +============================= + + + +表和索引可以分区。进行分区时,这些 Schema 对象由许多称为分区的部分组成,所有这些部分都具有相同的逻辑属性。例如,表中的所有分区共享相同的列和约束定义,而索引中的所有分区共享相同的索引列。 + +分区扩展名和子分区扩展名使用户可以执行某些分区级和子分区级操作,例如,仅在一个分区或子分区上删除其中的所有行。没有扩展名称时,此类操作将要求您使用判断语句定义范围(`WHERE` 子句)。对于范围分区表和列表分区表,尝试用判断语句描述分区级操作可能会很麻烦,尤其是当范围分区键使用多个列时。对于哈希分区和子分区,使用判断语句更加困难,因为这些分区和子分区是基于系统定义的哈希函数。 + +分区扩展名使您可以像使用表一样使用分区。此方法的一个优点(对范围分区的表最有用)是,您可以通过对其他用户或角色授予(或撤消)这些视图的特权来构建分区级别的访问控制机制。要将分区用作表,需要通过从单个分区中选择数据来创建视图,然后将该视图用作表。 + +语法 +-------------- + +当在 SQL 语句的语法或轨道图中出现 `partition_extended_name` 或者 `subpartition_extended_name` 元素时,用户可以通过这两个元素指定分区扩展表名和子分区扩展表名。`partition_extended_name` 的语法: + +```javascript +PARTITION partition +| +PARTITION FOR ( partition_key_value [, partition_key_value]... ) +``` + + + +`subpartition_extended_name` 的语法: + +```javascript +SUBPARTITION subpartition +| +SUBPARTITION FOR ( subpartition_key_value [, subpartition_key_value]... ) +``` + + + +DML 语句 `INSERT`、`UPDATE` 、 `DELETE` 和 `ANALYZE` 语句需要在分区或子分区名称的周围加上括号。这个小的区别体现在 `partition_extension_clause` 元素中。在 `partition_extended_name`,`subpartition_extended_name` 和 `partition_ extension_clause` 中,可以使用 `PARTITION FOR` 和 `SUBPARTITION FOR` 子句在不使用名称的情况下引用分区。它们对任何类型的分区均有效,尤其是间隔分区。将数据插入表中时,间隔分区会根据需要被自动创建。 + +对于上述元素中各自的 `partition_key_value` 或 `subpartition_key_value` 部分,它们为每个分区键列指定一个值。对于多列分区键,需要为每个分区键指定一个值。对于复合分区,对每个分区键指定一个值后,需要继续为每个子分区键指定一个值。所有分区键值均以逗号分隔。对于间隔分区,您只能指定一个 `partition_key_value`,并且它必须是有效的 `NUMBER` 数据类型或日期时间数据类型的值。用户的 SQL 语句将在包含用户指定了值的分区或子分区上运行。 + +扩展名称的限制 +------------------- + +使用分区扩展表名和子分区扩展表名时有以下限制: + +* 名称中没有远程表:扩展分区表名和子分区扩展表名不能包含数据库链接或能转换为具有数据库链接的表的同义词。要使用远程分区和远程子分区,需要在远程站点上使用扩展表名语法创建一个视图,然后引用该远程视图。 + + + +* 名称中没有同义词:必须使用基表指定分区或子分区扩展名,不能使用同义词,视图或任何其他对象。 + + + +* 在 `PARTITION FOR` 和 `SUBPARTITION FOR` 子句中,不能指定关键字 `DEFAULT` 、`MAXVALUE` 或绑定变量为 `partition_key_value` 或 `subpartition_key_value` 的值。 + + + +* 在 `PARTITION` 和 `SUBPARTITION` 子句中,不能为分区或子分区名称指定绑定变量。 + + + + + + +示例 +-------------- + +在以下示例中, **sales** 是具有分区 **sales_q1_2000** 的分区表。以下语句创建了单个分区 **sales_q1_2000** 的视图,然后像使用表一样使用它。本示例从分区中删除了一些行: + +```javascript +/*为分区 sales_q1_2000 创建视图 Q1_2000_sales*/ +CREATE VIEW Q1_2000_sales +AS +SELECT * +FROM sales PARTITION (SALES_Q1_2000); +/*删除视图 Q1_2000_sales 中符合条件 amount_sold < 0 的值*/ +DELETE FROM Q1_2000_sales +WHERE amount_sold < 0; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/5.attributes-and-methods-of-referencing-object-types.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/5.attributes-and-methods-of-referencing-object-types.md new file mode 100644 index 000000000..16ca063e0 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/3.basic-elements-1/9.database-object-reference-method/5.attributes-and-methods-of-referencing-object-types.md @@ -0,0 +1,62 @@ +引用对象类型的属性和方法 +================================= + + + +要在 SQL 语句中引用对象类型属性或方法,必须使用表别名完全限定该引用。以下示例中样本 Schema **ob** 包含类 **cust_address_typ** 和表 **customers** , **customers** 拥有一个 **cust_address_typ** 类型的列 **cust_address** : + +```javascript +CREATE TYPE cust_address_typ + OID '82A4AF6A4CD1656DE034080020E0EE3D' +AS OBJECT + (street_address VARCHAR2(40), + postal_code VARCHAR2(10), + city VARCHAR2(30), + state_province VARCHAR2(10), + country_id CHAR(2)); +/ +CREATE TABLE customers + (customer_id NUMBER(6), + cust_first_name VARCHAR2(20) CONSTRAINT cust_fname_nn NOT NULL, + cust_last_name VARCHAR2(20) CONSTRAINT cust_lname_nn NOT NULL, + cust_address cust_address_typ, +. . . +``` + + + +在 SQL 语句中,对 **postal_code** 属性的引用必须使用表别名进行完全限定,如下所示: + +```javascript +SELECT c.cust_address.postal_code +FROM customers c; + +UPDATE customers c +SET c.cust_address.postal_code = '610000' +WHERE c.cust_address.city = 'chengdu' +AND c.cust_address.state_province = 'SICHUAN'; +``` + + + +要引用不接受参数的成员方法,必须提供空括号。例如,样本 Schema **ob** 包含一个基于 **catalog_typ** 的对象表 **category_tab** ,该表包含成员函数 `getCatalogName`。为了在 SQL 语句中调用此方法,必须提供空括号,如下所示: + +```javascript +SELECT TREAT(VALUE(c) AS catalog_typ).getCatalogName() "Catalog Type" +FROM categories_tab c +WHERE category_id = 10; +``` + + + +返回结果: + +```javascript ++----------------+ +| Catalog Type | ++----------------+ +| online catalog | ++----------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/1.operator-overview.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/1.operator-overview.md new file mode 100644 index 000000000..1996c13fb --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/1.operator-overview.md @@ -0,0 +1,89 @@ +运算符概述 +========================== + + + +运算符一般用于连接运算数或参数之类的单个数据项且返回结果。从语法上讲,运算符出现在运算数之前、之后或两个运算数之间均可。一般用特殊字符或关键字表示运算符,例如,除法运算符用斜杠(/)表示。本章讨论非逻辑(非布尔)运算符,这些运算符本身不能用作查询或子查询的 `WHERE` 或 `HAVING` 条件。 + +本章将详细介绍以下运算符: + +* 算术运算符 + + + +* 串联运算符 + + + +* 层次查询运算符 + + + +* 集合运算符 + + + + + + +一元和二元运算符 +-------------------- + +运算符可分为两大类: + +* 一元运算符:一元运算符仅对一个运算数进行运算。一元运算符常用格式: + + + + + + +```javascript +运算符 运算数 +``` + + + +* 二元运算符:二元运算符顾名思义是对两个运算数进行运算。二元运算符常用格式: + + + + + + +```javascript +运算数1 运算符 运算数2 +``` + + + +其他具有特殊格式的运算符可接受两个以上的运算数。如果为运算符提供了空运算数(NULL), 则结果始终为空。唯一不遵循此规则的是串联(\|\|)运算符。 + +运算符优先级 +------------------ + +优先级会影响 OceanBase 数据库在同一表达式中计算不同运算符的顺序。在计算包含多个运算符的表达式时,OceanBase 会先计算优先级更高的运算符,然后再计算优先级较低的运算符,优先级相等时,在表达式中从左到右对相等的运算符求值。 + +下表列出了 SQL 运算符中从高到低的优先级。同一行上列出的运算符具有相同的优先级。 + + +| 运算符 | 运算方式 | +|------------------------------------|------------------------------------------------------------------| +| +、-(作为一元运算符)、PRIOR、CONNECT_BY_ROOT | 正号、负号、层次结构中的位置。 | +| \*、/ | 乘法、除法。 | +| +、-(作为二元运算符)、\|\| | 加、减、串联。 | +| 条件表达式在数据库评估完运算符后再进行评估 | 详情请参阅文档 [SQL 条件概述](/zh-CN/11.sql-reference-oracle-mode/7.condition/1.overview-of-sql-conditions.md)。 | + + + +在以下示例中,由于乘法的优先级高于加法,因此数据库首先将 2 乘以 3,然后再将结果加到 1。 + +```javascript +1+2*3 +``` + + + +您也可以在表达式中使用括号来限制运算符优先级。OceanBase 数据库将先对括号内的表达式求值,再对括号外部的表达式求值。 + +SQL 还支持集合运算符(`UNION`、`UNION ALL`、`INTERSECT` 和 `MINUS`),集合运算符会合并查询返回的行集,而不是单个数据项。所有集合运算符都具有相同的优先级。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/2.arithmetic-operators-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/2.arithmetic-operators-1.md new file mode 100644 index 000000000..af42606c9 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/2.arithmetic-operators-1.md @@ -0,0 +1,47 @@ +算术运算符 +========================== + + + +算术运算符用来对一个或两个参数进行求反、加、减、乘和除等操作。其中一些算术运算符还可用于计算日期时间和间隔值。算术运算符的参数必须解析为数字数据类型或任何可以被数据库直接转换为数字数据类型的数据类型。 + +一元算术运算符返回的数据类型与参数的数据类型相同。对于二进制算术运算符,OceanBase 先确定表达式中数值优先级最高的参数,再将其余参数转换为该参数的数据类型。 + +下表列出了算术运算符: + + +| 运算符 | 说明 | +|------|---------------------| +| +、- | 用于表示正、负时,它们是一元运算符。 | +| +、- | 用于表示加、减时,它们是二进制运算符。 | +| \*、/ | 二进制运算符,用于表示乘、除。 | + + + +算术表达式中不能使用两个连续的负号(--)来表示双重求反或减去一个负值,因为字符 -- 在 SQL 语句中用于指定注释。可以用空格或括号分隔连续的减号。有关 SQL 语句中的注释,详细信息请参阅章节 [注释](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/6.annotation-1/1.annotation-overview.md)。 + +以下示例展示了运算符 +、- 用于表示正、负的 SQL 查询: + +```javascript +SELECT * FROM order_items WHERE quantity = -1 ORDER BY order_id, line_item_id, product_id; +SELECT * FROM employees WHERE -salary < 0 ORDER BY employee_id; +``` + + + +以下示例展示了运算符 +、- 用于表示加、减的 SQL 查询: + +```javascript +SELECT hire_date FROM employees WHERE SYSDATE - hire_date > 365 ORDER BY hire_date; +``` + + + +以下示例展示了 \*、/ 运算符表示乘、除的 SQL 查询: + +```javascript +UPDATE employees SET salary = salary * 1.1; +UPDATE employees SET salary = salary / 2; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/3.concatenate-operators.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/3.concatenate-operators.md new file mode 100644 index 000000000..ec955becc --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/3.concatenate-operators.md @@ -0,0 +1,32 @@ +串联运算符 +========================== + + + +串联运算符 \|\| 用于连接字符串和 `CLOB` 数据类型的数据。 + +连接两个字符串后会得到另一个字符串。如果两个字符串的数据类型均为 `CHAR`,则返回结果的数据类型也为 `CHAR`,并且限制为 2000 个字符。如果被合并的任一字符串的数据类型为 `VARCHAR2`,则返回结果的数据类型也为 `VARCHAR2`,并且限制为 4000 个字符。如果串联运算符两边的参数中任何一个是 `CLOB` 数据类型的值,则返回结果的数据类型为临时 `CLOB`。无论两边参数的数据类型是什么,字符串中的尾部空格都是通过串联保存的。 + +尽管 OceanBase 将长度为 0 的字符串视为空值(NULL),但是将一个带有值的操作数和另一个 0 长度字符串连接得到的结果是一个带值的操作数,因此 NULL 只能由两个值为 NULL 的字符串串联产生。但是,在将来的 OceanBase 数据库版本中,情况可能不会继续如此。要连接可能为空的表达式,请使用 NVL 函数将表达式直接转换为长度为 0 的字符串。 + +此示例创建了一个同时包含 `CHAR` 和 `VARCHAR2` 类型列的表,然后插入带有和不带有尾部空格的值,并将它们连接起来。 + +```javascript +CREATE TABLE tab1 (col1 VARCHAR2(6), col2 CHAR(10), col3 VARCHAR2(10), col4 CHAR(6)); +INSERT INTO tab1 (col1, col2, col3, col4) VALUES ('abc', 'def ', 'ghi ', 'jkl'); +SELECT col1 || col2 || col3 || col4 "Concatenation" FROM tab1; +``` + + + +返回结果: + +```javascript ++----------------------------+ +| Concatenation | ++----------------------------+ +| abcdef ghi jkl | ++----------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/4.hierarchical-query-operators-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/4.hierarchical-query-operators-1.md new file mode 100644 index 000000000..251051abb --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/4.hierarchical-query-operators-1.md @@ -0,0 +1,20 @@ +层次查询运算符 +============================ + + + +`PRIOR` 和 `CONNECT_BY_ROOT` 运算符仅在 [层次查询](/zh-CN/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/3.hierarchical-query.md) 中有效。 + +PRIOR 运算符 +--------------------- + +在层次查询中,`CONNECT BY` 条件中应该包含至少一个由 `PRIOR` 运算符限定的表达式。`PRIOR` 运算符的结果,通过使用当前行的父行计算紧随后的表达式来得到。 + +`PRIOR` 最常用在列的等值比较场景中(`PRIOR` 可以在比较符的任意一侧)。理论上,在 `CONNECT BY` 子句中也可以使用等号(=)以外的其他运算符。但是,由这些其他运算符创建的条件可能会导致循环,在这种情况下,OceanBase 在运行时会检测循环并返回错误。 + +CONNECT_BY_ROOT 运算符 +---------------------------- + +`CONNECT_BY_ROOT` 是一元运算符,仅在层次查询中有效。`CONNECT_BY_ROOT` 的参数可以是列和大部分的表达式,`CONNECT_BY_ROOT` 运算符的结果,等于使用根行的数据计算参数的值。 + +您不能在 `START WITH` 条件或 `CONNECT BY` 条件中指定此运算符。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/5.set-operators.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/5.set-operators.md new file mode 100644 index 000000000..a5fb604ca --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/5.set-operators.md @@ -0,0 +1,18 @@ +集合运算符 +========================== + + + +集合运算符将两个查询结果合并为一个结果。包含集合运算符的查询称为复合查询。 + + +| 运算符 | 返回值 | +|-----------|------------------------------------| +| UNION | 返回任意查询选择的所有不同行。 | +| UNION ALL | 返回任意查询选择的所有行,并包括所有重复项。 | +| INTERSECT | 返回两个查询都选择的所有不同行。 | +| MINUS | 返回第一个查询选择的所有不同行,但其中不包括出现在第二个查询中的行。 | + + + +关于集合运算符的更多信息和示例,请参阅查询和子查询章节中关于 UNION ALL,INTERSECT,MINUS 运算符的介绍。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/6.collation-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/6.collation-1.md new file mode 100644 index 000000000..5742b6201 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/4.operator-1/6.collation-1.md @@ -0,0 +1,49 @@ +排序规则 +==== + +排序规则(即 COLLATE 运算符)用于指定字符序,可以用于重新设定字符类型的字符序或为单个表达式指定字符序。 + +COLLATE 是后缀一元运算符,与其它一元运算符优先级相同,但是在所有前缀一元运算符之后执行。COLLATE 运算符可以应用于 VARCHAR2,CHAR,LONG,NVARCHAR 或 NCHAR 类型的表达式。 + +COLLATE 运算符后跟一个参数 collation_name,表示需要设置或使用的字符序,字符序名称包含空格时必须在名称外加双引号。 + +举例如下: + +```javascript +obclient> create table t1(c1 varchar(20)); +obclient> insert into t1 values('a'); +obclient> insert into t1 values('b'); +obclient> insert into t1 values(1); +obclient> select * from t1 order by c1 collate utf8mb4_general_ci; ++------+ +| C1 | ++------+ +| 1 | +| a | +| b | ++------+ +3 rows in set (0.00 sec) +``` + +目前支持如下排序规则: + +```javascript +obclient> show collation; ++--------------------+---------+-----+---------+----------+---------+ +| COLLATION | CHARSET | ID | DEFAULT | COMPILED | SORTLEN | ++--------------------+---------+-----+---------+----------+---------+ +| utf8mb4_general_ci | utf8mb4 | 45 | Yes | Yes | 1 | +| utf8mb4_bin | utf8mb4 | 46 | NULL | Yes | 1 | +| binary | binary | 63 | Yes | Yes | 1 | +| gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 | +| gbk_bin | gbk | 87 | NULL | Yes | 1 | +| utf16_general_ci | utf16 | 54 | Yes | Yes | 1 | +| utf16_bin | utf16 | 55 | NULL | Yes | 1 | +| utf8mb4_unicode_ci | utf8mb4 | 224 | NULL | Yes | 1 | +| utf16_unicode_ci | utf16 | 101 | NULL | Yes | 1 | +| gb18030_chinese_ci | gb18030 | 248 | Yes | Yes | 1 | +| gb18030_bin | gb18030 | 249 | NULL | Yes | 1 | ++--------------------+---------+-----+---------+----------+---------+ +11 rows in set (0.01 sec) +``` + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/1.function-overview.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/1.function-overview.md new file mode 100644 index 000000000..b684f67ef --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/1.function-overview.md @@ -0,0 +1,363 @@ +函数概述 +========================= + + + +函数与运算符相似,即给定一些数据元素作为参数的输入并返回结果。然而函数在入参形式上与运算符有比较大的区别。函数允许包含的参数数量不定,一个函数里可以有一到两个,甚至更多的参数。 + +```javascript +函数名(参数,参数,...) +``` + + + +没有任何参数的函数类似于 [伪列](/zh-CN/11.sql-reference-oracle-mode/2.pseudo-column.md)。但是,伪列通常为结果集中的每一行返回不同的值,而没有任何变量的函数通常为每一行返回相同的值。 + +关于函数 +---------------- + +OceanBase 内嵌的函数可以直接在 SQL 语句中使用。每个函数的入参传入值均有期望的数据类型,如果传入的数据类型不是期望的数据类型,则 OceanBase 会在实际执行 SQL 函数之前尝试将参数传入的数值转换为期望的数据类型。 + +函数中的空值 +------------------ + +对于绝大多数的函数当入参为空值 NULL 的时候,其返回的结果也为 NULL。这种情况下,您可以使用 `NVL` 函数返回一个非空值。例如,一张记录佣金的表的佣金列 **commission_pct** 为空值 NULL ,则表达式`NVL(commission_pct,0)` 返回 0;如果 **commission_pct** 的值不为 NULL,则返回实际的佣金值。 + +函数分类与列表 +------------------- + +在如下的函数分类列表中,每一类函数的参数和最终的函数返回值都有其特定的数据类型。 +**注意** + + + +在 SQL 语句中对 `LOB` 列使用函数时,OceanBase 数据库将在 SQL 和 PL/SQL 处理期间创建临时 `LOB` 列,并有一定的使用限制,详情信息请参考文档 [与 Oracle 兼容性对比](t1988469.html#topic-1988469)。 + +本章中函数分成了两大类: + +* **单行函数** :包括 数字函数、返回字符串的字符串函数、返回数字的字符串函数、 时间日期函数、通用比较函数、转换函数、编码解码函数和空值相关函数。 + +* **统计函数** :包括聚合函数和分析函数。 + + + + +单行函数对于被查询的表或者视图每一行均返回一个结果值,这些函数可以使用在 SQL 语句的 `SELECT`、`WHERE`、`START WITH`、`CONNECT BY`、`HAVING` 等子句当中。 + +分析函数与聚合函数,都是对行集组(一组行的集合)进行聚合计算,不同的是,聚合函数每组只能返回一个值(一行),而分析函数每组可以返回多个值(多行)。行集组又称为窗口(Window)。聚合函数通常和 `SELECT` 语句中的 `GROUP BY` 子句一起使用,使用时数据库将查询表或视图的行分为几组,并将聚合函数应用于每组行,同时为每组返回一个结果行。 + +使用分析函数时需要用特殊的关键字 `OVER` 来指定窗口。更多关于窗后函数的信息,请参阅文档 [窗口函数说明](/zh-CN/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/1.window-function-description.md)。 + +### 数字函数 + +数字函数的变量输入与函数输出结果均为数字类型,绝大部分的数字函数的返回值的数据类型为 `NUMBER`,可以精确到小数点后 38 位。一些高等代数相关函数 `COS`,`COSH`,`EXP`,`LN`,`LOG`,`SIN`,`SINH`,`SQRT`,`TAN`,`TANH` 等函数的结果精确到小数点后 36 位,其他代数相关函数 `ACOS`,`ASIN`,`ATAN` 和 `ATAN2`。其结果返回值精确到小数点后 30 位。 + + +| 函数分类 | 函数子分类 | 函数名 | 功能描述 | +|------|-------|--------------|---------------------------------------------------------| +| 单行函数 | 数字函数 | ABS | 返回指定数值表达式的绝对值(正值)的数学函数。 | +| 单行函数 | 数字函数 | ACOS | 返回以弧度表示的角,其余弦为指定的 `NUMBER` 表达式,也称为反余弦。 | +| 单行函数 | 数字函数 | ASIN | OceanBase 暂不支持。 | +| 单行函数 | 数字函数 | ATAN | OceanBase 暂不支持。 | +| 单行函数 | 数字函数 | ATAN2 | OceanBase 暂不支持。 | +| 单行函数 | 数字函数 | BITAND | 运算符按位进行"与"操作。输入和输出类型均为 `INT` 整型,且类型一致。 | +| 单行函数 | 数字函数 | CEIL | 返回值大于等于数值 `numeric_expression` 的最小整数。 | +| 单行函数 | 数字函数 | COS | OceanBase 暂不支持。 | +| 单行函数 | 数字函数 | COSH | OceanBase 暂不支持。 | +| 单行函数 | 数字函数 | EXP | 返回 e 的 numeric_expression 次幂。 | +| 单行函数 | 数字函数 | FLOOR | 返回小于等于数值 `numeric_expression` 的最大整数。 | +| 单行函数 | 数字函数 | LN | 返回以 e 为底的 `numeric_expression` 的对数。 | +| 单行函数 | 数字函数 | LOG | 返回以 `x` 为底的 `y` 的对数。 | +| 单行函数 | 数字函数 | MOD | 返回 `x` 除以 `y` 的余数。 | +| 单行函数 | 数字函数 | POWER | 返回 `x` 的 `y` 次幂。 | +| 单行函数 | 数字函数 | REMAINDER | 返回 `x` 除以 `y` 的余数。 | +| 单行函数 | 数字函数 | ROUND | 返回 `numberic` 四舍五入后的值。 | +| 单行函数 | 数字函数 | SIGN | 返回数字 `n` 的符号,大于 0 返回 1,小于 0 返回 -1 ,等于 0 返回 0。 | +| 单行函数 | 数字函数 | SIN | OceanBase 暂不支持。 | +| 单行函数 | 数字函数 | SINH | OceanBase 暂不支持。 | +| 单行函数 | 数字函数 | SQRT | 返回 `n` 的平方根。 | +| 单行函数 | 数字函数 | TAN | OceanBase 暂不支持。 | +| 单行函数 | 数字函数 | TANH | OceanBase 暂不支持。 | +| 单行函数 | 数字函数 | TRUNC | 返回 `numeric` 按精度 `precision` 截取后的值。 | +| 单行函数 | 数字函数 | WIDTH_BUCKET | OceanBase 暂不支持。 | + + + +### 返回字符串的字符串函数 + +函数的返回值的最大长度受数据类型的影响,比如:函数的返回值的数据类型是 `VARCHAR2`,但是返回值实际的大小超过了 `VARCHAR2` 数据类型的最大限制,此时 OceanBase 数据库会对结果进行截断处理并返回,但是在客户端上并不会显示提示。 +**注意** + + + +如果返回值的数据类型是 `CLOB`,当返回值长度超过了最大限制时,OceanBase 不会返回数据且显示错误提示。 + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|-------------|----------------|----------------------------------------------| +| 单行函数 | 返回字符串的字符串函数 | CHR | 将 `n` 转换为等价的一个或多个字符返回,且返回值与当前系统的字符集相关。 | +| 单行函数 | 返回字符串的字符串函数 | CONCAT | 连接两个字符串。 | +| 单行函数 | 返回字符串的字符串函数 | INITCAP | 返回字符串并将字符串中每个单词的首字母大写,其他字母小写。 | +| 单行函数 | 返回字符串的字符串函数 | LOWER | 将字符串全部转为小写。 | +| 单行函数 | 返回字符串的字符串函数 | LPAD | 在字符串 `c1` 的左边用字符串 `c2` 填充,直到长度为 `n` 时为止。 | +| 单行函数 | 返回字符串的字符串函数 | LTRIM | 删除左边出现的字符串。 | +| 单行函数 | 返回字符串的字符串函数 | REGEXP_REPLACE | 用于正则表达式替换。 | +| 单行函数 | 返回字符串的字符串函数 | REGEXP_SUBSTR | OceanBase 暂不支持。 | +| 单行函数 | 返回字符串的字符串函数 | REPLACE | 将字符表达式值中,部分相同字符串,替换成新的字符串。 | +| 单行函数 | 返回字符串的字符串函数 | RPAD | 在字符串 `c1` 的右边用字符串 `c2` 填充,直到长度为 `n` 时为止。 | +| 单行函数 | 返回字符串的字符串函数 | RTRIM | 删除右边出现的字符串,此函数对于格式化查询的输出非常有用。 | +| 单行函数 | 返回字符串的字符串函数 | SUBSTR | 截取子字符串。其中多字节符(汉字、全角符等)按 1 个字符计算。 | +| 单行函数 | 返回字符串的字符串函数 | TRANSLATE | 将字符表达式值中,指定字符替换为新字符。多字节符(汉字、全角符等),按 1 个字符计算。 | +| 单行函数 | 返回字符串的字符串函数 | TRIM | 删除一个字符串的开头或结尾(或两者)的字符。 | +| 单行函数 | 返回字符串的字符串函数 | UPPER | 将字符串全部转为大写。 | + + + +### 返回数字的字符串函数 + + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|------------|--------------|------------------------------| +| 单行函数 | 返回数字的字符串函数 | ASCII | 返回字符表达式最左端字符的 ASCII 码值。 | +| 单行函数 | 返回数字的字符串函数 | INSTR | 在一个字符串中搜索指定的字符,返回发现指定的字符的位置。 | +| 单行函数 | 返回数字的字符串函数 | LENGTH | 返回字符串的长度。 | +| 单行函数 | 返回数字的字符串函数 | REGEXP_COUNT | OceanBase 暂不支持。 | +| 单行函数 | 返回数字的字符串函数 | REGEXP_INSTR | OceanBase 暂不支持。 | + + + +### 时间日期函数 + +时间日期函数支持的入参数据类型有三类:日期时间 (`DATE`)、时间戳 (`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`),以及间隔 (`INTERVAL DAY TO SECOND`、`INTERVAL YEAR TO MONTH`) + +仅支持 `DATE` 数据类型入参的函数列表:`ADD_MONTHS`、`CURRENT_DATE, LAST_DAY`、`NEW_TIME` 和 `NEXT_DAY`。 + +如果对于以上函数,您尝试给入的是 `TIMESTAMP` 类型的数据,OceanBase 内部会先进行隐式数据类型转换后带入函数进行运算,并返回 `DATE` 类型的返回值。 + +在使用时间函数前,建议执行 `SELECT * FROM NLS_DATABASE_PARAMETERS` 查看当前的 NLS 格式: + +```unknow +obclient> SELECT * FROM NLS_DATABASE_PARAMETERS; ++-------------------------+------------------------------+ +| PARAMETER | VALUE | ++-------------------------+------------------------------+ +| NLS_DATE_FORMAT | DD-MON-RR | +| NLS_TIMESTAMP_FORMAT | YYYY-MM-DD HH24:MI:SS | +| NLS_TIMESTAMP_TZ_FORMAT | DD-MON-RR HH.MI.SSXFF AM TZR | +| NLS_TERRITORY | AMERICA | +| NLS_SORT | BINARY | +| NLS_COMP | BINARY | +| NLS_CHARACTERSET | AL32UTF8 | +| NLS_NCHAR_CHARACTERSET | AL16UTF16 | +| NLS_DATE_LANGUAGE | AMERICAN | +| NLS_LENGTH_SEMANTICS | BYTE | +| NLS_NCHAR_CONV_EXCP | FALSE | +| NLS_CALENDAR | GREGORIAN | +| NLS_NUMERIC_CHARACTERS | ., | ++-------------------------+------------------------------+ +13 rows in set (0.05 sec) +``` + + + +如果与文中示例的显示格式不一致,可以执行如下命令更改格式: + +```unknow +obclient>ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'; +Query OK, 0 rows affected (0.00 sec) + +obclient>ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF'; +Query OK, 0 rows affected (0.00 sec) +/*将返回值中秒的小数位设置为 9 位*/ + +obclient> ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF TZR TZD'; +Query OK, 0 rows affected (0.00 sec) +``` + + +**注意** + + + +* `MONTHS_BETWEEN` 返回值为 1 个数字。 + + + +* `ROUND` 和 `TRUNC` 并不能进行隐式转换,必须传输 `DATE` 类型的数值,否则会报错。 + + + + + + +剩余的函数对于三种参数数据类型均可以支持,且返回和入参同样的数据类型。 + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|-----------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 单行函数 | 时间日期函数 | ADD_MONTHS | 返回在日期 `date` 基础上 `n` 个月后的日期值,如果 `n` 的值为负数则返回日期 `date` 基础上 `n` 个月前的日期值(`date` 减去 `n` 个月)。 | +| 单行函数 | 时间日期函数 | CURRENT_DATE | 返回当前会话时区中的当前日期。 | +| 单行函数 | 时间日期函数 | CURRENT_TIMESTAMP | 返回 `TIMESTAMP WITH TIME ZONE` 数据类型的当前会话时区中的当前日期,返回值中包含当前的时区信息。 | +| 单行函数 | 时间日期函数 | DBTIMEZONE | 返回当前数据库实例的时区,在 OceanBase 中数据库时区恒为+00:00,且不支持修改。 | +| 单行函数 | 时间日期函数 | EXTRACT (datetime) | 从指定的时间字段或表达式中抽取年、月、日、时、分、秒等元素。 | +| 单行函数 | 时间日期函数 | FROM_TZ | 将一个 `TIMSTAMP` 数据类型的值和时区信息拼成一个 `TIMESTAMP WITH TIME ZONE` 数据类型的时间值。 | +| 单行函数 | 时间日期函数 | LAST_DAY | 返回日期 `date` 所在月份的最后一天的日期。 | +| 单行函数 | 时间日期函数 | LOCALTIMESTAMP | 返回当前会话时区中的当前日期,返回 `TIMESTAMP` 数据类型的值。 | +| 单行函数 | 时间日期函数 | MONTHS_BETWEEN | 返回返回参数 `date1` 到 `date2` 之间的月数。 | +| 单行函数 | 时间日期函数 | NEW_TIME | OceanBase 暂不支持。 | +| 单行函数 | 时间日期函数 | NEXT_DAY | 返回日期 `d1` 的下一周中 `c1`(星期值)所在的日期值。 | +| 单行函数 | 时间日期函数 | NUMTODSINTERVAL | 把参数 `n` 转为以参数 `interval_unit` 为单位的 `INTERVAL DAY TO SECOND` 数据类型的值。 | +| 单行函数 | 时间日期函数 | NUMTOYMINTERVAL | 把参数 `n` 转为以 `interval_unit` 为单位的 `INTERVAL YEAR TO MONTH` 数据类型的值。 | +| 单行函数 | 时间日期函数 | ROUND (date) | 返回以参数 `fmt` 为单位距离的离指定日期 `date` 最近的日期时间值。 | +| 单行函数 | 时间日期函数 | SESSIONTIMEZONE | 返回当前会话时区。 | +| 单行函数 | 时间日期函数 | SYS_EXTRACT_UTC | 返回与指定时间相对应的的标准 UTC 时间。 | +| 单行函数 | 时间日期函数 | SYSDATE | 返回当前日期。 | +| 单行函数 | 时间日期函数 | SYSTIMESTAMP | 返回系统当前日期,返回值的秒的小数位包含 6 位精度,且包含当前时区信息。 | +| 单行函数 | 时间日期函数 | TO_CHAR (datetime) | 将 `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 等数据类型的值按照参数 `fmt` 指定的格式转换为 `VARCHAR2` 数据类型的值。 | +| 单行函数 | 时间日期函数 | TO_DSINTERVAL | 将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL DAY TO SECOND` 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。 | +| 单行函数 | 时间日期函数 | TO_TIMESTAMP | 将字符串转换为 `TIMESTAMP` 数据类型。 | +| 单行函数 | 时间日期函数 | TO_TIMESTAMP_TZ | 将字符串转换为 `TIMESTAMP WITH TIME ZONE` 数据类型,包含时区信息。 | +| 单行函数 | 时间日期函数 | TO_YMINTERVAL | 将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或`NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL YEAR TO MONTH` 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。 | +| 单行函数 | 时间日期函数 | TRUNC (date) | 返回以参数 `fmt` 为单位距离的离指定日期 `date` 最近的日期时间值,并且返回的日期值在 `date` 之前。 | +| 单行函数 | 时间日期函数 | TZ_OFFSET | 返回时区 `n` 的时区偏移量。时区偏移量是指与格林尼治标准时间 GMT 的差(小时和分钟)。 | + + + +### 通用比较函数 + +可以通过本类别函数快速的在集合中寻找到最大值和最小值。 + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|-----------|----------|--------------------| +| 单行函数 | 通用比较函数 | GREATEST | 返回一个或多个表达式列表中的最大值。 | +| 单行函数 | 通用比较函数 | LEAST | 返回一个或多个表达式列表中的最小值。 | + + + +### 转换函数 + +可以通过本类型的函数将原本的数据类型转换为另外一种数据类型。 + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|-----------|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +| 单行函数 | 转换函数 | ASCIISTR | OceanBase 暂不支持。 | +| 单行函数 | 转换函数 | BIN_TO_NUM | OceanBase 暂不支持。 | +| 单行函数 | 转换函数 | CHARTOROWID | OceanBase 暂不支持。 | +| 单行函数 | 转换函数 | HEXTORAW | 将 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型中包含十六进制数字的字符转换为 RAW 数据类型。 | +| 单行函数 | 转换函数 | RAWTOHEX | 将二进制数转换为一个相应的十六进制表示的字符串。 | +| 单行函数 | 转换函数 | TO_BINARY_DOUBLE | 返回一个双精度的 64 位浮点数. | +| 单行函数 | 转换函数 | TO_BINARY_FLOAT | 返回一个单精度的 32 位浮点数。 | +| 单行函数 | 转换函数 | TO_CHAR (character) | 将 `NCHAR`、`NVARCHAR2` 或 `CLOB` 数据转换为数据库字符集。 | +| 单行函数 | 转换函数 | TO_CHAR (datetime) | 将 `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 等数据类型的值按照参数 `fmt` 指定的格式转换为 `VARCHAR2` 数据类型的值。 | +| 单行函数 | 转换函数 | TO_CHAR (number) | 将 `NUMBER`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 类型的数值 `n` 按照指定数值格式 `fmt` 转换为 `varchar2` 数据类型的值。 | +| 单行函数 | 转换函数 | TO_DATE | 将 `CHAR`、`VARCHAR`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符转换为日期数据类型的值。 | +| 单行函数 | 转换函数 | TO_DSINTERVAL | 将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL DAY TO SECOND` 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。 | +| 单行函数 | 转换函数 | TO_NUMBER | 将 `expr` 转换为数值数据类型的值。 | +| 单行函数 | 转换函数 | TO_TIMESTAMP | 将字符串转换为 `TIMESTAMP` 数据类型。 | +| 单行函数 | 转换函数 | TO_TIMESTAMP_TZ | 将字符串转换为 `TIMESTAMP WITH TIME ZONE` 数据类型,包含时区信息。 | +| 单行函数 | 转换函数 | TO_YMINTERVAL | 将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL YEAR TO MONTH` 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。 | + + + +### 编码解码函数 + +可以通过本类型的函数在 OceanBase 数据库中实现数据的编码解密需求。 + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|-----------|----------|------------------| +| 单行函数 | 编码解码函数 | DECODE | 会根据条件返回相应值。 | +| 单行函数 | 编码解码函数 | ORA_HASH | 获取对应表达式的 HASH 值。 | +| 单行函数 | 编码解码函数 | VSIZE | 返回 `X` 的字节大小数。 | + + + +### 空值相关函数 + + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|-----------|----------|--------------------------------------------------------------------------------------------------------------------------------| +| 单行函数 | 空值相关函数 | COALESCE | 返回参数列表中第一个非空表达式,必须指定最少两个参数。 | +| 单行函数 | 空值相关函数 | LNNVL | 判断条件中的一个或者两个操作数是否为 `NULL`。 | +| 单行函数 | 空值相关函数 | NULLIF | OceanBase 暂不支持。 | +| 单行函数 | 空值相关函数 | NVL | 从两个表达式返回一个非 NULL 值。如果 `expr1` 与 `expr2` 的结果皆为 NULL 值,则 NVL 函数返回 NULL。 | +| 单行函数 | 空值相关函数 | NVL2 | 根据表达式是否为空,返回不同的值。如果 `expr1` 不为空,则返回 `expr2` 的值,如果 `expr1` 为空,则返回 `expr3` 的值。`expr2` 和 `expr3` 类型不同的话,`expr3` 会转换为 `expr1` 的类型。 | + + + +### 环境相关函数 + +本分类的函数主要提供会话或者租户实例相关的环境信息。 + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|-----------|-------------|-----------------| +| 单行函数 | 环境相关函数 | SYS_CONTEXT | OceanBase 暂不支持。 | +| 单行函数 | 环境相关函数 | UID | OceanBase 暂不支持。 | +| 单行函数 | 环境相关函数 | USER | OceanBase 暂不支持。 | + + + +### 聚合函数 + + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|-----------|-----------------------|-----------------------------------------------------------| +| 统计函数 | 聚合函数 | AVG | 返回数值列的平均值。 | +| 统计函数 | 聚合函数 | COUNT | 用于查询参数 `expr` 的行数。 | +| 统计函数 | 聚合函数 | SUM | 返回参数中指定列的和。 | +| 统计函数 | 聚合函数 | GROUPING | OceanBase 暂不支持。 | +| 统计函数 | 聚合函数 | MAX | 返回参数中指定的列中的最大值。 | +| 统计函数 | 聚合函数 | MIN | 返回参数中指定列的最小值。 | +| 统计函数 | 聚合函数 | LISTAGG | 用于列转行,`LISTAGG` 对 `ORDER BY` 子句中指定的每个组内的数据进行排序,然后合并度量列的值。 | +| 统计函数 | 聚合函数 | ROLLUP | 在数据统计和报表生成过程中,它可以为每个分组返回一个小计,同时为所有分组返回总计。 | +| 统计函数 | 聚合函数 | STDDEV | 用于计算总体标准差。 | +| 统计函数 | 聚合函数 | STDDEV_POP | 计算总体标准差。 | +| 统计函数 | 聚合函数 | STDDEV_SAMP | 计算样本标准差。 | +| 统计函数 | 聚合函数 | VARIANCE | 返回参数指定列的方差。 | +| 统计函数 | 聚合函数 | APPROX_COUNT_DISTINCT | 计算某一列去重后的行数,返回的值是一个近似值,该函数可以进一步用于计算被引用的列的选择性。 | + + + +### 分析函数 + + + +| **函数分类** | **函数子分类** | **函数名** | **功能描述** | +|----------|-----------|-----------------|------------------------------------------------------------------------------------| +| 统计函数 | 分析函数 | AVG | 返回数值列的平均值。 | +| 统计函数 | 分析函数 | COUNT | 用于查询参数 `expr` 的行数。 | +| 统计函数 | 分析函数 | CUME_DIST | 计算一个值在一组值中的累积分布。 | +| 统计函数 | 分析函数 | DENSE_RANK | 计算有序行组中行的秩,并将秩作为 `NUMBER` 返回。 | +| 统计函数 | 分析函数 | MAX | 返回参数中指定的列中的最大值。 | +| 统计函数 | 分析函数 | MIN | 返回参数中指定列的最小值。 | +| 统计函数 | 分析函数 | SUM | 返回参数中指定列的和。 | +| 统计函数 | 分析函数 | FIRST_VALUE | 返回有序值中的第一个值。 | +| 统计函数 | 分析函数 | LAG | 提供对多行表的访问,而不需要自连接。 | +| 统计函数 | 分析函数 | LAST_VALUE | 返回一组有序值中的最后一个值。 | +| 统计函数 | 分析函数 | LEAD | 它提供了对表多行的访问,而无需进行自我连接。给定从查询返回的一些列行和光标的位置,`LEAD` 提供超出该位置的物理偏移量的行的访问。 | +| 统计函数 | 分析函数 | LISTAGG | 用于列转行。 | +| 统计函数 | 分析函数 | NTH_VALUE | 返回 `analytic_clause` 定义的窗口中第 `n` 行的 `measure_expr` 值。 | +| 统计函数 | 分析函数 | NTILE | 将有序数据集划分为 `expr` 指示的若干桶,并为每一行分配适当的桶号。 | +| 统计函数 | 分析函数 | PERCENT_RANK | 类似于 `CUME_DIST`(累积分布)函数。 它的返回值范围为 0\~1。任何集合中的第一行的`PERCENT_RANK` 函数为 0,返回值为 NUMBER。 | +| 统计函数 | 分析函数 | SUM | 返回参数中指定列的和。 | +| 统计函数 | 分析函数 | RANK | 基于 `OVER` 子句中的 `ORDER BY` 表达式确定一组值的排名。 | +| 统计函数 | 分析函数 | RATIO_TO_REPORT | 计算一个值与一组值之和的比率。 | +| 统计函数 | 分析函数 | ROW_NUMBER | 为应用它的每一行分配一个唯一的数字。 | +| 统计函数 | 分析函数 | STDDEV | 用于计算总体标准差。 | +| 统计函数 | 分析函数 | STDDEV_POP | 计算总体标准差。 | +| 统计函数 | 分析函数 | STDDEV_SAMP | 计算样本标准差。 | +| 统计函数 | 分析函数 | VARIANCE | 返回参数指定列的方差。 | + + + +更多信息 +---------------- + +分析函数中的关键字 `OVER`,请参阅 [窗口函数说明](/zh-CN/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/1.window-function-description.md)。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/1.ABS.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/1.ABS.md new file mode 100644 index 000000000..3b43216a9 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/1.ABS.md @@ -0,0 +1,56 @@ +ABS +======================== + + + +`ABS` 函数是返回指定数值表达式的绝对值(正值)的数学函数。`ABS` 将负值更改为正值,对零或正值没有影响。 + +语法 +-------------- + +```javascript +ABS (numeric_expression) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------------|-----------------------------------------------------------------------| +| numeric_expression | 精确数值或近似数值数据类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)的表达式。 | + + + +返回类型 +---------------- + +返回与 `numeric_expression` 相同的类型。 + +示例 +-------------- + +本示例显示了对三个不同数字使用 `ABS` 函数所得的结果。 + +执行以下语句: + +```javascript +SELECT ABS(-1.0), ABS(0.0), ABS(1.0), ABS(1.666) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-----------+----------+----------+------------+ +| ABS(-1.0) | ABS(0.0) | ABS(1.0) | ABS(1.666) | ++-----------+----------+----------+------------+ +| 1 | 0 | 1 | 1.666 | ++-----------+----------+----------+------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/10.POWER.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/10.POWER.md new file mode 100644 index 000000000..59b0b35e4 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/10.POWER.md @@ -0,0 +1,56 @@ +POWER +========================== + + + +`POWER` 函数返回 `x` 的 `y` 次幂。 + +语法 +-------------- + +```javascript +POWER (x, y) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-----|-----------------------------------------------------------------------| +| x,y | `x` 和 `y` 为数值型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)表达式。 | + + + +返回类型 +---------------- + +当参数为 `BINARY_FLOAT` 和 `BINARY_DOUBLE` 数据类型时,返回类型为 `BINARY_DOUBLE`,其他情况下返回类型为 `NUMBER`。 + +示例 +-------------- + +此示例显示了对三组不同数字使用 `POWER` 函数所得的结果。 + +执行以下语句: + +```javascript +SELECT POWER(2,2), POWER(1.5,0), POWER(20, -1) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------+--------------+--------------+ +| POWER(2,2) | POWER(1.5,0) | POWER(20,-1) | ++------------+--------------+--------------+ +| 4 | 1 | .05 | ++------------+--------------+--------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/11.REMAINDER.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/11.REMAINDER.md new file mode 100644 index 000000000..9b3550a17 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/11.REMAINDER.md @@ -0,0 +1,63 @@ +REMAINDER +============================== + + + +`REMAINDER` 函数返回 `x` 除以 `y` 的余数。 +**注意** + + + +与 MOD 函数的区别为: + +在用 `REMAINDER (x,y)` 和 `MOD (x,y)` 函数在进行运算时,都用了一个公式 result=x-y\*(x/y),区别在于计算 x/y 时的处理方式不同。在 `REMAINDER (x,y)` 函数中,采用 `ROUND(x/y)`,而在 `MOD (x,y)` 函数中采用 `FLOOR(x/y)`。在`REMAINDER` 函数中,当 `ROUND(x/y)` 的参数 x/y 的值的小数部分恰好为 0.5 时,如果 x/y 的值的整数部分为偶数,不向前一位进位,当 x/y 的值的整数部分为奇数,向前一位进位。例如,`ROUND(1.5)`=2、`ROUND(2.5)`=2、`ROUND(3.5)`=4、`ROUND(4.5)`=4。 + +语法 +-------------- + +```javascript +REMAINDER (x, y) +``` + + + +参数 +-------------- + + + +| **参数** | **说明** | +|--------|-----------------------------------------------------------------------| +| x,y | `x` 和 `y` 为数值型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)表达式。 | + + + +返回类型 +---------------- + +返回类型与数值优先级高的参数的数据类型相同。 + +示例 +-------------- + +此示例显示了使用 `MOD` 以及 `REMAINDER` 函数计算 1.5/1 的余数的结果,请注意两个函数的区别。 + +执行以下语句: + +```javascript +SELECT MOD(1.5,1), REMAINDER(1.5,1) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------+------------------+ +| MOD(1.5,1) | REMAINDER(1.5,1) | ++------------+------------------+ +| .5 | -.5 | ++------------+------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/12.ROUND.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/12.ROUND.md new file mode 100644 index 000000000..bb62ddb7e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/12.ROUND.md @@ -0,0 +1,57 @@ +ROUND +========================== + + + +`ROUND` 函数返回参数 `numeric` 四舍五入后的值。 + +语法 +-------------- + +```javascript +ROUND (numeric[,decimal]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| numeric | 数值型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)表达式。 | +| decimal | 如果 `decimal` 大于等于 0 则将 `numeric` 四舍五入到 `decimal` 位小数,如果 `decimal` 小于 0 则四舍五入到小数点向左第 `decimal` 位。当 `decimal` 不为整数时,截取 `decimal` 的整数部分。不指定 `decimal` 时,将 `numeric` 四舍五入到整数位。 | + + + +返回类型 +---------------- + +不指定 `decimal` 时返回类型与参数 `numeric` 的类型相同,指定 `decimal` 时,返回类型为 `NUMBER` 数据类型。 + +示例 +-------------- + +此示例显示了在 `decimal` 的不同值下四舍五入 5555.6666 的结果。 + +执行以下语句: + +```javascript +SELECT ROUND(5555.6666, 2.1), ROUND(5555.6666, -2.6), ROUND(5555.6666) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------------------+-----------------------+------------------+ +| ROUND(5555.6666,2.1) | ROUND(5555.6666,-2.6) | ROUND(5555.6666) | ++----------------------+-----------------------+------------------+ +| 5555.67 | 5600 | 5556 | ++----------------------+-----------------------+------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/13.SIGN.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/13.SIGN.md new file mode 100644 index 000000000..bc9207990 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/13.SIGN.md @@ -0,0 +1,56 @@ +SIGN +========================= + + + +`SIGN` 函数返回数字 `n` 的符号,大于 0 返回 1,小于 0 返回 -1 ,等于 0 返回 0。 + +语法 +-------------- + +```javascript +SIGN (n) +``` + + + +参数 +-------------- + + + +| **参数** | **说明** | +|--------|-----------------------------------------------------------------------| +| n | 精确数值或近似数值数据类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)的表达式。 | + + + +返回类型 +---------------- + +返回数值 0,1 和 -1。 + +示例 +-------------- + +此示例显示了对三个不同数字使用 `SIGN` 函数所得的结果。 + +执行以下语句: + +```javascript +SELECT SIGN(100), SIGN(-100), SIGN(0) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-----------+------------+---------+ +| SIGN(100) | SIGN(-100) | SIGN(0) | ++-----------+------------+---------+ +| 1 | -1 | 0 | ++-----------+------------+---------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/14.SQRT.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/14.SQRT.md new file mode 100644 index 000000000..d295520cd --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/14.SQRT.md @@ -0,0 +1,56 @@ +SQRT +========================= + + + +`SQRT` 函数返回 `n` 的平方根。 + +语法 +-------------- + +```javascript +SQRT (n) +``` + + + +参数 +-------------- + + + +| **参数** | **说明** | +|--------|---------------------------------------------------------------------------------------| +| n | 数值型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)表达式。 `n` 不能为负数。 | + + + +返回类型 +---------------- + +返回类型与参数 `n` 的数据类型相同。 + +示例 +-------------- + +此示例显示了对两个不同数字使用 `SQRT` 函数求平方根的结果。 + +执行以下语句: + +```javascript +SELECT SQRT(64), SQRT(10) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------+------------------------------------------+ +| SQRT(64) | SQRT(10) | ++----------+------------------------------------------+ +| 8 | 3.16227766016837933199889354443271853372 | ++----------+------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/15.TRUNC.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/15.TRUNC.md new file mode 100644 index 000000000..c548eaa83 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/15.TRUNC.md @@ -0,0 +1,56 @@ +TRUNC +========================== + + + +`TRUNC` 函数返回 `numberic` 按精度 `precision` 截取后的值。 + +语法 +----------- + +```javascript +TRUNC (numberic[,precision]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| numberic,precision | 数值型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)表达式。如果 `precision` 不为整数则截取 `precision` 的整数部分。`precision` 大于等于 0 时截取 `numeric` 到 `precision` 位小数, `precision` 小于 0 时截取到 `numeric` 小数点向左第 `precision` 位,小数前其它数据用 0 表示。 `precision` 的默认值为 0。 | + + + +返回类型 +---------------- + +不指定 `precision` 时,返回类型与参数 `numberic` 的数据类型相同。指定 `precision` 时,返回类型为 `NUMBER`。 + +示例 +-------------- + +此示例显示了在 `precision` 的不同值下 5555.66666的计算结果。 + +执行以下语句: + +```javascript +SELECT TRUNC(5555.66666, 2.1), TRUNC(5555.66666, -2.6), TRUNC(5555.66666) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-----------------------+------------------------+--------------------+ +| TRUNC(5555.66666,2.1) | TRUNC(5555.66666,-2.6) | TRUNC(5555.033333) | ++-----------------------+------------------------+--------------------+ +| 5555.66 | 5500 | 5555 | ++-----------------------+------------------------+--------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/2.ACOS.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/2.ACOS.md new file mode 100644 index 000000000..e5d0e6e63 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/2.ACOS.md @@ -0,0 +1,56 @@ +ACOS +========================= + + + +`ACOS` 函数返回以弧度表示的角,其余弦为指定的 `NUMBER` 表达式,也称为反余弦。 + +语法 +-------------- + +```javascript +ACOS (num_expression) +``` + + + +参数 +-------------- + + + +| 参数 | 值 | 说明 | +|----------------|-------------|--------------------------------------------------------------------------------------------| +| num_expression | -1.00\~1.00 | `NUMBER` 类型或可隐式转换为 `NUMBER` 类型的表达式 。 仅介于 -1.00 到 1.00 之间的值有效。 对于超出此范围的值,将返回 `NULL` 且报告域错误。 | + + + +返回类型 +---------------- + +`NUMBER` 数据类型。 + +示例 +-------------- + +此示例返回指定数量的 `ACOS` 的值。 + +执行以下语句: + +```javascript +SELECT ACOS(0.3)"acos_test" FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-----------+ +| acos_test | ++-----------+ +|1.26610367 | ++-----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/3.BITAND.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/3.BITAND.md new file mode 100644 index 000000000..17b04d037 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/3.BITAND.md @@ -0,0 +1,60 @@ +BITAND +=========================== + + + +运算符按位进行"与"操作。输入和输出类型均为 `NUMBER` 数据类型。 + +语法 +-------------- + +```javascript +BITAND (nExpression1, nExpression2) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------------------------|------------------------------------------------------------------------------------------| +| nExpression1, nExpression2 | 指定按位进行 `AND` 运算的两个数值。如果 `nExpression1` 和 `nExpression2` 为非整数型,那么它们在按位进行 `AND` 运算之前转换为整数。 | + + + +返回类型 +---------------- + +`NUMBER` 数据类型。 + +示例 +-------------- + +a 的二进制为 0100; + +b 的二进制为 0110; + +比较该二进制,若相对应的位置都为 1,则该位的值为 1,否则值为 0。所以 BITAND(2 , 3) = 0100 = 2。 + +执行以下语句: + +```javascript +SELECT BITAND(2,3) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| BITAND(2,3) | ++-------------+ +| 2 | ++-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/4.CEIL.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/4.CEIL.md new file mode 100644 index 000000000..521c5389d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/4.CEIL.md @@ -0,0 +1,56 @@ +CEIL +========================= + + + +`CEIL` 函数返回值大于等于数值 `numeric_expression` 的最小整数。 + +语法 +-------------- + +```javascript +CEIL (numeric_expression) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------------|-----------------------------------------------------------------------| +| numeric_expression | 精确数值或近似数值数据类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)的表达式。 | + + + +返回类型 +---------------- + +返回类型与参数 `numeric_expression` 的数据类型相同。 + +示例 +-------------- + +此示例显示了对三个不同数字使用 `CEIL` 函数所得的结果。 + +执行以下语句: + +```javascript +SELECT CEIL(1.2), CEIL(2), CEIL(-12.1) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-----------+---------+-------------+ +| CEIL(1.2) | CEIL(2) | CEIL(-12.1) | ++-----------+---------+-------------+ +| 2 | 2 | -12 | ++-----------+---------+-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/5.EXP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/5.EXP.md new file mode 100644 index 000000000..ef855ca9a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/5.EXP.md @@ -0,0 +1,57 @@ +EXP +======================== + + + +`EXP` 函数返回 e 的 `numeric_expression` 次幂(e 为数学常量,e = 2.71828183... )。 + +语法 +-------------- + +```javascript +EXP (numeric_expression) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------------|-----------------------------------------------------------------------| +| numeric_expression | 精确数值或近似数值数据类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)的表达式。 | + + + +返回类型 +---------------- + +返回类型与参数 `numeric_expression` 的数据类型相同。 + +示例 +-------------- + +此示例显示了查询 e 的 4 次幂结果。 + +执行以下语句: + +```javascript +SELECT EXP(4) "e to the 4th power" FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------+ +| e to the 4th power | ++-------------------------------------------+ +| 54.59815003314423907811026120286087840279 | ++-------------------------------------------+ +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/6.FLOOR.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/6.FLOOR.md new file mode 100644 index 000000000..f29409547 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/6.FLOOR.md @@ -0,0 +1,56 @@ +FLOOR +========================== + + + +`FLOOR` 函数返回小于等于数值 `numeric_expression` 的最大整数。 + +语法 +-------------- + +```javascript +FLOOR (numeric_expression) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------------|-----------------------------------------------------------------------| +| numeric_expression | 精确数值或近似数值数据类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)的表达式。 | + + + +返回类型 +---------------- + +返回类型与参数 `numeric_expression` 的数据类型相同。 + +示例 +-------------- + +此示例显示了对三个不同数字使用 `FLOOR` 函数所得的结果。 + +执行以下语句: + +```javascript +SELECT FLOOR(1.2), FLOOR(2), FLOOR(-12.1) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------+----------+--------------+ +| FLOOR(1.2) | FLOOR(2) | FLOOR(-12.1) | ++------------+----------+--------------+ +| 1 | 2 | -13 | ++------------+----------+--------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/7.LN.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/7.LN.md new file mode 100644 index 000000000..d1cc9516e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/7.LN.md @@ -0,0 +1,56 @@ +LN +======================= + + + +`LN` 函数返回以 e 为底的 `numeric_expression` 的对数(e 为数学常量 e = 2.71828183...)。 + +语法 +-------------- + +```javascript +LN (numeric_expression) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------------|-----------------------------------------------------------------------| +| numeric_expression | 精确数值或近似数值数据类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)的表达式。 | + + + +返回类型 +---------------- + +当参数为 `BINARY_FLOAT` 数据类型时,返回类型为 `BINARY_DOUBLE`,其他情况下返回类型与参数 `numeric_expression` 的数据类型相同。 + +示例 +-------------- + +此示例显示了计算以 e 为底的 4 次对数的结果。 + +执行以下语句: + +```javascript +SELECT LN(4) "Natural log of 4" FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------------------------------------+ +| Natural log of 4 | ++------------------------------------------+ +| 1.38629436111989061883446424291635313615 | ++------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/8.LOG.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/8.LOG.md new file mode 100644 index 000000000..73d90df67 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/8.LOG.md @@ -0,0 +1,54 @@ +LOG +======================== + + + +`LOG` 函数返回以 `x` 为底的 `y` 的对数。 + +语法 +-------------- + +```javascript +LOG (x,y) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-----|-----------------------------------------------------------------------------------------------| +| x,y | 数值型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)表达式。 `x` 和 `y` 都必须大于 0。 | + + + +返回类型 +---------------- + +当参数为 `BINARY_FLOAT` 和 `BINARY_DOUBLE` 数据类型时,返回类型为 `BINARY_DOUBLE`,其他情况下返回类型为 `NUMBER`。 + +示例 +-------------- + +此示例显示了查询了以 2 为底的 8 的对数。 + +```javascript +SELECT LOG(2,8) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------+ +| LOG(2,8) | ++----------+ +| 3 | ++----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/9.MOD.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/9.MOD.md new file mode 100644 index 000000000..1e49784da --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/1.numeric-functions/9.MOD.md @@ -0,0 +1,61 @@ +MOD +======================== + + + +`MOD` 函数返回 `x` 除以 `y` 的余数。 +**注意** + + + +与 REMAINDER 函数的区别为,在用 `REMAINDER (x,y)` 和 `MOD (x,y)` 函数在进行运算时,都用了一个公式 result=x-y\*(x/y),区别在于计算 x/y 时的处理方式不同。在 `REMAINDER (x,y)` 函数中,采用 `ROUND(x/y)`,而在 `MOD (x,y)` 函数中采用 `FLOOR(x/y)`。 + +语法 +-------------- + +```javascript +MOD (x,y) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-----|-----------------------------------------------------------------------| +| x,y | `x` 和 `y` 为数值型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)表达式。 | + + + +返回类型 +---------------- + +返回类型与数值优先级高的参数的数据类型相同。 + +示例 +-------------- + +此示例显示了计算 23/8 以及 24/8 的余数的结果。 + +执行以下语句: + +```javascript +SELECT MOD(23,8), MOD(24,8) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-----------+-----------+ +| MOD(23,8) | MOD(24,8) | ++-----------+-----------+ +| 7 | 0 | ++-----------+-----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/1.CHR.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/1.CHR.md new file mode 100644 index 000000000..cfb8ec1b8 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/1.CHR.md @@ -0,0 +1,98 @@ +CHR +======================== + + + +`CHR` 函数将 `n` 转换为等价的一个或多个字符返回,且返回值与当前系统的字符集相关。 + +语法 +-------------- + +```javascript +CHR ( n ) +``` + + + +参数 +-------------- + + + +| **参数** | **取值范围** | +|--------|---------------| +| n | 0\~4294967295 | + + + +返回类型 +---------------- + +返回值与当前系统的字符集相关。而 OceanBase 支持的字符集是 `UTF-8`、`UTF-16`、`GBK` 和 `GB18030`。 + +示例 +-------------- + +十进制(25700)-\> 十六进制(0x6464)-\>`UTF-8` 编码(dd) + +执行以下语句: + +```javascript +SELECT CHR(25700) AS str FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------+ +| STR | ++------+ +| dd | ++------+ +``` + + + +十进制(50318)-\> 十六进制(0xC48E)-\> `UTF-8` 编码(Ď) + +执行以下语句: + +```javascript +SELECT CHR(50318) AS str FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------+ +| STR | ++------+ +| Ď | ++------+ +``` + + + +十进制 -\> `UTF-8` 编码 + +```javascript +SELECT CHR(67)||CHR(65)||CHR(84) "Dog" FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------+ +| Dog | ++------+ +| CAT | ++------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/10.RTRIM.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/10.RTRIM.md new file mode 100644 index 000000000..1c24cda02 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/10.RTRIM.md @@ -0,0 +1,63 @@ +RTRIM +========================== + + + +`RTRIM` 函数删除右边出现的字符串,此函数对于格式化查询的输出非常有用。 + +语法 +-------------- + +```javascript +RTRIM(c1 [,c2]) +``` + + + +`RTRIM` 从 `c1` 中出现的所有字符的右端删除 `c2`。如果未指定 `c2`,则默认为单个空格。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----|-----------------| +| c1 | 表示字符串 | +| c2 | 表示要删除的字符串,默认为空格 | + + + +`c1`、`c2` 可以是 `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 和 `CLOB` 数据类型。 + +返回类型 +---------------- + +如果 `c1` 是 `CHAR`、`VARCHAR2` 数据类型,则函数返回 `VARCHAR2` 数据类型。 + +如果 `c1` 是 `NCHAR`、`NVARCHAR2` 数据类型,则函数返回 `NVARCHAR2` 数据类型。 + +如果 `c1` 是 `LOB` 数据类型,则返回的字符串为 `LOB` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT RTRIM('gao qian jingXXXX','X') text FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------------+ +| TEXT | ++------------------+ +| gao qian jing | ++------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/11.SUBSTR.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/11.SUBSTR.md new file mode 100644 index 000000000..b09856dd0 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/11.SUBSTR.md @@ -0,0 +1,56 @@ +SUBSTR +=========================== + + + +`SUBSTR` 函数截取子字符串。其中多字节符(汉字、全角符等)按 1 个字符计算。 + +语法 +-------------- + +```javascript +SUBSTR(c1,n1[,n2]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|------------------------------------------------------------------| +| c1 | 需要截取的字符串。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 | +| n1 | 截取字符串的开始位置,当 n1 等于 0 或 1 时,都是从第一位开始截取。 | +| n2 | 要截取的字符串的长度,若不指定 `n2`,则从第 `n1` 个字符直到结束的字串。 | + + + +返回类型 +---------------- + +返回与 `c1` 类型相同的数据。如果 `n2` 为 0,则将其视为 1。如果 `n2` 为正,则 OceanBase 从开始算起,从 `c1` 开始查找第一个字符。如果 `n2` 为负,则 OceanBase 从 `c1` 的末尾开始倒数 `c1`。如果 `n3` 省略,则 OceanBase 将 `c1` 的所有字符返回。如果 `n3` 小于 1,则 OceanBase 返回 `NULL`。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT SUBSTR('13088888888',3,8) test FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------+ +| TEST | ++----------+ +| 08888888 | ++----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/12.TRANSLATE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/12.TRANSLATE.md new file mode 100644 index 000000000..71e1f6ae8 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/12.TRANSLATE.md @@ -0,0 +1,82 @@ +TRANSLATE +============================== + + + +`TRANSLATE` 函数将字符表达式值中,指定字符替换为新字符。多字节符(汉字、全角符等),按 1 个字符计算。 + +语法 +-------------- + +```javascript +TRANSLATE(c1,c2,c3) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|-----------------------------------------| +| c1 | 希望被替换的字符或变量。 | +| c2 | 查询原始的字符集。 | +| c3 | 替换新的字符集,将 `c2` 对应顺序字符,替换为 `c3` 对应顺序字符 。 | + + +**说明** + + + +* `c1`、`c2` 和 `c3` 的数据类型可以是 `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 + + + +* 如果 `c3` 长度大于 `c2`,则 `c3` 长出后面的字符无效; + + + +* 如果 `c3` 长度小于 `c2`,则 `c2` 长出后面的字符均替换为空(删除); + + + +* 如果 `c3` 长度为 0,则返回空字符串; + + + +* 如果 `c2` 里字符重复,按首次位置为替换依据。 + + + + + + +返回类型 +---------------- + +返回 `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB` 类型字符。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TRANSLATE('he miss you','he','i') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------------------+ +| TRANSLATE('HEMISSYOU','HE','I') | ++---------------------------------+ +| i miss you | ++---------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/13.TRIM.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/13.TRIM.md new file mode 100644 index 000000000..bae7f5f83 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/13.TRIM.md @@ -0,0 +1,66 @@ +TRIM +========================= + + + +`TRIM` 函数用来删除一个字符串的开头或结尾(或两者)的字符。 + +语法 +-------------- + +```javascript +TRIM([ { { LEADING | TRAILING | BOTH } [ trim_character ] | trim_character } FROM ] trim_source) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------------|----------| +| LEADING | 开头字符。 | +| TRAILING | 结尾字符。 | +| BOTH | 开头和结尾字符。 | +| trim_character | 删除的字符。 | +| trim_source | 修剪源。 | + + + +`trim_char` 和 `trim_source` 都可以是 `VARCHAR2` 或任何可以隐式转换为 `VARCHAR2` 的数据类型。如果指定 `LEADING`,则 OceanBase 将删除所有与前导字符相等的 `trim_character`。如果指定 `TRAILING`,则 OceanBase 将删除所有与结尾字符相等的 `trim_character`。如果您指定 `BOTH` 或三个都不指定,则 OceanBase 删除与前导和结尾字符相等的 `trim_character`。如果未指定 `trim_character`,则默认值为空白。如果仅指定 `trim_source`,则 OceanBase 删除前导和尾随空格。如果函数返回的值数据类型为 `VARCHAR2`,则该值的最大长度为 `trim_source`。 + +返回类型 +---------------- + +如果 `trim_source` 为 `CHAR`、`VARCHAR2` 数据类型,则函数返回 `VARCHAR2` 数据类型。 + +如果 `trim_source` 为 `NCHAR`、`NVARCHAR2` 数据类型,则函数返回 `NVARCHAR2` 数据类型。 + +如果 `trim_source` 为 `CLOB` 数据类型,则函数返回 `CLOB` 数据类型。 + +如果 `trim_source` 或 `trim_character` 为 `NULL`,则 `TRIM` 函数返回 `NULL`。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TRIM('X' from 'XXXgao qian jingXXXX'),TRIM('X' from 'XXXgaoXXjingXXXX') text FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-----------------------------------+-----------+ +| TRIM('X'FROM'XXXGAOQIANJINGXXXX') | TEXT | ++-----------------------------------+-----------+ +| gao qian jing | gaoXXjing | ++-----------------------------------+-----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/14.UPPER.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/14.UPPER.md new file mode 100644 index 000000000..349a51520 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/14.UPPER.md @@ -0,0 +1,54 @@ +UPPER +========================== + + + +`UPPER` 函数将字符串全部转为大写。 + +语法 +-------------- + +```javascript +UPPER(c1) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|-------------------------------------------------------------| +| c1 | 字符串。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 | + + + +返回类型 +---------------- + +返回 `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB` 类型的字符。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT UPPER('AaBbCcDd') upper FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------+ +| UPPER | ++----------+ +| AABBCCDD | ++----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/2.CONCAT.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/2.CONCAT.md new file mode 100644 index 000000000..ec575c868 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/2.CONCAT.md @@ -0,0 +1,57 @@ +CONCAT +=========================== + + + +`CONCAT` 函数可以连接两个字符串。 + +语法 +-------------- + +```javascript +CONCAT(c1,c2) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|-------------------------------------------------------------| +| c1 | 字符串,字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 | +| c1 | 字符串,字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 | + + + +返回类型 +---------------- + +返回与 `c1` 相同的数据类型。 + +示例 +-------------- + +本示例 `CONCAT` 函数用来连接字符 `'010-'` 和字符 `'88888888'`。 + +执行以下语句 + +```javascript +SELECT concat('010-','88888888')||'转23'XXXX的电话 FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------------+ +| XXXX的电话 | ++-------------------+ +| 010-88888888转23 | ++-------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/3.INITCAP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/3.INITCAP.md new file mode 100644 index 000000000..5086f5a8c --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/3.INITCAP.md @@ -0,0 +1,54 @@ +INITCAP +============================ + + + +`INITCAP` 函数返回字符串并将字符串中每个单词的首字母大写,其他字母小写。 + +语法 +-------------- + +```javascript +INITCAP(c1) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|------------------------------------------------------| +| c1 | 字符串。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2`。 | + + + +返回类型 +---------------- + +返回 `CHAR` 类型数据。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT initcap('smith abc aBC') upp FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------------+ +| UPP | ++------------------+ +| Smith Abc Abc | ++------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/4.LOWER.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/4.LOWER.md new file mode 100644 index 000000000..263f91cf2 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/4.LOWER.md @@ -0,0 +1,54 @@ +LOWER +========================== + + + +`LOWER` 函数将字符串全部转为小写。 + +语法 +-------------- + +```javascript +LOWER(c1) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|---------------------------------------------------------------| +| c1 | 表示字符串。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 | + + + +返回类型 +---------------- + +返回与 `c1` 相同的数据类型 。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT lower('AaBbCcDd')AaBbCcDd FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------+ +| AABBCCDD | ++----------+ +| aabbccdd | ++----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/5.LPAD.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/5.LPAD.md new file mode 100644 index 000000000..9a852d3bf --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/5.LPAD.md @@ -0,0 +1,61 @@ +LPAD +========================= + + + +`LPAD` 函数的功能是在字符串 `c1` 的左边用字符串 `c2` 填充,直到长度为 `n` 时为止。 + +语法 +-------------- + +```javascript +LPAD(c1,n[,c2]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|-------------------------------------------------------------------------| +| c1 | 表示字符串。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB` 。 | +| n | 追加后字符总长度,必须是 `NUMBER` 整数类型或可以隐式转换为 `NUMBER` 整数类型的类型。 | +| c2 | 表示追加的字符串,默认为空格。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB` 。 | + + + +返回类型 +---------------- + +如果 `c1` 是字符型数据,则返回 `VARCHAR2` 类型;如果 `c1` 是国家字符数据类型,则返回 `NVARCHAR2` 类型;如果 `c1` 是 `LOB` 数据类型,,则返回 `LOB` 类型。 +**注意** + + + +如果 `c1` 长度大于 `n`,则返回 `c1` 左边 `n` 个字符。如果 `c1` 长度小于 `n`,`c2` 和 `c1` 连接后大于 `n`,则返回连接后的右边 `n` 个字符。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT lpad('gao',10,'*') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++--------------------+ +| LPAD('GAO',10,'*') | ++--------------------+ +| *******gao | ++--------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/6.LTRIM.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/6.LTRIM.md new file mode 100644 index 000000000..35d128b8d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/6.LTRIM.md @@ -0,0 +1,57 @@ +LTRIM +========================== + + + +`LTRIM` 函数功能是删除左边出现的字符串。 + +语法 +-------------- + +```javascript +LTRIM(c1 [,c2]) +``` + + + +`LTRIM` 函数从左端删除 `c1` 中包含的所有字符 `c2`。如果未指定 `c2`,则默认为单个空格。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----|---------------------------------------------------------------------------| +| c1 | 表示字符串。字符串类型可为: `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB` 。 | +| c2 | 表示要删除的字符串,默认为空格。字符串类型可为: `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB` 。 | + + + +返回类型 +---------------- + +如果 `c1` 是 `CHAR`、`VARCHAR2` 数据类型,则函数返回 `VARCHAR2` 数据类型。如果 `c1` 是 `NCHAR`、`NVARCHAR2` 数据类型,则函数返回 `NVARCHAR2` 数据类型。如果 `c1` 是 `LOB` 数据类型,则返回的字符串为 `LOB` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT LTRIM(' gao qian jing',' ') text FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------------+ +| TEXT | ++------------------+ +| gao qian jing | ++------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/7.REGEXP_REPLACE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/7.REGEXP_REPLACE.md new file mode 100644 index 000000000..0b57191de --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/7.REGEXP_REPLACE.md @@ -0,0 +1,58 @@ +REGEXP_REPLACE +=================================== + + + +`REGEXP_REPLACE` 函数用于正则表达式替换。 + +语法 +-------------- + +```javascript +REGEXP_REPLACE (source_char, pattern [,replace_string [, position [, occurrence [, match_param ] ] ] ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| +| source_char | 用作搜索值的字符表达式。它通常是一种字符列,数据类型可以是 `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB` 。 | +| pattern | 是正则表达式 ,它通常是一个文本文字,数据类型可以是 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2`。 | +| replace_string | 表示替换的字符,可以是 `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB` 类型。 | +| position | 是一个正整数类型,指示 OceanBase 从第几个字符开始搜索 `source_char` 的字符,默认为 1,表示从第一个字符开始搜索`source_char`。 | +| occurrence | 是一个非负整数,指示替换操作的发生,如果指定 0,则 OceanBase 替换所有匹配项;如果指定正整数 n,则 OceanBase 将替换第 n 次出现,默认为全部都替换掉,如果指定参数 0 也是全部匹配。 | +| match_param | 是数据类型 `VARCHAR2` 或 `CHAR` 的字符表达式,它允许您更改函数的默认匹配行为。 `i` 表示大小写不敏感;`c` 表示大小写敏感;`n` 表示点号;`.` 表示不匹配换行符号;`m` 表示多行模式;`x` 表示忽略空格字符,默认情况下,空格字符会相互匹配。 | + + + +返回类型 +---------------- + +返回结果与 `source_char` 的数据类型相同。 + +示例 +-------------- + +下面的示例检查字符串,查找两个或多个空格。OceanBase 用一个空间替换两个或多个空间的每一次出现。执行以下语句: + +```javascript +SELECT REGEXP_REPLACE('500 OceanBase Parkway, Redwood Shores, CA', '( ){2,}', ' ') "REGEXP_REPLACE" +FROM DUAL; +``` + + + +查询结果如下: + +```javascript +REGEXP_REPLACE +-------------------------------------- +500 OceanBase Parkway, Redwood Shores, CA +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/8.REPLACE-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/8.REPLACE-1.md new file mode 100644 index 000000000..0036d7e81 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/8.REPLACE-1.md @@ -0,0 +1,58 @@ +REPLACE +============================ + + + +`REPLAC` 函数将字符表达式值中,部分相同字符串,替换成新的字符串。 + +语法 +-------------- + +```javascript +REPLACE(c1,c2[,c3]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|------------------------| +| c1 | 等待替换的字符串 `CHAR` | +| c2 | 搜索需要替换的字符串 | +| c3 | 替换字符串,默认为空(即删除之意,不是空格) | + + + +`c1`、`c2` 和 `c3` 的数据类型可以是 `CHAR` 、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 和 `CLOB`。 + +返回类型 +---------------- + +返回的字符串与 `c1` 的字符集相同。如果 `c3` 缺省或者为 `NULL`,那么所有 c1 中出现的 c2 都将被移除。如果 `c2` 为 `NULL`,那么结果就是 `c1` 。如果 `c1` 是 `LOB` 数据类型,则函数返回 `CLOB` 数据类型。如果 `c1` 不是 `LOB` 数据类型,则函数返回 `VARCHA2` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT replace('he love you','he','i') test FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------+ +| TEST | ++------------+ +| i love you | ++------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/9.RPAD.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/9.RPAD.md new file mode 100644 index 000000000..09b7d618b --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/2.string-functions-that-return-a-string/9.RPAD.md @@ -0,0 +1,74 @@ +RPAD +========================= + + + +`RPAD` 函数在字符串 `c1` 的右边用字符串 `c2` 填充,直到长度为 `n` 时为止。 + +语法 +-------------- + +```javascript +RPAD(c1,n[,c2]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|------------------------------------------------------------------------| +| c1 | 表示字符串。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 | +| n | 追加后字符总长度,必须是 `NUMBER` 整数类型或可以隐式转换为 `NUMBER` 整数类型的类型。 | +| c2 | 表示追加的字符串,默认为空格。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 | + + + +返回类型 +---------------- + +如果 `c1` 是字符型数据,则返回 `VARCHAR2` 类型;如果 `c1` 是国家字符数据类型,则返回 `NVARCHAR2` 类型;如果 `c1` 是 `LOB` 数据类型,,则返回 `LOB` 类型。 +**说明** + + + +* 如果 `c1` 长度大于 `n`,则返回 `c1` 左边 `n` 个字符; + + + +* 如果 `c1` 长度小于 `n`,`c1` 和 `c2` 连接后大于 `n`,则返回连接后的左边 `n` 个字符; + + + +* 如果 `c1` 长度小于n,`c1` 和 `c2` 连接后小于 `n`,则返回 `c1` 与多个重复 `c2` 连接(总长度\>= `n`)后的左边 `n` 个字符。 + + + + + + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT rpad('gao',10,'*a') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+ +| RPAD('GAO',10,'*A') | ++---------------------+ +| gao*a*a*a* | ++---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/3.string-functions-that-return-numbers/1.ASCII.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/3.string-functions-that-return-numbers/1.ASCII.md new file mode 100644 index 000000000..e2855b8f9 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/3.string-functions-that-return-numbers/1.ASCII.md @@ -0,0 +1,76 @@ +ASCII +========================== + + + +`ASCII` 函数返回字符表达式最左端字符的 ASCII 码值。 + +语法 +-------------- + +```javascript +ASCII(x) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|---------------------------------------------------| +| x | `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的表达式。 | + + + + + +返回类型 +---------------- + +`NUMBER` 数据类型。 + +示例 +-------------- + +此示例使用 `ASCII` 函数返回 **A** 、 **a** 、 **中** 和空格的 ASCII 码值。 + +```unknow +SELECT ASCII('A') A, ASCII('a') a, ASCII(' ') space FROM DUAL; +``` + + + +此示例使用 `ASCII` 函数返回 **A** 、 **a** 和空格的 ASCII 码值。 + +```javascript +SELECT ASCII('A') A, ASCII('a') a, ASCII(' ') space,ASCII('中') hz FROM DUAL; +``` + + + +结果返回: + +```unknow ++----+----+-------+----------+ +| A | A | SPACE | ++----+----+-------+----------+ +| 65 | 97 | 32 | ++----+----+-------+----------+ +1 row in set (0.00 sec) +``` + + + +```javascript ++----+----+-------+----------+ +| A | A | SPACE | HZ | ++----+----+-------+----------+ +| 65 | 97 | 32 | 14989485 | ++----+----+-------+----------+ +1 row in set (0.00 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/3.string-functions-that-return-numbers/2.INSTR.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/3.string-functions-that-return-numbers/2.INSTR.md new file mode 100644 index 000000000..2fbe5a45c --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/3.string-functions-that-return-numbers/2.INSTR.md @@ -0,0 +1,82 @@ +INSTR +========================== + + + +`INSTR` 函数在一个字符串中搜索指定的字符,返回发现指定的字符的位置。 +**注意** + + + +多字节符(汉字、全角符等),按 1 个字符计算。 + +语法 +-------------- + +```javascript +INSTR(c1,c2[,i[,j]]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|------------------------------------------------------------------| +| c1 | 被搜索的字符串。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 | +| c2 | 希望搜索的字符串。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB`。 | +| i | 搜索的开始位置,默认值为 1。当值小于 0 时,搜索从反方向开始,但是仍返回被搜索到的字符的正序位置。 | +| j | 第 `j` 次出现的位置,默认值为 1。 | + + + +返回类型 +---------------- + +`NUMBER` 数据类型。 + +示例 +-------------- + +此示例展示了字符 **某** 在字符串 **重庆某软** **件公司** 中第一次出现的位置。 + +```javascript +SELECT INSTR ('重庆某软件公司','某',1,1) instring FROM DUAL; +``` + + + +返回结果: + +```javascript ++----------+ +| instring | ++----------+ +| 3 | ++----------+ +``` + + + +此示例中, **instring1** 应返回正向搜索 **ce** 时在字符串中第二次出现的位置, **instring2** 应返回反向搜索 **ce** 时在字符串中第二次出现的位置: + +```javascript +SELECT INSTR('oceanbase pratice','ce',1,2) instring1,INSTR('oceanbase pratice','ce',-1,2) instring2 FROM DUAL; +``` + + + +返回结果,正向搜索时 **ce** 第二次出现在第 16 位,反向搜索时 **ce** 第二次出现在第二位: + +```javascript ++----------+------------+ +| instring1 | instring2 | ++----------+------------+ +| 16 | 2 | ++----------+------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/3.string-functions-that-return-numbers/3.LENGTH.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/3.string-functions-that-return-numbers/3.LENGTH.md new file mode 100644 index 000000000..b42404ed0 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/3.string-functions-that-return-numbers/3.LENGTH.md @@ -0,0 +1,59 @@ +LENGTH +=========================== + + + +`LENGTH` 函数返回字符串的长度。 +**注意** + + + +多字节符(汉字、全角符等),按 1 个字符计算。 + +语法 +-------------- + +```javascript +LENGTH(c1) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|----------------------------------------------------------| +| c1 | `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2` 或 `CLOB` 数据类型的字符串。 | + + + +返回类型 +---------------- + +`NUMBER` 数据类型。 + +示例 +-------------- + +此示例展示了字符串 **测试** 、 **北京市海淀区** 和 **北京TO_CHAR** 的长度。 + +```javascript +SELECT LENGTH ('测试'), LENGTH('北京市海锭区'), LENGTH('北京TO_CHAR') FROM DUAL; +``` + + + +返回结果: + +```javascript ++------------------+------------------------------+-------------------------+ +| LENGTH('测试')| LENGTH('北京市海锭区') | LENGTH('北京TO_CHAR') | ++------------------+------------------------------+-------------------------+ +| 2 | 6 | 9 | ++------------------+------------------------------+-------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/1.ADD_MONTHS.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/1.ADD_MONTHS.md new file mode 100644 index 000000000..78dfb14fc --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/1.ADD_MONTHS.md @@ -0,0 +1,84 @@ +ADD_MONTHS +=============================== + + + +`ADD_MONTHS` 函数返回在日期 `date` 基础上 `n` 个月后的日期值,如果 `n` 的值为负数则返回日期 `date` 基础上 `n` 个月前的日期值(`date` 减去 `n` 个月)。 +**注意** + + + +由于每个月的天数不同,当 `date` 是一个月中的最后一天时,函数返回计算后该月的最后一天。例如,用`ADD_MONTHS` 计算 2020 年 3 月 31 日一个月前的日期,返回 2020 年 2 月 29 日。 + +语法 +-------------- + +```javascript +ADD_MONTHS (date,n) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|----------------| +| date | `DATE` 数据类型。 | +| n | `NUMBER` 数据类型。 | + + + +返回类型 +---------------- + +`DATE` 数据类型。 + +示例 +-------------- + +**示例 1** : 以下示例查询了 3 个月后的日期。 + +执行以下语句: + +```javascript +SELECT SYSDATE, ADD_MONTHS(SYSDATE,3) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+-----------------------+ +| SYSDATE | ADD_MONTHS(SYSDATE,3) | ++---------------------+-----------------------+ +| 2020-03-26 12:21:40 | 2020-06-26 12:21:40 | ++---------------------+-----------------------+ +``` + + + +**示例 2** : 以下示例查询了 3 个月前的日期。 + +执行以下语句: + +```javascript +SELECT SYSDATE, ADD_MONTHS(SYSDATE,-3) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+------------------------+ +| SYSDATE | ADD_MONTHS(SYSDATE,-3) | ++---------------------+------------------------+ +| 2020-03-26 12:21:04 | 2019-12-26 12:21:04 | ++---------------------+------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/10.NEXT_DAY.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/10.NEXT_DAY.md new file mode 100644 index 000000000..ad9f639ff --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/10.NEXT_DAY.md @@ -0,0 +1,63 @@ +NEXT_DAY +============================= + + + +`NEXT_DAY` 函数是返回日期 `d1` 的下一周中 `c1`(星期值)所在的日期值。 + +语法 +-------------- + +```javascript +NEXT_DAY (d1[,c1]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|-------------------------------------------------------------------------------| +| d1 | `DATE` 数据类型的值。 | +| c1 | 星期值:`MONDAY`、`TUESDAY`、`WEDNESDAY`、`THURSDAY`、`FRIDAY`、`SATURDAY` 和 `SUNDAY`。 | + + + +返回类型 +---------------- + +`DATE` 数据类型。 + +示例 +-------------- + +以下示例展示了下周每个星期值对应的日期值: + +```javascript +SELECT SYSDATE 当时日期, +NEXT_DAY(SYSDATE,'MONDAY') 下周星期一, +NEXT_DAY(SYSDATE,'TUESDAY') 下周星期二, +NEXT_DAY(SYSDATE,'WEDNESDAY') 下周星期三, +NEXT_DAY(SYSDATE,'THURSDAY') 下周星期四, +NEXT_DAY(SYSDATE,'FRIDAY') 下周星期五, +NEXT_DAY(SYSDATE,'SATURDAY') 下周星期六, +NEXT_DAY(SYSDATE,'SUNDAY') 下周星期日 +FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +| 当时日期 | 下周星期一 | 下周星期二 | 下周星期三 | 下周星期四 | 下周星期五 | 下周星期六 | 下周星期日 | ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +| 2020-03-08 15:47:57 | 2020-03-09 15:47:57 | 2020-03-10 15:47:57 | 2020-03-11 15:47:57 | 2020-03-12 15:47:57 | 2020-03-13 15:47:57 | 2020-03-14 15:47:57 | 2020-03-15 15:47:57 | ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/11.NUMTODSINTERVAL.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/11.NUMTODSINTERVAL.md new file mode 100644 index 000000000..49d08406d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/11.NUMTODSINTERVAL.md @@ -0,0 +1,55 @@ +NUMTODSINTERVAL +==================================== + + + +`NUMTODSINTERVAL` 函数是把参数 `n` 转为以参数 `interval_unit` 为单位的 `INTERVAL DAY TO SECOND` 数据类型的值。 + +语法 +-------------- + +```javascript +NUMTODSINTERVAL (n,interval_unit) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------------|-------------------------------------| +| n | `NUMBER` 数据类型的值。 | +| interval_unit | 单位值:`DAY`、`HOUR`、`MINUTE`、`MINUTE`。 | + + + +返回类型 +---------------- + +`INTERVAL DAY TO SECOND` 数据类型。 + +示例 +-------------- + +以下示例展示了当前日期 3 小时后的日期时间值: + +```javascript +SELECT SYSDATE,SYSDATE+NUMTODSINTERVAL(3,'HOUR') AS RES FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+---------------------+ +| SYSDATE | RES | ++---------------------+---------------------+ +| 2020-03-08 16:01:40 | 2020-03-08 19:01:40 | ++---------------------+---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/12.NUMTOYMINTERVAL.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/12.NUMTOYMINTERVAL.md new file mode 100644 index 000000000..9f1914b05 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/12.NUMTOYMINTERVAL.md @@ -0,0 +1,55 @@ +NUMTOYMINTERVAL +==================================== + + + +`NUMTOYMINTERVAL` 函数是把参数 `n` 转为以 `interval_unit` 为单位的 `INTERVAL YEAR TO MONTH` 数据类型的值。 + +语法 +-------------- + +```javascript +NUMTOYMINTERVAL (n,interval_unit) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------------|---------------------| +| n | `NUMBER` 数据类型的值。 | +| interval_unit | 单位值:`YEAR`、`MONTH`。 | + + + +返回类型 +---------------- + +`INTERVAL YEAR TO MONTH` 数据类型。 + +示例 +-------------- + +以下示例展示了当前日期 3 年后的日期时间值: + +```javascript +SELECT SYSDATE,SYSDATE+NUMTOYMINTERVAL(3,'YEAR') AS RES FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+---------------------+ +| SYSDATE | RES | ++---------------------+---------------------+ +| 2020-03-08 16:03:58 | 2023-03-08 16:03:58 | ++---------------------+---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/13.round-date.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/13.round-date.md new file mode 100644 index 000000000..c99492a16 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/13.round-date.md @@ -0,0 +1,73 @@ +ROUND (date) +================================= + + + +`ROUND(date)` 函数返回以参数 `fmt` 为单位距离的离指定日期 `date` 最近的日期时间值。 + +语法 +-------------- + +```javascript +ROUND (date,[fmt]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------------------------------------------------------------------------------| +| date | 所有包含日期的数据类型的值:`DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`。 | +| fmt | 指定了函数返回值与 `date` 的距离单位,以下表格列举了该参数的可取值,大小写不敏感。 | + + + + +| **fmt参数表** | **说明** | +|--------------------------|---------------------------------| +| j | 默认值,最近0点日期。 | +| day、dy、d | 返回离指定日期最近的星期日。 | +| month、mon、mm、rm | 返回离指定日期最近的月的第一天日期。 | +| q | 返回离指定日期最近的季的日期。 | +| syear、year、yyyy、yyy、yy、y | 多个 y 表示不同的精度,返回离指定日期最近的年的第一个日期。 | +| cc、scc | 返回离指定日期最近的世纪的初日期。 | + + + +返回类型 +---------------- + +`DATE` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT SYSDATE 当时日期, +ROUND(SYSDATE) 最近0点日期, +ROUND(SYSDATE,'DAY') 最近星期日, +ROUND(SYSDATE,'MONTH') 最近月初, +ROUND(SYSDATE,'Q') 最近季初日期, +ROUND(SYSDATE,'YEAR') 最近年初日期 +FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +| 当时日期 | 最近0点日期 | 最近星期日 | 最近月初 | 最近季初日期 | 最近年初日期 | ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +| 2020-03-08 20:24:53 | 2020-03-09 00:00:00 | 2020-03-08 00:00:00 | 2020-03-01 00:00:00 | 2020-04-01 00:00:00 | 2020-01-01 00:00:00 | ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/14.SESSIONTIMEZONE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/14.SESSIONTIMEZONE.md new file mode 100644 index 000000000..7a27d5840 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/14.SESSIONTIMEZONE.md @@ -0,0 +1,76 @@ +SESSIONTIMEZONE +==================================== + + + +`SESSIONTIMEZONE` 函数是返回当前会话时区。 + +语法 +-------------- + +```javascript +SESSIONTIMEZONE +``` + + + +参数 +-------------- + +无参数。 + +返回类型 +---------------- + +`VARCHAR2` 数据类型。 + +示例 +-------------- + +以下示例展示了数据库时区和当前会话时区: + +```javascript +SELECT DBTIMEZONE,SESSIONTIMEZONE FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------+-----------------+ +| DBTIMEZONE | SESSIONTIMEZONE | ++------------+-----------------+ +| +00:00 | +08:00 | ++------------+-----------------+ +``` + + + +可以通过 `ALTER SESSION` 语句修改当前会话时区,数据库时区不可修改: + +```javascript +ALTER SESSION SET TIME_ZONE = '+05:00'; +``` + + + +执行以下语句查询修改后的当前会话时区: + +```javascript +SELECT DBTIMEZONE,SESSIONTIMEZONE FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------+-----------------+ +| DBTIMEZONE | SESSIONTIMEZONE | ++------------+-----------------+ +| +00:00 | +05:00 | ++------------+-----------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/15.SYS_EXTRACT_UTC.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/15.SYS_EXTRACT_UTC.md new file mode 100644 index 000000000..1b899f3e2 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/15.SYS_EXTRACT_UTC.md @@ -0,0 +1,60 @@ +SYS_EXTRACT_UTC +==================================== + + + +`SYS_EXTRACT_UTC` 函数是返回与指定时间相对应的标准 UTC 时间。 + +语法 +-------------- + +```javascript +SYS_EXTRACT_UTC (datetime_with_timezone) +``` + + +**注意** + + + +UTC(Universal Time Coordinated)是通用协调时间。UTC 与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。 + +参数 +-------------- + + + +| 参数 | 说明 | +|------------------------|-----------------------------------------------------------------------| +| datetime_with_timezone | `TIMESTAMP WITH TIME ZONE` 和 `TIMESTAMP WITH LOCAL TIME ZONE` 数据类型的值。 | + + + +返回类型 +---------------- + +`TIMESTAMP` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT SYS_EXTRACT_UTC(TIMESTAMP '2020-03-28 11:30:00.00 -08:00') +FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------------------------------------------+ +| SYS_EXTRACT_UTC(TIMESTAMP'2020-03-2811:30:00.00-08:00') | ++---------------------------------------------------------+ +| 2020-03-28 19:30:00.000000000 | ++---------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/16.SYSDATE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/16.SYSDATE.md new file mode 100644 index 000000000..f95c1d65b --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/16.SYSDATE.md @@ -0,0 +1,55 @@ +SYSDATE +============================ + + + +`SYSDATE` 函数返回当前日期。 +**注意** + + + +该函数不依赖于当前会话时区,而是依赖于数据库宿主机的 Linux 操作系统的时区。 + +语法 +-------------- + +```javascript +SYSDATE +``` + + + +参数 +-------------- + +无参数。 + +返回类型 +---------------- + +`DATE` 数据类型。 + +示例 +-------------- + +以下示例将当前时间按指定格式输出: + +```javascript +SELECT TO_CHAR +(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "NOW" +FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+ +| NOW | ++---------------------+ +| 03-08-2020 20:44:04 | ++---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/17.SYSTIMESTAMP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/17.SYSTIMESTAMP.md new file mode 100644 index 000000000..cc44f57a5 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/17.SYSTIMESTAMP.md @@ -0,0 +1,53 @@ +SYSTIMESTAMP +================================= + + + +`SYSTIMESTAMP` 函数返回系统当前日期,返回值的秒的小数位包含 6 位精度,且包含当前时区信息。 +**注意** + + + +该函数不依赖于当前会话时区,而是依赖于数据库宿主机的 Linux 操作系统的时区。 + +语法 +-------------- + +```javascript +SYSTIMESTAMP +``` + + + +参数 +-------------- + +无参数。 + +返回类型 +---------------- + +`TIMESTAMP WITH TIME ZONE` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT SYSTIMESTAMP FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------------------------------+ +| SYSTIMESTAMP | ++------------------------------------+ +| 2020-03-08 20:47:08.254086 +08:00 | ++------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/18.to_char-datetime.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/18.to_char-datetime.md new file mode 100644 index 000000000..b197187c5 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/18.to_char-datetime.md @@ -0,0 +1,87 @@ +TO_CHAR (datetime) +======================================= + + + +`TO_CHAR` 函数将 `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 等数据类型的值按照参数 `fmt` 指定的格式转换为 `VARCHAR2` 数据类型的值。 如果不指定参数 `fmt`,则参数 `datetime` 的值将按如下格式转换为 `VARCHAR2` 数据类型: + +* `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE` 和 `TIMESTAMP WITH LOCAL TIME ZONE` 的值被转换为数据库中日期时间值的默认格式。您可在数据类型章节中查看各日期时间类型的默认格式。 + + + +* `INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 数据类型的值转换为数字格式的间隔值。 + + + + + + +语法 +-------------- + +```javascript +TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------------------------------------------------------------------------------------------------| +| datetime | `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 等数据类型的值。 | +| fmt | 输出格式参数。 | +| nlsparam | 用来控制返回的月份和日份所使用的语言。 | + + + +返回类型 +---------------- + +`VARCHAR2` 数据类型 + +示例 +-------------- + +**示例 1** : 以下语句通过 TO_CHAR 函数返回系统当前日期,并且将日期时间值转换为了 **DS DL** 格式: + +```javascript +SELECT TO_CHAR(SYSDATE,'DS DL') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-----------------------------------+ +| TO_CHAR(SYSDATE,'DSDL') | ++-----------------------------------+ +| 03/08/2020 Sunday, March 08, 2020 | ++-----------------------------------+ +``` + + + +**示例 2** :以下语句将间隔值转化为指定格式,并且设置了返回语言为 **AMERICAN** : + +```javascript +SELECT TO_CHAR(interval'1' year, 'SS-MI-HH', 'nls_language = AMERICAN') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------------------------+ +| TO_CHAR(INTERVAL'1'YEAR,'SS-MI-HH','NLS_LANGUAGE=AMERICAN') | ++-------------------------------------------------------------+ +| +01-00 | ++-------------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/19.TO_DSINTERVAL.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/19.TO_DSINTERVAL.md new file mode 100644 index 000000000..ba969f9b9 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/19.TO_DSINTERVAL.md @@ -0,0 +1,54 @@ +TO_DSINTERVAL +================================== + + + +`TO_DSINTERVAL` 函数将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL DAY TO SECOND` 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。 + +语法 +-------------- + +```javascript +TO_DSINTERVAL (days hours:minutes:seconds[.frac_secs]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------------------------------------------|------------------------------------------------------------| +| days hours:minutes:seconds\[.frac_secs\] | 符合该参数格式的 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串。 | + + + +返回类型 +---------------- + +`INTERVAL DAY TO SECOND` 数据类型。 + +示例 +-------------- + +以下示例返回了当前时间 100 天后的日期时间值: + +```javascript +SELECT SYSDATE, SYSDATE+TO_DSINTERVAL('100 00:00:00') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+--------------------------------------+ +| SYSDATE | SYSDATE+TO_DSINTERVAL('10000:00:00') | ++---------------------+--------------------------------------+ +| 2020-03-26 12:40:39 | 2020-07-04 12:40:39 | ++---------------------+--------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/2.CURRENT_DATE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/2.CURRENT_DATE.md new file mode 100644 index 000000000..45e8879d0 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/2.CURRENT_DATE.md @@ -0,0 +1,86 @@ +CURRENT_DATE +================================= + + + +`CURRENT_DATE` 函数返回当前会话时区中的当前日期。 + +语法 +-------------- + +```javascript +CURRENT_DATE +``` + + + +参数 +-------------- + +无参数。 + +返回类型 +---------------- + +`DATE` 数据类型。 + +示例 +-------------- + +此示例显示了不同会话时区使用 `CURRENT_DATE` 函数所得的结果。 + +设置当前时区至 GMT-5 时区: + +```javascript +ALTER SESSION SET TIME_ZONE = '-05:00'; +``` + + + +执行以下语句调用函数: + +```javascript +SELECT CURRENT_DATE FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+ +| CURRENT_DATE | ++---------------------+ +| 2020-03-08 01:40:11 | ++---------------------+ +``` + + + +切换当前时区至 GMT+8 时区 + +```javascript +ALTER SESSION SET TIME_ZONE = '+08:00'; +``` + + + +执行以下语句调用函数: + +```javascript +SELECT CURRENT_DATE FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+ +| CURRENT_DATE | ++---------------------+ +| 2020-03-08 14:40:11 | ++---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/20.TO_TIMESTAMP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/20.TO_TIMESTAMP.md new file mode 100644 index 000000000..6484be9e8 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/20.TO_TIMESTAMP.md @@ -0,0 +1,57 @@ +TO_TIMESTAMP +================================= + + + +`TO_TIMESTAMP` 函数将字符串转换为 `TIMESTAMP` 数据类型。 + +语法 +-------------- + +```javascript +TO_TIMESTAMP (char,[fmt],['nlsparam']) +``` + + + +参数 +-------------- + + + +| | 说明 | +|----------|---------------------------------------------------| +| char | `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串。 | +| fmt | 指定返回值的格式。 | +| nlsparam | 用来控制返回的月份和日份所使用的语言。 | + + + +返回类型 +---------------- + +`TIMESTAMP` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_TIMESTAMP ('10-Sep-02 14:10:10.123000', 'DD-Mon-RR HH24:MI:SS.FF') +FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------------------------------+ +| TO_TIMESTAMP('10-SEP-0214:10:10.123000','DD-MON-RRHH24:MI:SS.FF') | ++-------------------------------------------------------------------+ +| 2002-09-10 14:10:10.123000000 | ++-------------------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/21.TO_TIMESTAMP_TZ.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/21.TO_TIMESTAMP_TZ.md new file mode 100644 index 000000000..2f1185cef --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/21.TO_TIMESTAMP_TZ.md @@ -0,0 +1,56 @@ +TO_TIMESTAMP_TZ +==================================== + + + +`TO_TIMESTAMP_TZ` 函数将字符串转换为 `TIMESTAMP WITH TIME ZONE` 数据类型,包含时区信息。 + +语法 +-------------- + +```javascript +TO_TIMESTAMP_TZ (char,[fmt],['nlsparam']) +``` + + + +参数 +-------------- + + + +| **参数** | **说明** | +|----------|---------------------------------------------------| +| char | `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串。 | +| fmt | 指定输出格式。 | +| nlsparam | 用来控制返回的月份和日份所使用的语言。 | + + + +返回类型 +---------------- + +`TIMESTAMP WITH TIME ZONE` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_TIMESTAMP_TZ ('10-Sep-02 14:10:10.123000', 'DD-Mon-RR HH24:MI:SS.FF') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------------------------------------------------------------------+ +| TO_TIMESTAMP_TZ('10-SEP-0214:10:10.123000','DD-MON-RRHH24:MI:SS.FF') | ++----------------------------------------------------------------------+ +| 2002-09-10 14:10:10.123000000 +08:00 | ++----------------------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/22.TO_YMINTERVAL.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/22.TO_YMINTERVAL.md new file mode 100644 index 000000000..bab4c92fc --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/22.TO_YMINTERVAL.md @@ -0,0 +1,68 @@ +TO_YMINTERVAL +================================== + + + +`TO_YMINTERVAL` 函数将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL YEAR TO MONTH` 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。 + +语法 +-------------- + +```javascript +TO_YMINTERVAL (years-months) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------|------------------------------------------------------------| +| years-months | 符合该参数格式的 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串。 | + + + + + +返回类型 +---------------- + + + +`INTERVAL YEAR TO MONTH` 数据类型。 + + + +示例 +-------------- + + + +以下示例展示了返回当前时间 1 年 2 个月后的时间日期值: + + + +```javascript +SELECT SYSDATE,SYSDATE+TO_YMINTERVAL('01-02') FROM DUAL; +``` + + + + + +查询结果如下: + + + +```javascript ++---------------------+--------------------------------+ +| SYSDATE | SYSDATE+TO_YMINTERVAL('01-02') | ++---------------------+--------------------------------+ +| 2020-03-08 22:32:01 | 2021-05-08 22:32:01 | ++---------------------+--------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/23.trunc-date.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/23.trunc-date.md new file mode 100644 index 000000000..acbd8978c --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/23.trunc-date.md @@ -0,0 +1,102 @@ +TRUNC (date) +================================= + + + +`TRUNC` 函数返回以参数 `fmt` 为单位距离的离指定日期 `date` 最近的日期时间值,并且返回的日期值在 `date` 之前。 +**注意** + + + +与函数 `ROUND` 的区别为,`TRUNC` 返回的值必须是在 `date` 之前的离 `date` 最近的日期,`ROUND` 可以是 `date` 之前也可以是 `date` 之后的离它最近的日期值。 + +语法 +-------------- + +```javascript +TRUNC (date,[fmt]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------------------------------| +| date | `DATE` 数据类型。 | +| fmt | 指定了函数返回值与 `date` 的距离单位,以下表格列举了该参数的可取值,大小写不敏感。 | + + + + +| fmt参数表 | 说明 | +|-----------------|---------------------------------| +| j | 默认值,最近 0 点日期。 | +| day、dy、d | 返回离指定日期最近的星期日。 | +| month、mon、mm、rm | 返回离指定日期最近的月的第一天日期。 | +| q | 返回离指定日期最近的季的日期。 | +| yyyy、yyy、yy、y | 多个 y 表示不同的精度,返回离指定日期最近的年的第一个日期。 | +| cc、scc | 返回离指定日期最近的世纪的初日期。 | + + + +返回类型 +---------------- + +`DATE` 数据类型。 + +示例 +-------------- + +以下示例展示了用 `TRUNC` 计算距离 **SYSDATE** 最近的符合要求的日期值: + +```javascript +SELECT SYSDATE 当时日期, +TRUNC(SYSDATE) 今天日期, +TRUNC(SYSDATE,'DAY') 本周星期日, +TRUNC(SYSDATE,'MONTH') 本月初, +TRUNC(SYSDATE,'Q') 本季初日期, +TRUNC(SYSDATE,'YEAR') 本年初日期 FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +| 当时日期 | 今天日期 | 本周星期日 | 本月初 | 本季初日期 | 本年初日期 | ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +| 2020-03-08 22:41:46 | 2020-03-08 00:00:00 | 2020-03-08 00:00:00 | 2020-03-01 00:00:00 | 2020-01-01 00:00:00 | 2020-01-01 00:00:00 | ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +``` + + + +以下示例展示了在相同日期下用 `ROUND` 计算符合要求的最近日期的结果: + +```javascript +SELECT SYSDATE 当时日期, +ROUND(SYSDATE) 最近0点日期, +ROUND(SYSDATE,'DAY') 最近星期日, +ROUND(SYSDATE,'MONTH') 最近月初, +ROUND(SYSDATE,'Q') 最近季初日期, +ROUND(SYSDATE,'YEAR') 最近年初日期 FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +| 当时日期 | 最近0点日期 | 最近星期日 | 最近月初 | 最近季初日期 | 最近年初日期 | ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +| 2020-03-08 22:41:02 | 2020-03-09 00:00:00 | 2020-03-08 00:00:00 | 2020-03-01 00:00:00 | 2020-04-01 00:00:00 | 2020-01-01 00:00:00 | ++---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/24.TZ_OFFSET.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/24.TZ_OFFSET.md new file mode 100644 index 000000000..9a6963b12 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/24.TZ_OFFSET.md @@ -0,0 +1,54 @@ +TZ_OFFSET +============================== + + + +`TZ_OFFSET` 函数返回时区 `n` 的时区偏移量。时区偏移量是指与格林尼治标准时间 GMT 的差(小时和分钟)。 + +语法 +-------------- + +```javascript +TZ_OFFSET (n) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----|---------| +| n | 时区区域名称。 | + + + +返回类型 +---------------- + +`VARCHAR2` 数据类型。 + +示例 +-------------- + +以下示例返回了当前会话时区 `SESSIONTIMEZONE` 、数据库时区 `DBTIMEZONE` 和 US/Eastern 所在时区的时区偏移量: + +```javascript +SELECT TZ_OFFSET(SESSIONTIMEZONE),TZ_OFFSET(DBTIMEZONE),TZ_OFFSET('US/Eastern') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------------------------+-----------------------+-------------------------+ +| TZ_OFFSET(SESSIONTIMEZONE) | TZ_OFFSET(DBTIMEZONE) | TZ_OFFSET('US/EASTERN') | ++----------------------------+-----------------------+-------------------------+ +| +08:00 | +00:00 | -04:00 | ++----------------------------+-----------------------+-------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/3.CURRENT_TIMESTAMP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/3.CURRENT_TIMESTAMP.md new file mode 100644 index 000000000..e1530a168 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/3.CURRENT_TIMESTAMP.md @@ -0,0 +1,92 @@ +CURRENT_TIMESTAMP +====================================== + + + +`CURRENT_TIMESTAMP` 函数返回 `TIMESTAMP WITH TIME ZONE` 数据类型的当前会话时区中的当前日期,返回值中包含当前的时区信息。 + +语法 +-------------- + +```javascript +CURRENT_TIMESTAMP (precision) +``` + + + +参数 +-------------- + + + +| **参数** | **说明** | +|-----------|-----------------------------| +| precision | 表示秒小数位的精度,默认值为 6,取值范围 0\~9。 | + + + +返回类型 +---------------- + +包含当前的时区信息的 `TIMESTAMP WITH TIME ZONE` 数据类型。 + +示例 +-------------- + +此示例显示了不同会话时区使用 `CURRENT_TIMESTAMP` 函数所得的结果。 + +设置当前时区至 GMT-5 时区: + +```javascript +ALTER SESSION SET TIME_ZONE = '-05:00'; +``` + + + +执行以下语句调用函数: + +```javascript +SELECT CURRENT_TIMESTAMP FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------------------------------+ +| CURRENT_TIMESTAMP | ++------------------------------------+ +| 2020-03-08 01:49:31.219066 -05:00 | ++------------------------------------+ +``` + + + +切换当前时区至 GMT+8 时区,且调整秒的小数位精度为 3: + +```javascript +ALTER SESSION SET TIME_ZONE = '+08:00'; +``` + + + +执行以下语句调用函数: + +```javascript +SELECT CURRENT_TIMESTAMP(3) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------------------+ +| CURRENT_TIMESTAMP(3) | ++---------------------------------+ +| 2020-03-08 14:50:32.499 +08:00 | ++---------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/4.DBTIMEZONE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/4.DBTIMEZONE.md new file mode 100644 index 000000000..b77f851df --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/4.DBTIMEZONE.md @@ -0,0 +1,48 @@ +DBTIMEZONE +=============================== + + + +`DBTIMEZONE` 函数返回当前数据库实例的时区,在 OceanBase 中数据库时区恒为+00:00,且不支持修改。 + +语法 +-------------- + +```javascript +DBTIMEZONE +``` + + + +参数 +-------------- + +无参数。 + +返回类型 +---------------- + +`VARCHAR2` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT DBTIMEZONE FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------+ +| DBTIMEZONE | ++------------+ +| +00:00 | ++------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/5.extract-datetime.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/5.extract-datetime.md new file mode 100644 index 000000000..34d11a1f5 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/5.extract-datetime.md @@ -0,0 +1,61 @@ +EXTRACT(datetime) +====================================== + + + +`EXTRACT(datetime)` 函数是从指定的时间字段或表达式中抽取年、月、日、时、分、秒等元素。 + +语法 +-------------- + +```javascript +EXTRACT (fields FROM datetime) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|-------------------------------------------------------------------------------------------------------------------------------------------------| +| fields | 要抽取的元素的名称: `YEAR`、`MONTH`、`DAY`、`HOUR`、`MINUTE`、`SECOND`、`TIMEZONE_HOUR`、`TIMEZONE_MINUTE`、`TIMEZONE_MINUTE`、`TIMEZONE_REGION`、`TIMEZONE_ABBR`。 | +| datetime | `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL YEAR TO MONTH`、`INTERVAL DAY TO SECOND` 等数据类型的值。 | + + + +返回类型 +---------------- + +抽取元素 `TIMEZONE_REGION`、`TIMEZONE_ABBR` 时,返回值的数据类型为 `VARCHAR2`。抽取其他元素时,返回值的数据类型为 `NUMBER`。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-2-16 2:38:40 ') 小时, + EXTRACT(MINUTE FROM TIMESTAMP '2001-2-16 2:38:40 ') 分钟, + EXTRACT(SECOND FROM TIMESTAMP '2001-2-16 2:38:40 ') 秒, + EXTRACT(DAY FROM TIMESTAMP '2001-2-16 2:38:40 ') 日, + EXTRACT(MONTH FROM TIMESTAMP '2001-2-16 2:38:40 ') 月, + EXTRACT(YEAR FROM TIMESTAMP '2001-2-16 2:38:40 ') 年 +FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++--------+--------+------+------+------+------+ +| 小时 | 分钟 | 秒 | 日 | 月 | 年 | ++--------+--------+------+------+------+------+ +| 2 | 38 | 40 | 16 | 2 | 2001 | ++--------+--------+------+------+------+------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/6.FROM_TZ.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/6.FROM_TZ.md new file mode 100644 index 000000000..94f478c39 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/6.FROM_TZ.md @@ -0,0 +1,55 @@ +FROM_TZ +============================ + + + +`FROM_TZ` 函数将一个 `TIMSTAMP` 数据类型的值和时区信息拼成一个 `TIMESTAMP WITH TIME ZONE` 数据类型的时间值。 + +语法 +-------------- + +```javascript +FROM_TZ (timestamp_value,time_zone_value) +``` + + + +参数 +-------------- + + + +| **参数** | **说明** | +|-----------------|----------------------| +| timestamp_value | `TIMSTAMP` 数据类型的时间值。 | +| time_zone_value | 时区信息。 | + + + +返回类型 +---------------- + +`TIMESTAMP WITH TIME ZONE` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT FROM_TZ(TIMESTAMP '2020-03-28 08:00:00', '-03:00') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------------------------------------------+ +| FROM_TZ(TIMESTAMP'2020-03-2808:00:00','-03:00') | ++------------------------------------------------+ +| 2020-03-28 08:00:00.000000000 -03:00 | ++------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/7.LAST_DAY.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/7.LAST_DAY.md new file mode 100644 index 000000000..ade80dfb6 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/7.LAST_DAY.md @@ -0,0 +1,56 @@ +LAST_DAY +============================= + + + +`LAST_DAY` 函数返回日期 `date` 所在月份的最后一天的日期。 + +语法 +-------------- + +```javascript +LAST_DAY (date) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|--------------------------------------------------------------------------------------------------| +| date | 所有包含日期信息的数据类型(`DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`)的值。 | + + + +返回类型 +---------------- + +`DATE` 数据类型。 + +示例 +-------------- + +本示例显示了当前日期与本月的最后一天日期以及本月剩余的天数。 + +执行以下语句: + +```javascript +SELECT SYSDATE, LAST_DAY(SYSDATE)Last, LAST_DAY(SYSDATE)-SYSDATE "Left" FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+---------------------+------+ +| SYSDATE | LAST | Left | ++---------------------+---------------------+------+ +| 2020-03-08 15:23:33 | 2020-03-31 15:23:33 | 23 | ++---------------------+---------------------+------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/8.LOCALTIMESTAMP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/8.LOCALTIMESTAMP.md new file mode 100644 index 000000000..8775160ba --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/8.LOCALTIMESTAMP.md @@ -0,0 +1,92 @@ +LOCALTIMESTAMP +=================================== + + + +`LOCALTIMESTAMP` 函数返回当前会话时区中的当前日期,返回 `TIMESTAMP` 数据类型的值。与函数 [CURRENT_TIMESTAMP](sxtu3i) 的区别是,`CURRENT_TIMESTAMP` 函数返回 `TIMESTAMP WITH TIME ZONE` 数据类型的值。 + +语法 +-------------- + +```javascript +LOCALTIMESTAMP (timestamp_precision) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------------------|------------------------------| +| timestamp_precision | 表示秒的小数位的精度,默认值为 6,取值范围 0\~9。 | + + + +返回类型 +---------------- + +`TIMESTAMP` 数据类型。 + +示例 +-------------- + +此示例显示了不同会话时区使用 `LOCALTIMESTAMP` 函数所得的结果。 + +设置当前时区至 GMT-5 时区: + +```javascript +ALTER SESSION SET TIME_ZONE = '-05:00'; +``` + + + +执行以下语句调用函数: + +```javascript +SELECT LOCALTIMESTAMP FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------------------------+ +| LOCALTIMESTAMP | ++----------------------------+ +| 2020-03-08 02:30:20.062104 | ++----------------------------+ +``` + + + +切换当前时区至 GMT+8 时区,且调整秒的小数位精度为 3: + +```javascript +ALTER SESSION SET TIME_ZONE = '+08:00'; +``` + + + +执行以下语句调用函数: + +```javascript +SELECT LOCALTIMESTAMP(3) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------------------+ +| LOCALTIMESTAMP(3) | ++-------------------------+ +| 2020-03-08 15:30:54.500 | ++-------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/9.MONTHS_BETWEEN.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/9.MONTHS_BETWEEN.md new file mode 100644 index 000000000..eb34a014e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/4.date-and-time-functions/9.MONTHS_BETWEEN.md @@ -0,0 +1,58 @@ +MONTHS_BETWEEN +=================================== + + + +`MONTHS_BETWEEN` 函数是返回返回参数 `date1` 到 `date2` 之间的月数。 + +语法 +-------------- + +```javascript +MONTHS_BETWEEN (date1,date2) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-------|----------------| +| date1 | `DATE` 数据类型的值。 | +| date2 | `DATE` 数据类型的值。 | + + + +返回类型 +---------------- + +`NUMBER` 数据类型。如果 `date1`\>`date2`,返回正数;如果 `date1`\<`date2`,则返回负数。 + +示例 +-------------- + +以下示例展示了当前时间和指定时间值之间的月数: + +```javascript +SELECT SYSDATE, +MONTHS_BETWEEN(SYSDATE,TO_DATE('2006-01-01','YYYY-MM-DD')), +MONTHS_BETWEEN(SYSDATE,TO_DATE('2022-01-01','YYYY-MM-DD')) +FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+------------------------------------------------------------+------------------------------------------------------------+ +| SYSDATE | MONTHS_BETWEEN(SYSDATE,TO_DATE('2006-01-01','YYYY-MM-DD')) | MONTHS_BETWEEN(SYSDATE,TO_DATE('2022-01-01','YYYY-MM-DD')) | ++---------------------+------------------------------------------------------------+------------------------------------------------------------+ +| 2020-03-08 15:38:35 | 170.246832063918757467144563918757467145 | -21.75316793608124253285543608124253285544 | ++---------------------+------------------------------------------------------------+------------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/5.generic-comparison-functions/1.GREATEST.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/5.generic-comparison-functions/1.GREATEST.md new file mode 100644 index 000000000..8af3a1bc6 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/5.generic-comparison-functions/1.GREATEST.md @@ -0,0 +1,76 @@ +GREATEST +============================= + + + +`GREATEST` 函数返回一个或多个表达式列表中的最大值。 数据库使用第一个参数 `expr` 来确定返回类型。 如果其余参数的数据类型和第一个参数 `expr` 的数据类型不同,则 OceanBase 将第一个参数 `expr` 之后的每个参数隐式转换为比较之前的第一个 `expr` 的数据类型。 + +语法 +-------------- + +```javascript +GREATEST(expr [, expr ]...) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|--------------------------------------------------------------------------------------------------------------------| +| expr | 一个表达式或表达式列表。数据类型可以是:`NUMBER`、`FLOAT`、`BINARY_FLOAT`、`BINARY_DOUBLE`、`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2`或 `CLOB`。 | + + + +返回类型 +---------------- + +如果第一个参数 `expr` 的数据类型为 `NUMBER`、`FLOAT`、`BINARY_FLOAT`或 `BINARY_DOUBLE`,则返回与第一个参数 `expr` 相同的数据类型。如果第一个参数 `expr` 的数据类型为 `CHAR`、`VARCHAR2` 或 `CLOB`,则返回 `VARCHAR2` 类型。如果第一个参数 `expr` 的数据类型为 `NCHAR` 或 `NVARCHAR2`,则返回 `NVARCHAR2` 类型。 + +示例 +-------------- + +以下语句比较了字符串的大小,并返回了其中最大的字符串: + +```javascript +SELECT GREATEST('HAPPY', 'HAPPEN', 'HAPPINESS') "Greatest" +FROM DUAL; +``` + + + +返回结果: + +```javascript ++----------+ +| Greatest | ++----------+ +| HAPPY | ++----------+ +``` + + + +以下语句比较了整数 **1** 和 字符串 **3.925** 、 **2.4** 三者间的大小,由于第一个参数的数据类型为数值数据类型,所以其余参数将被隐式转换为数值数据类型后再进行比较: + +```javascript +SELECT GREATEST (1, '3.935', '2.4') "Greatest" +FROM DUAL; +``` + + + +返回结果: + +```javascript ++----------+ +| Greatest | ++----------+ +| 3.935 | ++----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/5.generic-comparison-functions/2.LEAST.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/5.generic-comparison-functions/2.LEAST.md new file mode 100644 index 000000000..eb356cab7 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/5.generic-comparison-functions/2.LEAST.md @@ -0,0 +1,76 @@ +LEAST +========================== + + + +`LEAST` 函数返回一个或多个表达式列表中的最小值。 数据库使用第一个参数 `expr` 来确定返回类型。 如果其余参数的数据类型和第一个参数 `expr` 的数据类型不同,则 OceanBase 将第一个参数 `expr` 之后的每个参数隐式转换为比较之前的第一个 `expr` 的数据类型。 + +语法 +-------------- + +```javascript +LEAST(expr [, expr ]...) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|--------------------------------------------------------------------------------------------------------------------| +| expr | 一个表达式或表达式列表。数据类型可以是:`NUMBER`、`FLOAT`、`BINARY_FLOAT`、`BINARY_DOUBLE`、`CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2`或 `CLOB`。 | + + + +返回类型 +---------------- + +如果第一个参数 `expr` 的数据类型为 `NUMBER`、`FLOAT`、`BINARY_FLOAT`或 `BINARY_DOUBLE`,则返回与第一个参数 `expr` 相同的数据类型。如果第一个参数 `expr` 的数据类型为 `CHAR`、`VARCHAR2` 或 `CLOB`,则返回 `VARCHAR2` 类型。如果第一个参数 `expr` 的数据类型为 `NCHAR` 或 `NVARCHAR2`,则返回 `NVARCHAR2` 类型。 + +示例 +-------------- + +以下语句比较了字符串的大小,并返回了其中最小的字符串: + +```javascript +SELECT LEAST('HAPPY', 'HAPPEN', 'HAPPINESS') "Least" +FROM DUAL; +``` + + + +返回结果: + +```javascript ++--------+ +| Least | ++--------+ +| HAPPEN | ++--------+ +``` + + + +以下语句比较了整数 **1** 和 字符串 **3.925** 、 **2.4** 三者间的大小,由于第一个参数的数据类型为数值数据类型,所以其余参数将被隐式转换为数值数据类型后再进行比较: + +```javascript +SELECT LEAST (1, '3.925', '2.4') "Least" +FROM DUAL; +``` + + + +返回结果: + +```javascript ++-------+ +| Least | ++-------+ +| 1 | ++-------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/1.CAST.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/1.CAST.md new file mode 100644 index 000000000..f9eef5087 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/1.CAST.md @@ -0,0 +1,78 @@ +CAST +========================= + + + +`CAST` 函数用于将源数据类型的表达式显式转换为另一种数据类型。 + +语法 +-------------- + +```javascript +CAST (expr AS type_name ) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-----------|--------------------------------------------------------------------------| +| expr | 列名或者表达式。 | +| AS | 用于分隔两个参数,在 `AS` 之前的是要处理的数据,在 `AS` 之后是要转换的数据类型。 | +| type_name | 数据类型为 OceanBase 的 [内建数据类型](/zh-CN/11.sql-reference-oracle-mode/3.basic-elements-1/1.built-in-data-types/1.overview-of-built-in-data-types.md)。 | + + + +返回类型 +---------------- + +返回与 `type_name` 相同的类型。 + +下表显示了哪些数据类型可以转换为其他内置数据类型: + + +| | **from BINARY_FLOAT, BINARY_DOUBLE** | **from CHAR, VARCHAR2** | **from NUMBER** | ^[1]()^ **from DATETIME/INTERVAL** | **from RAW** | **from NCHAR, NVARCHAR2** | +|------------------------------------|--------------------------------------|-------------------------|-----------------|----------------------------------------------------|--------------|---------------------------| +| **to BINARY_FLOAT, BINARY_DOUBLE** | yes | yes | yes | no | no | yes | +| **to CHAR, VARCHAR2** | yes | yes | yes | yes | yes | no | +| **to NUMBER** | yes | yes | yes | no | no | yes | +| **to DATETIME, INTERVAL** | no | yes | no | yes | no | no | +| **to RAW** | yes | yes | yes | no | yes | no | +| **to NCHAR, NVARCHAR2** | yes | no | yes | yes | yes | yes | + + + +^[1]()^`To DATETIME/INTERVAL` 数据类型包括 `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIMEZONE`、`INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH`。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT CAST('123' AS INT),CAST(1 AS VARCHAR2(10)),CAST('22-OCT-1997' AS TIMESTAMP WITH LOCAL TIME ZONE) +AS RESULT FROM DUAL; +``` + + +**说明** + + + +此函数会受 NLS_DATE_FORMAT 格式的影响,建议先执行如下语句更改 NLS_DATE_FORMAT 格式:`ALTER SESSION SET N``LS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';` + +查询结果如下: + +```javascript ++------------------+-----------------------+----------------------------+ +| CAST('123'ASINT) | CAST(1ASVARCHAR2(10)) | RESULT | ++------------------+-----------------------+----------------------------+ +| 123 | 1 | 1997-10-22 00:00:00.000000 | ++------------------+-----------------------+----------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/10.TO_DSINTERVAL-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/10.TO_DSINTERVAL-1.md new file mode 100644 index 000000000..ba969f9b9 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/10.TO_DSINTERVAL-1.md @@ -0,0 +1,54 @@ +TO_DSINTERVAL +================================== + + + +`TO_DSINTERVAL` 函数将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL DAY TO SECOND` 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。 + +语法 +-------------- + +```javascript +TO_DSINTERVAL (days hours:minutes:seconds[.frac_secs]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------------------------------------------|------------------------------------------------------------| +| days hours:minutes:seconds\[.frac_secs\] | 符合该参数格式的 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串。 | + + + +返回类型 +---------------- + +`INTERVAL DAY TO SECOND` 数据类型。 + +示例 +-------------- + +以下示例返回了当前时间 100 天后的日期时间值: + +```javascript +SELECT SYSDATE, SYSDATE+TO_DSINTERVAL('100 00:00:00') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+--------------------------------------+ +| SYSDATE | SYSDATE+TO_DSINTERVAL('10000:00:00') | ++---------------------+--------------------------------------+ +| 2020-03-26 12:40:39 | 2020-07-04 12:40:39 | ++---------------------+--------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/11.TO_NUMBER.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/11.TO_NUMBER.md new file mode 100644 index 000000000..714264be0 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/11.TO_NUMBER.md @@ -0,0 +1,56 @@ +TO_NUMBER +============================== + + + +`TO_NUMBER` 函数将 `expr` 转换为数值数据类型的值。`expr` 可以是 `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 数据类型的数值。 + +语法 +-------------- + +```javascript +TO_NUMBER(expr [, fmt [, 'nlsparam' ] ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------------------------------------| +| expr | `CHAR`、`VARCHAR2`、`NCHAR`、`NVARCHAR2`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 数据类型的数值。 | +| fmt | 格式模型。 | +| nlsparam | 支持的语言从 `sys.V_$NLS_VALID_VALUES` 获取。 | + + + +返回类型 +---------------- + +返回 `NUMBER` 类型的数据。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_NUMBER('199912'),TO_NUMBER('450.05') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+---------------------+ +| TO_NUMBER('199912') | TO_NUMBER('450.05') | ++---------------------+---------------------+ +| 199912 | 450.05 | ++---------------------+---------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/12.TO_TIMESTAMP-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/12.TO_TIMESTAMP-1.md new file mode 100644 index 000000000..78bbb1436 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/12.TO_TIMESTAMP-1.md @@ -0,0 +1,57 @@ +TO_TIMESTAMP +================================= + + + +`TO_TIMESTAMP` 函数将字符串转换为 `TIMESTAMP` 数据类型。 + +语法 +-------------- + +```javascript +TO_TIMESTAMP (char,[fmt],['nlsparam']) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------| +| char | `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串。 | +| fmt | 指定返回值的格式。 | +| nlsparam | 用来控制返回的月份和日份所使用的语言。 | + + + +返回类型 +---------------- + +`TIMESTAMP` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_TIMESTAMP ('10-Sep-02 14:10:10.123000', 'DD-Mon-RR HH24:MI:SS.FF') +FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------------------------------+ +| TO_TIMESTAMP('10-SEP-0214:10:10.123000','DD-MON-RRHH24:MI:SS.FF') | ++-------------------------------------------------------------------+ +| 2002-09-10 14:10:10.123000000 | ++-------------------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/13.TO_TIMESTAMP_TZ-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/13.TO_TIMESTAMP_TZ-1.md new file mode 100644 index 000000000..37233e18e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/13.TO_TIMESTAMP_TZ-1.md @@ -0,0 +1,56 @@ +TO_TIMESTAMP_TZ +==================================== + + + +`TO_TIMESTAMP` 函数将字符串转换为 `TIMESTAMP WITH TIME ZONE` 数据类型,包含时区信息。 + +语法 +-------------- + +```javascript +TO_TIMESTAMP_TZ (char,[fmt],['nlsparam']) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------| +| char | `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串。 | +| fmt | 指定输出格式。 | +| nlsparam | 用来控制返回的月份和日份所使用的语言。 | + + + +返回类型 +---------------- + +`TIMESTAMP WITH TIME ZONE` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_TIMESTAMP_TZ ('10-Sep-02 14:10:10.123000', 'DD-Mon-RR HH24:MI:SS.FF') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------------------------------------------------------------------+ +| TO_TIMESTAMP_TZ('10-SEP-0214:10:10.123000','DD-MON-RRHH24:MI:SS.FF') | ++----------------------------------------------------------------------+ +| 2002-09-10 14:10:10.123000000 +08:00 | ++----------------------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/14.TO_YMINTERVAL-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/14.TO_YMINTERVAL-1.md new file mode 100644 index 000000000..7cd7cb127 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/14.TO_YMINTERVAL-1.md @@ -0,0 +1,54 @@ +TO_YMINTERVAL +================================== + + + +`TO_YMINTERVAL` 函数将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL YEAR TO MONTH` 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。 + +语法 +-------------- + +```javascript +TO_YMINTERVAL (years-months) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------|------------------------------------------------------------| +| years-months | 符合该参数格式的 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串。 | + + + +返回类型 +---------------- + +`INTERVAL YEAR TO MONTH` 数据类型。 + +示例 +-------------- + +以下示例展示了返回当前时间 1 年 2 个月后的时间日期值: + +```javascript +SELECT SYSDATE,SYSDATE+TO_YMINTERVAL('01-02') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++---------------------+--------------------------------+ +| SYSDATE | SYSDATE+TO_YMINTERVAL('01-02') | ++---------------------+--------------------------------+ +| 2020-03-08 22:32:01 | 2021-05-08 22:32:01 | ++---------------------+--------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/2.HEXTORAW.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/2.HEXTORAW.md new file mode 100644 index 000000000..8382a48c2 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/2.HEXTORAW.md @@ -0,0 +1,54 @@ +HEXTORAW +============================= + + + +`HEXTORAW` 函数将 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型中包含十六进制数字的字符转换为 `RAW` 数据类型。 + +语法 +-------------- + +```javascript +HEXTORAW (char) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------------------------------------------| +| char | 十六进制的字符串。字符串类型可为:`CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2`。 | + + + +返回类型 +---------------- + +返回 `RAW` 类型的数据。 + +示例 +-------------- + +执行以下语句: + +```javascript +select HEXTORAW('A123') from dual; +``` + + + +查询结果如下: + +```javascript ++------------------+ +| HEXTORAW('A123') | ++------------------+ +| A123 | ++------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/3.RAWTOHEX.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/3.RAWTOHEX.md new file mode 100644 index 000000000..6413d4b69 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/3.RAWTOHEX.md @@ -0,0 +1,54 @@ +RAWTOHEX +============================= + + + +`RAWTOHEX` 函数将二进制数转换为一个相应的十六进制表示的字符串。 + +语法 +-------------- + +```javascript +RAWTOHEX (raw) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-----|----------| +| raw | 二进制的字符串。 | + + + +返回类型 +---------------- + +十六进制表示的字符串。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT RAWTOHEX('AB') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------------+ +| RAWTOHEX('AB') | ++----------------+ +| 4142 | ++----------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/4.TO_BINARY_DOUBLE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/4.TO_BINARY_DOUBLE.md new file mode 100644 index 000000000..89e7d61e8 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/4.TO_BINARY_DOUBLE.md @@ -0,0 +1,58 @@ +TO_BINARY_DOUBLE +===================================== + + + +`TO_BINARY_DOUBLE` 函数返回一个双精度的 64 位浮点数。 + +语法 +-------------- + +```javascript +TO_BINARY_DOUBLE(expr [, fmt [, 'nlsparam' ] ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|--------------------------------------------------------| +| expr | 字符串或 `NUMBER`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 数值数据类型。 | + + + +当 `expr` 是字符串时,可选的 `fmt` 和 `nlsparam` 参数才有效。它们的作用与 `TO_CHAR(number)` 功能的作用相同。当 `expr` 为 `BINARY_DOUBLE`,则该函数返回 `expr`。 + +返回类型 +---------------- + +双精度的 64 位浮点数。从字符串或 `NUMBER` 到 `BINARY_DOUBLE` 的转换可能不准确,因为 `NUMBER` 和字符类型使用十进制精度表示数值,而 `BINARY_DOUBLE` 使用二进制精度。从 `BINARY_FLOAT` 到 `BINARY_DOUBLE` 的转换是准确的。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_BINARY_DOUBLE(1222.111) FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------------------------+ +| TO_BINARY_DOUBLE(1222.111) | ++----------------------------+ +| 1.2221110000000001E+003 | ++----------------------------+ +``` + + + +您可以看 [TO_BINARY_FLOAT](ab1u5c) 和 [TO_CHAR(number)](kh9rud)。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/5.TO_BINARY_FLOAT.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/5.TO_BINARY_FLOAT.md new file mode 100644 index 000000000..acd2d984e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/5.TO_BINARY_FLOAT.md @@ -0,0 +1,58 @@ +TO_BINARY_FLOAT +==================================== + + + +`TO_BINARY_FLOAT` 函数返回一个单精度的 32 位浮点数。 + +语法 +-------------- + +```javascript +TO_BINARY_FLOAT(expr [, fmt [, 'nlsparam' ] ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|--------------------------------------------------------| +| expr | 字符串或 `NUMBER`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 数值数据类型。 | + + + +当 `expr` 是字符串时,可选的 `fmt` 和 `nlsparam` 参数才有效。它们的作用与 `TO_CHAR(number)` 功能的作用相同。当 `expr` 为 `BINARY_FLOAT`,则函数返回 `expr`。 + +返回类型 +---------------- + +单精度的 32 位浮点数。从字符串或 `NUMBER` 到 `BINARY_FLOAT` 的转换可能不精确,因为 `NUMBER` 和字符类型使用十进制精度表示数值,而 `BINARY_FLOAT` 使用二进制精度。如果 `BINARY_DOUBLE` 值使用的精度比`BINARY_FLOAT` 支持的精度高,则从 `BINARY_DOUBLE` 到 `BINARY_FLOAT` 的转换是不精确的。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_BINARY_FLOAT(1222.111) from dual; +``` + + + +查询结果如下: + +```javascript ++---------------------------+ +| TO_BINARY_FLOAT(1222.111) | ++---------------------------+ +| 1.22211096E+003 | ++---------------------------+ +``` + + + +您可以看 [TO_BINARY_DOUBLE](pc6zsr) 和 [TO_CHAR(number)](kh9rud)。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/6.to_char-character.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/6.to_char-character.md new file mode 100644 index 000000000..fb9984813 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/6.to_char-character.md @@ -0,0 +1,63 @@ +TO_CHAR (character) +======================================== + + + +`TO_CHAR (character)` 函数将 `NCHAR`、`NVARCHAR2` 或 `CLOB` 数据转换为数据库字符集。 + +语法 +-------------- + +```javascript +TO_CHAR(character ) +``` + + + +参数 +-------------- + + + +| | 说明 | +|-----------|----------------------------------------| +| character | 可以是 `NCHAR`、`NVARCHAR2` 或 `CLOB` 数据类型。 | + + + +返回类型 +---------------- + +返回 `VARCHAR2`。当函数将字符 `LOB` 转换为数据库字符集时,如果要转换的 `LOB` 值大于目标类型,则数据库返回错误。 + +示例 +-------------- + +新建表 **CLOBTEST** ,并给 `RAW` 数据类型的列插入数据。 + +```javascript +CREATE TABLE CLOBTEST(TEXT CLOB); +INSERT INTO CLOBTEST VALUES('DWUIDBWUIDBWIOBFWUIOBFIOWBFWUIOBFUWIFB') ; +``` + + + +执行以下语句: + +```javascript +SELECT TO_CHAR(TEXT) FROM CLOBTEST; +``` + + + +查询结果如下: + +```javascript ++----------------------------------------+ +| TO_CHAR(TEXT) | ++----------------------------------------+ +| DWUIDBWUIDBWIOBFWUIOBFIOWBFWUIOBFUWIFB | ++----------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/7.to_char-datetime-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/7.to_char-datetime-1.md new file mode 100644 index 000000000..c46b9b1e1 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/7.to_char-datetime-1.md @@ -0,0 +1,87 @@ +TO_CHAR (datetime) +======================================= + + + +`TO_CHAR` 函数将 `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 等数据类型的值按照参数 `fmt` 指定的格式转换为 `VARCHAR2` 数据类型的值。 如果不指定参数 `fmt`,则参数 `datetime` 的值将按如下格式转换为 `VARCHAR2` 数据类型: + +* `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE` 和 `TIMESTAMP WITH LOCAL TIME ZONE` 的值被转换为数据库中日期时间值的默认格式。您可在数据类型章节中查看各日期时间类型的默认格式。 + + + +* `INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 数据类型的值转换为数字格式的间隔值。 + + + + + + +语法 +-------------- + +```javascript +TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------------------------------------------------------------------------------------------------| +| datetime | `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 等数据类型的值。 | +| fmt | 输出格式参数。 | +| nlsparam | 用来控制返回的月份和日份所使用的语言。 | + + + +返回类型 +---------------- + +`VARCHAR2` 数据类型。 + +示例 +-------------- + +**示例 1** : 以下语句通过 TO_CHAR 函数返回系统当前日期,并且将日期时间值转换为了 **DS DL** 格式: + +```javascript +SELECT TO_CHAR(SYSDATE,'DS DL') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-----------------------------------+ +| TO_CHAR(SYSDATE,'DSDL') | ++-----------------------------------+ +| 03/08/2020 Sunday, March 08, 2020 | ++-----------------------------------+ +``` + + + +**示例 2** :以下语句将间隔值转化为指定格式,并且设置了返回语言为 **AMERICAN** : + +```javascript +SELECT TO_CHAR(interval'1' year, 'SS-MI-HH', 'nls_language = AMERICAN') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------------------------+ +| TO_CHAR(INTERVAL'1'YEAR,'SS-MI-HH','NLS_LANGUAGE=AMERICAN') | ++-------------------------------------------------------------+ +| +01-00 | ++-------------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/8.to_char-number.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/8.to_char-number.md new file mode 100644 index 000000000..deb09adbd --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/8.to_char-number.md @@ -0,0 +1,68 @@ +TO_CHAR (number) +===================================== + + + +`TO_CHAR` 函数将 `NUMBER`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 类型的数值 `n` 按照指定数值格式 `fmt` 转换为 `varchar2` 数据类型的值。如果省略 `fmt`,则 `n` 被转换为 `VARCHAR2` 值,其长度足以保持有效数字。若 `n` 为负值,则负号显示在输出值最左侧,比如 `TO_CHAR(-1,'$9')` 返回 `-$1`,而不是 `$-1`。 + +语法 +-------------- + +```javascript +TO_CHAR(n [, fmt [, 'nlsparam' ] ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------------------------------------| +| n | 精确数值或近似数值数据类型类别的表达式。数值数据类型可以为 `NUMBER`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 数值数据类型。 | +| fmt | 输出格式参数。 | +| nlsparam | 支持的语言从 `sys.V_$NLS_VALID_VALUES` 获取。 | + + + +**fmt 参数列表** + + +| fmt 参数 | 说明 | +|--------|----------------------------------------------------------------------------------------| +| 9 | 返回指定位数的值。 | +| 0 | 它返回前导 0,它返回尾随 0。 | +| ,(逗号) | 返回指定位置的逗号。您可以在数字格式化中指定多个逗号。 **限制条件** :格式化数值不能以逗号开头,且逗号不能出现在小数字符或句点的右边。 | +| .(小数点) | 返回一个小数,且小数点在指定位置。 **限制条件** :在数字格式化中,您只能指定一个小数点。 | + + + +返回类型 +---------------- + +`VARCHAR2` 数据类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_CHAR(123.456,'999') FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++------------------------+ +| TO_CHAR(123.456,'999') | ++------------------------+ +| 123 | ++---------------------- +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/9.TO_DATE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/9.TO_DATE.md new file mode 100644 index 000000000..0845eeadc --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/6.conversion-functions/9.TO_DATE.md @@ -0,0 +1,60 @@ +TO_DATE +============================ + + + +`TO_DATE` 函数将 `CHAR`、`VARCHAR`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符转换为日期数据类型的值。 + +语法 +-------------- + +```javascript +TO_DATE(char [, fmt [, 'nlsparam' ] ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|--------------------------------------------------------| +| char | `CHAR`、`VARCHAR`、`NCHAR` 或 `NVARCHAR2` 字符数据。 | +| fmt | 指定日期时间格式化。 | +| nlsparam | 由 `nls_territory` 初始化参数隐式指定或 `nls_date_format` 参数显式指定。 | + + + +返回类型 +---------------- + +返回 `DATE` 类型。 + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT TO_DATE('199912','YYYYMM'),TO_DATE('2000.05.20','YYYY.MM.DD'), +(DATE '2008-12-31') XXDATE, +TO_DATE('2008-12-31 12:31:30','YYYY-MM-DD HH24:MI:SS'), +(TIMESTAMP '2008-12-31 12:31:30') XXTIMESTAMP +FROM DUAL; +``` + + + +查询结果如下: + +```javascript ++----------------------------+------------------------------------+---------------------+------------------------------------------------------+-------------------------------+ +| TO_DATE('199912','YYYYMM') | TO_DATE('2000.05.20','YYYY.MM.DD') | XXDATE | TO_DATE('2008-12-3112:31:30','YYYY-MM-DDHH24:MI:SS') | XXTIMESTAMP | ++----------------------------+------------------------------------+---------------------+------------------------------------------------------+-------------------------------+ +| 1999-12-01 00:00:00 | 2000-05-20 00:00:00 | 2008-12-31 00:00:00 | 2008-12-31 12:31:30 | 2008-12-31 12:31:30.000000000 | ++----------------------------+------------------------------------+---------------------+------------------------------------------------------+-------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/7.encoding-and-decoding-functions/1.DECODE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/7.encoding-and-decoding-functions/1.DECODE.md new file mode 100644 index 000000000..e2430bc6c --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/7.encoding-and-decoding-functions/1.DECODE.md @@ -0,0 +1,145 @@ +DECODE +=========================== + + + +`DECODE` 函数依次用参数 `search` 与 `condition` 做比较,直至 `condition` 与 `search` 的值相等,则返回对应 `search` 后跟随的参数 `result` 的值。如果没有 `search` 与 `condition` 相等,则返回参数 `default` 的值。 + +语法 +-------------- + +```javascript +DECODE (condition, search 1, result 1, search 2, result 2 ... search n, result n, default) +``` + + + +`DECODE` 函数的含义可以用 `IF...ELSE IF...END` 语句进行解释: + +```javascript +IF condition = search 1 THEN +RETURN(result 1) +ELSE IF condition = search 2 THEN +RETURN(result 2) +...... +ELSE IF condition = search n THEN +RETURN(result n) +ELSE +RETURN(default) +END IF +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------| +| condition、search 1...search n、result 1...result n、default | 数值型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 或 `BINARY_DOUBLE`)或字符型( `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2`)的表达式。 | + + +**注意** + + + +`search 1` \~ `search n` 不能为条件表达式,这种情况只能用 `CASE WHEN THEN END` 语句解决: + +```unknow +WHEN CASE condition = search 1 THEN +RETURN(result 1) +ELSE CASE condition = search 2 THEN +RETURN(result 2) +......   +ELSE CASE condition = search n THEN +RETURN(result n) +ELSE +RETURN(default) +END +``` + + + +示例 +-------------- + +**示例 1:** 使用 `DECODE` 比较数值的大小。 + +以下语句使用 `DECODE` 函数来返回数值 10 与 20 当中较小的那个数。`SIGN()` 函数用来计算两个值差的符号,由于 10 小于 20,所以差为负数,`SIGN()` 返回 -1。此时 `DECODE` 函数将参数 -1 与 `SIGN()` 函数的返回值作比较。相等时,返回值 10,不相等时,返回值 20: + +```javascript +SELECT DECODE(SIGN(10-20),-1,10,20) FROM DUAL; +``` + + + +返回结果如下: + +```javascript ++------------------------------+ +| DECODE(SIGN(10-20),-1,10,20) | ++------------------------------+ +| 10 | ++------------------------------+ +``` + + + +**示例 2** :使用 `DECODE` 函数查看数据中是否包含字符 **S** 。 + +以下语句创建了表 **EMP** ,表中包含列 **ename** 和 **sal** ,并向其中插入值: + +```javascript +CREATE TABLE EMP(ename VARCHAR(30),sal NUMBER); +INSERT INTO EMP VALUES('CLARK', 2750); +INSERT INTO EMP VALUES('KING', 5300); +INSERT INTO EMP VALUES('MILLER', 1600); +INSERT INTO EMP VALUES('ADAMS', 1400); +INSERT INTO EMP VALUES('FORD', 3300); +INSERT INTO EMP VALUES('JONES', 3275); +INSERT INTO EMP VALUES('SCOTT', 3300); +INSERT INTO EMP VALUES('SMITH', 1100); +INSERT INTO EMP VALUES('ALLEN', 1900); +INSERT INTO EMP VALUES('BLAKE', 3150); +INSERT INTO EMP VALUES('JAMES', 1250); +INSERT INTO EMP VALUES('MARTIN', 1550); +INSERT INTO EMP VALUES('TURNER', 1800); +INSERT INTO EMP VALUES('WARD', 1550); +``` + + + +以下语句通过函数 `INSTR()` 返回字符 **S** 在列 **ename** 的值中出现的位置,若没有出现过则返回 0。此时 `DECODE` 函数将 `INSTR` 函数的返回值与 0 做比较,相等时说明字符 **S** 在值中没有出现过,则 `DECODE` 函数返回值 **不含有 S** ,否则返回值 **含有 S** : + +```javascript +SELECT ENAME, SAL, DECODE(INSTR(ename, 'S'), 0, '不含有 S', '含有 S') AS INFO FROM EMP; +``` + + + +查询结果如下: + +```javascript ++--------+------+------------+ +| ENAME | SAL | INFO | ++--------+------+------------+ +| CLARK | 2750 | 不含有 S | +| KING | 5300 | 不含有 S | +| MILLER | 1600 | 不含有 S | +| ADAMS | 1400 | 含有 S | +| FORD | 3300 | 不含有 S | +| JONES | 3275 | 含有 S | +| SCOTT | 3300 | 含有 S | +| SMITH | 1100 | 含有 S | +| ALLEN | 1900 | 不含有 S | +| BLAKE | 3150 | 不含有 S | +| JAMES | 1250 | 含有 S | +| MARTIN | 1550 | 不含有 S | +| TURNER | 1800 | 不含有 S | +| WARD | 1550 | 不含有 S | ++--------+------+------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/7.encoding-and-decoding-functions/2.ORA_HASH.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/7.encoding-and-decoding-functions/2.ORA_HASH.md new file mode 100644 index 000000000..6abbade7a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/7.encoding-and-decoding-functions/2.ORA_HASH.md @@ -0,0 +1,83 @@ +ORA_HASH +============================= + + + +`ORA_HASH` 函数获取对应表达式的 HASH 值。 + +语法 +-------------- + +```javascript +ORA_HASH(expr [, max_bucket [, seed_value ] ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------------|--------------------------------------------------------------------------------------| +| expr | 通常为数据库表的列名,数据类型可以是数值类型、字符类型、日期时间类型 或 `RAW` 类型。 | +| max_bucket | 可选的 `max_bucket` 参数确定哈希函数返回的最大桶数。取值范围为 0\~4294967295,默认值是 4294967295。 | +| seed_value | 可选的 `seed_value` 参数使 OceanBase 能够为同一组数据产生许多不同的结果。 您可以指定 0\~4294967295 之间的任何值。默认值为 0。 | + + + +返回类型 +---------------- + +`NUMBER` 类型数据。 + +示例 +-------------- + +创建表 **SALE** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE SALE(MONTH CHAR(6), SELL NUMBER(10,2)); +INSERT INTO SALE VALUES(200001, 1000); +INSERT INTO SALE VALUES(200002, 1100); +INSERT INTO SALE VALUES(200003, 1200); +INSERT INTO SALE VALUES(200004, 1300); +INSERT INTO SALE VALUES(200005, 1400); +INSERT INTO SALE VALUES(200006, 1500); +INSERT INTO SALE VALUES(200007, 1600); +INSERT INTO SALE VALUES(200101, 1100); +INSERT INTO SALE VALUES(200202, 1200); +INSERT INTO SALE VALUES(200301, 1300); +``` + + + +使用 `ORA_HASH` 函数查询 **SALE** 表,并执行以下语句: + +```javascript +SELECT ORA_HASH(CONCAT(month,sell),12,0), month, sell FROM Sale; +``` + + + +查询结果如下: + +```javascript ++-----------------------------------+--------+------+ +| ORA_HASH(CONCAT(MONTH,SELL),12,0) | MONTH | SELL | ++-----------------------------------+--------+------+ +| 1 | 200001 | 1000 | +| 6 | 200002 | 1100 | +| 5 | 200003 | 1200 | +| 4 | 200004 | 1300 | +| 5 | 200005 | 1400 | +| 2 | 200006 | 1500 | +| 7 | 200007 | 1600 | +| 10 | 200101 | 1100 | +| 7 | 200202 | 1200 | +| 4 | 200301 | 1300 | ++-----------------------------------+--------+------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/7.encoding-and-decoding-functions/3.VSIZE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/7.encoding-and-decoding-functions/3.VSIZE.md new file mode 100644 index 000000000..2087713f6 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/7.encoding-and-decoding-functions/3.VSIZE.md @@ -0,0 +1,56 @@ +VSIZE +========================== + + + +`VSIZE` 函数返回 `X` 的字节大小数。 + +语法 +-------------- + +```javascript +VSIZE(X) +``` + + + +返回类型 +---------------- + +返回 x 的字节数,如果 x 为 `NULL`,则函数返回 `NULL`。 + +示例 +-------------- + +创建 **employees** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE employees(manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(300, 'Wei', '2019-09-11',23600); +INSERT INTO employees VALUES(200, 'Red', '2019-11-05', 23800); +INSERT INTO employees VALUES(100, 'Part', '2018-10-01',24000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',23500); +COMMIT; +``` + + + +使用 `VSIZE` 函数查询 **last_name** 列中 **manager_id = 300** 的字节数。执行以下语句: + +```javascript +SELECT last_name, VSIZE (last_name) "BYTES" FROM employees WHERE manager_id = 300; +``` + + + +查询结果如下: + +```javascript ++-----------+-------+ +| LAST_NAME | BYTES | ++-----------+-------+ +| Wei | 3 | ++-----------+-------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/1.COALESCE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/1.COALESCE.md new file mode 100644 index 000000000..dfbb436f5 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/1.COALESCE.md @@ -0,0 +1,78 @@ +COALESCE +============================= + + + +`COALESCE` 函数返回参数列表中第一个非空表达式,必须指定最少两个参数。 + +语法 +-------------- + +```javascript +COALESCE(expr1, expr2[,..., exprn]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-----------------------------|----------------| +| expr1, expr2\[,..., exprn\] | 非空表达式,且最少 2 个。 | + + + +返回类型 +---------------- + +返回参数列表中第一个非空表达式,如果所有的参数都是 `NULL`,则返回 `NULL`。 + +示例 +-------------- + +假设有一张表 **product_information** , **product_id** 为商品 ID, **list_price** 为该商品原价, **min_price** 为商品最低价, **Sale** 为商品实际售价。设置商品折扣为 9 折,计算各商品的实际售价。此时可使用 `COALESCE` 函数,若 **list_price** 为空,就按最低价 **min_price** 计算;若 **min_price** 也为空,则按 **5** 计算。 + +您可以执行以下语句,建立 **product_information** 数据表,并插入数据: + +```javascript +CREATE TABLE product_information(supplier_id INT, product_id INT,list_price numeric, min_price numeric); +INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '1659', '45', NULL); +INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '1770', NULL, '70'); +INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '2370', '305', '247'); +INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '2380', '750', '731'); +INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '3255', NULL, NULL); +``` + + + +执行以下查询语句: + +```javascript +SELECT product_id, list_price,min_price,COALESCE(0.9*list_price, min_price, 5) "Sale" +FROM product_information WHERE supplier_id = 102050 ORDER BY product_id; +``` + + + +查询结果如下: + +```javascript ++--------------+--------------+------------+--------+ +| PRODUCT_ID | LIST_PRICE | MIN_PRICE | Sale | ++--------------+--------------+------------+--------+ +| 1659 | 45 | | 40.5 | ++--------------+--------------+------------+--------+ +| 1770 | | 70 | 70 | ++--------------+--------------+------------+--------+ +| 2370 | 305 | 247 | 274.5 | ++--------------+--------------+------------+--------+ +| 2380 | 750 | 731 | 675 | ++--------------+--------------+------------+--------+ +| 3255 | | | 5 | ++--------------+--------------+------------+--------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/2.LNNVL.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/2.LNNVL.md new file mode 100644 index 000000000..d620bef69 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/2.LNNVL.md @@ -0,0 +1,102 @@ +LNNVL +========================== + + + +`LNNVL` 函数判断条件中的一个或者两个操作数是否为 `NULL`。该函数可以在 `WHERE` 子句中使用,也可以作为 `CASE` 表达式中的 `WHEN` 条件。将条件作为参数,如果条件为 `FALSE` 或 `UNKNOWN`,则返回 `TRUE`;如果条件为 `TRUE`,则返回 `FALSE`。 + +语法 +-------------- + +```javascript +LNNVL(condition) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-----------|----| +| condition | 条件 | + + + +假设 a = 2,b 值为 **NULL** ,下表显示了 `LNNVL` 函数的返回值。 + + +| 条件 | 条件判断结果 | LNNVL 返回值 | +|-----------|---------|-----------| +| a = 1 | FALSE | TRUE | +| a = 2 | TRUE | FALSE | +| a IS NULL | FALSE | TRUE | +| b = 1 | UNKNOWN | TRUE | +| b IS NULL | TRUE | FALSE | +| a = b | UNKNOWN | TRUE | + + + +返回类型 +---------------- + +返回布尔型 `TRUE` 或 `FALSE`。 + +示例 +-------------- + +假设有一张表 **EMPLOYEES** ,给员工姓名列 **name** 和佣金列 **commission_pct** 里面插入数据,执行以下语句: + +```javascript +CREATE TABLE EMPLOYEES (name VARCHAR(20), commission_pct numeric(10,2)); +INSERT INTO EMPLOYEEs VALUES ('Baer', null); +INSERT INTO EMPLOYEEs VALUES ('Bada', null); +INSERT INTO EMPLOYEEs VALUES ('Boll', 0.1); +INSERT INTO EMPLOYEEs VALUES ('Bates', 0.15); +INSERT INTO EMPLOYEEs VALUES ('Eros', null); +INSERT INTO EMPLOYEEs VALUES ('Girl', 0.25); +``` + + + +您想知道佣金率低于 20% 的员工人数,包括没有收到佣金的员工。执行以下语句,您只能查询实际获得佣金低于 20% 的员工人数: + +```javascript +SELECT COUNT(*) FROM employees WHERE commission_pct < .2; +``` + + + +查询结果如下: + +```javascript ++------------+ +| COUNT(*) | ++------------+ +| 2 | ++------------+ +``` + + + +要包括没有收到佣金的另外 3 名员工,您需要使用 `LNNVL` 函数重写查询。执行以下语句: + +```javascript +SELECT COUNT(*) FROM employees WHERE LNNVL(commission_pct >= .2); +``` + + + +查询结果如下: + +```javascript ++------------+ +| COUNT(*) | ++------------+ +| 5 | ++------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/3.NVL.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/3.NVL.md new file mode 100644 index 000000000..a2c064f9a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/3.NVL.md @@ -0,0 +1,88 @@ +NVL +======================== + + + +`NVL` 函数从两个表达式返回一个非 `NULL` 值。如果 `expr1` 与 `expr2` 的结果皆为 `NULL` 值,则 `NVL` 函数返回 `NULL`。 + +语法 +-------------- + +```javascript +NVL(expr1, expr2) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-------|----------------------------------------| +| expr1 | 表达式。数据类型可以是 OceanBase 内建数据类型 中的任何数据类型。 | +| expr2 | 表达式。数据类型可以是 OceanBase 内建数据类型中的任何数据类型。 | + + + +`expr1` 和 `expr2` 必须是相同类型,或者可以隐式转换为相同类型。如果它们不能隐式转换,则 OceanBase 返回错误。隐式转换实现如下: + +* 如果 `expr1` 是 `CHAR`、`NCHAR`、`NVARCHAR`、`VARCHAR2` 或 `VARCHAR` 字符型数据,则 OceanBase 在比较 `expr1` 之前将 `expr2` 转换为 `expr1` 的数据类型,并返回 `expr1` 字符集的 `VARCHAR2`。 + + + +* 如果 `expr1` 是 `NUMBER`、`FLOAT`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 数值型数据,则 OceanBase 确定哪个参数具有最高的数字优先级,隐式地将另一个参数转换为该数据类型,并返回该数据类型。 + + + + + + +返回类型 +---------------- + +如果 `expr1`、`expr2` 是 `NULL`,则返回 `NULL`。如果 `expr1` 是 `CHAR`、`NCHAR`、`NVARCHAR`、`VARCHAR2` 或 `VARCHAR` 字符型数据,则返回 `expr1` 字符集的 `VARCHAR2`。如果 `expr1` 是 `NUMBER`、`FLOAT`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 数值型数据,则返回 `expr1` 中具有最高数字优先级的数据类型。 + +示例 +-------------- + +假设有一张表 **EMPLOYEES** ,给员工姓名列 **name** 和佣金列 **commission_pct** 里面插入数据,执行以下语句: + +```javascript +CREATE TABLE EMPLOYEES (name VARCHAR(20),commission_pct float(5)); +INSERT INTO EMPLOYEEs VALUES ('Baer', null); +INSERT INTO EMPLOYEEs VALUES ('Bada', null); +INSERT INTO EMPLOYEEs VALUES ('Boll', 0.1); +INSERT INTO EMPLOYEEs VALUES ('Bates', 0.15); +INSERT INTO EMPLOYEEs VALUES ('Eric', null); +``` + + + +查询员工的姓名和佣金,如果员工没有收到佣金,则显示 **Not Applicable** 。执行以下语句: + +```javascript +SELECT name, NVL(TO_CHAR(commission_pct), 'Not Applicable') commission +FROM employees WHERE name LIKE 'B%' ORDER BY name; +``` + + + +查询结果如下: + +```javascript ++--------------+----------------+ +| NAME | COMMISSION | ++--------------+----------------+ +| Baer | Not Applicable | ++--------------+----------------+ +| Bada | Not Applicable | ++--------------+----------------+ +| Boll | .1 | ++--------------+----------------+ +| Bates | .15 | ++--------------+----------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/4.NVL2.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/4.NVL2.md new file mode 100644 index 000000000..7752b2bcf --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/2.single-row-functions-1/8.null-value-related-function/4.NVL2.md @@ -0,0 +1,88 @@ +NVL2 +========================= + + + +`NVL2` 函数根据表达式是否为空,返回不同的值。如果 `expr1` 不为空,则返回 `expr2` 的值,如果 `expr1` 为空,则返回 `expr3` 的值。`expr2` 和 `expr3` 类型不同的话,`expr3` 会转换为 `expr1` 的类型。 + +语法 +-------------- + +```javascript +NVL2(expr1, expr2, expr3) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-------|----------------------------------------| +| expr1 | 表达式。数据类型可以是 OceanBase 内建数据类型 中的任何数据类型。 | +| expr2 | 表达式。数据类型可以是 OceanBase 内建数据类型中的任何数据类型。 | +| expr3 | 表达式。数据类型可以是 OceanBase 内建数据类型中的任何数据类型。 | + + + +如果 `expr2` 和 `expr3` 的数据类型不同,则 OceanBase 将其中一个隐式转换为另一个。 如果它们不能隐式转换,则数据库返回错误。 如果 `expr2` 是字符或数字数据,则隐式转换规则如下: + +* 如果 `expr2` 是 `CHAR`、`NCHAR`、`NVARCHAR`、`VARCHAR2` 或 `VARCHAR` 字符型数据,则 OceanBase 在返回值之前将 `expr3` 转换为 `expr2` 的数据类型,除非 `expr3` 是 `NULL`。 在这种情况下,不需要数据类型转换,数据库返回 `expr2` 字符集的 `VARCHAR2`。 + + + +* 如果 `expr2` 是 `NUMBER`、`FLOAT`、`BINARY_FLOAT` 或 `BINARY_DOUBL` 数值型数据,则 OceanBase 确定哪个参数具有最高的数值优先级,隐式地将另一个参数转换为该数据类型,并返回该数据类型。 + + + + + + +返回类型 +---------------------- + +如果 `expr1`、`expr2` 是 `NULL`,则返回 `NULL`。如果 `expr1` 是 `CHAR`、`NCHAR`、`NVARCHAR`、`VARCHAR2` 或 `VARCHAR` 字符型数据,则返回 `expr1` 字符集的 `VARCHAR2`。如果 `expr1` 是 `NUMBER`、`FLOAT`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 数值型数据,则返回 `expr1` 中具有最高数字优先级的数据类型。 + +示例 +-------------- + +假设有一张表 **EMPLOYEES** ,给员工姓名列 **name** 、薪资列 **salary** 和佣金列 **commission_pct** 里面插入数据,执行以下语句: + +```javascript +CREATE TABLE EMPLOYEES (name VARCHAR(20),salary VARCHAR(20),commission_pct numeric(10,2)); +INSERT INTO EMPLOYEEs VALUES ('Baer', 10000, null); +INSERT INTO EMPLOYEEs VALUES ('Bada', 2800, null); +INSERT INTO EMPLOYEEs VALUES ('Boll', 5600, .25); +INSERT INTO EMPLOYEEs VALUES ('Bates', 7300, .39); +INSERT INTO EMPLOYEEs VALUES ('Broll', 4000, null); +``` + + + +使用 `NVL2` 函数查询员工的总收入。如果员工的 **commission_pct** 列不为空,则员工的收入为工资加佣金,否则,收入仅仅为工资。执行以下语句: + +```javascript +SELECT name, salary,NVL2(commission_pct, salary + (salary * commission_pct), salary) income +FROM employees WHERE name like 'B%' ORDER BY name; +``` + + + +查询结果如下: + +```javascript ++-------+--------+--------+ +| NAME | SALARY | INCOME | ++-------+--------+--------+ +| Bada | 2800 | 2800 | +| Baer | 10000 | 10000 | +| Bates | 7300 | 10147 | +| Boll | 5600 | 7000 | +| Broll | 4000 | 4000 | ++-------+--------+--------+ +5 rows in set (0.02 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/1.APPROX_COUNT_DISTINCT.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/1.APPROX_COUNT_DISTINCT.md new file mode 100644 index 000000000..d0f1ea37c --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/1.APPROX_COUNT_DISTINCT.md @@ -0,0 +1,84 @@ +APPROX_COUNT_DISTINCT +========================================== + + + +`APPROX_COUNT_DISTINCT` 函数是聚合函数,它对某一列去重后的行数进行计算,结果只能返回一个值,且该值是近似值,该函数可以进一步用于计算被引用的列的选择性。 + +与函数 `COUNT(DISTINCT x)` 相比,`APPROX_COUNT_DISTINCT` 返回的是近似值,所以计算速度极快。在处理大量级的数据时 `COUNT(DISTINCT x)` 经常要花费很长的时间,使用 `APPROX_COUNT_DISTINCT` 牺牲了少量的精确度,却换来了计算效率的极大提升。 + +语法 +-------------- + +```javascript +APPROX_COUNT_DISTINCT(expr) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|------| +| expr | 数值列。 | + + + +返回类型 +---------------- + +返回 `NUMBER` 类型数据。 + +示例 +-------------- + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +执行以下语句: + +```javascript +SELECT last_name, salary, APPROX_COUNT_DISTINCT(salary) OVER (ORDER BY hiredate) "Variance" +FROM employees WHERE manager_id = 100 ORDER BY last_name, salary, "Variance"; +``` + + + +查询结果如下: + +```javascript ++-----------+--------+----------+ +| LAST_NAME | SALARY | Variance | ++-----------+--------+----------+ +| De Haan | 11000 | 3 | +| Errazuriz | 1400 | 2 | +| Hartstein | 14000 | 4 | +| Partners | 14000 | 4 | +| Raphaely | 1700 | 1 | +| Raphaely | 1700 | 2 | +| Russell | 13000 | 6 | +| Weiss | 13500 | 5 | ++-----------+--------+----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/10.STDDEV_POP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/10.STDDEV_POP.md new file mode 100644 index 000000000..1a2ad8baf --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/10.STDDEV_POP.md @@ -0,0 +1,118 @@ +STDDEV_POP +=============================== + + + +`STDDEV_POP` 函数计算总体标准差。`STDDEV_POP` 函数将数值型数据作为参数,返回数值型数据。 +**注意** + + + +总体标准差是总体方差的算术平方根。 + +语法 +-------------- + +```javascript +STDDEV_POP([ALL] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值[](pt3avi)。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|------|---------------------------------------------------------------| +| ALL | 全部数值列。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| expr | 是数值类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)的表达式。 | + + + +返回类型 +---------------- + +返回类型与参数 `expr` 的数据类型相同。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +调用函数并执行以下语句: + +```javascript +SELECT manager_id, last_name, salary, STDDEV_POP(salary) OVER (PARTITION BY manager_id) AS pop_std +FROM employees ORDER BY manager_id, last_name, salary, pop_std; +``` + + + +查询结果如下: + +```javascript ++------------+-----------+--------+-------------------------------------------+ +| MANAGER_ID | LAST_NAME | SALARY | POP_STD | ++------------+-----------+--------+-------------------------------------------+ +| 100 | De Haan | 11000 | 5637.250548804798333699350384281939588505 | +| 100 | Errazuriz | 1400 | 5637.250548804798333699350384281939588505 | +| 100 | Hartstein | 14000 | 5637.250548804798333699350384281939588505 | +| 100 | Partners | 14000 | 5637.250548804798333699350384281939588505 | +| 100 | Raphaely | 1700 | 5637.250548804798333699350384281939588505 | +| 100 | Raphaely | 1700 | 5637.250548804798333699350384281939588505 | +| 100 | Russell | 13000 | 5637.250548804798333699350384281939588505 | +| 100 | Weiss | 13500 | 5637.250548804798333699350384281939588505 | +| 200 | Bell | 13000 | 408.248290463863016366214012450981899069 | +| 200 | Part | 14000 | 408.248290463863016366214012450981899069 | +| 200 | Ross | 13500 | 408.248290463863016366214012450981899069 | ++------------+-----------+--------+-------------------------------------------+ +``` + + + +**聚合函数示例** + +调用函数并执行以下语句: + +```javascript +SELECT STDDEV_POP(salary) FROM employees ; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------+ +| STDDEV_POP(SALARY) | ++-------------------------------------------+ +| 5249.950806538512715446505486136315088416 | ++-------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/11.STDDEV_SAMP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/11.STDDEV_SAMP.md new file mode 100644 index 000000000..2f541ca33 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/11.STDDEV_SAMP.md @@ -0,0 +1,119 @@ +STDDEV_SAMP +================================ + + + +`STDDEV_SAMP` 函数计算样本标准差。`STDDEV_SAMP` 函数将数值型数据作为参数,返回数值型数据。它与函数 [STDDEV](lbfuea) 的不同之处在于,`STDDEV` 只有一行输入数据时返回 0,而 `STDDEV_SAMP` 返回 NULL。 +**说明** + + + +样本标准差是样本方差的算术平方根。 + +语法 +-------------- + +```javascript +STDDEV_SAMP([ALL] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值 。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 OVER 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|------|--------------------------------------------------------------------------| +| ALL | 全部数值列。 | +| expr | 是数值类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)或者可以转换成数值类型的表达式。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回类型与参数 `expr` 的数据类型相同。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +调用函数并执行以下语句: + +```javascript +SELECT manager_id, last_name, hiredate, salary,STDDEV_SAMP(salary) OVER (PARTITION BY manager_id +ORDER BY hiredate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cum_sdev +FROM employees ORDER BY manager_id, last_name, hiredate, salary, cum_sdev; +``` + + + +返回结果如下: + +```javascript ++------------+-----------+------------+--------+-------------------------------------------+ +| MANAGER_ID | LAST_NAME | HIREDATE | SALARY | CUM_SDEV | ++------------+-----------+------------+--------+-------------------------------------------+ +| 100 | De Haan | 2018-05-01 | 11000 | 4702.127178203498995615489088200868644482 | +| 100 | Errazuriz | 2017-07-21 | 1400 | 212.132034355964257320253308631454711785 | +| 100 | Hartstein | 2019-05-01 | 14000 | 6340.346993658943269176828928801701088079 | +| 100 | Partners | 2018-12-01 | 14000 | 6064.899009876421676804205219406952308814 | +| 100 | Raphaely | 2017-07-01 | 1700 | NULL | +| 100 | Raphaely | 2017-07-22 | 1700 | 173.205080756887729352744634150587236694 | +| 100 | Russell | 2019-10-05 | 13000 | 6026.474330580265330900400184969999384459 | +| 100 | Weiss | 2019-07-11 | 13500 | 6244.311697171159907069428668980211861012 | +| 200 | Bell | 2019-05-25 | 13000 | 707.106781186547524400844362104849039285 | +| 200 | Part | 2018-08-11 | 14000 | NULL | +| 200 | Ross | 2019-06-11 | 13500 | 500 | ++------------+-----------+------------+--------+-------------------------------------------+ +``` + + + +**聚合函数示例** + +调用函数并执行以下语句: + +```javascript +SELECT STDDEV_SAMP(salary) FROM employees ; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------+ +| STDDEV_SAMP(SALARY) | ++-------------------------------------------+ +| 5506.194858355615640082358245403620332764 | ++-------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/12.SUM.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/12.SUM.md new file mode 100644 index 000000000..41fada3ec --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/12.SUM.md @@ -0,0 +1,117 @@ +SUM +======================== + + + +`SUM` 函数返回参数中指定列的和。此函数将可以隐式转换为数值数据类型的任何数值数据类型或任何非数值数据类型作为参数。 函数返回与参数的数值数据类型相同的数据类型。 + +语法 +-------------- + +```javascript +SUM([ DISTINCT | UNQIUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------| +| DISTINCT | 去除重复行,且忽略值为 NULL 的行。 | +| UNQIUE | 去除重复行,且忽略值为 NULL 的行。 | +| ALL | 返回所有值,包含重复行,且忽略值为 NULL 的行。 | +| expr | 可为数值、字符、日期型或其它类型的数据列或表达式。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + +**注意** + +: + +如果您指定了`DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + +返回类型 +---------------- + +返回与 `expr` 相同数据类型的值。 + +示例 +-------------- + +**分析函数示例** + +创建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees(manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(300, 'Wei', '2019-09-11',23600); +INSERT INTO employees VALUES(200, 'Red', '2019-11-05', 23800); +INSERT INTO employees VALUES(100, 'Part', '2018-10-01',24000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',23500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 23000); +INSERT INTO employees VALUES(200, 'Part', '2018-06-11',24500); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +COMMIT; +``` + + + +计算工资总额,执行以下语句: + +```javascript +SELECT manager_id, last_name, salary, SUM(salary) OVER (PARTITION BY manager_id +ORDER BY salary RANGE UNBOUNDED PRECEDING) l_csum +FROM employees ORDER BY manager_id, last_name, salary, l_csum; +``` + + + +查询结果如下: + +```javascript ++------------+-----------+--------+--------+ +| MANAGER_ID | LAST_NAME | SALARY | L_CSUM | ++------------+-----------+--------+--------+ +| 100 | De Haan | 11000 | 12400 | +| 100 | Errazuriz | 1400 | 1400 | +| 100 | Hartstein | 14000 | 26400 | +| 100 | Part | 24000 | 50400 | +| 200 | Bell | 23000 | 23000 | +| 200 | Part | 24500 | 94800 | +| 200 | Red | 23800 | 70300 | +| 200 | Ross | 23500 | 46500 | +| 300 | Wei | 23600 | 23600 | ++------------+-----------+--------+--------+ +``` + + + +**聚合函数示例** + +计算工资总额,执行以下语句: + +```javascript +SELECT SUM(salary) FROM employees; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| SUM(SALARY) | ++-------------+ +| 168800 | ++-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/13.VARIANCE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/13.VARIANCE.md new file mode 100644 index 000000000..a63d88e9a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/13.VARIANCE.md @@ -0,0 +1,117 @@ +VARIANCE +============================= + + + +`VARIANCE` 函数返回参数指定列的方差。 + +语法 +-------------- + +```javascript +VARIANCE([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|----------------------------------------| +| DISTINCT | 查询时去除列中的重复值,且忽略列中的 NULL 值。 | +| UNIQUE | 查询时去除列中的重复值,且忽略列中的 NULL 值。 | +| ALL | 查询时不去除列中的重复值,且忽略列中的 NULL 值。`ALL` 为默认值。 | +| expr | 可为数值、字符、日期型或其它类型的数据列或表达式。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + +**注意** + + + +如果您指定了 `DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + +返回类型 +---------------- + +返回 `NUMBER` 类型数据。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +执行以下语句计算列 **salary** 的方差: + +```javascript +SELECT last_name, salary, VARIANCE(salary) OVER (ORDER BY hiredate) "Variance" +FROM employees WHERE manager_id = 100 ORDER BY last_name, salary, "Variance"; +``` + + + +查询结果如下: + +```javascript ++-----------+--------+-------------------------------------------+ +| LAST_NAME | SALARY | Variance | ++-----------+--------+-------------------------------------------+ +| De Haan | 11000 | 22110000 | +| Errazuriz | 1400 | 45000 | +| Hartstein | 14000 | 40200000 | +| Partners | 14000 | 36783000 | +| Raphaely | 1700 | 0 | +| Raphaely | 1700 | 30000 | +| Russell | 13000 | 36318392.85714285714285714285714285714286 | +| Weiss | 13500 | 38991428.57142857142857142857142857142857 | ++-----------+--------+-------------------------------------------+ +``` + + + +**聚合函数示例** + +执行以下语句计算列 **salary** 的方差: + +```javascript +SELECT VARIANCE(salary) FROM employees; +``` + + + +查询结果如下: + +```javascript ++-----------------------------------------+ +| VARIANCE(SALARY) | ++-----------------------------------------+ +| 30318181.818181818181818181818181818182 | ++-----------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/14.wmsys-wm_concat-and-wm_concat.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/14.wmsys-wm_concat-and-wm_concat.md new file mode 100644 index 000000000..08dc0589d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/14.wmsys-wm_concat-and-wm_concat.md @@ -0,0 +1,126 @@ +WMSYS.WM_CONCAT/WM_CONCAT +============================================== + + + +`WM_CONCAT` 函数用于列转行,将度量列的值进行合并。作为单个集合的聚合函数,`WM_CONCAT` 对所有行进行操作并返回单个输出行。作为组集聚合,`WM_CONCAT` 将对 `GROUP BY` 子句定义的每个组进行操作并返回输出行。作为分析函数,`WM_CONCAT` 基于 `query_partition_clause` 中的一个或多个表达式将查询结果集分为几组。 + +语法 +-------------- + +```javascript +WM_CONCAT ([DISTINCT] measure_expr) [OVER query_partition_clause] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------|-----------------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| measure_expr | 可以是任何表达式。度量列中的空值将被忽略。 | +| DISTINCT | 如果指定 DISTINCT,会在返回结果中删除重复值。 | + + + +返回类型 +---------------- + +返回的数据类型为 `CLOB`。 + +示例 +-------------- + +**分析函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(40, 100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(50, 100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(50, 100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(70, 100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(90, 100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(90,100, 'Partners', '2018-12-01',14000); +``` + + + +查询 2019 年 10 月 10 日之前雇用的雇员,以及该雇员的部门,雇用日期以及该部门中的其他雇员。执行以下语句: + +```javascript +SELECT department_id "Dept", hiredate "Date", last_name "Name",wmsys.wm_concat(last_name) + OVER (PARTITION BY department_id) as "Emp_list" +FROM employees WHERE hiredate < '2019-10-10' ORDER BY "Dept", "Date", "Name"; +``` + + + +查询结果如下: + +```javascript ++------+------------+-----------+--------------------+ +| Dept | Date | Name | Emp_list | ++------+------------+-----------+--------------------+ +| 30 | 2017-07-01 | Raphaely | Raphaely,De Haan | +| 30 | 2018-05-01 | De Haan | Raphaely,De Haan | +| 40 | 2017-07-21 | Errazuriz | Errazuriz | +| 50 | 2017-07-22 | Raphaely | Hartstein,Raphaely | +| 50 | 2019-05-01 | Hartstein | Hartstein,Raphaely | +| 70 | 2019-07-11 | Weiss | Weiss | +| 90 | 2018-12-01 | Partners | Russell,Partners | +| 90 | 2019-10-05 | Russell | Russell,Partners | ++------+------------+-----------+--------------------+ +8 rows in set (0.01 sec) +``` + + + +**聚合函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(30, 100, 'Errazuriz', '2017-07-01', 1400); +INSERT INTO employees VALUES(30, 100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'Weiss', '2019-07-01',13500); +INSERT INTO employees VALUES(30, 100, 'Russell', '2019-07-01', 13000); +INSERT INTO employees VALUES(30,100, 'Partners', '2018-12-01',14000); +``` + + + +查询第 30 部门的所有员工,并查找最早的雇用日期。执行以下语句: + +```javascript +SELECT wmsys.wm_concat(last_name) as "Emp_list", MIN(hiredate) as "Earliest" +FROM employees WHERE department_id = 30; +``` + + + +查询结果如下: + +```javascript ++----------------------------------------------------------------------+------------+ +| Emp_list | Earliest | ++----------------------------------------------------------------------+------------+ +| Raphaely,De Haan,Errazuriz,Hartstein,Raphaely,Weiss,Russell,Partners | 2017-07-01 | ++----------------------------------------------------------------------+------------+ +1 row in set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/2.AVG.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/2.AVG.md new file mode 100644 index 000000000..b3689269a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/2.AVG.md @@ -0,0 +1,119 @@ +AVG +======================== + + + +`AVG` 函数返回数值列的平均值。 + +语法 +-------------- + +```javascript +AVG([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------------------------------------| +| DISTINCT | 查询时去除数据中的重复值,且忽略数据中的 NULL 值。 | +| UNIQUE | 查询时去除数据中的重复值,且忽略数据中的 NULL 值。 | +| ALL | 查询时不去除数据中的重复值,且忽略数据中的 NULL 值。`ALL` 为默认值。 | +| expr | 是数值类型或者可以转换成数值类型的表达式。数值类型可以为:`NUMBER`、`FLOAT`、`BINARY_FLOAT` 或 `BINARY_DOUBLE`。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + +**注意** + + + +如果您指定了 `DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + +返回类型 +---------------- + +返回类型与参数 `expr` 的数据类型相同。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT, last_name varchar(50), hiredate varchar(50), SALARY INT); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +执行以下语句计算各列的平均值: + +```javascript +SELECT manager_id, last_name, hiredate, salary, AVG(salary) OVER (PARTITION BY manager_id +ORDER BY hiredate ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg +FROM employees ORDER BY manager_id, hiredate, salary; +``` + + + +返回结果如下: + +```javascript ++------------+-----------+------------+--------+------------------------------------------+ +| MANAGER_ID | LAST_NAME | HIREDATE | SALARY | C_MAVG | ++------------+-----------+------------+--------+------------------------------------------+ +| 100 | Errazuriz | 2017-07-21 | 1400 | 1550 | +| 100 | Raphaely | 2017-07-22 | 1700 | 4700 | +| 100 | De Haan | 2018-05-01 | 11000 | 8900 | +| 100 | Partners | 2018-12-01 | 14000 | 13000 | +| 100 | Hartstein | 2019-05-01 | 14000 | 13833.333 | +| 100 | Weiss | 2019-07-11 | 13500 | 13500 | +| 100 | Russell | 2019-10-05 | 13000 | 13250 | +| 200 | Part | 2018-08-11 | 14000 | 13500 | +| 200 | Bell | 2019-05-25 | 13000 | 13500 | +| 200 | Ross | 2019-06-11 | 13500 | 13250 | ++------------+-----------+------------+--------+------------------------------------------+ +``` + + + +**聚合函数示例** + +执行以下语句计算 **salary** 的平均值: + +```javascript +SELECT AVG(salary) FROM employees; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| AVG(SALARY) | ++-------------+ +| 10910 | ++-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/3.COUNT.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/3.COUNT.md new file mode 100644 index 000000000..281d087d6 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/3.COUNT.md @@ -0,0 +1,163 @@ +COUNT +========================== + + + +`COUNT` 函数用于查询 `expr` 的行数。 + +语法 +-------------- + +```javascript +COUNT({ * | [ DISTINCT | UNIQUE | ALL ] expr }) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值 。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------------------------------------| +| \* | 表示满足条件的所有行,且包含值为 NULL 的行。 | +| DISTINCT | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| UNIQUE | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| ALL | 返回所有值,包含重复行,且忽略值为 NULL 的行。 | +| expr | 是数值类型或者可以转换成数值类型的表达式。数值类型可以为:`NUMBER`、`FLOAT`、`BINARY_FLOAT` 或 `BINARY_DOUBLE`。 | +| OVER | 使用 OVER 子句定义窗口进行计算。 | + + +**注意** + + + +* 对于 `COUNT` 函数,从不返回 `NULL`,如果指定了 `expr`,即返回 `expr` 不为 `NULL` 的统计个数,如果指定 `COUNT(*)` 返回所有行的统计数目。使用参数 `DISTINCT` 、`UNIQUE` 或 `ALL` 时需要与 `expr` 用空格隔开。 + + + +* 如果您指定了 `DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + + + + + + +返回类型 +---------------- + +返回类型与参数 `expr` 的数据类型相同。 + +示例 +-------------- + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees(manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(300, 'Wei', '2019-09-11',23600); +INSERT INTO employees VALUES(200, 'Red', '2019-11-05', 23800); +INSERT INTO employees VALUES(100, 'Part', '2018-10-01',24000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',23500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 23000); +INSERT INTO employees VALUES(200, 'Part', '2018-06-11',24500); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +COMMIT; +``` + + + +**分析函数示例** + +执行以下语句查询表中的行数: + +```javascript +SELECT last_name, salary,COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING +AND 150 FOLLOWING) AS mov_count FROM employees ORDER BY salary, last_name; +``` + + + +查询结果如下: + +```javascript ++-----------+--------+-----------+ +| LAST_NAME | SALARY | MOV_COUNT | ++-----------+--------+-----------+ +| Errazuriz | 1400 | 1 | +| De Haan | 11000 | 1 | +| Hartstein | 14000 | 1 | +| Bell | 23000 | 1 | +| Ross | 23500 | 2 | +| Wei | 23600 | 1 | +| Red | 23800 | 1 | +| Part | 24000 | 1 | +| Part | 24500 | 1 | ++-----------+--------+-----------+ +``` + + + +**聚合函数示例** + +创建表 **a** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE a ( +b INT +); +INSERT INTO a VALUES (1); +INSERT INTO a VALUES (null); +INSERT INTO a VALUES (null); +INSERT INTO a VALUES (1); +INSERT INTO a VALUES (null); +INSERT INTO a VALUES (1); +INSERT INTO a VALUES (1); +``` + + + +返回表 **a** 值不为 NULL 的统计个数,执行以下语句: + +```javascript +SELECT COUNT(b) FROM a; +``` + + + +查询结果如下: + +```javascript ++----------+ +| COUNT(B) | ++----------+ +| 4 | ++----------+ +``` + + + +指定 `COUNT(*)` 返回所有行的统计数目,执行以下语句: + +```javascript +SELECT COUNT(*) FROM a; +``` + + + +查询结果如下: + +```javascript ++----------+ +| COUNT(*) | ++----------+ +| 7 | ++----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/4.KEEP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/4.KEEP.md new file mode 100644 index 000000000..5b2671732 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/4.KEEP.md @@ -0,0 +1,134 @@ +KEEP +========================= + + + +`KEEP` 函数用于对一组行中的值进行操作,将这组行按照给定的排序规则排序后返回排在第一或最后的值。作为聚合函数,`KEEP` 对所有行进行操作并返回单个输出行。作为分析函数,`KEEP` 基于 `query_partition_clause` 中的一个或多个表达式将查询结果集分为几组。 + +`KEEP` 函数必须与 `MIN`、`MAX`、`SUM`、`AVG`、`COUNT`、`VARIANCE` 或 `STDDEV` 函数一起使用。 + +语法 +-------------- + +```javascript +KEEP (DENSE_RANK {FIRST | LAST} ORDER BY expr [ DESC | ASC ] [ NULLS { FIRST | LAST } ] [, expr [ DESC | ASC ] [ NULLS { FIRST | LAST } ]]... ) +[ OVER ( [query_partition_clause] ) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| expr | 可以是任何表达式。度量列中的空值将被忽略。 | + + + +返回类型 +---------------- + +返回与度量列相同的数据类型。 + +示例 +-------------- + +**分析函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(40, 100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(50, 100, 'Hartstein', '2019-10-05',14000); +INSERT INTO employees VALUES(50, 100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(50, 100, 'Weiss', '2019-10-05',13500); +INSERT INTO employees VALUES(90, 100, 'Russell', '2019-07-11', 13000); +INSERT INTO employees VALUES(90,100, 'Partners', '2018-12-01',14000); +``` + + + +对于每个部门:按照薪水排序,对排在第一的员工的薪水求和;按照雇用日期排序,对排在最后的员工的薪水求和。执行以下语句: + +```javascript +SELECT last_name, department_id, salary, + SUM(salary) KEEP (DENSE_RANK FIRST ORDER BY salary) + OVER (PARTITION BY department_id) "Worst", + SUM(salary) KEEP (DENSE_RANK LAST ORDER BY HIREDATE) + OVER (PARTITION BY department_id) "Best" + FROM employees + ORDER BY department_id, salary, last_name; +``` + + + +查询结果如下: + +```javascript ++-----------+---------------+--------+-------+-------+ +| LAST_NAME | DEPARTMENT_ID | SALARY | Worst | Best | ++-----------+---------------+--------+-------+-------+ +| Raphaely | 30 | 1700 | 1700 | 11000 | +| De Haan | 30 | 11000 | 1700 | 11000 | +| Errazuriz | 40 | 1400 | 1400 | 1400 | +| Raphaely | 50 | 1700 | 1700 | 27500 | +| Weiss | 50 | 13500 | 1700 | 27500 | +| Hartstein | 50 | 14000 | 1700 | 27500 | +| Russell | 90 | 13000 | 13000 | 13000 | +| Partners | 90 | 14000 | 13000 | 13000 | ++-----------+---------------+--------+-------+-------+ +8 rows in set (0.01 sec) +``` + + + +**聚合函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(40, 100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(50, 100, 'Hartstein', '2019-10-05',14000); +INSERT INTO employees VALUES(50, 100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(50, 100, 'Weiss', '2019-10-05',13500); +INSERT INTO employees VALUES(90, 100, 'Russell', '2019-07-11', 13000); +INSERT INTO employees VALUES(90,100, 'Partners', '2018-12-01',14000); +``` + + + +按照薪水排序,对排在第一的员工的薪水求和;按照雇用日期排序,对排在最后的员工的薪水求和。执行以下语句: + +```javascript +SELECT + SUM(salary) KEEP (DENSE_RANK FIRST ORDER BY salary) "Worst", + SUM(salary) KEEP (DENSE_RANK LAST ORDER BY HIREDATE) "Best" + FROM employees; +``` + + + +查询结果如下: + +```javascript ++-------+-------+ +| Worst | Best | ++-------+-------+ +| 1400 | 27500 | ++-------+-------+ +1 row in set (0.00 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/5.LISTAGG.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/5.LISTAGG.md new file mode 100644 index 000000000..e304f0329 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/5.LISTAGG.md @@ -0,0 +1,125 @@ +LISTAGG +============================ + + + +`LISTAGG` 函数用于列转行,`LISTAGG` 对 `ORDER BY` 子句中指定的每个组内的数据进行排序,然后合并度量列的值。作为单个集合的聚合函数,`LISTAGG` 对所有行进行操作并返回单个输出行。作为组集聚合,`LISTAGG` 将对 `GROUP BY` 子句定义的每个组进行操作并返回输出行。作为分析函数,`LISTAGG` 基于 `query_partition_clause` 中的一个或多个表达式将查询结果集分为几组。 + +语法 +-------------- + +```javascript +LISTAGG (measure_expr [,'delimiter']) [ WITHIN GROUP ] (order_by_clause) +[OVER query_partition_clause] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------|---------------------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| measure_expr | 可以是任何表达式。度量列中的空值将被忽略。 | +| delimiter | 指定用于分隔度量值的字符串。此子句是可选的,默认为 NULL。 | + + + +返回类型 +---------------- + +如果度量列是 `RAW` 的,则返回数据类型为 `RAW`,否则返回值为 `VARCHAR2` 型。 + +示例 +-------------- + +**分析函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(40, 100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(50, 100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(50, 100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(70, 100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(90, 100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(90,100, 'Partners', '2018-12-01',14000); +``` + + + +查询 2019 年 10 月 10 日之前雇用的雇员,以及该雇员的部门,雇用日期以及该部门中的其他雇员。执行以下语句: + +```javascript +SELECT department_id "Dept", hiredate "Date", last_name "Name",LISTAGG(last_name, '; ') WITHIN GROUP +(ORDER BY hiredate, last_name) OVER (PARTITION BY department_id) as "Emp_list" +FROM employees WHERE hiredate < '2019-10-10' ORDER BY "Dept", "Date", "Name"; +``` + + + +查询结果如下: + +```javascript ++------+------------+-----------+---------------------+ +| Dept | Date | Name | Emp_list | ++------+------------+-----------+---------------------+ +| 30 | 2017-07-01 | Raphaely | Raphaely; De Haan | +| 30 | 2018-05-01 | De Haan | Raphaely; De Haan | +| 40 | 2017-07-21 | Errazuriz | Errazuriz | +| 50 | 2017-07-22 | Raphaely | Raphaely; Hartstein | +| 50 | 2019-05-01 | Hartstein | Raphaely; Hartstein | +| 70 | 2019-07-11 | Weiss | Weiss | +| 90 | 2018-12-01 | Partners | Partners; Russell | +| 90 | 2019-10-05 | Russell | Partners; Russell | ++------+------------+-----------+---------------------+ +``` + + + +**聚合函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(30, 100, 'Errazuriz', '2017-07-01', 1400); +INSERT INTO employees VALUES(30, 100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'Weiss', '2019-07-01',13500); +INSERT INTO employees VALUES(30, 100, 'Russell', '2019-07-01', 13000); +INSERT INTO employees VALUES(30,100, 'Partners', '2018-12-01',14000); +``` + + + +查询第 30 部门的所有员工,并按雇用日期和姓氏排序。执行以下语句: + +```javascript +SELECT LISTAGG(last_name, '; ') WITHIN GROUP (ORDER BY hiredate, last_name) as "Emp_list", +MIN(hiredate) as "Earliest" FROM employees WHERE department_id = 30; +``` + + + +查询结果如下: + +```javascript ++-----------------------------------------------------------------------------+------------+ +| Emp_list | Earliest | ++-----------------------------------------------------------------------------+------------+ +| Errazuriz; Raphaely; Raphaely; De Haan; Partners; Hartstein; Russell; Weiss | 2017-07-01 | ++-----------------------------------------------------------------------------+------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/6.MAX.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/6.MAX.md new file mode 100644 index 000000000..82de7e2b2 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/6.MAX.md @@ -0,0 +1,106 @@ +MAX +======================== + + + +`MAX` 函数返回参数中指定的列中的最大值。 + +语法 +-------------- + +```javascript +MAX([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|----------------------------| +| DISTINCT | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| UNIQUE | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| ALL | 返回所有值,包含重复行,且忽略值为 NULL 的行。 | +| expr | 可为数值、字符、日期型或其它类型的数据列或表达式。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回与 `expr` 相同的数据类型值。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT, last_name varchar(50), hiredate varchar(50), SALARY INT); +INSERT INTO employees VALUES(100, 'Wei', '2019-09-11',17000); +INSERT INTO employees VALUES(100, 'Red', '2019-11-05', 17000); +INSERT INTO employees VALUES(101, 'Part', '2018-10-01',12008); +INSERT INTO employees VALUES(102, 'Wei', '2019-09-11',9000); +INSERT INTO employees VALUES(103, 'Red', '2019-11-05', 6000); +INSERT INTO employees VALUES(104, 'Part', '2018-10-01',8000); +COMMIT; +``` + + + +执行以下语句查询 **SALARY** 列的最大值: + +```javascript +SELECT manager_id, last_name, salary FROM (SELECT manager_id, last_name, salary, +MAX(salary) OVER (PARTITION BY manager_id) AS rmax_sal +FROM employees) WHERE salary = rmax_sal ORDER BY manager_id, last_name, salary; +``` + + + +查询结果如下: + +```javascript ++------------+-----------+--------+ +| MANAGER_ID | LAST_NAME | SALARY | ++------------+-----------+--------+ +| 100 | Red | 17000 | +| 100 | Wei | 17000 | +| 101 | Part | 12008 | +| 102 | Wei | 9000 | +| 103 | Red | 6000 | +| 104 | Part | 8000 | ++------------+-----------+--------+ +``` + + + +**聚合函数示例** + +执行以下语句查询 **SALARY** 列的最大值: + +```javascript +SELECT MAX(salary) FROM employees; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| MAX(SALARY) | ++-------------+ +| 17000 | ++-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/7.MIN.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/7.MIN.md new file mode 100644 index 000000000..6634c0504 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/7.MIN.md @@ -0,0 +1,116 @@ +MIN +======================== + + + +`MIN` 函数返回参数中指定列的最小值。 + +语法 +-------------- + +```javascript +MIN([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| **参数** | **说明** | +|----------|----------------------------| +| DISTINCT | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| UNIQUE | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| ALL | 返回所有值,包含重复行,且忽略值为 NULL 的行。 | +| expr | 可为数值、字符、日期型或其它类型的数据列或表达式。 | +| OVER | 使用 OVER 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回与 `expr` 相同数据类型的值。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +``` + + + +执行以下语句查询 **SALARY** 列的最小值: + +```javascript +SELECT manager_id, last_name, hiredate, salary, MIN(salary) OVER(PARTITION BY manager_id +ORDER BY hiredate RANGE UNBOUNDED PRECEDING) AS p_cmin +FROM employees ORDER BY manager_id, last_name, hiredate, salary; +COMMIT; +``` + + + +查询结果如下: + +```javascript ++------------+-----------+------------+--------+--------+ +| MANAGER_ID | LAST_NAME | HIREDATE | SALARY | P_CMIN | ++------------+-----------+------------+--------+--------+ +| 100 | De Haan | 2018-05-01 | 11000 | 1400 | +| 100 | Errazuriz | 2017-07-21 | 1400 | 1400 | +| 100 | Hartstein | 2019-05-01 | 14000 | 1400 | +| 100 | Partners | 2018-12-01 | 14000 | 1400 | +| 100 | Raphaely | 2017-07-01 | 1700 | 1700 | +| 100 | Raphaely | 2017-07-22 | 1700 | 1400 | +| 100 | Russell | 2019-10-05 | 13000 | 1400 | +| 100 | Weiss | 2019-07-11 | 13500 | 1400 | +| 200 | Bell | 2019-05-25 | 13000 | 13000 | +| 200 | Part | 2018-08-11 | 14000 | 14000 | +| 200 | Ross | 2019-06-11 | 13500 | 13000 | ++------------+-----------+------------+--------+--------+ +``` + + + +**聚合函数示例** + +执行以下语句查询 **SALARY** 列的最小值: + +```javascript +SELECT MIN(salary) FROM employees ; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| MIN(SALARY) | ++-------------+ +| 1400 | ++-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/8.ROLLUP.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/8.ROLLUP.md new file mode 100644 index 000000000..54e954ccf --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/8.ROLLUP.md @@ -0,0 +1,186 @@ +ROLLUP +=========================== + + + +`ROLLUP` 函数是聚合函数,它是 `GROUP BY` 语句的简单扩展。在数据统计和报表生成过程中,它可以为每个分组返回一个小计,同时为所有分组返回总计,效率比 `GROUP BY` 和 `UNION` 组合方法高。 + +`ROLLUP` 函数的执行很简单,以下是它的执行顺序: + +* 根据参数指定的列从右到左递减分组; + + + +* 对每个分组小计,再对所有分组合计; + + + +* 按照 `ORDER BY col1 (,col2,col3,col4 ...)` 排序。 + + + + + + +如果 `ROLLUP` 参数为 `N` 个,则相当于 `N+1` 个 `GROUP BY` 分组的 `UNION` 的结合。 + +在涉及分组统计的任务中使用 `ROLLUP` 函数非常高效。例如,沿着时间或地理等层次维度进行小计,您只需要查询 `ROLLUP(y, m, day)` 或 `ROLLUP(country, state, city)`。数据仓库管理员使用 `ROLLUP` 函数可以简化和加快汇总表的维护。 + +语法 +-------------- + +```javascript +SELECT ... GROUP BY ROLLUP(col1 [,col2...]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-------------------------| +| col1 | 进行分组操作的列名。列数指的是数据库中的行数。 | + + + +示例 +-------------- + +创建表 **group_test** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE group_test (group_id int, job varchar2(10), name varchar2(10), salary int); +INSERT INTO group_test VALUES (10, 'Coding', 'Bruce', 1000); +INSERT INTO group_test VALUES (10, 'Programmer', 'Clair', 1000); +INSERT INTO group_test VALUES (20, 'Coding', 'Jason', 2000); +INSERT INTO group_test VALUES (20, 'Programmer', 'Joey', 2000); +INSERT INTO group_test VALUES (30, 'Coding', 'Rebecca', 3000); +INSERT INTO group_test VALUES (30, 'Programmer', 'Rex', 3000); +INSERT INTO group_test VALUES (40, 'Coding', 'Samuel', 4000); +INSERT INTO group_test VALUES (40, 'Programmer', 'Susy', 4000); +COMMIT; +``` + + + +对 **group_id** 进行 `GROUP BY` 分组操作,执行以下语句: + +```javascript +SELECT group_id, SUM(salary) FROM group_test GROUP BY group_id; +``` + + + +查询结果如下: + +```javascript ++----------+-------------+ +| GROUP_ID | SUM(SALARY) | ++----------+-------------+ +| 10 | 2000 | +| 20 | 4000 | +| 30 | 6000 | +| 40 | 8000 | ++----------+-------------+ +``` + + + +对 **group_id** 使用 `ROLLUP` 函数进行分组,同时求总计。执行以下语句: + +```javascript +SELECT group_id, SUM(salary) FROM group_test GROUP BY ROLLUP (group_id); +``` + + + +查询结果如下: + +```javascript ++----------+-------------+ +| GROUP_ID | SUM(SALARY) | ++----------+-------------+ +| 10 | 2000 | +| 20 | 4000 | +| 30 | 6000 | +| 40 | 8000 | +| NULL | 20000 | ++----------+-------------+ +``` + + + +对 **group_id** 列和 **job** 列使用 `ROLLUP` 函数进行分组,同时求总计。执行以下语句: + +```javascript +SELECT group_id, job, SUM(salary) FROM group_test GROUP BY ROLLUP (group_id, job); +``` + + + +查询结果如下: + +```javascript ++----------+------------+-------------+ +| GROUP_ID | JOB | SUM(SALARY) | ++----------+------------+-------------+ +| 10 | Coding | 1000 | +| 10 | Programmer | 1000 | +| 10 | NULL | 2000 | +| 20 | Coding | 2000 | +| 20 | Programmer | 2000 | +| 20 | NULL | 4000 | +| 30 | Coding | 3000 | +| 30 | Programmer | 3000 | +| 30 | NULL | 6000 | +| 40 | Coding | 4000 | +| 40 | Programmer | 4000 | +| 40 | NULL | 8000 | +| NULL | NULL | 20000 | ++----------+------------+-------------+ +``` + + + +上面的 SQL 语句用 `GROUP BY` 与 `UNION` 组合方法替换,执行以下语句: + +```javascript +SELECT group_id, job, SUM(salary) FROM group_test GROUP BY group_id, job +UNION ALL +SELECT group_id, NULL, SUM(salary) FROM group_test GROUP BY group_id +UNION ALL +SELECT NULL, NULL, SUM(salary) FROM group_test ORDER BY 1, 2; +``` + + + +查询结果如下: + +```javascript ++----------+------------+-------------+ +| GROUP_ID | JOB | SUM(SALARY) | ++----------+------------+-------------+ +| 10 | Coding | 1000 | +| 10 | Programmer | 1000 | +| 10 | NULL | 2000 | +| 20 | Coding | 2000 | +| 20 | Programmer | 2000 | +| 20 | NULL | 4000 | +| 30 | Coding | 3000 | +| 30 | Programmer | 3000 | +| 30 | NULL | 6000 | +| 40 | Coding | 4000 | +| 40 | Programmer | 4000 | +| 40 | NULL | 8000 | +| NULL | NULL | 20000 | ++----------+------------+-------------+ +``` + + + + + +输出结果和 `ROLLUP` 函数一样,但是 `ROLLUP` 函数更加简洁、高效。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/9.STDDEV.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/9.STDDEV.md new file mode 100644 index 000000000..9c3156911 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/3.aggregate-functions-1/9.STDDEV.md @@ -0,0 +1,119 @@ +STDDEV +=========================== + + + +`STDDEV` 函数用于计算总体标准差。`STDDEV` 函数将数值型数据作为参数,返回数值型数据。它与函数 `STDDEV_SAMP` 的不同之处在于,`STDDEV` 只有一行输入数据时返回 0,而 `STDDEV_SAMP` 返回 NULL。 + +OceanBase 中标准差的值是函数 `VARIANCE` 计算出的方差的算术平方根。 + +语法 +-------------- + +```javascript +STDDEV([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值[](pt3avi)。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|-----------------------| +| DISTINCT | 去重关键字,表示计算唯一值的总体标准差。 | +| UNIQUE | 去重关键字,表示计算唯一值的总体标准差。 | +| ALL | 全部数值列。 | +| expr | 是数值类型或者可以转换成数值类型的类型。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + +**注意** + + + +如果您指定了 `DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + +返回类型 +---------------- + +返回 `NUMBER` 类型数据。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据 + +```javascript +CREATE TABLE employees(manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +调用函数并执行以下语句: + +```javascript +SELECT last_name, salary, STDDEV(salary) OVER (ORDER BY hiredate) "StdDev" +FROM employees WHERE manager_id = 100 ORDER BY last_name, salary, "StdDev"; +``` + + + +查询结果如下: + +```javascript ++-----------+--------+-------------------------------------------+ +| LAST_NAME | SALARY | StdDev | ++-----------+--------+-------------------------------------------+ +| De Haan | 11000 | 4702.127178203498995615489088200868644482 | +| Errazuriz | 1400 | 212.132034355964257320253308631454711785 | +| Hartstein | 14000 | 6340.346993658943269176828928801701088079 | +| Partners | 14000 | 6064.899009876421676804205219406952308814 | +| Raphaely | 1700 | 0 | +| Raphaely | 1700 | 173.205080756887729352744634150587236694 | +| Russell | 13000 | 6026.474330580265330900400184969999384459 | +| Weiss | 13500 | 6244.311697171159907069428668980211861012 | ++-----------+--------+-------------------------------------------+ +``` + + + +**聚合函数示例** + +调用函数并执行以下语句: + +```javascript +SELECT STDDEV(salary) FROM employees WHERE manager_id = 100 ; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------+ +| STDDEV(SALARY) | ++-------------------------------------------+ +| 6026.474330580265330900400184969999384459 | ++-------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/1.window-function-description.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/1.window-function-description.md new file mode 100644 index 000000000..90496166b --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/1.window-function-description.md @@ -0,0 +1,250 @@ +窗口函数说明 +=========================== + + + +分析函数(也叫窗口函数)与聚合函数,都是对行集组(一组行的集合)进行聚合计算,不同的是,聚合函数每组只能返回一个值(一行),而窗口函数每组可以返回多个值(多行)。行集组又称为窗口(Window),由 `analytic_clause` 定义。而窗口大小取决于实际的行数或逻辑间隔(例如时间)。组内每一行都是基于窗口的逻辑计算的结果。 + +触发一个分析函数需要特殊的关键字 `OVER` 来指定窗口。一个窗口包含三个组成部分: + +* 分区规范,用于将输入行分裂到不同的分区中。这个过程和 `GROUP BY` 子句的分裂过程相似。 + + + +* 排序规范,用于决定输入数据行在窗口函数中执行的顺序。 + + + +* 窗口边界,指定计算数据的窗口边界。默认值为 `RANGE UNBOUNDED PRECEDING` 。这个边界包含当前分区中所有从开始到目前行所有数据。 + + + + + + +分析函数是查询中执行的最后一组操作,除了最后的 `ORDER BY` 子句。在处理窗口函数之前,必须完成所有 `JOIN` 以及 `WHERE`、`GROUP BY` 和 `HAVING` 子句。因此,窗口函数只能出现在选择列表或 `ORDER BY` 子句中。 + +分析函数通常用于计算累积、移动、居中和报告汇总。 + +语法 +-------------- + +**analytic_function** + +```javascript +analytic_function([ arguments ]) OVER (analytic_clause) +``` + + + +**analytic_clause** + +```javascript +[ query_partition_clause ] [ order_by_clause [ windowing_clause ] ] +``` + + + +**query_partition_clause** + +```javascript +PARTITION BY { expr[, expr ]... | ( expr[, expr ]... ) } +``` + + + +**order_by_clause** + +```javascript +ORDER [ SIBLINGS ] BY{ expr | position | c_alias } [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] [, { expr | position | c_alias } [ ASC | DESC ][ NULLS FIRST | NULLS LAST ]]... +``` + + + +**windowing_clause** + +```javascript +{ ROWS | RANGE } { BETWEEN { UNBOUNDED PRECEDING | CURRENT ROW | value_expr { PRECEDING | FOLLOWING } } AND{ UNBOUNDED FOLLOWING | CURRENT ROW | value_expr { PRECEDING | FOLLOWING } } | { UNBOUNDED PRECEDING | CURRENT ROW| value_expr PRECEDING}} +``` + + + +在以下各节中将讨论此语法的语义。 + +analytic_function +-------------------------------------- + +分析函数(analytic_function)指定了分析函数的名称。 + +arguments +---------------------- + +参数(arguments),分析函数采用 0\~3 个参数。参数可以是任何数字数据类型或可以隐式转换为数字数据类型的任何非数字数据类型。OceanBase 根据数据类型优先级确定具有最高数值优先级的参数,然后将其余参数隐式转换为这个具有最高数值优先级参数的数据类型。返回类型也是具有最高数值优先级参数的数据类型,除非对单个函数另有说明。 + +analytic_clause +---------------------------------- + +分析子句(analytic_clause),使用 `OVER analytic_clause` 指示函数在查询结果集上操作。此子句在 `FROM`、`WHERE`、`GROUP BY` 和 `HAVING` 子句之后计算。您可以在选择列表或按子句顺序中用此子句指定分析函数。若要筛选基于分析函数的查询结果,请将这些函数嵌套在父查询中,然后筛选嵌套子查询的结果。 +**注意** + + + +* 您不能通过在分析子句中指定分析函数来嵌套分析函数。但是您可以在子查询中指定分析函数,并在其上计算另一个分析函数。 + + + +* 您可以使用用户定义的解析函数以及内置的解析函数指定 `analytic_clause`。 + + + + + + +query_partition_clause +------------------------------------------------ + +分区子句(query_partition_clause),使用 `PARTITION BY` 子句将查询结果集划分为基于一个或多个 `value_expr` 的组。如果省略此子句,则函数将查询结果集的所有行视为单个组。 + +您可以在同一查询中指定多个分析函数,每个函数通过键具有相同或不同的分区。如果您用 `query_partition_clause` 指定了一个分析函数,并且被查询的对象具有并行属性,那么函数计算也是并行化的。 + +`value_expr` 的有效值是常量、列、非分析函数、函数表达式或涉及其中任何一个的表达式。 + +order_by_clause +---------------------------------- + +使用排序子句 `order_by_clause` 指定如何在分区内对数据进行排序。 对于所有分析函数,您可以在多个键上的分区中对值进行排序,每个键由 `value_expr` 定义,由排序序列限定。 + +在每个函数中,您可以指定多个排序表达式。当使用对值进行排序的函数时,这样做特别有用。 + +当 `order_by_clause` 对多行产生相同的值时,函数的行为如下: + +* `CUME_DIST`、`DENSE_RANK`、`NTILE`、`PERCENT_RANK` 和 `RANK` 为每一行返回相同的结果。 + + + +* 即使有一个基于 `order_by_clause` 的值,`ROW_NUMBER` 也会为每一行分配一个不同的值。该值基于行处理的顺序,如果 `ORDER BY` 不能实现总排序,则该顺序可能是不确定的。 + + + +* 对于其他分析函数,它的结果取决于窗口规则。如果您指定了一个带有 `RANGE` 关键字的逻辑窗口,则函数将为每个行返回相同的结果。如果您用 `ROWS` 关键字指定了物理窗口,则结果是不确定的。 + + + + + + +### ORDER BY 子句的限制 + +使用 `ORDER BY` 子句会受到以下限制: + +* 在分析函数中,`order_by_clause` 必须使用表达式(expr)。`SIBLINGS` 关键字无效(仅与分层查询中相关)。位置(position)和列别名(c_alias)也无效。否则,该 `order_by_clause` 与整个查询或子查询的排序命令相同。 + + + +* 使用 RANGE 关键字的分析函数可以在其函数的 `ORDER BY` 子句中使用多个排序键。您需要指定以下窗口: + + + + + + + + + + +除了这四个之外,窗口边界只能在分析函数的 `ORDER BY` 子句中有一个排序键。 此限制不适用于 `ROW` 关键字指定的窗口边界。 + +### ASC 或 DESC 关键字 + +指定排序序列,`ASC` 指升序,`DESC` 指降序。默认为升序(ASC)。 + +### NULLS FIRST 或 NULLS LAST 关键字 + +`order_by_clause` 中的 `nulls first` 和 `nulls last`, `nulls first` 表示排序时NULL值作为最小值处理,而 `nulls last` 表示排序时NULL值作为最大值处理。 + +windowing_clause +------------------------------------ + +窗口函数子句(windowing_clause)有一些分析函数可以使用 `windowing_clause`。相关的关键字如下。 + +### ROWS 或 RANGE 关键字 + +这些关键字为每一行定义一个用于计算函数结果的窗口,然后将该函数应用于窗口中的所有行。窗口从上到下通过查询结果集或分区移动。窗口也称为 `FRAME`,OceanBase 同时支持以下窗口语句: + +* `ROWS`:以物理单位(行)指定窗口。 + + + +* `RANGE`:将窗口指定为逻辑偏移量。默认方式是 `RANGE UNBOUNDED PRECEDING`。您可以在分析函数中使用窗口函数,而要使用 `windowing_clause`,就必须添加 `order_by_clause`。 + + + + + + +`windowing_clause` 若由 `RANGE` 子句定义窗口边界,那么在 `order_by_clause` 中您只能指定一个表达式。请参阅ORDER BY 子句的限制。具有逻辑偏移的分析函数返回的值总是确定性的。但是具有物理偏移量的分析函数返回的值可能会产生不确定的结果。排序表达式返回唯一的排序才能使具有物理偏移量的分析函数返回确定的值,因此,您必须在 `order_by_clause` 中指定多个列实现唯一的排序。 + +### BETWEEN ... AND 关键字 + +使用 `BETWEEN ... AND` 子句指定窗口的起点和终点。第一个表达式(AND 之前)定义起点,第二个表达式(AND 之后)定义终点。 如果省略 `BETWEEN` 并仅指定一个终点,则 OceanBase 将其视为起点,并且终点默认为当前行。 + +### UNBOUNDED PRECEDING 关键字 + +`UNBOUNDED PRECEDING` 指示窗口从分区的第一行开始。这是起点,不是终点。 + +### UNBOUNDED FOLLOWING 关键字 + +`UNBOUNDED FOLLOWING` 表示窗口在分区的最后一行结束。这是终点,不是起点。 + +### CURRENT ROW 关键字 + +作为起点,`CURRENT ROW` 指定了窗口从当前行或当前值开始(取决于分别指定了 `ROW` 还是 `RANGE`)。在这种情况下,端点不能为 `value_expr PRECEDING`。 作为终点,`CURRENT ROW` 指定窗口在当前行或值处结束(分别取决于您是否指定了 `ROW` 或 `RANGE`)。在这种情况下,起点不能为 `value_expr FOLLOWING`。 + +### value_expr PRECEDING 或 value_expr FOLLOWING 关键字 + +* 如果 `value_expr FOLLOWING` 是起点,则终点必须是 `value_expr FOLLOWING`。 + + + +* 如果 `value_expr PRECEDING` 是终点,则起点必须是 `value_expr PRECEDING`。 + + + + + + +如果要定义由时间间隔定义的数值格式的逻辑窗口,则可能需要使用转换函数。 + +如果您指定 `ROWS`: + +* `value_expr` 是物理偏移量。则它必须是一个常数或表达式,并且必须计算为正数。 + + + +* 如果 `value_expr` 是起点的一部分,则它必须把起点与终点之前的部分当作一行计算。 + + + + + + +如果您指定 `RANGE`: + +* `value_expr` 是逻辑偏移量。它必须是一个常数或表达式,其结果为正数值或间隔字面量。 + + + +* 您只能在 `order_by_clause` 中指定一个表达式。 + + + +* 如果 `value_expr` 为数值,则 `ORDER BY expr` 必须为数值或 `DATE` 数据类型。 + + + +* 如果 `value_expr` 为间隔值,则 `ORDER BY expr` 必须为 `DATE` 数据类型。如果您完全省略 `windowing_clause`,则默认值为 `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/10.STDDEV_POP-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/10.STDDEV_POP-1.md new file mode 100644 index 000000000..1a2ad8baf --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/10.STDDEV_POP-1.md @@ -0,0 +1,118 @@ +STDDEV_POP +=============================== + + + +`STDDEV_POP` 函数计算总体标准差。`STDDEV_POP` 函数将数值型数据作为参数,返回数值型数据。 +**注意** + + + +总体标准差是总体方差的算术平方根。 + +语法 +-------------- + +```javascript +STDDEV_POP([ALL] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值[](pt3avi)。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|------|---------------------------------------------------------------| +| ALL | 全部数值列。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| expr | 是数值类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)的表达式。 | + + + +返回类型 +---------------- + +返回类型与参数 `expr` 的数据类型相同。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +调用函数并执行以下语句: + +```javascript +SELECT manager_id, last_name, salary, STDDEV_POP(salary) OVER (PARTITION BY manager_id) AS pop_std +FROM employees ORDER BY manager_id, last_name, salary, pop_std; +``` + + + +查询结果如下: + +```javascript ++------------+-----------+--------+-------------------------------------------+ +| MANAGER_ID | LAST_NAME | SALARY | POP_STD | ++------------+-----------+--------+-------------------------------------------+ +| 100 | De Haan | 11000 | 5637.250548804798333699350384281939588505 | +| 100 | Errazuriz | 1400 | 5637.250548804798333699350384281939588505 | +| 100 | Hartstein | 14000 | 5637.250548804798333699350384281939588505 | +| 100 | Partners | 14000 | 5637.250548804798333699350384281939588505 | +| 100 | Raphaely | 1700 | 5637.250548804798333699350384281939588505 | +| 100 | Raphaely | 1700 | 5637.250548804798333699350384281939588505 | +| 100 | Russell | 13000 | 5637.250548804798333699350384281939588505 | +| 100 | Weiss | 13500 | 5637.250548804798333699350384281939588505 | +| 200 | Bell | 13000 | 408.248290463863016366214012450981899069 | +| 200 | Part | 14000 | 408.248290463863016366214012450981899069 | +| 200 | Ross | 13500 | 408.248290463863016366214012450981899069 | ++------------+-----------+--------+-------------------------------------------+ +``` + + + +**聚合函数示例** + +调用函数并执行以下语句: + +```javascript +SELECT STDDEV_POP(salary) FROM employees ; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------+ +| STDDEV_POP(SALARY) | ++-------------------------------------------+ +| 5249.950806538512715446505486136315088416 | ++-------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/11.STDDEV_SAMP-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/11.STDDEV_SAMP-1.md new file mode 100644 index 000000000..2f541ca33 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/11.STDDEV_SAMP-1.md @@ -0,0 +1,119 @@ +STDDEV_SAMP +================================ + + + +`STDDEV_SAMP` 函数计算样本标准差。`STDDEV_SAMP` 函数将数值型数据作为参数,返回数值型数据。它与函数 [STDDEV](lbfuea) 的不同之处在于,`STDDEV` 只有一行输入数据时返回 0,而 `STDDEV_SAMP` 返回 NULL。 +**说明** + + + +样本标准差是样本方差的算术平方根。 + +语法 +-------------- + +```javascript +STDDEV_SAMP([ALL] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值 。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 OVER 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|------|--------------------------------------------------------------------------| +| ALL | 全部数值列。 | +| expr | 是数值类型(`NUMBER`、`FLOAT`、`BINARY_FLOAT` 和 `BINARY_DOUBLE`)或者可以转换成数值类型的表达式。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回类型与参数 `expr` 的数据类型相同。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +调用函数并执行以下语句: + +```javascript +SELECT manager_id, last_name, hiredate, salary,STDDEV_SAMP(salary) OVER (PARTITION BY manager_id +ORDER BY hiredate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cum_sdev +FROM employees ORDER BY manager_id, last_name, hiredate, salary, cum_sdev; +``` + + + +返回结果如下: + +```javascript ++------------+-----------+------------+--------+-------------------------------------------+ +| MANAGER_ID | LAST_NAME | HIREDATE | SALARY | CUM_SDEV | ++------------+-----------+------------+--------+-------------------------------------------+ +| 100 | De Haan | 2018-05-01 | 11000 | 4702.127178203498995615489088200868644482 | +| 100 | Errazuriz | 2017-07-21 | 1400 | 212.132034355964257320253308631454711785 | +| 100 | Hartstein | 2019-05-01 | 14000 | 6340.346993658943269176828928801701088079 | +| 100 | Partners | 2018-12-01 | 14000 | 6064.899009876421676804205219406952308814 | +| 100 | Raphaely | 2017-07-01 | 1700 | NULL | +| 100 | Raphaely | 2017-07-22 | 1700 | 173.205080756887729352744634150587236694 | +| 100 | Russell | 2019-10-05 | 13000 | 6026.474330580265330900400184969999384459 | +| 100 | Weiss | 2019-07-11 | 13500 | 6244.311697171159907069428668980211861012 | +| 200 | Bell | 2019-05-25 | 13000 | 707.106781186547524400844362104849039285 | +| 200 | Part | 2018-08-11 | 14000 | NULL | +| 200 | Ross | 2019-06-11 | 13500 | 500 | ++------------+-----------+------------+--------+-------------------------------------------+ +``` + + + +**聚合函数示例** + +调用函数并执行以下语句: + +```javascript +SELECT STDDEV_SAMP(salary) FROM employees ; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------+ +| STDDEV_SAMP(SALARY) | ++-------------------------------------------+ +| 5506.194858355615640082358245403620332764 | ++-------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/12.VARIANCE-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/12.VARIANCE-1.md new file mode 100644 index 000000000..a63d88e9a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/12.VARIANCE-1.md @@ -0,0 +1,117 @@ +VARIANCE +============================= + + + +`VARIANCE` 函数返回参数指定列的方差。 + +语法 +-------------- + +```javascript +VARIANCE([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|----------------------------------------| +| DISTINCT | 查询时去除列中的重复值,且忽略列中的 NULL 值。 | +| UNIQUE | 查询时去除列中的重复值,且忽略列中的 NULL 值。 | +| ALL | 查询时不去除列中的重复值,且忽略列中的 NULL 值。`ALL` 为默认值。 | +| expr | 可为数值、字符、日期型或其它类型的数据列或表达式。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + +**注意** + + + +如果您指定了 `DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + +返回类型 +---------------- + +返回 `NUMBER` 类型数据。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +执行以下语句计算列 **salary** 的方差: + +```javascript +SELECT last_name, salary, VARIANCE(salary) OVER (ORDER BY hiredate) "Variance" +FROM employees WHERE manager_id = 100 ORDER BY last_name, salary, "Variance"; +``` + + + +查询结果如下: + +```javascript ++-----------+--------+-------------------------------------------+ +| LAST_NAME | SALARY | Variance | ++-----------+--------+-------------------------------------------+ +| De Haan | 11000 | 22110000 | +| Errazuriz | 1400 | 45000 | +| Hartstein | 14000 | 40200000 | +| Partners | 14000 | 36783000 | +| Raphaely | 1700 | 0 | +| Raphaely | 1700 | 30000 | +| Russell | 13000 | 36318392.85714285714285714285714285714286 | +| Weiss | 13500 | 38991428.57142857142857142857142857142857 | ++-----------+--------+-------------------------------------------+ +``` + + + +**聚合函数示例** + +执行以下语句计算列 **salary** 的方差: + +```javascript +SELECT VARIANCE(salary) FROM employees; +``` + + + +查询结果如下: + +```javascript ++-----------------------------------------+ +| VARIANCE(SALARY) | ++-----------------------------------------+ +| 30318181.818181818181818181818181818182 | ++-----------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/13.RANK.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/13.RANK.md new file mode 100644 index 000000000..dfd56ed24 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/13.RANK.md @@ -0,0 +1,85 @@ +RANK +========================= + + + +`RANK` 函数基于 `OVER` 子句中的 `ORDER BY` 表达式确定一组值的排名。当有相同排序值时,将会有相同的排名,并且值相同的行数会被记录到下个排名中。 + +语法 +-------------- + +```javascript +RANK() OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list ]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-------------------------------|-----------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| PARTITION BY \[col1, col2..\] | 指定开窗口的列。 | +| ORDER BY col1\[asc\|desc\] | 指定排名依据的值。 | +| expr_list | 是数值类型或者可以转换成数值类型的类型。 | +| order_list | 定义排名值参考的数据列。 | + + + +示例 +-------------- + +建表 **course** ,并向 **name** 和 **grade** 列插入数据,执行以下语句: + +```javascript +CREATE TABLE course +( + name VARCHAR(8), + grade NUMBER +); +INSERT INTO course VALUES('Linda',50); +INSERT INTO course VALUES('Tan',85); +INSERT INTO course VALUES('Tom',90); +INSERT INTO course VALUES('John',95); +INSERT INTO course VALUES('Mery',55); +INSERT INTO course VALUES('Peter',60); +INSERT INTO course VALUES('Jack',65); +INSERT INTO course VALUES('Rose',70); +INSERT INTO course VALUES('Tonny',75); +INSERT INTO course VALUES('Apple',80); +COMMIT; +``` + + + +执行以下语句: + +```javascript +SELECT name,grade ,RANK() over(ORDER BY grade DESC) FROM course; +``` + + + +查询结果如下: + +```javascript ++-------+-------+------------------------------+ +| NAME | GRADE | RANK()OVER(ORDERBYGRADEDESC) | ++-------+-------+------------------------------+ +| John | 95 | 1 | +| Tom | 90 | 2 | +| Tan | 85 | 3 | +| Apple | 80 | 4 | +| Tonny | 75 | 5 | +| Rose | 70 | 6 | +| Jack | 65 | 7 | +| Peter | 60 | 8 | +| Mery | 55 | 9 | +| Linda | 50 | 10 | ++-------+-------+------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/14.LEAD.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/14.LEAD.md new file mode 100644 index 000000000..a8ecdb27d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/14.LEAD.md @@ -0,0 +1,101 @@ +LEAD +========================= + + + +`LEAD` 是一种分析函数,它提供了对表多行的访问,而无需进行自我连接。给定从查询返回的一些列行和光标的位置,`LEAD` 提供超出该位置的物理偏移量的行的访问。 + +语法 +-------------- + +```javascript +LEAD { (value_expr [,offset [,default]]) [RESPECT|IGNORE] NULLS +|(value_expr [RESPECT|IGNORE] NULLS [,offset [,default]]) } +OVER([query_partition_clause] order_by_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------------------------|----------------------------------------------------------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| offset | 是 value_expr 的可选参数偏移量。 | +| default | 如果未指定默认值,则其默认值为 `null`。如果在 `LEAD` 没有显式的设置 default 值的情况下,返回值为 `NULL`。 | +| {RESPECT \| IGNORE} NULLS | 表示是否忽略 `NULL` 值。默认值为 `RESPECT NULLS`,考虑 `NULL` 值。 | +| value_expr | 是要做比对的字段。您不能使用 `LEAD` 函数或其他分析函数来嵌套 `value_expr`。 | + + +**注意** + + + +`LEAD` 函数后必须跟 order_by_clause ,query_partition_clause 是可选的。 + +返回类型 +---------------- + +返回的数据类型不限。 + +示例 +-------------- + +创建 **emp_msg** 表,并向列中插入数据。执行以下语句: + +```javascript +CREATE TABLE emp_msg(deptno INT, ename VARCHAR(30),sal INT); +INSERT INTO emp_msg VALUES(20,'ADAMS',1400); +INSERT INTO emp_msg VALUES(30,'ALLEN',1900); +INSERT INTO emp_msg VALUES(30,'BLAKE',3135); +INSERT INTO emp_msg VALUES(10,'CLARK',2750); +INSERT INTO emp_msg VALUES(20,'FORD',3300); +INSERT INTO emp_msg VALUES(30,'JAMES',1250); +INSERT INTO emp_msg VALUES(20,'JONES',3275); +INSERT INTO emp_msg VALUES(10,'KING',5300); +INSERT INTO emp_msg VALUES(30,'MARTIN',1550); +INSERT INTO emp_msg VALUES(10,'MILLER',1600); +INSERT INTO emp_msg VALUES(20,'SCOTT',3300); +INSERT INTO emp_msg VALUES(20,'SWITH',1100); +INSERT INTO emp_msg VALUES(30,'TURNER',1800); +INSERT INTO emp_msg VALUES(30,'WARD',1550); +``` + + + +查询 **emp_msg** 表,最后 5 个值用 **Jane** 代替,从倒数第 6 个值开始追加按 **ename** 列升序排列的值。 + +```javascript +SELECT deptno, ename, sal, LEAD(ename,5,'Jane') OVER (ORDER BY ename) AS new_ename +FROM emp_msg; +``` + + + +查询结果如下: + +```javascript ++--------+--------+------+-----------+ +| DEPTNO | ENAME | SAL | NEW_ENAME | ++--------+--------+------+-----------+ +| 20 | ADAMS | 1400 | JAMES | +| 30 | ALLEN | 1900 | JONES | +| 30 | BLAKE | 3135 | KING | +| 10 | CLARK | 2750 | MARTIN | +| 20 | FORD | 3300 | MILLER | +| 30 | JAMES | 1250 | SCOTT | +| 20 | JONES | 3275 | SWITH | +| 10 | KING | 5300 | TURNER | +| 30 | MARTIN | 1550 | WARD | +| 10 | MILLER | 1600 | Jane | +| 20 | SCOTT | 3300 | Jane | +| 20 | SWITH | 1100 | Jane | +| 30 | TURNER | 1800 | Jane | +| 30 | WARD | 1550 | Jane | ++--------+--------+------+-----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/15.LAG.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/15.LAG.md new file mode 100644 index 000000000..14ebaa40e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/15.LAG.md @@ -0,0 +1,101 @@ +LAG +======================== + + + +`LAG` 是一个分析函数。它同时提供对多行表的访问,而不需要自连接。给定从查询返回的一系列行和游标的位置,`LAG` 可以访问位于该位置之前给定物理偏移量的行。您可以给偏移参数指定一个大于零的整数。如果不指定偏移量,则其默认值为 1。如果偏移量超出窗口的范围,则返回可选值。如果不指定默认值,则其默认值为 `NULL`。 + +语法 +-------------- + +```javascript +LAG { (value_expr [,offset [,default]]) [RESPECT|IGNORE] NULLS +|(value_expr [RESPECT | IGNORE] NULLS [,offset [,default] ]) } +OVER([query_partition_clause] order_by_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------------------------|----------------------------------------------------------------------| +| value_expr | 是要做比对的字段。您不能使用 `LAG` 函数或其他分析函数来嵌套 `value_expr`。 | +| offset | 是 value_expr 的可选参数偏移量。 | +| default | 如果未指定默认值,则其默认值为 `NULL`。如果在 `LEAD` 没有显式的设置 default 值的情况下,返回值为 `NULL`。 | +| {RESPECT \| IGNORE} NULLS | 表示是否忽略 `NULL` 值。默认值为 `RESPECT NULLS`,考虑 `NULL` 值。 | +| OVER | 使用 OVER 子句定义窗口进行计算。 | + + +**注意** + + + +`LAG` 函数后必须跟 order_by_clause ,query_partition_clause 是可选的。 + +返回类型 +---------------- + +返回值的数据类型不限。 + +示例 +-------------- + +创建 **emp_msg** 表,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE emp_msg(deptno INT, ename varchar(30),sal INT); +INSERT INTO emp_msg VALUES(20,'ADAMS',1400); +INSERT INTO emp_msg VALUES(30,'ALLEN',1900); +INSERT INTO emp_msg VALUES(30,'BLAKE',3135); +INSERT INTO emp_msg VALUES(10,'CLARK',2750); +INSERT INTO emp_msg VALUES(20,'FORD',3300); +INSERT INTO emp_msg VALUES(30,'JAMES',1250); +INSERT INTO emp_msg VALUES(20,'JONES',3275); +INSERT INTO emp_msg VALUES(10,'KING',5300); +INSERT INTO emp_msg VALUES(30,'MARTIN',1550); +INSERT INTO emp_msg VALUES(10,'MILLER',1600); +INSERT INTO emp_msg VALUES(20,'SCOTT',3300); +INSERT INTO emp_msg VALUES(20,'SWITH',1100); +INSERT INTO emp_msg VALUES(30,'TURNER',1800); +INSERT INTO emp_msg VALUES(30,'WARD',1550); +``` + + + +查询 **emp_msg** 表,前 5 个值用 **Jane** 代替,从第 6 个值开始追加按 **ename** 字段升序排列的值。执行以下语句: + +```javascript +SELECT deptno, ename, sal, LAG(ename,5,'Jane') OVER (ORDER BY ename) AS new_ename +FROM emp_msg; +``` + + + +查询结果如下: + +```javascript ++--------+--------+------+-----------+ +| DEPTNO | ENAME | SAL | NEW_ENAME | ++--------+--------+------+-----------+ +| 20 | ADAMS | 1400 | Jane | +| 30 | ALLEN | 1900 | Jane | +| 30 | BLAKE | 3135 | Jane | +| 10 | CLARK | 2750 | Jane | +| 20 | FORD | 3300 | Jane | +| 30 | JAMES | 1250 | ADAMS | +| 20 | JONES | 3275 | ALLEN | +| 10 | KING | 5300 | BLAKE | +| 30 | MARTIN | 1550 | CLARK | +| 10 | MILLER | 1600 | FORD | +| 20 | SCOTT | 3300 | JAMES | +| 20 | SWITH | 1100 | JONES | +| 30 | TURNER | 1800 | KING | +| 30 | WARD | 1550 | MARTIN | ++--------+--------+------+-----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/16.FIRST_VALUE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/16.FIRST_VALUE.md new file mode 100644 index 000000000..d2e73c81d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/16.FIRST_VALUE.md @@ -0,0 +1,94 @@ +FIRST_VALUE +================================ + + + +`FIRST_VALUE` 是一个分析函数。它返回有序值中的第一个值。如果集合中的第一个值为 `NULL`,则函数返回`NULL`,除非您指定 `IGNORE NULLS`,该设置对于数据致密化很有用。 + +语法 +-------------- + +```javascript +FIRST_VALUE { (expr) [ {RESPECT | IGNORE} NULLS ] | (expr [ {RESPECT | IGNORE} NULLS ]) } OVER (analytic_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------------------------|-----------------------------------------------------------------------------------------------------------------------| +| expr | 参数类型不限。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| {RESPECT \| IGNORE} NULLS | 表示是否忽略 `NULL` 值。默认值为 `RESPECT NULLS`,考虑 `NULL` 值。 | +| FROM { FIRST \| LAST } | 确定计算方向是从窗口的第一行还是最后一行开始,默认值为 `FROM FIRST`。如果您指定 `IGNORE NULLS`,则 `FIRST_VALUE` 返回集合中的第一个非空值,如果所有值都为 `NULL`,则返回 `NULL`。 | + + + +返回类型 +---------------- + +数据类型不限。 + +示例 +-------------- + +建表 **emp_msg** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE emp_msg(deptno INT, ename VARCHAR(30), sal INT, MGR VARCHAR(30)); +INSERT INTO emp_msg VALUES(10,'CLARK', 2750, 7839); +INSERT INTO emp_msg VALUES(10,'KING', 5300, NULL); +INSERT INTO emp_msg VALUES(10,'MILLER', 1600, 7782); +INSERT INTO emp_msg VALUES(20,'ADAMS', 1400, 7788); +INSERT INTO emp_msg VALUES(20,'FORD', 3300, 7566); +INSERT INTO emp_msg VALUES(20,'JONES', 3275, 7839); +INSERT INTO emp_msg VALUES(20,'SCOTT', 3300, 7566); +INSERT INTO emp_msg VALUES(20,'SMITH', 1100, 7902); +INSERT INTO emp_msg VALUES(30,'ALLEN', 1900, 7698); +INSERT INTO emp_msg VALUES(30,'BLAKE', 3150, 7839); +INSERT INTO emp_msg VALUES(30,'JAMES', 1250, 7698); +INSERT INTO emp_msg VALUES(30,'MARTIN', 1550, 7698); +INSERT INTO emp_msg VALUES(30,'TURNER', 1800, 7698); +INSERT INTO emp_msg VALUES(30,'WARD', 1550, 7698); +``` + + + +查询 **emp_msg** 表中 **sal** 列最高的第一个非空 **MGR** 值作为 **first_MGR** 列。 + +```javascript +SELECT deptno , ename , sal , MGR , +FIRST_VALUE ( MGR ) IGNORE NULLS over ( ORDER BY sal DESC ROWS UNBOUNDED PRECEDING ) AS first_MGR +FROM emp_msg ORDER BY deptno , ename; +``` + + + +查询结果如下: + +```javascript ++--------+--------+------+------+-----------+ +| DEPTNO | ENAME | SAL | MGR | FIRST_MGR | ++--------+--------+------+------+-----------+ +| 10 | CLARK | 2750 | 7839 | 7566 | +| 10 | KING | 5300 | NULL | NULL | +| 10 | MILLER | 1600 | 7782 | 7566 | +| 20 | ADAMS | 1400 | 7788 | 7566 | +| 20 | FORD | 3300 | 7566 | 7566 | +| 20 | JONES | 3275 | 7839 | 7566 | +| 20 | SCOTT | 3300 | 7566 | 7566 | +| 20 | SMITH | 1100 | 7902 | 7566 | +| 30 | ALLEN | 1900 | 7698 | 7566 | +| 30 | BLAKE | 3150 | 7839 | 7566 | +| 30 | JAMES | 1250 | 7698 | 7566 | +| 30 | MARTIN | 1550 | 7698 | 7566 | +| 30 | TURNER | 1800 | 7698 | 7566 | +| 30 | WARD | 1550 | 7698 | 7566 | ++--------+--------+------+------+-----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/17.LAST_VALUE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/17.LAST_VALUE.md new file mode 100644 index 000000000..49881ba0a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/17.LAST_VALUE.md @@ -0,0 +1,95 @@ +LAST_VALUE +=============================== + + + +`LAST_VALUE` 是一个分析函数。它返回一组有序值中的最后一个值。如果集合中的最后一个值为 `NULL`,则该函数将返回为 `NULL`,除非您指定 `IGNORE NULLS`,此设置对数据致密化很有用。 + +语法 +-------------- + +```javascript +LAST_VALUE {(expr) [RESPECT|IGNORE NULLS] | (expr [RESPECT|IGNORE NULLS])} +OVER (analytic_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------------------------|-------------------------------------------------------------------------------------------------------------------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| expr | 不能将 `LAST_VALUE` 或其他分析函数用于 `expr` 来嵌套分析函数。 | +| FROM { FIRST \| LAST } | 确定计算方向是从窗口的第一行还是最后一行开始,默认值为 `FROM FIRST`。 | +| {RESPECT \| IGNORE} NULLS | 表示是否忽略 `NULL` 值。默认值为 `RESPECT NULLS`,考虑 `NULL` 值。如果您指定 `IGNORE NULLS`,则 `LAST_VALUE` 返回集合中的最后一个非空值,如果所有值都为 `NULL`,则返回 `NULL`。 | + + + +返回类型 +---------------- + +返回值的数据类型不限。 + +示例 +-------------- + +建表 **emp_msg** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE emp_msg(deptno INT, ename varchar(30),sal INT, MGR varchar(30)); +INSERT INTO emp_msg VALUES(10,'CLARK', 2750, 7839); +INSERT INTO emp_msg VALUES(10,'KING', 5300, NULL); +INSERT INTO emp_msg VALUES(10,'MILLER', 1600, 7782); +INSERT INTO emp_msg VALUES(20,'ADAMS', 1400, 7788); +INSERT INTO emp_msg VALUES(20,'FORD', 3300, 7566); +INSERT INTO emp_msg VALUES(20,'JONES', 3275, 7839); +INSERT INTO emp_msg VALUES(20,'SCOTT', 3300, 7566); +INSERT INTO emp_msg VALUES(20,'SMITH', 1100, 7902); +INSERT INTO emp_msg VALUES(30,'ALLEN', 1900, 7698); +INSERT INTO emp_msg VALUES(30,'BLAKE', 3150, 7839); +INSERT INTO emp_msg VALUES(30,'JAMES', 1250, 7698); +INSERT INTO emp_msg VALUES(30,'MARTIN', 1550, 7698); +INSERT INTO emp_msg VALUES(30,'TURNER', 1800, 7698); +INSERT INTO emp_msg VALUES(30,'WARD', 1550, 7698); +``` + + + +查询 **emp_msg** 表中 **sal** 列最低的最后一个非空 **MGR** 值作为 **last_MGR** 列,执行以下语句: + +```javascript +SELECT deptno , ename , sal , MGR , +LAST_VALUE ( MGR ) IGNORE NULLS OVER (ORDER BY sal DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS last_MGR +FROM emp_msg ORDER BY deptno , ename ; +``` + + + +查询结果如下: + +```javascript ++--------+--------+------+------+----------+ +| DEPTNO | ENAME | SAL | MGR | LAST_MGR | ++--------+--------+------+------+----------+ +| 10 | CLARK | 2750 | 7839 | 7902 | +| 10 | KING | 5300 | NULL | 7902 | +| 10 | MILLER | 1600 | 7782 | 7902 | +| 20 | ADAMS | 1400 | 7788 | 7902 | +| 20 | FORD | 3300 | 7566 | 7902 | +| 20 | JONES | 3275 | 7839 | 7902 | +| 20 | SCOTT | 3300 | 7566 | 7902 | +| 20 | SMITH | 1100 | 7902 | 7902 | +| 30 | ALLEN | 1900 | 7698 | 7902 | +| 30 | BLAKE | 3150 | 7839 | 7902 | +| 30 | JAMES | 1250 | 7698 | 7902 | +| 30 | MARTIN | 1550 | 7698 | 7902 | +| 30 | TURNER | 1800 | 7698 | 7902 | +| 30 | WARD | 1550 | 7698 | 7902 | ++--------+--------+------+------+----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/18.NTH_VALUE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/18.NTH_VALUE.md new file mode 100644 index 000000000..c156ba3fc --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/18.NTH_VALUE.md @@ -0,0 +1,95 @@ +NTH_VALUE +============================== + + + +`NTH_VALUE` 返回 `analytic_clause` 定义的窗口中第 `n` 行的 `measure_expr` 值。返回的值具有 `measure_expr` 的数据类型。 + +语法 +-------------- + +```javascript +NTH_VALUE (measure_expr, n) [ FROM { FIRST | LAST } ][ { RESPECT | IGNORE } NULLS ] OVER (analytic_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------------------------|------------------------------------------------------------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| measure_expr | 字段名 | +| n | n 为正数,确定要为其返回测量值的第 n 行,如果 n 是 NULL ,函数将返回错误,如果 n 大于窗口内所有的行数,函数返回 NULL。 | +| FROM { FIRST \| LAST } | 确定计算方向是从窗口的第一行还是最后一行开始,默认值为 `FROM FIRST`。 | +| {RESPECT \| IGNORE} NULLS | 表示是否忽略 `NULL` 值。默认值为 `RESPECT NULLS`,考虑 `NULL` 值。 | + + + +返回类型 +---------------- + +返回值的数据类型不限。 + +示例 +-------------- + +创建表 **emp_msg** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE emp_msg(deptno INT, ename VARCHAR(30),sal INT, MGR VARCHAR(30), hiredate VARCHAR(50)); +INSERT INTO emp_msg VALUES(10,'CLARK', 2750, 7839, '2018-05-01'); +INSERT INTO emp_msg VALUES(10,'KING', 5300, NULL, '2018-05-10'); +INSERT INTO emp_msg VALUES(10,'MILLER', 1600, 7782, '2018-06-01'); +INSERT INTO emp_msg VALUES(20,'ADAMS', 1400, 7788, '2018-05-21'); +INSERT INTO emp_msg VALUES(20,'FORD', 3300, 7566, '2018-06-01'); +INSERT INTO emp_msg VALUES(20,'JONES', 3275, 7839, '2018-06-20'); +INSERT INTO emp_msg VALUES(20,'SCOTT', 3300, 7566, '2018-07-01'); +INSERT INTO emp_msg VALUES(20,'SMITH', 1100, 7902, '2018-07-10'); +INSERT INTO emp_msg VALUES(30,'ALLEN', 1900, 7698, '2018-08-05'); +INSERT INTO emp_msg VALUES(30,'BLAKE', 3150, 7839, '2018-06-10'); +INSERT INTO emp_msg VALUES(30,'JAMES', 1250, 7698, '2018-09-05'); +INSERT INTO emp_msg VALUES(30,'MARTIN', 1550, 7698, '2018-10-01'); +INSERT INTO emp_msg VALUES(30,'TURNER', 1800, 7698, '2019-05-01'); +INSERT INTO emp_msg VALUES(30,'WARD', 1550, 7698, '2019-05-10'); +``` + + + +按部门 **deptno** 分组,查询每个部门的人员的薪资和该部门内排名第三的薪资金额的对比。执行以下语句: + +```javascript +SELECT deptno, ename, sal, nth_value(sal, 3) OVER (PARTITION BY deptno ORDER BY sal DESC +rows BETWEEN unbounded preceding AND unbounded following) AS third_most_sal +FROM emp_msg ORDER BY deptno,sal DESC; +``` + + + +查询结果如下: + +```javascript ++--------+--------+------+----------------+ +| DEPTNO | ENAME | SAL | THIRD_MOST_SAL | ++--------+--------+------+----------------+ +| 10 | KING | 5300 | 1600 | +| 10 | CLARK | 2750 | 1600 | +| 10 | MILLER | 1600 | 1600 | +| 20 | FORD | 3300 | 3275 | +| 20 | SCOTT | 3300 | 3275 | +| 20 | JONES | 3275 | 3275 | +| 20 | ADAMS | 1400 | 3275 | +| 20 | SMITH | 1100 | 3275 | +| 30 | BLAKE | 3150 | 1800 | +| 30 | ALLEN | 1900 | 1800 | +| 30 | TURNER | 1800 | 1800 | +| 30 | MARTIN | 1550 | 1800 | +| 30 | WARD | 1550 | 1800 | +| 30 | JAMES | 1250 | 1800 | ++--------+--------+------+----------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/19.CUME_DIST.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/19.CUME_DIST.md new file mode 100644 index 000000000..0ab042194 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/19.CUME_DIST.md @@ -0,0 +1,85 @@ +CUME_DIST +============================== + + + +`CUME_DIST` 计算一个值在一组值中的累积分布。返回值的范围为 `0 < CUME_DIST <= 1`。领带值总是评估到相同的累积分布值。此函数将可以隐式转换为数字数据类型的任何数字数据类型或任何非数字数据类型作为参数。OceanBase 数据库确定具有最高数值优先级的参数,隐式地将其余参数转换为该数据类型,进行计算并返回 `NUMBER`。 + +作为一个分析函数,`CUME_DIST` 计算指定值在一组值中的相对位置。 对于行 r,假设升序,r 的 cume_dist 是值低于或等于 r 值的行数除以被计算的行数(整个查询结果集或分区)。 + +语法 +-------------- + +```javascript +CUME_DIST() OVER ([ query_partition_clause ] order_by_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|---------------------------|---------------------------------------------------| +| expr | `NUMBER` 类型或可隐式转换为 `NUMBER` 类型的表达式 。 | +| {RESPECT \| IGNORE} NULLS | 表示是否忽略 `NULL` 值。默认值为 `RESPECT NULLS`,考虑 `NULL` 值。 | + + + +返回类型 +---------------- + +返回值为 `NUMBER` 数据类型。 + +示例 +-------------- + +创建表 **emp_msg** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE emp_msg(deptno INT, ename varchar(30), sal INT, MGR varchar(30)); +INSERT INTO emp_msg VALUES(10,'CLARK', 2750, 7839); +INSERT INTO emp_msg VALUES(10,'KING', 5300, NULL); +INSERT INTO emp_msg VALUES(10,'MILLER', 1600, 7782); +INSERT INTO emp_msg VALUES(20,'ADAMS', 1400, 7788); +INSERT INTO emp_msg VALUES(20,'FORD', 3300, 7566); +INSERT INTO emp_msg VALUES(20,'JONES', 3275, 7839); +INSERT INTO emp_msg VALUES(20,'SCOTT', 3300, 7566); +INSERT INTO emp_msg VALUES(20,'SMITH', 1100, 7902); +INSERT INTO emp_msg VALUES(30,'ALLEN', 1900, 7698); +INSERT INTO emp_msg VALUES(30,'BLAKE', 3150, 7839); +INSERT INTO emp_msg VALUES(30,'JAMES', 1250, 7698); +INSERT INTO emp_msg VALUES(30,'MARTIN', 1550, 7698); +INSERT INTO emp_msg VALUES(30,'TURNER', 1800, 7698); +INSERT INTO emp_msg VALUES(30,'WARD', 1550, 7698); +``` + + + +返回指定列 **sal** 在同 **deptno** 中的 `CUME_DIST` 的值,执行以下语句: + +```javascript +SELECT deptno , ename , sal, cume_dist ( ) over ( partition BY deptno ORDER BY sal DESC ) "RANK" +FROM emp_msg WHERE sal>2000; +``` + + + +查询结果如下: + +```javascript ++--------+-------+------+-------------------------------------------+ +| DEPTNO | ENAME | SAL | RANK | ++--------+-------+------+-------------------------------------------+ +| 10 | KING | 5300 | .5 | +| 10 | CLARK | 2750 | 1 | +| 20 | FORD | 3300 | .6666666666666666666666666666666666666667 | +| 20 | SCOTT | 3300 | .6666666666666666666666666666666666666667 | +| 20 | JONES | 3275 | 1 | +| 30 | BLAKE | 3150 | 1 | ++--------+-------+------+-------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/2.AVG-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/2.AVG-1.md new file mode 100644 index 000000000..b3689269a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/2.AVG-1.md @@ -0,0 +1,119 @@ +AVG +======================== + + + +`AVG` 函数返回数值列的平均值。 + +语法 +-------------- + +```javascript +AVG([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------------------------------------| +| DISTINCT | 查询时去除数据中的重复值,且忽略数据中的 NULL 值。 | +| UNIQUE | 查询时去除数据中的重复值,且忽略数据中的 NULL 值。 | +| ALL | 查询时不去除数据中的重复值,且忽略数据中的 NULL 值。`ALL` 为默认值。 | +| expr | 是数值类型或者可以转换成数值类型的表达式。数值类型可以为:`NUMBER`、`FLOAT`、`BINARY_FLOAT` 或 `BINARY_DOUBLE`。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + +**注意** + + + +如果您指定了 `DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + +返回类型 +---------------- + +返回类型与参数 `expr` 的数据类型相同。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT, last_name varchar(50), hiredate varchar(50), SALARY INT); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +执行以下语句计算各列的平均值: + +```javascript +SELECT manager_id, last_name, hiredate, salary, AVG(salary) OVER (PARTITION BY manager_id +ORDER BY hiredate ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg +FROM employees ORDER BY manager_id, hiredate, salary; +``` + + + +返回结果如下: + +```javascript ++------------+-----------+------------+--------+------------------------------------------+ +| MANAGER_ID | LAST_NAME | HIREDATE | SALARY | C_MAVG | ++------------+-----------+------------+--------+------------------------------------------+ +| 100 | Errazuriz | 2017-07-21 | 1400 | 1550 | +| 100 | Raphaely | 2017-07-22 | 1700 | 4700 | +| 100 | De Haan | 2018-05-01 | 11000 | 8900 | +| 100 | Partners | 2018-12-01 | 14000 | 13000 | +| 100 | Hartstein | 2019-05-01 | 14000 | 13833.333 | +| 100 | Weiss | 2019-07-11 | 13500 | 13500 | +| 100 | Russell | 2019-10-05 | 13000 | 13250 | +| 200 | Part | 2018-08-11 | 14000 | 13500 | +| 200 | Bell | 2019-05-25 | 13000 | 13500 | +| 200 | Ross | 2019-06-11 | 13500 | 13250 | ++------------+-----------+------------+--------+------------------------------------------+ +``` + + + +**聚合函数示例** + +执行以下语句计算 **salary** 的平均值: + +```javascript +SELECT AVG(salary) FROM employees; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| AVG(SALARY) | ++-------------+ +| 10910 | ++-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/20.DENSE_RANK.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/20.DENSE_RANK.md new file mode 100644 index 000000000..abf729651 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/20.DENSE_RANK.md @@ -0,0 +1,84 @@ +DENSE_RANK +=============================== + + + +`DENSE_RANK` 计算有序行组中行的秩,并将秩作为 `NUMBER` 返回。行列是从 1 开始的连续整数,最大的秩值是查询返回的唯一值的数目。在关系的情况下,秩值不被跳过。具有相同值的排序标准的行接收相同的秩。此函数对于顶部 n 和底部 n 报告是有用的。 + +作为一个分析函数,`DENSE_RANK` 根据 `order_by_clause` 中 `value_exprs` 的值,计算从查询返回的每一行相对于其他行的秩。 + +语法 +-------------- + +```javascript +DENSE_RANK( ) OVER([ query_partition_clause ] order_by_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回值为 `NUMBER` 数据类型。 + +示例 +-------------- + +创建表 **emp_msg** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE emp_msg(deptno INT, ename varchar(30), sal INT, MGR varchar(30)); +INSERT INTO emp_msg VALUES(10,'CLARK', 2750, 7839); +INSERT INTO emp_msg VALUES(10,'KING', 5300, NULL); +INSERT INTO emp_msg VALUES(10,'MILLER', 1600, 7782); +INSERT INTO emp_msg VALUES(20,'ADAMS', 1400, 7788); +INSERT INTO emp_msg VALUES(20,'FORD', 3300, 7566); +INSERT INTO emp_msg VALUES(20,'JONES', 3275, 7839); +INSERT INTO emp_msg VALUES(20,'SCOTT', 3300, 7566); +INSERT INTO emp_msg VALUES(20,'SMITH', 1100, 7902); +INSERT INTO emp_msg VALUES(30,'ALLEN', 1900, 7698); +INSERT INTO emp_msg VALUES(30,'BLAKE', 3150, 7839); +INSERT INTO emp_msg VALUES(30,'JAMES', 1250, 7698); +INSERT INTO emp_msg VALUES(30,'MARTIN', 1550, 7698); +INSERT INTO emp_msg VALUES(30,'TURNER', 1800, 7698); +INSERT INTO emp_msg VALUES(30,'WARD', 1550, 7698); +``` + + + +分析函数功能示例,执行以下语句: + +```javascript +SELECT deptno, ename, sal, DENSE_RANK ( ) OVER ( partition BY deptno ORDER BY sal DESC ) "RANK" +FROM emp_msg WHERE sal>2000; +``` + + + +查询结果如下: + +```javascript ++--------+-------+------+------+ +| DEPTNO | ENAME | SAL | RANK | ++--------+-------+------+------+ +| 10 | KING | 5300 | 1 | +| 10 | CLARK | 2750 | 2 | +| 20 | SCOTT | 3300 | 1 | +| 20 | FORD | 3300 | 1 | +| 20 | JONES | 3275 | 2 | +| 30 | BLAKE | 3150 | 1 | ++--------+-------+------+------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/21.NTILE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/21.NTILE.md new file mode 100644 index 000000000..49156aa24 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/21.NTILE.md @@ -0,0 +1,91 @@ +NTILE +========================== + + + +`NTILE` 函数将有序数据集划分为 `expr` 指示的若干桶,并为每一行分配适当的桶号。桶编号为 1 到 `expr`。 对于每个分区,`expr` 值必须解析为正常数。如果 `expr` 是一个非整数常量,则 OceanBase 将该值截断为整数。 返回值为 `NUMBER`。 + +桶中的行数最多可以相差 1,其余值(行数的其余部分除以桶)为每个桶分配一个,从桶 1 开始。如果 `expr` 大于行数,则将填充与行数相等的多个桶,其余的桶将为空。 + +您不能通过使用 `NTILE` 或任何其他分析函数来嵌套分析函数。 但是您可以将其他内置函数表达式用在 `expr` 中。 + +语法 +-------------- + +```javascript +NTILE(expr) OVER ([query_partition_clause] order_by_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------| +| expr | 只能为正常数。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回 `NUMERIC` 类型数据。 + +示例 +-------------- + +根据成绩将同学分成四个等级,为学生评奖。创建表 **course** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE course +( + name VARCHAR(8), + grade NUMBER +); +INSERT INTO course VALUES('Linda',50); +INSERT INTO course VALUES('Tan',85); +INSERT INTO course VALUES('Tom',90); +INSERT INTO course VALUES('John',95); +INSERT INTO course VALUES('Mery',55); +INSERT INTO course VALUES('Peter',60); +INSERT INTO course VALUES('Jack',65); +INSERT INTO course VALUES('Rose',70); +INSERT INTO course VALUES('Tonny',75); +INSERT INTO course VALUES('Apple',80); +COMMIT; +``` + + + +执行以下语句: + +```javascript +SELECT name, grade, ntile(4) OVER (ORDER BY grade DESC) til FROM course; +``` + + + +查询结果如下: + +```javascript ++-------+-------+------+ +| NAME | GRADE | TIL | ++-------+-------+------+ +| John | 95 | 1 | +| Tom | 90 | 1 | +| Tan | 85 | 1 | +| Apple | 80 | 2 | +| Tonny | 75 | 2 | +| Rose | 70 | 2 | +| Jack | 65 | 3 | +| Peter | 60 | 3 | +| Mery | 55 | 4 | +| Linda | 50 | 4 | ++-------+-------+------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/22.PERCENT_RANK.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/22.PERCENT_RANK.md new file mode 100644 index 000000000..ba97fdc5e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/22.PERCENT_RANK.md @@ -0,0 +1,76 @@ +PERCENT_RANK +================================= + + + +`PERCENT_RANK` 函数类似于 `CUME_DIST`(累积分布)函数。 它的返回值范围为 0\~1。任何集合中的第一行的 `PERCENT_RANK` 函数为 0,返回值为 `NUMBER`。 + +语法 +-------------- + +```javascript +PERCENT_RANK( ) OVER ([query_partition_clause] order_by_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回数值数据类型。 + +示例 +-------------- + +根据成绩将同学分成四个等级,为学生评奖。建表 **course_rank** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE course_rank +( + name VARCHAR(8), + id NUMBER +); +INSERT INTO course_rank VALUES('Linda',1); +INSERT INTO course_rank VALUES('Tan',2); +INSERT INTO course_rank VALUES('Tom',3); +INSERT INTO course_rank VALUES('John',4); +INSERT INTO course_rank VALUES('Mery',5); +COMMIT; +``` + + + +执行以下语句: + +```javascript +SELECT name, id ,percent_rank() OVER (ORDER BY id) AS pr1 FROM course_rank; +``` + + + +查询结果如下: + +```javascript ++-------+------+------+ +| NAME | ID | PR1 | ++-------+------+------+ +| Linda | 1 | 0 | +| Tan | 2 | .25 | +| Tom | 3 | .5 | +| John | 4 | .75 | +| Mery | 5 | 1 | ++-------+------+------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/23.RATIO_TO_REPORT.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/23.RATIO_TO_REPORT.md new file mode 100644 index 000000000..08e57c47f --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/23.RATIO_TO_REPORT.md @@ -0,0 +1,79 @@ +RATIO_TO_REPORT +==================================== + + + +`RATIO_TO_REPORT` 函数计算一个值与一组值之和的比率。 + +语法 +-------------- + +```javascript +RATIO_TO_REPORT(expr) OVER ([query_partition_clause]) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------| +| expr | 只能为正常数。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回数值型数据。 + +示例 +-------------- + +根据部分展示员工产出占部门总展出的比例。建表 **product** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE product (name VARCHAR(8), deptno NUMBER, output NUMBER); +INSERT INTO product VALUES('Linda',100,5050); +INSERT INTO product VALUES('Tan',1001,8500); +INSERT INTO product VALUES('Tom',1001,3900); +INSERT INTO product VALUES('John',100,29500); +INSERT INTO product VALUES('Mery',1001,1500); +INSERT INTO product VALUES('Peter',100,1060); +COMMIT; +``` + + + +执行以下语句: + +```javascript +SELECT name, OUTPUT, deptno, RATIO_TO_REPORT(output) OVER (partition BY deptno) FROM product; +``` + + + + + +查询结果如下: + + + +```javascript ++-------+--------+--------+------------------------------------------------+ +| NAME | OUTPUT | DEPTNO | RATIO_TO_REPORT(OUTPUT)OVER(PARTITIONBYDEPTNO) | ++-------+--------+--------+------------------------------------------------+ +| Linda | 5050 | 100 | .1418140971637180567256388654872226902555 | +| John | 29500 | 100 | .8284189834316203313675933726481325470373 | +| Peter | 1060 | 100 | .0297669194046616119067677618646447627071 | +| Tan | 8500 | 1001 | .6115107913669064748201438848920863309353 | +| Tom | 3900 | 1001 | .2805755395683453237410071942446043165468 | +| Mery | 1500 | 1001 | .107913669064748201438848920863309352518 | ++-------+--------+--------+------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/24.ROW_NUMBER.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/24.ROW_NUMBER.md new file mode 100644 index 000000000..884d0e59c --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/24.ROW_NUMBER.md @@ -0,0 +1,74 @@ +ROW_NUMBER +=============================== + + + +`ROW_NUMBER` 函数为应用它的每一行分配一个唯一的数字(无论是分区中的每一行还是查询返回的每一行),按照`order_by_clause` 中指定的行的有序序列,从 1 开始,通过在检索指定范围的 `ROW_NUMBER` 的查询中使用子查询嵌套一个子查询,您可以从内部查询的结果中找到一个精确的行子集。 此函数的使用允许您实现 `top-n`、`bottom-n` 和 `inner-n` 报告。对于一致的结果,查询必须确保确定的排序顺序。 + +语法 +-------------- + +```javascript +ROW_NUMBER( ) OVER ([ query_partition_clause ] order_by_clause) +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回数值型数据。 + +示例 +-------------- + +以部门为单位根据员工的产出进行排名。建表 **product** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE product(name VARCHAR(8), deptno NUMBER, output NUMBER); +INSERT INTO product VALUES('Linda',100,5050); +INSERT INTO product VALUES('Tan',1001,8500); +INSERT INTO product VALUES('Tom',1001,3900); +INSERT INTO product VALUES('John',100,29500); +INSERT INTO product VALUES('Mery',1001,1500); +INSERT INTO product VALUES('Peter',100,1060); +COMMIT; +``` + + + +执行以下语句: + +```javascript +SELECT name,OUTPUT,deptno,ROW_NUMBER() OVER (partition BY deptno ORDER BY OUTPUT DESC) FROM product; +``` + + + +查询结果如下: + +```javascript ++-------+--------+--------+------------------------------------------------------+ +| NAME | OUTPUT | DEPTNO | ROW_NUMBER()OVER(PARTITIONBYDEPTNOORDERBYOUTPUTDESC) | ++-------+--------+--------+------------------------------------------------------+ +| John | 29500 | 100 | 1 | +| Linda | 5050 | 100 | 2 | +| Peter | 1060 | 100 | 3 | +| Tan | 8500 | 1001 | 1 | +| Tom | 3900 | 1001 | 2 | +| Mery | 1500 | 1001 | 3 | ++-------+--------+--------+------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/25.wmsys-wm_concat-and-wm_concat-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/25.wmsys-wm_concat-and-wm_concat-1.md new file mode 100644 index 000000000..08dc0589d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/25.wmsys-wm_concat-and-wm_concat-1.md @@ -0,0 +1,126 @@ +WMSYS.WM_CONCAT/WM_CONCAT +============================================== + + + +`WM_CONCAT` 函数用于列转行,将度量列的值进行合并。作为单个集合的聚合函数,`WM_CONCAT` 对所有行进行操作并返回单个输出行。作为组集聚合,`WM_CONCAT` 将对 `GROUP BY` 子句定义的每个组进行操作并返回输出行。作为分析函数,`WM_CONCAT` 基于 `query_partition_clause` 中的一个或多个表达式将查询结果集分为几组。 + +语法 +-------------- + +```javascript +WM_CONCAT ([DISTINCT] measure_expr) [OVER query_partition_clause] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------|-----------------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| measure_expr | 可以是任何表达式。度量列中的空值将被忽略。 | +| DISTINCT | 如果指定 DISTINCT,会在返回结果中删除重复值。 | + + + +返回类型 +---------------- + +返回的数据类型为 `CLOB`。 + +示例 +-------------- + +**分析函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(40, 100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(50, 100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(50, 100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(70, 100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(90, 100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(90,100, 'Partners', '2018-12-01',14000); +``` + + + +查询 2019 年 10 月 10 日之前雇用的雇员,以及该雇员的部门,雇用日期以及该部门中的其他雇员。执行以下语句: + +```javascript +SELECT department_id "Dept", hiredate "Date", last_name "Name",wmsys.wm_concat(last_name) + OVER (PARTITION BY department_id) as "Emp_list" +FROM employees WHERE hiredate < '2019-10-10' ORDER BY "Dept", "Date", "Name"; +``` + + + +查询结果如下: + +```javascript ++------+------------+-----------+--------------------+ +| Dept | Date | Name | Emp_list | ++------+------------+-----------+--------------------+ +| 30 | 2017-07-01 | Raphaely | Raphaely,De Haan | +| 30 | 2018-05-01 | De Haan | Raphaely,De Haan | +| 40 | 2017-07-21 | Errazuriz | Errazuriz | +| 50 | 2017-07-22 | Raphaely | Hartstein,Raphaely | +| 50 | 2019-05-01 | Hartstein | Hartstein,Raphaely | +| 70 | 2019-07-11 | Weiss | Weiss | +| 90 | 2018-12-01 | Partners | Russell,Partners | +| 90 | 2019-10-05 | Russell | Russell,Partners | ++------+------------+-----------+--------------------+ +8 rows in set (0.01 sec) +``` + + + +**聚合函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(30, 100, 'Errazuriz', '2017-07-01', 1400); +INSERT INTO employees VALUES(30, 100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'Weiss', '2019-07-01',13500); +INSERT INTO employees VALUES(30, 100, 'Russell', '2019-07-01', 13000); +INSERT INTO employees VALUES(30,100, 'Partners', '2018-12-01',14000); +``` + + + +查询第 30 部门的所有员工,并查找最早的雇用日期。执行以下语句: + +```javascript +SELECT wmsys.wm_concat(last_name) as "Emp_list", MIN(hiredate) as "Earliest" +FROM employees WHERE department_id = 30; +``` + + + +查询结果如下: + +```javascript ++----------------------------------------------------------------------+------------+ +| Emp_list | Earliest | ++----------------------------------------------------------------------+------------+ +| Raphaely,De Haan,Errazuriz,Hartstein,Raphaely,Weiss,Russell,Partners | 2017-07-01 | ++----------------------------------------------------------------------+------------+ +1 row in set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/3.COUNT-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/3.COUNT-1.md new file mode 100644 index 000000000..281d087d6 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/3.COUNT-1.md @@ -0,0 +1,163 @@ +COUNT +========================== + + + +`COUNT` 函数用于查询 `expr` 的行数。 + +语法 +-------------- + +```javascript +COUNT({ * | [ DISTINCT | UNIQUE | ALL ] expr }) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值 。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------------------------------------------------| +| \* | 表示满足条件的所有行,且包含值为 NULL 的行。 | +| DISTINCT | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| UNIQUE | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| ALL | 返回所有值,包含重复行,且忽略值为 NULL 的行。 | +| expr | 是数值类型或者可以转换成数值类型的表达式。数值类型可以为:`NUMBER`、`FLOAT`、`BINARY_FLOAT` 或 `BINARY_DOUBLE`。 | +| OVER | 使用 OVER 子句定义窗口进行计算。 | + + +**注意** + + + +* 对于 `COUNT` 函数,从不返回 `NULL`,如果指定了 `expr`,即返回 `expr` 不为 `NULL` 的统计个数,如果指定 `COUNT(*)` 返回所有行的统计数目。使用参数 `DISTINCT` 、`UNIQUE` 或 `ALL` 时需要与 `expr` 用空格隔开。 + + + +* 如果您指定了 `DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + + + + + + +返回类型 +---------------- + +返回类型与参数 `expr` 的数据类型相同。 + +示例 +-------------- + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees(manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(300, 'Wei', '2019-09-11',23600); +INSERT INTO employees VALUES(200, 'Red', '2019-11-05', 23800); +INSERT INTO employees VALUES(100, 'Part', '2018-10-01',24000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',23500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 23000); +INSERT INTO employees VALUES(200, 'Part', '2018-06-11',24500); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +COMMIT; +``` + + + +**分析函数示例** + +执行以下语句查询表中的行数: + +```javascript +SELECT last_name, salary,COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING +AND 150 FOLLOWING) AS mov_count FROM employees ORDER BY salary, last_name; +``` + + + +查询结果如下: + +```javascript ++-----------+--------+-----------+ +| LAST_NAME | SALARY | MOV_COUNT | ++-----------+--------+-----------+ +| Errazuriz | 1400 | 1 | +| De Haan | 11000 | 1 | +| Hartstein | 14000 | 1 | +| Bell | 23000 | 1 | +| Ross | 23500 | 2 | +| Wei | 23600 | 1 | +| Red | 23800 | 1 | +| Part | 24000 | 1 | +| Part | 24500 | 1 | ++-----------+--------+-----------+ +``` + + + +**聚合函数示例** + +创建表 **a** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE a ( +b INT +); +INSERT INTO a VALUES (1); +INSERT INTO a VALUES (null); +INSERT INTO a VALUES (null); +INSERT INTO a VALUES (1); +INSERT INTO a VALUES (null); +INSERT INTO a VALUES (1); +INSERT INTO a VALUES (1); +``` + + + +返回表 **a** 值不为 NULL 的统计个数,执行以下语句: + +```javascript +SELECT COUNT(b) FROM a; +``` + + + +查询结果如下: + +```javascript ++----------+ +| COUNT(B) | ++----------+ +| 4 | ++----------+ +``` + + + +指定 `COUNT(*)` 返回所有行的统计数目,执行以下语句: + +```javascript +SELECT COUNT(*) FROM a; +``` + + + +查询结果如下: + +```javascript ++----------+ +| COUNT(*) | ++----------+ +| 7 | ++----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/4.KEEP-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/4.KEEP-1.md new file mode 100644 index 000000000..5b2671732 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/4.KEEP-1.md @@ -0,0 +1,134 @@ +KEEP +========================= + + + +`KEEP` 函数用于对一组行中的值进行操作,将这组行按照给定的排序规则排序后返回排在第一或最后的值。作为聚合函数,`KEEP` 对所有行进行操作并返回单个输出行。作为分析函数,`KEEP` 基于 `query_partition_clause` 中的一个或多个表达式将查询结果集分为几组。 + +`KEEP` 函数必须与 `MIN`、`MAX`、`SUM`、`AVG`、`COUNT`、`VARIANCE` 或 `STDDEV` 函数一起使用。 + +语法 +-------------- + +```javascript +KEEP (DENSE_RANK {FIRST | LAST} ORDER BY expr [ DESC | ASC ] [ NULLS { FIRST | LAST } ] [, expr [ DESC | ASC ] [ NULLS { FIRST | LAST } ]]... ) +[ OVER ( [query_partition_clause] ) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|------|-----------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| expr | 可以是任何表达式。度量列中的空值将被忽略。 | + + + +返回类型 +---------------- + +返回与度量列相同的数据类型。 + +示例 +-------------- + +**分析函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(40, 100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(50, 100, 'Hartstein', '2019-10-05',14000); +INSERT INTO employees VALUES(50, 100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(50, 100, 'Weiss', '2019-10-05',13500); +INSERT INTO employees VALUES(90, 100, 'Russell', '2019-07-11', 13000); +INSERT INTO employees VALUES(90,100, 'Partners', '2018-12-01',14000); +``` + + + +对于每个部门:按照薪水排序,对排在第一的员工的薪水求和;按照雇用日期排序,对排在最后的员工的薪水求和。执行以下语句: + +```javascript +SELECT last_name, department_id, salary, + SUM(salary) KEEP (DENSE_RANK FIRST ORDER BY salary) + OVER (PARTITION BY department_id) "Worst", + SUM(salary) KEEP (DENSE_RANK LAST ORDER BY HIREDATE) + OVER (PARTITION BY department_id) "Best" + FROM employees + ORDER BY department_id, salary, last_name; +``` + + + +查询结果如下: + +```javascript ++-----------+---------------+--------+-------+-------+ +| LAST_NAME | DEPARTMENT_ID | SALARY | Worst | Best | ++-----------+---------------+--------+-------+-------+ +| Raphaely | 30 | 1700 | 1700 | 11000 | +| De Haan | 30 | 11000 | 1700 | 11000 | +| Errazuriz | 40 | 1400 | 1400 | 1400 | +| Raphaely | 50 | 1700 | 1700 | 27500 | +| Weiss | 50 | 13500 | 1700 | 27500 | +| Hartstein | 50 | 14000 | 1700 | 27500 | +| Russell | 90 | 13000 | 13000 | 13000 | +| Partners | 90 | 14000 | 13000 | 13000 | ++-----------+---------------+--------+-------+-------+ +8 rows in set (0.01 sec) +``` + + + +**聚合函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(40, 100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(50, 100, 'Hartstein', '2019-10-05',14000); +INSERT INTO employees VALUES(50, 100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(50, 100, 'Weiss', '2019-10-05',13500); +INSERT INTO employees VALUES(90, 100, 'Russell', '2019-07-11', 13000); +INSERT INTO employees VALUES(90,100, 'Partners', '2018-12-01',14000); +``` + + + +按照薪水排序,对排在第一的员工的薪水求和;按照雇用日期排序,对排在最后的员工的薪水求和。执行以下语句: + +```javascript +SELECT + SUM(salary) KEEP (DENSE_RANK FIRST ORDER BY salary) "Worst", + SUM(salary) KEEP (DENSE_RANK LAST ORDER BY HIREDATE) "Best" + FROM employees; +``` + + + +查询结果如下: + +```javascript ++-------+-------+ +| Worst | Best | ++-------+-------+ +| 1400 | 27500 | ++-------+-------+ +1 row in set (0.00 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/5.SUM-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/5.SUM-1.md new file mode 100644 index 000000000..41fada3ec --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/5.SUM-1.md @@ -0,0 +1,117 @@ +SUM +======================== + + + +`SUM` 函数返回参数中指定列的和。此函数将可以隐式转换为数值数据类型的任何数值数据类型或任何非数值数据类型作为参数。 函数返回与参数的数值数据类型相同的数据类型。 + +语法 +-------------- + +```javascript +SUM([ DISTINCT | UNQIUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|---------------------------------------| +| DISTINCT | 去除重复行,且忽略值为 NULL 的行。 | +| UNQIUE | 去除重复行,且忽略值为 NULL 的行。 | +| ALL | 返回所有值,包含重复行,且忽略值为 NULL 的行。 | +| expr | 可为数值、字符、日期型或其它类型的数据列或表达式。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + +**注意** + +: + +如果您指定了`DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + +返回类型 +---------------- + +返回与 `expr` 相同数据类型的值。 + +示例 +-------------- + +**分析函数示例** + +创建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees(manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(300, 'Wei', '2019-09-11',23600); +INSERT INTO employees VALUES(200, 'Red', '2019-11-05', 23800); +INSERT INTO employees VALUES(100, 'Part', '2018-10-01',24000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',23500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 23000); +INSERT INTO employees VALUES(200, 'Part', '2018-06-11',24500); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +COMMIT; +``` + + + +计算工资总额,执行以下语句: + +```javascript +SELECT manager_id, last_name, salary, SUM(salary) OVER (PARTITION BY manager_id +ORDER BY salary RANGE UNBOUNDED PRECEDING) l_csum +FROM employees ORDER BY manager_id, last_name, salary, l_csum; +``` + + + +查询结果如下: + +```javascript ++------------+-----------+--------+--------+ +| MANAGER_ID | LAST_NAME | SALARY | L_CSUM | ++------------+-----------+--------+--------+ +| 100 | De Haan | 11000 | 12400 | +| 100 | Errazuriz | 1400 | 1400 | +| 100 | Hartstein | 14000 | 26400 | +| 100 | Part | 24000 | 50400 | +| 200 | Bell | 23000 | 23000 | +| 200 | Part | 24500 | 94800 | +| 200 | Red | 23800 | 70300 | +| 200 | Ross | 23500 | 46500 | +| 300 | Wei | 23600 | 23600 | ++------------+-----------+--------+--------+ +``` + + + +**聚合函数示例** + +计算工资总额,执行以下语句: + +```javascript +SELECT SUM(salary) FROM employees; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| SUM(SALARY) | ++-------------+ +| 168800 | ++-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/6.MAX-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/6.MAX-1.md new file mode 100644 index 000000000..82de7e2b2 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/6.MAX-1.md @@ -0,0 +1,106 @@ +MAX +======================== + + + +`MAX` 函数返回参数中指定的列中的最大值。 + +语法 +-------------- + +```javascript +MAX([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|----------------------------| +| DISTINCT | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| UNIQUE | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| ALL | 返回所有值,包含重复行,且忽略值为 NULL 的行。 | +| expr | 可为数值、字符、日期型或其它类型的数据列或表达式。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回与 `expr` 相同的数据类型值。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT, last_name varchar(50), hiredate varchar(50), SALARY INT); +INSERT INTO employees VALUES(100, 'Wei', '2019-09-11',17000); +INSERT INTO employees VALUES(100, 'Red', '2019-11-05', 17000); +INSERT INTO employees VALUES(101, 'Part', '2018-10-01',12008); +INSERT INTO employees VALUES(102, 'Wei', '2019-09-11',9000); +INSERT INTO employees VALUES(103, 'Red', '2019-11-05', 6000); +INSERT INTO employees VALUES(104, 'Part', '2018-10-01',8000); +COMMIT; +``` + + + +执行以下语句查询 **SALARY** 列的最大值: + +```javascript +SELECT manager_id, last_name, salary FROM (SELECT manager_id, last_name, salary, +MAX(salary) OVER (PARTITION BY manager_id) AS rmax_sal +FROM employees) WHERE salary = rmax_sal ORDER BY manager_id, last_name, salary; +``` + + + +查询结果如下: + +```javascript ++------------+-----------+--------+ +| MANAGER_ID | LAST_NAME | SALARY | ++------------+-----------+--------+ +| 100 | Red | 17000 | +| 100 | Wei | 17000 | +| 101 | Part | 12008 | +| 102 | Wei | 9000 | +| 103 | Red | 6000 | +| 104 | Part | 8000 | ++------------+-----------+--------+ +``` + + + +**聚合函数示例** + +执行以下语句查询 **SALARY** 列的最大值: + +```javascript +SELECT MAX(salary) FROM employees; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| MAX(SALARY) | ++-------------+ +| 17000 | ++-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/7.MIN-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/7.MIN-1.md new file mode 100644 index 000000000..6634c0504 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/7.MIN-1.md @@ -0,0 +1,116 @@ +MIN +======================== + + + +`MIN` 函数返回参数中指定列的最小值。 + +语法 +-------------- + +```javascript +MIN([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| **参数** | **说明** | +|----------|----------------------------| +| DISTINCT | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| UNIQUE | 返回的行中去除重复行,且忽略值为 NULL 的行。 | +| ALL | 返回所有值,包含重复行,且忽略值为 NULL 的行。 | +| expr | 可为数值、字符、日期型或其它类型的数据列或表达式。 | +| OVER | 使用 OVER 子句定义窗口进行计算。 | + + + +返回类型 +---------------- + +返回与 `expr` 相同数据类型的值。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据: + +```javascript +CREATE TABLE employees (manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +``` + + + +执行以下语句查询 **SALARY** 列的最小值: + +```javascript +SELECT manager_id, last_name, hiredate, salary, MIN(salary) OVER(PARTITION BY manager_id +ORDER BY hiredate RANGE UNBOUNDED PRECEDING) AS p_cmin +FROM employees ORDER BY manager_id, last_name, hiredate, salary; +COMMIT; +``` + + + +查询结果如下: + +```javascript ++------------+-----------+------------+--------+--------+ +| MANAGER_ID | LAST_NAME | HIREDATE | SALARY | P_CMIN | ++------------+-----------+------------+--------+--------+ +| 100 | De Haan | 2018-05-01 | 11000 | 1400 | +| 100 | Errazuriz | 2017-07-21 | 1400 | 1400 | +| 100 | Hartstein | 2019-05-01 | 14000 | 1400 | +| 100 | Partners | 2018-12-01 | 14000 | 1400 | +| 100 | Raphaely | 2017-07-01 | 1700 | 1700 | +| 100 | Raphaely | 2017-07-22 | 1700 | 1400 | +| 100 | Russell | 2019-10-05 | 13000 | 1400 | +| 100 | Weiss | 2019-07-11 | 13500 | 1400 | +| 200 | Bell | 2019-05-25 | 13000 | 13000 | +| 200 | Part | 2018-08-11 | 14000 | 14000 | +| 200 | Ross | 2019-06-11 | 13500 | 13000 | ++------------+-----------+------------+--------+--------+ +``` + + + +**聚合函数示例** + +执行以下语句查询 **SALARY** 列的最小值: + +```javascript +SELECT MIN(salary) FROM employees ; +``` + + + +查询结果如下: + +```javascript ++-------------+ +| MIN(SALARY) | ++-------------+ +| 1400 | ++-------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/8.LISTAGG-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/8.LISTAGG-1.md new file mode 100644 index 000000000..d3c74325a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/8.LISTAGG-1.md @@ -0,0 +1,125 @@ +LISTAGG +============================ + + + +`LISTAGG` 函数用于列转行,`LISTAGG` 对 `ORDER BY` 子句中指定的每个组内的数据进行排序,然后合并度量列的值。作为单个集合的聚合函数,`LISTAGG` 对所有行进行操作并返回单个输出行。作为组集聚合,`LISTAGG` 将对 `GROUP BY` 子句定义的每个组进行操作并返回输出行。作为分析函数,`LISTAGG` 基于 `query_partition_clause` 中的一个或多个表达式将查询结果集分为几组。 + +语法 +-------------- + +```javascript +LISTAGG(measure_expr [,'delimiter'])WITHIN GROUP (order_by_clause) +[OVER query_partition_clause] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------|---------------------------------| +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | +| measure_expr | 可以是任何表达式。度量列中的空值将被忽略。 | +| delimiter | 指定用于分隔度量值的字符串。此子句是可选的,默认为 NULL。 | + + + +返回类型 +---------------- + +如果度量列是 `RAW` 的,则返回数据类型为 `RAW`,否则返回值为 `VARCHAR2` 型。 + +示例 +-------------- + +**分析函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(40, 100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(50, 100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(50, 100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(70, 100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(90, 100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(90,100, 'Partners', '2018-12-01',14000); +``` + + + +查询 2019 年 10 月 10 日之前雇用的雇员,以及该雇员的部门,雇用日期以及该部门中的其他雇员。执行以下语句: + +```javascript +SELECT department_id "Dept", hiredate "Date", last_name "Name",LISTAGG(last_name, '; ') WITHIN GROUP +(ORDER BY hiredate, last_name) OVER (PARTITION BY department_id) as "Emp_list" +FROM employees WHERE hiredate < '2019-10-10' ORDER BY "Dept", "Date", "Name"; +``` + + + +查询结果如下: + +```javascript ++------+------------+-----------+---------------------+ +| Dept | Date | Name | Emp_list | ++------+------------+-----------+---------------------+ +| 30 | 2017-07-01 | Raphaely | Raphaely; De Haan | +| 30 | 2018-05-01 | De Haan | Raphaely; De Haan | +| 40 | 2017-07-21 | Errazuriz | Errazuriz | +| 50 | 2017-07-22 | Raphaely | Raphaely; Hartstein | +| 50 | 2019-05-01 | Hartstein | Raphaely; Hartstein | +| 70 | 2019-07-11 | Weiss | Weiss | +| 90 | 2018-12-01 | Partners | Partners; Russell | +| 90 | 2019-10-05 | Russell | Partners; Russell | ++------+------------+-----------+---------------------+ +``` + + + +**聚合函数示例** + +建表 **employees** ,并向里面插入数据,执行以下语句: + +```javascript +CREATE TABLE employees (department_id INT,manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(30, 100, 'Errazuriz', '2017-07-01', 1400); +INSERT INTO employees VALUES(30, 100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(30, 100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(30, 100, 'Weiss', '2019-07-01',13500); +INSERT INTO employees VALUES(30, 100, 'Russell', '2019-07-01', 13000); +INSERT INTO employees VALUES(30,100, 'Partners', '2018-12-01',14000); +``` + + + +查询第 30 部门的所有员工,并按雇用日期和姓氏排序。执行以下语句: + +```javascript +SELECT LISTAGG(last_name, '; ') WITHIN GROUP (ORDER BY hiredate, last_name) as "Emp_list", +MIN(hiredate) as "Earliest" FROM employees WHERE department_id = 30; +``` + + + +查询结果如下: + +```javascript ++-----------------------------------------------------------------------------+------------+ +| Emp_list | Earliest | ++-----------------------------------------------------------------------------+------------+ +| Errazuriz; Raphaely; Raphaely; De Haan; Partners; Hartstein; Russell; Weiss | 2017-07-01 | ++-----------------------------------------------------------------------------+------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/9.STDDEV-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/9.STDDEV-1.md new file mode 100644 index 000000000..9c3156911 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/5.functions-1/4.analysis-functions-1/9.STDDEV-1.md @@ -0,0 +1,119 @@ +STDDEV +=========================== + + + +`STDDEV` 函数用于计算总体标准差。`STDDEV` 函数将数值型数据作为参数,返回数值型数据。它与函数 `STDDEV_SAMP` 的不同之处在于,`STDDEV` 只有一行输入数据时返回 0,而 `STDDEV_SAMP` 返回 NULL。 + +OceanBase 中标准差的值是函数 `VARIANCE` 计算出的方差的算术平方根。 + +语法 +-------------- + +```javascript +STDDEV([ DISTINCT | UNIQUE | ALL ] expr) [ OVER (analytic_clause) ] +``` + + + +作为分析函数使用时,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值[](pt3avi)。作为聚合函数使用时,该函数对一组行的集合进行聚合计算,结果只能返回一个值,此时不需要加 `OVER` 关键字。 + +参数 +-------------- + + + +| 参数 | 说明 | +|----------|-----------------------| +| DISTINCT | 去重关键字,表示计算唯一值的总体标准差。 | +| UNIQUE | 去重关键字,表示计算唯一值的总体标准差。 | +| ALL | 全部数值列。 | +| expr | 是数值类型或者可以转换成数值类型的类型。 | +| OVER | 使用 `OVER` 子句定义窗口进行计算。 | + + +**注意** + + + +如果您指定了 `DISTINCT` 或 `UNIQUE` 关键字,则 `analytic_clause` 中不允许出现 `order_by_clause` 和 `windowing_clause`。 + +返回类型 +---------------- + +返回 `NUMBER` 类型数据。 + +示例 +-------------- + +**分析函数示例** + +以下语句创建了表 **employees** ,并向里面插入数据 + +```javascript +CREATE TABLE employees(manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-01', 1700); +INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400); +INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000); +INSERT INTO employees VALUES(100, 'Raphaely', '2017-07-22', 1700); +INSERT INTO employees VALUES(100, 'Weiss', '2019-07-11',13500); +INSERT INTO employees VALUES(100, 'Russell', '2019-10-05', 13000); +INSERT INTO employees VALUES(100, 'Partners', '2018-12-01',14000); +INSERT INTO employees VALUES(200, 'Ross', '2019-06-11',13500); +INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 13000); +INSERT INTO employees VALUES(200, 'Part', '2018-08-11',14000); +COMMIT; +``` + + + +调用函数并执行以下语句: + +```javascript +SELECT last_name, salary, STDDEV(salary) OVER (ORDER BY hiredate) "StdDev" +FROM employees WHERE manager_id = 100 ORDER BY last_name, salary, "StdDev"; +``` + + + +查询结果如下: + +```javascript ++-----------+--------+-------------------------------------------+ +| LAST_NAME | SALARY | StdDev | ++-----------+--------+-------------------------------------------+ +| De Haan | 11000 | 4702.127178203498995615489088200868644482 | +| Errazuriz | 1400 | 212.132034355964257320253308631454711785 | +| Hartstein | 14000 | 6340.346993658943269176828928801701088079 | +| Partners | 14000 | 6064.899009876421676804205219406952308814 | +| Raphaely | 1700 | 0 | +| Raphaely | 1700 | 173.205080756887729352744634150587236694 | +| Russell | 13000 | 6026.474330580265330900400184969999384459 | +| Weiss | 13500 | 6244.311697171159907069428668980211861012 | ++-----------+--------+-------------------------------------------+ +``` + + + +**聚合函数示例** + +调用函数并执行以下语句: + +```javascript +SELECT STDDEV(salary) FROM employees WHERE manager_id = 100 ; +``` + + + +查询结果如下: + +```javascript ++-------------------------------------------+ +| STDDEV(SALARY) | ++-------------------------------------------+ +| 6026.474330580265330900400184969999384459 | ++-------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/1.sql-expressions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/1.sql-expressions.md new file mode 100644 index 000000000..552fc631a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/1.sql-expressions.md @@ -0,0 +1,60 @@ +SQL 表达式概述 +============================== + + + +表达式用来计算数据的值,它由一个或多个数值、运算符和 SQL 函数等组件组合而成,通常表达式中要为它的组件假定数据类型。 +**注意** + + + +`NLS_COMP` 与 `NLS_SORT` 两个参数值共同影响字符的排序与比较。如果在数据库中 `NLS_COMP` 的值为`LINGUISTIC`,那么本章节中所有被提到的实体都会遵循参数 `NLS_SORT` 所指定的规则。如果 `NLS_COMP` 的值没有被指定为 `LINGUISTIC`,那么函数将不会受 `NLS_SORT` 的影响。`NLS_SORT` 的值可以被直接指定,如果没有被指定,它将继承 `NLS_LANGUAGE` 的值。 + +下面这个简单表达式的计算结果为 4,数据类型为 `NUMBER` (与组件的数据类型一致)。 + +```javascript +2*2 +``` + + + +如下是一个使用了函数和运算符的复杂表达式。这个表达式表示将当前日期增加 7 天,然后移除时间部分,最后将结果转换成 `CHAR` 数据类型。 + +```javascript +TO_CHAR(TRUNC(SYSDATE+7)) +``` + + + +您还可以在如下情形中使用表达式: + +* `SELECT` 语句的选择列中。 + +* `WHERE` 子句中和 `HAVING` 子句中。 + +* `CONNECT BY`、`START WITH` 和 `ORDER BY` 子句中。 + +* `INSERT` 语句的 `VALUES` 子句中。 + +* `UPDATE` 语句的 `SET` 子句中。 + + + + +例如,在下面的 `UPDATE` 语句的 `SET` 子句中您可以使用一个表达式替换字符串 **Smith** : + +```javascript +SET last_name = 'Smith'; +``` + + + +这个 `SET` 子句使用表达式 `INITCAP(last_name)` 替代字符串 **Smith** : + +```javascript +SET last_name = INITCAP(last_name); +``` + + + +OceanBase 数据库中,并不是所有表达式都可以直接被任意 SQL 语句使用,请参考 SQL语句 章节中关于表达式的限制。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/10.expression-list.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/10.expression-list.md new file mode 100644 index 000000000..ccc4fb370 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/10.expression-list.md @@ -0,0 +1,79 @@ +表达式列表 +========================== + + + +表达式列表(Expression List)是一组其它表达式的组合。 + +表达式列表可以出现在比较和成员条件,以及查询和子查询的 `GROUP BY` 子句中。在比较和成员条件中的表达式列表有时被称为行值构造器(Row value constructor)或者行构造器(Row constructor)。 + +比较和成员条件出现在 `WHERE` 子句中。它们可以包含一个或多个逗号分隔的表达式,或是一组或多组表达式,其中每组表达式包含一个或多个逗号分隔的表达式。在接下来的例子中(多组表达式): + +* 每一组被括号包含。 + + + +* 每一组必须包含相同数量的表达式。 + + + +* 每一组中表达式的数量需要与比较条件中运算符之前的表达式的数量匹配,或者与成员条件中 `IN` 关键字之前的表达式的数量匹配。 + + + + + + +逗号分隔的表达式列表最多只能包含 1000 个表达式。逗号分隔的表达式组列表可以包含任意数量表达式组,但是每一表达式组最多只能包含 1000 个表达式。 + +下例是一些有效的表达式列表: + +```javascript +(10, 20, 40) +('SCOTT', 'BLAKE', 'TAYLOR') +( ('Guy', 'Himuro', 'GHIMURO'),('Karen', 'Colmenares', 'KCOLMENA') ) +``` + + + +在第三个例子中,每一组的表达式数量必须与 SQL 语句条件的第一部分的表达式数量相等。例如: + +```javascript +SELECT * FROM employees + WHERE (first_name, last_name, email) IN + (('Guy', 'Himuro', 'GHIMURO'),('Karen', 'Colmenares', 'KCOLMENA')); +``` + + + +在简单的 `GROUP BY` 子句中,使用大写或小写形式的表达式列表都可以: + +```javascript +SELECT department_id, MIN(salary) min, MAX(salary) max FROM employees + GROUP BY department_id, salary + ORDER BY department_id, min, max; + +SELECT department_id, MIN(salary) min, MAX(salary) max FROM employees + GROUP BY (department_id, salary) + ORDER BY department_id, min, max; +``` + + + +在 `GROUP BY` 子句的 `ROLLUP`、`CUBE` 和 `GROUPING SETS` 子句中,您可以在同一表达式列表中将单个表达式与表达式组结合。下例展示了一些在 SQL 语句中有效分组表达式列表: + +```javascript +SELECT prod_category, prod_subcategory, country_id, cust_city, count(*) + FROM products, sales, customers + WHERE sales.prod_id = products.prod_id + AND sales.cust_id=customers.cust_id + AND sales.time_id = '01-oct-00' + AND customers.cust_year_of_birth BETWEEN 1960 and 1970 + GROUP BY GROUPING SETS ( + (prod_category, prod_subcategory, country_id, cust_city), (prod_category, prod_subcategory, country_id), (prod_category, prod_subcategory), + country_id + ) + ORDER BY prod_category, prod_subcategory, country_id, cust_city; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/2.simple-expression.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/2.simple-expression.md new file mode 100644 index 000000000..ff14bb16a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/2.simple-expression.md @@ -0,0 +1,21 @@ +简单表达式 +========================== + + + +一个简单表达式(Simple Expressions)可以是列、伪列、常量、序列数或空值。 + +除了用户schema,`schema` 也可以是 **PUBLIC** 的 ,用来指定一个指向表、视图的同义词的属性。注意只有在数据操纵语言(DML)语句中支持使用 **PUBLIC** 为公共同义词,而在数据定义语言(DDL)语句中则不支持。`NCHAR` 与 `NVARCHAR2` 并不是有效的伪列数据类型。 + +下列是一些有效的简单表达式: + +* `employees.last_name` + +* `'this is a text string'` + +* `10` + +* `N 'this is an NCHAR string'` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/3.compound-expression.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/3.compound-expression.md new file mode 100644 index 000000000..e7ddc7d9f --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/3.compound-expression.md @@ -0,0 +1,23 @@ +复合表达式 +========================== + + + +复合表达式(Compound Expressions)是由其它类型表达式组合而成的表达式。 + +您可以使用任意内置函数作为一个表达式。然而,在复合表达式中,一些函数的组合会因为不合适而被弃用。例如,在一个聚合函数中,`LENGTH` 函数就不适用。 + +`PRIOR` 运算符用于层次查询的 `CONNECT BY` 子句。 + +下列是一些有效的复合表达式: + +* `('CLARK' || 'SMITH')` + +* `LENGTH('MOOSE') * 57` + +* `SORT(144) + 72` + +* `my_fun(TO_CHAR(sysdate, 'DD-MMM-YY'))` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/4.conditional-expressions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/4.conditional-expressions.md new file mode 100644 index 000000000..e69c1cf0d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/4.conditional-expressions.md @@ -0,0 +1,79 @@ +条件表达式 +========================== + + + +条件表达式(Case Expression)允许用户在不调用存储过程的情况下,在 SQL 语句中使用 `IF ... THEN ... ELSE` 逻辑。 + +语法 +-------------- + +```javascript +CASE { simple_case_expression +| searched_case_expression +} +[ ELSE else_expr ] +END +``` + + + +其中简单条件表达式中 `simple_case_expression` 的语法为: + +```javascript +expr +{ WHEN comparison_expr THEN return_expr }... +``` + + + +搜索条件表达式 `searched_case_expression` 的语法为: + +```javascript +{ WHEN condition THEN return_expr }... +``` + + + +使用规则 +---------------- + +### 条件的验证 + +在一个简单条件表达式中,OceanBase 数据库会以 `expr` 为基准,在 `WHEN ... THEN` 中搜寻第一个与之等值的 `comparison_expr`,并返回相应的 `return_expr`。如果没有 `WHEN ... THEN` 满足此情形,并且 `ELSE` 子句存在,那么 OceanBase 数据库会返回 `else_expr`。否则,OceanBase 会返回 NULL。 + +在搜索条件表达式中,OceanBase 会自左向右搜索直到 `condition` 条件成立,然后返回 `return_expr`。如果所有条件都不成立,且 `ELSE` 子句存在,则数据库返回 `else_expr`。否则,数据库会返回 NULL。 + +### 条件的计算 + +OceanBase 数据库使用短路计算法则。对于简单条件表达式,数据库仅会在与 `expr` 比较之前计算 `comparison_expr` 的值,而不是在与 `expr` 比较之前就将计算所有 `comparison_expr` 的值。因此,如果前一个 `comparison_expr` 与 `expr` 相等,OceanBase 将不会计算下一个 `comparison_expr` 的值。对于搜索条件表达式,数据库将会串行计算每个条件(Condition)是否为真,如果前一个条件(Condition)为真,OceanBase 将不会计算下一个条件。 + +### 数据类型 + +对于简单条件表达式,`expr` 和所有的 `comparison_expr` 的值的数据类型必须相同(如 `CHAR`、`VARCHAR2` 和 `NCHAR`; `NVARCHAR2`、`NUMBER` 和 `BINARY_FLOAT`,或 `BINARY_DOUBLE`),或者都是数值类型。如果所有的返回表达式都是数值类型,则 OceanBase 会选择最高优先级的数据类型,显式地将其它参数转化为此数据类型,并返回这个数据类型。 + +对于简单条件表达式和搜索条件表达式,所有的 `return_exprs` 的数据类型必须相同(如 `CHAR`、`VARCHAR2`和`NCHAR`;`NVARCHAR2`、`NUMBER` 和 `BINARY_FLOAT`;`BINARY_DOUBLE`),或者都是数值类型。如果所有的返回表达式都是数值类型,则 OceanBase 会选择最高优先级的数据类型,显式地将其它参数转化为此数据类型,并返回这个数据类型。 + +示例 +-------------- + +```javascript +SELECT cust_last_name, + CASE credit_limit + WHEN 100 THEN 'Low' + WHEN 5000 THEN 'High' + ELSE 'Medium' END AS credit +FROM customer +ORDER BY cust_last_name, credit; +``` + + + +以下是搜索条件表达式的示例: + +```javascript +SELECT AVG(CASE WHEN e.salary > 2000 THEN e.salary +ELSE 2000 END) "Average Salary" FROM employee e; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/5.column-expression.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/5.column-expression.md new file mode 100644 index 000000000..ce3ad9120 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/5.column-expression.md @@ -0,0 +1,38 @@ +列表达式 +========================= + + + +列表达式(Column Expressions)是一种形式受限制的 `expr`,在本章其他表达式的语法中被命名为 `column_expression`。列表达式可以是 [简单表达式](/zh-CN/11.sql-reference-oracle-mode/6.expression-1/2.simple-expression.md)、[复合表达式](/zh-CN/11.sql-reference-oracle-mode/6.expression-1/3.compound-expression.md)、[函数表达式](/zh-CN/11.sql-reference-oracle-mode/6.expression-1/7.function-expression.md) 或者 [表达式列表](/zh-CN/11.sql-reference-oracle-mode/6.expression-1/10.expression-list.md),但它只能包含以下形式的表达式: + +* 目标表(被创建,变更或索引的表)的列。 + + + +* 常量(字符串或数字)。 + + + +* 确定性函数(SQL 内建函数或用户自定义函数)。 + + + + + + +除以上形式表达式外,其它形式的表达式都不是有效的列表达式。此外,列表达式不支持使用 `PRIOR` 关键字的复合表达式与聚合函数。 + +使用列表达式可以实现以下目的: + +* 创建基于函数的索引。 + + + +* 显式或隐式定义一个虚拟列。定义一个虚拟列时,`column_expression` 只适用于在此前语句中已经定义的目标表的列。 + + + + + + +列表达式的组件必须是确定的,也就是说,输入同样的值必须返回同样的输出值。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/6.date-and-time-expressions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/6.date-and-time-expressions.md new file mode 100644 index 000000000..fc0080470 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/6.date-and-time-expressions.md @@ -0,0 +1,46 @@ +日期时间表达式 +============================ + + + +日期时间表达式(Datetime Expression)会生成日期时间数据类型的值。 + +语法如下: + +```javascript +{TIMESTAMP | DATE} string +``` + + + +TIMESTAMP 或 DATE 加上字符串字面量可以生成 TIMESTAMP 或 DATE 类型的值,注意字符串的格式要与系统变量 `NLS_TIMESTAMP_FORMAT` 和 `NLS_DATE_FORMAT` 一致。 + +系统变量的值可以通过下面的 SQL 查询: + +```javascript +obclient> SELECT * from v$nls_parameters WHERE parameter like '%FORMAT'; ++-------------------------+------------------------------+--------+ +| PARAMETER | VALUE | CON_ID | ++-------------------------+------------------------------+--------+ +| NLS_DATE_FORMAT | DD-MON-RR | 0 | +| NLS_TIMESTAMP_FORMAT | DD-MON-RR HH.MI.SSXFF AM | 0 | +| NLS_TIMESTAMP_TZ_FORMAT | DD-MON-RR HH.MI.SSXFF AM TZR | 0 | ++-------------------------+------------------------------+--------+ +3 rows in set (0.00 sec) +``` + + + +例如系统变量 `NLS_TIMESTAMP_FORMAT` 的值为 `DD-MON-RR HH.MI.SSXFF AM`,可以用下面的表达式生成一个 timestamp 类型的值。 + +```javascript +obclient> SELECT timestamp '2020-01-01 10:00:00' FROM DUAL; ++---------------------------------+ +| TIMESTAMP'2020-01-0110:00:00' | ++---------------------------------+ +| 01-JAN-20 10.00.00.000000000 AM | ++---------------------------------+ +1 row in set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/7.function-expression.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/7.function-expression.md new file mode 100644 index 000000000..2db98cd89 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/7.function-expression.md @@ -0,0 +1,60 @@ +函数表达式 +========================== + + + +函数表达式(Function Expression)使您可以使用任何内置 SQL 函数或是自定义函数表达式。 + +如下所示的是一些有效的内置函数表达式: + +* `LENGTH('BLAKE')` + +* `ROUND(1234.567*43)` + +* `SYSDATE` + + + +**注意** + + + +自定义函数表达式不能传递对象类型或 XMLType 的参数到远程函数或过程。 + +自定义函数表达式会调用: + +* 一个自定义包、类型或一个独立自定义函数中的函数。 + + + +* 一个自定义函数或运算符。 + + + + + + +下列是一些有效的自定义函数表达式: + +* `circle_area(radius)` + +* `payroll.tax_rate(empno)` + +* `hr.employees.comm_pct@remote(dependents, empno)` + +* `DBMS_LOB.getlength(column_name)` + +* `my_function(a_column)` + + + + +使用自定义函数作为表达式时,支持位置表示法、名字表示法和混合表示法。例如,下面的表示法都是正确的: + +```javascript +CALL my_function(arg1 => 3, arg2 => 4) ... +CALL my_function(3, 4) ... +CALL my_function(3, arg2 => 4) ... +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/8.interval-expression.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/8.interval-expression.md new file mode 100644 index 000000000..50163568e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/8.interval-expression.md @@ -0,0 +1,33 @@ +间隔表达式 +========================== + + + +时间间隔表达式(Interval Expression)生成 `INTERVAL YEAR TO MONTH` 或 `INTERVAL DAY TO SECOND` 数据类型的值。 + +语法如下: + +```javascript +INTERVAL string + { DAY [ (leading_field_precision) ] TO + SECOND [ (fractional_second_precision) ] + | YEAR [ (leading_field_precision) ] TO + MONTH + } +``` + +`leading_field_precision` 和 `fractional_second_precision` 可以是 0 到 9 的任意整数,这两个参数指定了对应元素值的精确度。如果在指定 `DAY` 和 `YEAR` 元素时省略了 `leading_field_precision` 参数,其使用默认值为 2,表示该元素的值不能超过 2 位整数。如果对 `SECOND` 元素省略了 `fractional_second_ precision` 参数,其默认值为 6,表示该值精确到小数点第 6 位。如果查询的返回值比默认精度位数更多,OceanBase 数据库会返回一个错误。 + +例如,下面的语句展示了一个 DAY TO SECOND 类型的 INTERVAL 值。 + +```javascript +obclient> SELECT INTERVAL '999999999 23:59:59.999' day(9) to second FROM DUAL; ++-----------------------------------------------+ +| INTERVAL'99999999923:59:59.999'DAY(9)TOSECOND | ++-----------------------------------------------+ +| +999999999 23:59:59.999000 | ++-----------------------------------------------+ +1 row in set (0.00 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/9.scalar-subquery-expression.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/9.scalar-subquery-expression.md new file mode 100644 index 000000000..88c066c20 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/6.expression-1/9.scalar-subquery-expression.md @@ -0,0 +1,39 @@ +标量子查询表达式 +============================= + + + +标量子查询表达式(Scalar Subquery Expression)是返回一行包含多列值的子查询。如果子查询返回 0 行,则标量子查询表达式的值是 NULL。如果子查询返回多行,则标量子查询表达式返回一个错误。大多数表达式都可以使用标量子查询表达式作为参数。 + +标量子查询在以下情形中是无效的表达式: + +* 作为列的默认值。 + + + +* 用于哈希函数中。 + + + +* 在 DML 语句的 `RETURNING` 子句中。 + + + +* 在函数索引的定义中。 + + + +* 在 `CHECK` 约束中。 + + + +* 在 `GROUP BY` 子句中。 + + + +* 在与查询无关的语句中,如 `CREATE PROFILE`。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/1.overview-of-sql-conditions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/1.overview-of-sql-conditions.md new file mode 100644 index 000000000..cb9fc0cb1 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/1.overview-of-sql-conditions.md @@ -0,0 +1,88 @@ +SQL 条件概述 +============================= + + + +条件用来判断数据的值,并返回 `TRUE`、`FALSE` 或 `UNKNOWN`。它由一个或多个表达式和逻辑(布尔)运算符等组件组合而成。只要条件出现在 SQL 语句中,您就必须使用正确的条件语法。 +**注意** + + + +参数 `NLS_COMP` 和 `NLS_SORT` 共同影响字符的排序与比较。若将数据库的 `NLS_COMP` 指定为`LINGUISTIC`,那么本开发指南中所有被提到的实体都会遵循参数 `NLS_SORT` 所指定的规则。若 `NLS_COMP` 的值没有被指定为 `LINGUISTIC`,那么函数将不受 `NLS_SORT` 影响。`NLS_SORT` 的值可以被直接指定,如果没有被指定,它将继承 `NLS_LANGUAGE1` 的值。 + +您可以在这些语句的 `WHERE` 子句中使用条件: + +* `DELETE` + +* `SELECT` + +* `UPDATE` + + + + +您也可以在 `SELECT` 语句的这些子句中使用条件: + +* `WHERE` + +* `START WITH` + +* `CONNECT BY` + +* `HAVING` + + + + +条件可以称为逻辑数据类型,尽管 OceanBase 数据库不正式支持这样的数据类型。 + +例如,简单条件 1 = 1 判断结果为 TRUE。 + +下面更复杂的条件将 **salary** 的值加上 **commission_pct** 得值(函数 `NVL` 将 **salary** 中的 NULL 值替换为 0 ),并判断总和是否大于 25000。 + +```javascript +NVL(salary, 0) + NVL(salary + (salary * commission_pct, 0) > 25000) +``` + + + +逻辑条件 `AND` 可以将多个条件组合成一个条件。 + +```javascript +(1 = 1) AND (5 < 7) +``` + + + +SQL 语句中的有效条件: + +```javascript +name = 'SMITH' +employees.department_id = departments.department_id +hire_date > '01-JAN-08' +job_id IN ('SA_MAN', 'SA_REP') +salary BETWEEN 5000 AND 10000 +commission_pct IS NULL AND salary = 2100 +``` + + + +条件优先 +---------------- + +条件优先级指的是 OceanBase 数据库在同一表达式中判断不同条件的顺序。当计算包含多个条件的表达式时,先判断较高优先级的条件,最后判断较低优先级的条件,而优先级相等的条件则按照从左到右的顺序判断。例如 `AND` 和 `OR` 连接的多个条件,不能按照从左到右的顺序判断,而是按照先计算`AND`然后计算`OR`的顺序。 + +**SQL 条件优先级表** + + +| 条件类型 | 功能 | +|-----------------------------------------------------------------|----------| +| =、!=、\<、\>、\<=、\>= | 比较。 | +| IS \[NOT\] NULL、LIKE、\[NOT\] BETWEEN、\[NOT\] IN、EXISTS、IS OF 类型 | 比较。 | +| NOT | 取幂,逻辑取反。 | +| AND | 比较。 | +| OR | 分离。 | + + + +优先级按照从高到低排列出,同一行上列出的条件具有相同的优先级。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/2.comparison-conditions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/2.comparison-conditions.md new file mode 100644 index 000000000..eb1a76a42 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/2.comparison-conditions.md @@ -0,0 +1,52 @@ +比较条件 +========================= + + + +比较条件(Comparison Conditions)用于比较一个表达式与另一个表达式,比较的结果为 `TRUE`、`FALSE` 或 `UNKNOWN`。 + +比较条件不能比较大对象(LOB)数据类型。但是您可以通过 PL 程序对 `CLOB` 数据进行比较。 + +比较数值表达式时,OceanBase 使用数值优先级来确定条件中的数值比较顺序,比如比较符两边出现不同类型的 数值时,如果有`BINARY_DOUBLE`则按照`BINARY_DOUBLE`进行比较, 其次是`BINARY_FLOAT`, 最后是`NUMBER`。是比较 `NUMBER`、`BINARY_FLOAT` 还是 `BINARY_DOUBLE` 值。 + +比较字符表达式时,OceanBase 使用字符数据类型比较规则中的规定。它规定了表达式的字符集在比较之前是如何统一的,选择使用二进制和语言比较,还是选择使用空白填充和非空白填充的比较语义。 + +当使用比较条件对字符值进行语言比较时,首先将它们转换为排序键,然后做比较,比较的过程类似 `RAW` 数据类型。排序键是由函数 `NLSSORT` 返回的值。如果两个表达式生成的排序键的前缀相同,即使它们在值的其余部分不同,它们也可以在语言上相等。 + +如果两个非标量类型的对象具有相同的命名类型,并且它们的元素之间存在一一对应的关系,则它们是可比较的。用户定义的对象类型---嵌套表,在相等或 `IN` 条件下使用时,必须定义 `MAP` 方法。嵌套表的元素可以比较。 + +简单比较条件 +------------------ + +一个简单比较条件可以是单个表达式与表达式列表比较或单个表达式与子查询结果比较。 + +简单比较条件语法如下: + +```javascript +expr {= | != | ^= | <> | < | >= |} ( expression_list | subquery ) +``` + + + +在简单比较条件中,如果是单个表达式与表达式列表比较,并且表达式列表中的表达式必须在数量和数据类型上与运算符左边的表达式匹配。如果是单个表达式与子查询的值比较,则子查询返回的值必须与运算符左侧的表达式在数量和数据类型上匹配。 + +组比较条件 +----------------- + +一个组比较条件可以是单个表达式与表达式列表或子查询结果的任何或所有成员比较,也可以是多个表达式与表达式列表或子查询结果的任何或所有成员比较。 + +在组比较条件中,如果是单个表达式或多个表达式列表与表达式列表的任何或所有成员比较,则每个表达式列表中的表达式必须在数量和数据类型上与运算符左边的表达式匹配。如果是单个表达式或多个表达式与子查询结果的任何或所有成员比较,则子查询返回的值必须与运算符左侧的表达式在数量和数据类型上匹配。 + +组比较条件语法有如下两种: + +```javascript +expr {= | != | ^= | <> | < | >= | ANY | SOME | ALL } ({ expression_list | subquery}) +``` + + + +```javascript +(expr [, expr ]...){= | != | ^= | ANY | SOME | ALL} ({expression_list [, expression_list ]... |subquery}) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/3.logical-conditions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/3.logical-conditions.md new file mode 100644 index 000000000..b9d1e1c0f --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/3.logical-conditions.md @@ -0,0 +1,46 @@ +逻辑条件 +========================= + + + +逻辑条件(Logical Conditions)将两个条件组合在一起,产生单个结果或反转单个条件的结果。 + +逻辑条件 NOT +-------------------- + +逻辑条件 `NOT` 表示'非',可以反转单个条件的结果。如果条件为 `FALSE`,则返回 `TRUE`。如果条件为 `TRUE`,则返回 `FALSE`。如果它是 `UNKNOWN`,则返回 `UNKNOWN`。 + +**逻辑条件 NOT 示例** + +```javascript +SELECT * FROM employees WHERE NOT (job_id IS NULL) ORDER BY employee_id; +SELECT * FROM employees WHERE NOT (salary BETWEEN 1000 AND 2000) ORDER BY employee_id; +``` + + + +逻辑条件 AND +-------------------- + +逻辑条件 `AND` 表示'与',用于连接两个条件。如果两个条件均为 `TRUE`,则返回 `TRUE`。如果任意一个为 `FALSE`,则返回 `FALSE`。否则返回 `UNKNOWN`。 + +**逻辑条件 AND 示例** + +```javascript +SELECT * FROM employees WHERE job_id = 'PU_CLERK' AND department_id = 30 ORDER BY employee_id; +``` + + + +逻辑条件 OR +------------------- + +逻辑条件 `OR` 表示'或',表示任何一个都可以。如果任一条件为 `TRUE`,则返回 `TRUE`。如果两者均为 `FALSE`,则返回 `FALSE`。否则返回 `UNKNOWN`。 + +**逻辑条件 OR 示例** + +```javascript +SELECT * FROM employees WHERE job_id = 'PU_CLERK' OR department_id = 10 ORDER BY employee_id; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/4.pattern-matching-conditions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/4.pattern-matching-conditions.md new file mode 100644 index 000000000..a72584b93 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/4.pattern-matching-conditions.md @@ -0,0 +1,119 @@ +模式匹配条件 +=========================== + + + +模式匹配条件(Pattern-matching Conditions)用来比较字符数据。 + +LIKE 条件 +------------------- + +`LIKE` 条件用于模式匹配。相等运算符(=)指的是一个字符值与另一个字符值完全匹配,而 `LIKE` 条件通过在第一个值中搜索由第二个字符值指定的模式来将一个字符值的一部分与另一个字符值进行匹配。 + +`LIKE` 使用输入字符集定义的字符来计算字符串。 + +**语法** + +```javascript +char1 [NOT] LIKE char2 [ ESCAPE esc_char ] +``` + + + +除了 `LIKE`,特殊的模式匹配字符 `_` 表示值中的一个字符恰好匹配,`%` 表示值中的零个或多个字符匹配。模式 `%` 不能与 `NULL` 匹配。 + +**参数** + + +| 参数 | 说明 | +|----------|--------------------------------------------------------------------------| +| char1 | 字符表达式,例如字符列,称为搜索值。 | +| char2 | 字符表达式,通常是文字,称为模式。 | +| esc_char | 字符表达式,通常是文字,`ESCAPE` 将 `esc_char`标识为转义字符。当转义符置于模式匹配符之前时,该模式匹配符被解释为普通的字符。 | + + + +**示例** + +以下语句使用了 `LIKE`: + +```javascript +SELECT last_name FROM employees WHERE last_name LIKE '%A\_B%' ESCAPE '\' ORDER BY last_name; +``` + +`ESCAPE '\'` 会将 `%A\_B%` 中 `\` 后面的模式匹配符'_'解释为普通的字符。 + +```javascript +SELECT salary FROM employees WHERE 'SM%' LIKE last_name ORDER BY salary; +``` + + + +REGEXP_LIKE 条件 +-------------------------- + +`REGEXP_LIKE` 用于正则表达式匹配。`REGEXP_LIKE` 使用输入字符集定义的字符评估字符串。 + +### 语法 + +```javascript +REGEXP_LIKE(source_char, pattern [, match_param ]) +``` + + + +### 参数 + + + +| 参数 | 说明 | +|-------------|---------------------------------------------------------------------| +| source_char | 用作搜索值的字符表达式,数据类型可以是 `CHAR`,`VARCHAR2`,`NCHAR`,`NVARCHAR2` 或 `CLOB`。 | +| pattern | 正则表达式,数据类型可以是 `CHAR`,`VARCHAR2`,`NCHAR`,`NVARCHAR2` 或 `CLOB`。 | +| source_char | 数据类型 `VARCHAR2 `或 `CHAR` 的字符表达式,允许您更改条件的默认匹配行为。 | + + + +如果模式的数据类型与 `source_char` 的数据类型不同,OceanBase 将模式转换为 `source_char` 的数据类型。 + +### 示例 + +创建表 **employees** ,并向里面插入数据。执行以下语句: + +```javascript +CREATE TABLE employees(manager_id INT, first_name varchar(50), last_name varchar(50), hiredate varchar(50),SALARY INT); +INSERT INTO employees VALUES(300, 'Steven', 'King', '2019-09-11',23600); +INSERT INTO employees VALUES(200, 'Steven', 'Markle', '2019-11-05', 23800); +INSERT INTO employees VALUES(100, 'Deven', 'Part', '2018-10-01',24000); +INSERT INTO employees VALUES(200, 'Carlos', 'Ross', '2019-06-11',23500); +INSERT INTO employees VALUES(200, 'Teven', 'Bell', '2019-05-25', 23000); +INSERT INTO employees VALUES(200, 'Stephen', 'Stiles', '2018-06-11',24500); +INSERT INTO employees VALUES(100, 'Ame', 'De Haan', '2018-05-01',11000); +INSERT INTO employees VALUES(100, 'Jon', 'Errazuriz', '2017-07-21', 1400); +COMMIT; +``` + + + +查询返回名字为 **Steven** 或 **Stephen** 的员工的名字和姓氏(其中 `first_name` 以 **Ste** 开头,以 **en** 结尾,中间是 **v** 或 **ph** ),执行以下语句: + +```javascript +SELECT first_name, last_name FROM employees WHERE REGEXP_LIKE (first_name, '^Ste(v|ph)en$') +ORDER BY first_name, last_name; +``` + + + +查询结果如下: + +```javascript ++------------+-----------+ +| FIRST_NAME | LAST_NAME | ++------------+-----------+ +| Stephen | Stiles | +| Steven | King | +| Steven | Markle | ++------------+-----------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/5.empty-condition.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/5.empty-condition.md new file mode 100644 index 000000000..0f8090ee4 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/5.empty-condition.md @@ -0,0 +1,22 @@ +空条件 +=== + +空条件(Null Conditions)检测 NULL 值。这是用于检测 NULL 的唯一条件。 + +语法 +-------------- + +```javascript +expr IS [ NOT ] NULL +``` + +示例 +-------------- + +执行以下语句: + +```javascript +SELECT last_name FROM employees WHERE commission_pct IS NULL +ORDER BY last_name; +``` + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/6.composite-condition.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/6.composite-condition.md new file mode 100644 index 000000000..ea1041cb1 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/6.composite-condition.md @@ -0,0 +1,17 @@ +复合条件 +========================= + + + +复合条件(Compound Conditions)指的是其他条件的组合。 + +语法 +-------------- + +```javascript +{ (condition) | NOT condition | condition { AND | OR } condition } +``` + + + +更多关于条件 `NOT`、`AND` 和 `OR` 的信息,请参考文档 [逻辑条件](/zh-CN/11.sql-reference-oracle-mode/7.condition/3.logical-conditions.md)。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/7.between-condition.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/7.between-condition.md new file mode 100644 index 000000000..0ca154cfc --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/7.between-condition.md @@ -0,0 +1,30 @@ +BETWEEN 条件 +=============================== + + + +`BETWEEN` 条件(Between Condition)确定一个表达式的值是否在其他两个表达式定义的间隔内。 + +语法 +-------------- + +```javascript +expr1 [ NOT ] BETWEEN expr2 AND expr3 + +NOT (expr1 BETWEEN expr2 AND expr3) +``` + + + +`expr1`、`expr2` 和 `expr3` 这三个表达式都必须是数字、字符或日期时间表达式。在 SQL 中,可能会对 `expr1` 进行多次计算。如果在 PL 中出现表达式,则保证只计算一次 `expr1`。如果表达式不都是相同的数据类型,那么 OceanBase 数据库将表达式隐式转换为统一的数据类型。如果表达式不能转换为相同的数据类型,则返回错误。 + +示例 +-------------- + +查询薪资在 2000\~3000 范围内的员工信息,并按照员工号排序。 + +```javascript +SELECT * FROM employees WHERE salary BETWEEN 2000 AND 3000 ORDER BY employee_id; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/8.existence-condition.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/8.existence-condition.md new file mode 100644 index 000000000..b2d639c74 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/8.existence-condition.md @@ -0,0 +1,22 @@ +存在条件 +==== + +存在条件(EXISTS Conditions)用于测试子查询中是否存在指定的行。 + +语法 +-------------- + +```javascript +EXISTS (subquery) +``` + +如果子查询至少返回一行,则说明存在您想要的数据。 + +示例 +-------------- + +```javascript +SELECT department_id FROM departments d WHERE EXISTS (SELECT * FROM employees e +WHERE d.department_id = e.department_id) ORDER BY department_id; +``` + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/9.in-conditions.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/9.in-conditions.md new file mode 100644 index 000000000..41d2eb1e6 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/7.condition/9.in-conditions.md @@ -0,0 +1,45 @@ +IN 条件 +========================== + + + +`IN` 条件(IN Conditions)是成员资格条件。它测试值或子查询列表中成员的值。 + +语法 +-------------- + +```javascript +expr [ NOT ] IN ({ expression_list | subquery }) +| +( expr [, expr ]... ) [ NOT ] IN ( { expression_list [, expression_list ]... | subquery } ) +``` + + + +`IN` 条件可以测试表达式是表达式列表或子查询的成员,或者多个表达式是表达式列表或子查询的成员。并且每个表达式列表中的表达式必须在数量和数据类型上与运算符 `IN` 左边的表达式匹配。 + +示例 +-------------- + +**IN 示例** :相当于 `=ANY`,表示集合中所有的成员。 + +```javascript +SELECT * FROM employees WHERE job_id IN ('PU_CLERK','SH_CLERK') ORDER BY employee_id; + +SELECT * FROM employees WHERE salary IN (SELECT salary FROM employees +WHERE department_id =30) ORDER BY employee_id; +``` + + + +**NOT IN 示例** :相当于 `!= ALL`。如果集合中的任何成员为 `NULL`,则计算为 `false`。 + +```javascript +SELECT * FROM employees WHERE salary NOT IN (SELECT salary FROM employees +WHERE department_id = 30) ORDER BY employee_id; + +SELECT * FROM employees WHERE job_id NOT IN ('PU_CLERK', 'SH_CLERK') +ORDER BY employee_id; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/1.query-and-subquery-overview.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/1.query-and-subquery-overview.md new file mode 100644 index 000000000..2e4dfa1a1 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/1.query-and-subquery-overview.md @@ -0,0 +1,79 @@ +查询和子查询概述 +============================= + + + +查询是指数据库中用来获取数据的方式,它可搭配条件限制的子句(如 `WHERE`),排列顺序的子句(如 `ORDER BY`)等语句来获取查询结果。子查询是指嵌套在一个上层查询中的查询。上层的查询一般被称为父查询或外部查询。子查询的结果作为输入传递回父查询或外部查询。父查询将这个值结合到计算中,以便确定最后的输出。SQL 语言允许多层嵌套查询,即一个子查询中还可以嵌套其他子查询。同时,子查询可以出现在 SQL 语句中的各种子句中,比如 `SELECT` 语句、`FROM` 语句和 `WHERE` 语句等。下列为 SQL 语句中常见的查询: + +* 简单查询 + + + +* 层次查询 + + + +* 集合 + + + +* 连接 + + + +* 子查询 + + + + + + +简单查询(Simple Queries) +-------------------------------- + +简单查询指从 OceanBase 一个或多个选择列表或视图中检索一个或多个列数据的操作,列的数量以及它们的数据类型和长度由选择列表的元素确定。而选择列表指的是 `SELECT` 关键字之后和 `FROM` 子句之前的表达式列表。 + +层次查询(Hierarchical Query) +------------------------------------ + +层次查询是一种具有特殊功能的查询语句,通过它能够将分层数据按照层次关系展示出来。分层数据是指关系表中的数据之间具有层次关系。 + +集合 +-------------- + +您可以使用集合运算符 `UNION`、`UNION ALL`、`INTERSECT` 和 `MINUS` 来组合多个查询。 所有集合运算符都具有相同的优先级。如果 `SQL` 语句包含多个集合运算符,则 OceanBase 从左到右对它们进行判断,除非括号中指定了顺序。本节主要讲了以下集合运算符: + + +| 运算符 | 说明 | +|-----------|--------------------| +| UNION | 返回两个结果集的并集,并且不重复。 | +| UNION ALL | 返回两个结果集的并集,并且可以重复。 | +| INTERSECT | 返回两个结果集的交集。 | +| MINUS | 返回两个结果集的差集。 | + + + +连接 (Join) +--------------------- + +连接(Join)是将来自两个或多个表、视图或实例视图的行组合在一起的查询。 每当查询的 `FROM` 子句中出现多个表时,OceanBase 数据库执行连接。 查询的选择列表可以从其中任何表中选择任何列。 如果这两个表都有一个列名,那么您必须用表名限定查询过程中对这些列的所有引用。本节主要讲了以下连接: + + +| 连接类型 | 表示 | 说明 | +|---------|----------------------|----------------------------------------------| +| 等值连接 | Equijoins | 包含等式运算符连接条件的连接。 | +| 自连接 | SELF-JOIN | 表与其自身的连接。 | +| 内连接 | INNER JOIN | 内连接,结果为两个连接表中的匹配行的连接。 | +| 左(外)连接 | LEFT \[OUTER\] JOIN | 结果包括左表(出现在 `JOIN` 子句最左边)中的所有行,不包括右表中的不匹配行。 | +| 右(外)连接 | RIGHT \[OUTER\] JOIN | 结果包括右表(出现在 `JOIN` 子句最右边)中的所有行,不包括有左表中的不匹配的行。 | +| 全(外)连接 | FULL \[OUTER\] JOIN | 结果包括所有连接中的所有行,不论他们是否匹配。 | +| SEMI 连接 | SEMI-JOIN | SEMI-JOIN 只能通过子查询展开得到。 | +| ANTI 连接 | ANTI-JOIN | ANTI-JOIN 也只能通过子查询展开得到。 | +| 笛卡儿积 | Cartesian Products | 当两个表没有连接操作时,对这两个表进行查询得到的数据是这两个表的笛卡儿积。 | + + + +子查询 +--------------- + +子查询指的是 `SELECT` 查询语句中嵌套了另一个或者多个 `SELECT` 语句,可以返回单行结果、多行结果或不返回结果。`SELECT` 语句的 `FROM` 子句中的子查询也称为内联视图。您可以在嵌入式视图中嵌套任意数量的子查询。`SELECT` 语句的 `WHERE` 子句中的子查询也称为嵌套子查询。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/2.simple-query.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/2.simple-query.md new file mode 100644 index 000000000..2f88642f7 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/2.simple-query.md @@ -0,0 +1,174 @@ +简单查询 +========================= + + + +简单查询指从 OceanBase 一个或多个表或视图中检索一个或多个列数据的操作,列的数量以及它们的数据类型和长度由表结构确定。而选择列表指的是 `SELECT` 关键字之后和 `FROM` 子句之前的表达式列表。 + +语法 +-------------- + +```javascript +SELECT 列名1,列名2,列名3,... FROM 表; +``` + + + +表名、字段名和关键字 `SELECT`、`FROM` 不区分大小写。查询的最后可以跟上分号(;),多条 SQL 可以同时执行。您可以使用 `SELECT` 语句中的 Hint 将指令或提示传递给 OceanBase 数据库优化器。优化器使用 Hint 为语句选择执行计划。 + +示例 +-------------- + +创建一张员工表 **employee** ,并向列 **employee_id** 、 **first_name** 、 **last_name** 、 **manager_id** 和 **salary** 插入数据: + +```javascript +CREATE TABLE employee ( +employee_id INT, +first_name VARCHAR(50), +last_name VARCHAR(50), +manager_id INT, +salary NUMERIC +); +INSERT INTO employee VALUES(111, 'DEL', 'FA BEN', 1, 1500); +INSERT INTO employee VALUES(112, 'AXEL', 'BELL', 1, 1000); +INSERT INTO employee VALUES(113, 'CRIS', 'RACHAR', 1, 1000); +``` + + **简单查询示例** + +* 查询部分列: + + + + + + +```javascript +SELECT first_name, last_name, salary FROM employee; ++------------+-----------+--------+ +| FIRST_NAME | LAST_NAME | SALARY | ++------------+-----------+--------+ +| DEL | FA BEN | 1500 | +| AXEL | BELL | 1000 | +| CRIS | RACHAR | 1000 | ++------------+-----------+--------+ +``` + + + +* 查询所有列: + + + + + + +```javascript +SELECT * FROM employee; ++-------------+------------+-----------+------------+--------+ +| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | MANAGER_ID | SALARY | ++-------------+------------+-----------+------------+--------+ +| 111 | DEL | FA BEN | 1 | 1500 | +| 112 | AXEL | BELL | 1 | 1000 | +| 113 | CRIS | RACHAR | 1 | 1000 | ++-------------+------------+-----------+------------+--------+ +``` + + + +* 对列进行数学运算: + + + + + + +```javascript +SELECT salary+100 FROM employee; ++------------+ +| SALARY+100 | ++------------+ +| 1600 | +| 1100 | +| 1100 | ++------------+ +``` + + + +* 给列取别名: + + + + + + +```javascript +SELECT salary*12 年薪 FROM employee; ++--------+ +| 年薪 | ++--------+ +| 18000 | +| 12000 | +| 12000 | ++--------+ +``` + + + +* 字符串拼接: + + + + + + +```javascript +SELECT first_name || '-' || last_name AS 姓名 FROM employee; ++-------------+ +| 姓名 | ++-------------+ +| DEL-FA BEN | +| AXEL-BELL | +| CRIS-RACHAR | ++-------------+ +``` + + + +* 数据去重: + + + + + + +```javascript +SELECT DISTINCT MANAGER_ID FROM employee; ++------------+ +| MANAGER_ID | ++------------+ +| 1 | ++------------+ +``` + + + +* `CASE WHEN` 语句: + + + + +```javascript +SELECT salary, CASE WHEN salary >= 1000 then '高薪' WHEN salary >= 800 THEN '一般' +ELSE '继续努力' END AS typeFROM employee; ++--------+--------+ +| SALARY | TYPE | ++--------+--------+ +| 1500 | 高薪 | +| 1000 | 高薪 | +| 1000 | 高薪 | ++--------+--------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/3.hierarchical-query.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/3.hierarchical-query.md new file mode 100644 index 000000000..b4f28cb76 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/3.hierarchical-query.md @@ -0,0 +1,167 @@ +层次查询 +========================= + + + +层次查询(Hierarchical Query)是一种具有特殊功能的查询语句,通过它能够将分层数据按照层次关系展示出来。分层数据是指关系表中的数据之间具有层次关系。这种关系在现实生活中十分常见,例如: + +* 组织架构中组长和组员之间的关系。 + + + +* 企业中上下级部门之间的关系。 + + + +* Web 网页中,页面跳转的关系。 + + + + + + +语法 +-------------- + +```javascript +SELECT [level], column, expr... FROM table [WHERE condition] [ START WITH start_expression ] +CONNECT BY [NOCYCLE] { PRIOR child_expr = parent_expr | parent_expr = PRIOR child_expr } +[ ORDER SIBLINGS BY ...] [ GROUP BY ... ] [ HAVING ... ] [ ORDER BY ... ] +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|--------------------|-----------------------------------------------------------------------------------| +| LEVEL | 节点的层次,是伪列,表示等级。由查询的起点开始算起为 1,依次类推。 | +| CONNECT_BY_ISLEAF | 当前数据行是否是层次关系中的叶子节点,是伪列,0表示不是,1表示是。 | +| CONNECT_BY_ISCYCLE | 当前数据行是否在循环中,是伪列,0表示不是,1表示是。 | +| CONNECT_BY_ROOT运算符 | CONNECT_BY_ROOT是一元运算符,表示参数中的列来自于层次查询的根节点,与一元的 + 和 - 具有相同的优先级。 | +| condition | 条件。 | +| CONNECT BY | 指明如何来确定父子关系,这里通常使用等值表达式,但其他表达式同样支持。 | +| START WITH | 指明层次查询中的根行(Root row)。 | +| PRIOR 运算符 | `PRIOR` 是一元运算符,表示参数中的列来自于父行(Parent row),与一元的 + 和 - 具有相同的优先级。 | +| NOCYCLE | 当指定该关键字时,即使返回结果中有循环仍旧可以返回,并可以通过 `CONNECT_BY_ISCYCLE` 虚拟列来指明哪里出现循环;否则,出现循环会给客户端报错。 | +| ORDER SIBLINGS BY | 指定同一个层级行之间的排列顺序。 | + + + +执行流程 +---------------- + +使用和实现层次查询最关键是要理解其执行流程,层次查询执行流程: + +1. 执行 `FROM` 后面的 `SCAN` 或 `JOIN` 操作; + + + +2. 根据 `START WITH` 和 `CONNECT BY` 的内容生成层次关系结果; + + + +3. 按照常规查询执行流程执行剩下的子句(例如 `WHERE`、`GROUP`、`ORDER BY`......)对于 2 中生成层次关系的流程可以理解为: + + + +4. 根据 `START WITH` 中的表达式得到根行(Root rows)。 + + + +5. 根据 `CONNECT BY` 中的表达式 选择每个根行(Root rows)的子行(Child rows)。 + + + +6. 将 2 中生成的子行(Child rows)作为新的根行(Root rows)进一步生成子行(Child rows),周而复始直到没有新行生成。 + + + + + + +示例 +-------------- + +展示层次查询的使用,向表 **emp** 中的 **emp_id** 、 **position** 和 **mgr_id** 列插入数据。执行以下语句: + +```javascript +CREATE TABLE emp(emp_id INT,position VARCHAR(50),mgr_id INT); +INSERT INTO emp VALUES (1,'全球经理',NULL); +INSERT INTO emp VALUES (2,'欧洲区经理',1); +INSERT INTO emp VALUES (3,'亚太区经理',1); +INSERT INTO emp VALUES (4,'美洲区经理',1); +INSERT INTO emp VALUES (5,'意大利区经理',2); +INSERT INTO emp VALUES (6,'法国区经理',2); +INSERT INTO emp VALUES (7,'中国区经理',3); +INSERT INTO emp VALUES (8,'韩国区经理',3); +INSERT INTO emp VALUES (9,'日本区经理',3); +INSERT INTO emp VALUES (10,'美国区经理',4); +INSERT INTO emp VALUES (11,'加拿大区经理',4); +INSERT INTO emp VALUES (12,'北京区经理',7); +``` + + + +通过上面的内容可以看见列 **position** 具有清晰的层次关系。树状结构如下: + +![](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8355055061/p179244.png) + +是按照层次结构将结果展示出来,执行以下语句: + +```javascript +SELECT emp_id, mgr_id, position, level FROM emp +START WITH mgr_id IS NULL CONNECT BY PRIOR emp_id = mgr_id; +``` + + + +查询结果如下: + +```javascript ++--------+--------+-------------------+-------+ +| EMP_ID | MGR_ID | POSITION | LEVEL | ++--------+--------+-------------------+-------+ +| 1 | NULL| 全球经理 | 1 | +| 2 | 1 | 欧洲区经理 | 2 | +| 5 | 2 | 意大利区经理 | 3 | +| 6 | 2 | 法国区经理 | 3 | +| 3 | 1 | 亚太区经理 | 2 | +| 7 | 3 | 中国区经理 | 3 | +| 12 | 7 | 北京区经理 | 4 | +| 8 | 3 | 韩国区经理 | 3 | +| 9 | 3 | 日本区经理 | 3 | +| 4 | 1 | 美洲区经理 | 2 | +| 10 | 4 | 美国区经理 | 3 | +| 11 | 4 | 加拿大区经理 | 3 | ++--------+--------+-------------------+-------+ +``` + + + +如果仅查询"亚太区"的层次结构,执行以下语句: + +```javascript +SELECT emp_id, mgr_id, position, level FROM emp START WITH position = '亚太区经理' CONNECT BY PRIOR emp_id = mgr_id; +``` + + + +查询结果如下: + +```javascript ++--------+--------+----------------+-------+ +| EMP_ID | MGR_ID | POSITION | LEVEL | ++--------+--------+----------------+-------+ +| 3 | 1 | 亚太区经理 | 1 | +| 7 | 3 | 中国区经理 | 2 | +| 12 | 7 | 北京区经理 | 3 | +| 8 | 3 | 韩国区经理 | 2 | +| 9 | 3 | 日本区经理 | 2 | ++--------+--------+----------------+-------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/4.collection-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/4.collection-1.md new file mode 100644 index 000000000..7095c504f --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/4.collection-1.md @@ -0,0 +1,305 @@ +集合 +======================= + + + +您可以使用集合运算符 `UNION`、`UNION ALL`、`INTERSECT` 和 `MINUS` 来组合多个查询。 所有集合运算符都具有相同的优先级。如果 `SQL` 语句包含多个集合运算符,则 OceanBase 从左到右对它们进行判断,除非括号中指定了顺序。 + +集合运算符的规则和限制 +----------------------- + +您可以指定 `UNION` 的属性为 `ALL` 和 `DISTINCT` 或 `UNIQUE`。分别代表集合可重复,和集合不可重复。而其它几种集合操作是不能指定 `ALL` 属性的(它们只有 `DISTINCT` 属性)。所有的集合操作默认的属性是 `DISTINCT`。在 Oceanbase 中,集合操作中可以指定 `ORDER BY` 和 `LIMIT` 子句,但是不允许其他子句的出现。我们仅支持`MINUS`,不支持 `EXCEPT` 尽管这两者的语义是相同的。参加集合操作的各查询结果的列数和相应表达式的数量必须相同,对应的数据类型也必须兼容(例如数值或字符)。 + +### 集合运算符规则 + +如果组件查询是字符数据,则返回值的数据类型如下: + +* 查询两个长度相等的 `VARCHAR2` 类型值,则返回的值为相同长度的 `CHAR` 类型。 查询不同长度的 `CHAR` 类型值,则返回的值为 `VARCHAR2` 类型,其长度为较大的 `CHAR` 值。 + + + +* 其中一个或两个查询是 `VARCHAR2` 数据类型的值,则返回的值为 `VARCHAR2` 类型。 + + + + + + +如果组件查询是数值数据,则返回值的数据类型由数值优先级决定: + +* 查询 `BINARY_DOUBLE` 类型值,则返回的值为 `BINARY_DOUBLE` 类型。 + + + +* 查询都选择 `BINARY_FLOAT` 类型值,则返回的值为 `BINARY_FLOAT` 类型。 + + + +* 所有查询都选择 `NUMBER` 类型值,则返回的值为 `NUMBER` 类型。 + + + + + + +在使用集合运算符的查询中,OceanBase 不会跨数据类型组执行隐式转换。如果组件查询的相应表达式同时解析为字符数据和数值数据,OceanBase 将返回错误。 + +### 集合运算符限制 + +集合运算符受到以下限制: + +* 集合运算符在 `BLOB` 和 `CLOB` 的列上无效。 + + + +* 如果集合运算符前面的 `SELECT` 列表包含表达式,则必须为表达式提供列别名,以便在 `ORDER BY` 子句引用。 + + + +* 您不能用设置的运算符指定 `UPDATE` 语句。 + + + +* 您不能在这些运算符的子查询中指定 `ORDER BY` 语句。 + + + +* 不能在包含表集合表达式的 `SELECT` 语句中使用这些运算符 。 + + + + + + +UNION 运算符和 UNION ALL 运算符 +------------------------------------ + +`UNION` 运算符用于合并两个或多个 `SELECT` 语句的结果集。`UNION` 内部的 `SELECT` 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 `SELECT` 语句中的列的顺序必须相同。默认地,`UNION` 运算符选取不同的值。如果允许重复的值,请使用 `UNION ALL`。 + +### 语法 + +```javascript +{ (< SQL- 查询语句 1>) } +UNION [ALL] +{ (< SQL- 查询语句 2>) } +``` + + + +INTERSECT 运算符 +------------------------- + +返回两个结果集的交集,即两个查询都返回的所有非重复值。 + +### 语法 + +```javascript +{ (< SQL- 查询语句 1>) } +INTERSECT +{ (< SQL- 查询语句 2>) } +``` + + + +### 限制条件 + +* 所有查询中的列数和列的顺序必须相同。 + + + +* 比较的两个查询结果集中的列数据类型可以不同但必须兼容。 + + + +* 比较的两个查询结果集中不能包含不可比较的数据类型列(XML、TEXT、NTEXT、IMAGE 或非二进制 CLR 用户定义类型)。 + + + +* 返回的结果集的列名与操作数左侧的查询返回的列名相同。`ORDER BY` 子句中的列名或别名必须引用左侧查询返回的列名。 + + + +* 不能与 `COMPUTE` 和 `COMPUTE BY` 子句一起使用。 + + + +* 通过比较行来确定非重复值时,两个 NULL 值被视为相等。 + + + + + + +MINUS 运算符 +--------------------- + +`MINUS` 运算符返回两个结果集的差,即从左查询中返回右查询没有找到的所有非重复值。 + +### 语法 + +```javascript +{ (< SQL- 查询语句 1>) } +MINUS +{ (< SQL- 查询语句 2>) } +``` + + + +### 执行顺序 + +与表达式中的其他运算符一起使用时的执行顺序: + +1、括号中的表达式。 + +2、`INTERSECT` 操作数。 + +3、基于在表达式中的位置从左到右求值的 `MINUS` 和 `UNION`。 + +如果 `MINUS` 或 `INTERSECT` 用于比较两个以上的查询集,则数据类型转换是通过一次比较两个查询来确定的,并遵循前面提到的表达式求值规则。 + +示例 +-------------- + +以下语句创建了表 **table_a** 和表 **table_b** ,并向表中插入数据: + +```javascript +CREATE TABLE table_a(PK INT, name VARCHAR(25)); +INSERT INTO table_a VALUES(1,'福克斯'); +INSERT INTO table_a VALUES(2,'警察'); +INSERT INTO table_a VALUES(3,'的士'); +INSERT INTO table_a VALUES(4,'林肯'); +INSERT INTO table_a VALUES(5,'纽约'); +INSERT INTO table_a VALUES(6,'华盛顿'); +INSERT INTO table_a VALUES(7,'戴尔'); +INSERT INTO table_a VALUES(10,'朗讯'); +CREATE TABLE table_b(PK INT, name VARCHAR(25)); +INSERT INTO table_b VALUES(1,'福克斯'); +INSERT INTO table_b VALUES(2,'警察'); +INSERT INTO table_b VALUES(3,'的士'); +INSERT INTO table_b VALUES(6,'华盛顿'); +INSERT INTO table_b VALUES(7,'戴尔'); +INSERT INTO table_b VALUES(8,'微软'); +INSERT INTO table_b VALUES(9,'苹果'); +INSERT INTO table_b VALUES(11,'苏格兰'); +``` + + + +**UNION 示例** : + +```javascript +SELECT PK, name FROM table_a +UNION +SELECT PK, name FROM table_b; +``` + + + +查询结果如下: + +```javascript ++------+-----------+ +| PK | NAME | ++------+-----------+ +| 1 | 福克斯 | +| 2 | 警察 | +| 3 | 的士 | +| 4 | 林肯 | +| 5 | 纽约 | +| 6 | 华盛顿 | +| 7 | 戴尔 | +| 10 | 朗讯 | +| 8 | 微软 | +| 9 | 苹果 | +| 11 | 苏格兰 | ++------+-----------+ +``` + + + +**UNION ALL 示例** : + +```javascript +SELECT PK, name FROM table_a +UNION ALL +SELECT PK, name FROM table_b; +``` + + + +查询结果如下: + +```javascript ++------+-----------+ +| PK | NAME | ++------+-----------+ +| 1 | 福克斯 | +| 2 | 警察 | +| 3 | 的士 | +| 4 | 林肯 | +| 5 | 纽约 | +| 6 | 华盛顿 | +| 7 | 戴尔 | +| 10 | 朗讯 | +| 1 | 福克斯 | +| 2 | 警察 | +| 3 | 的士 | +| 6 | 华盛顿 | +| 7 | 戴尔 | +| 8 | 微软 | +| 9 | 苹果 | +| 11 | 苏格兰 | ++------+-----------+ +``` + + + +**INTERSECT 示例** : + +```javascript +SELECT PK, NAME FROM table_a +INTERSECT +SELECT PK, NAME FROM table_b; +``` + + + +查询结果如下: + +```javascript ++------+-----------+ +| PK | NAME | ++------+-----------+ +| 1 | 福克斯 | +| 2 | 警察 | +| 3 | 的士 | +| 6 | 华盛顿 | +| 7 | 戴尔 | ++------+-----------+ +``` + + + +**MINUS 示例** : + +```javascript +SELECT PK, NAME FROM table_a +MINUS +SELECT PK, NAME FROM table_b; +``` + + + +查询结果如下: + +```javascript ++------+--------+ +| PK | NAME | ++------+--------+ +| 4 | 林肯 | +| 5 | 纽约 | +| 10 | 朗讯 | ++------+--------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/5.connection-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/5.connection-1.md new file mode 100644 index 000000000..8dc4ebac2 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/5.connection-1.md @@ -0,0 +1,286 @@ +连接 +======================= + + + +连接(Join)是将两个或多个表、视图或物化视图的结合在一起的查询。当查询的 `FROM` 子句中出现多个表时OceanBase 数据库会进行连接查询,查询输出列可以从`FROM` 子句任何表中选取。 如果多个表都有一个列名,那么您必须用表名限定查询过程中对这些列的所有引用。数据库中的连接类型一般包括 `inner join`、`outer join`、`semi-join` 和 `anti-join`。其中 `Semi-join` 和 `Anti-join` 都是通过子查询改写得到,OceanBase 本身并没有表述 `Anti-join` 和 `Semi-join` 的语法。 + +连接条件 +---------------- + +连接条件是将多表结合在一起的规则,存在于从句或 `WHERE` 子句中,用于比较来自不同的表两列,多数连接至少包含一个连接条件。连接条件可以分为等值连接(比如 t1.a = t2.b)和非等值连接(t1.a \< t2.b),相比于非等值连接条件, 等值连接条件允许数据库使用高效的连接算法,比如 `Hash Join` 和 `Merge-Sort join`。 + +为了执行连接,OceanBase 从不同表取行组合成对,使用连接条件进行匹配。 要执行两表以上的多表连接,OceanBase 首先根据比较它们的列的连接条件连接其中的两个表,然后根据包含连接表和新表列的连接条件将结果连接到另一个表。优化器根据连接条件、基表索引以及可用统计信息确定 OceanBase 连接顺序。 + +`WHERE` 子句除了连接条件还可能含有其他条件,这些仅引用一个表的条件可以进一步限制连接查询返回的行数。 + +等值连接(EQUI-JOINS) +---------------------------- + +等值连接(Equijoins)是连接条件包含等式运算符的连接。进行等值连接时将特定列满足等值条件的行进行组合输出。 + +自连接(SELF-JOIN) +-------------------------- + +自连接是表与其自身的连接。该表在 `FROM` 子句中出现两次,后跟表别名,这些别名限定联接条件中的列名。执行自连接时OceanBase数据库将组合并返回满足连接条件的行。 + +笛卡儿积(Cartesian Products) +------------------------------------ + +如果连接查询中的两个表没有连接条件,OceanBase 数据库返回其笛卡尔乘积,使用第一个表的每一行与另一表每一个行进行组合输出。笛卡尔乘积总是生成许多行,很少有用。 例如,两个都有 100 行的表的笛卡尔积有 10,000 行。除非您特别需要笛卡尔乘积,否则始终包括一个连接条件。 如果查询连接了三个或多个表,并且没有为特定对指定连接条件,则优化器可以选择避免生成中间笛卡尔乘积的连接顺序。 + +内连接(INNER JOIN) +--------------------------- + +内连接(INNER JOIN)是数据库中最基本的连接操作。内连接基于连接条件将两张表(如 A 和 B)的列组合在一起,产生新的结果表。查询会将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接条件的组合。当连接条件被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。连接产生的结果集等于首先对两张表做笛卡尔积,将 A 中的每一行和 B 中的每一行组合,然后返回满足连接条件的记录。 + +外连接(OUTER JOIN) +--------------------------- + +外连接(OUTER JOIN) 返回满足连接条件的所有行,同时从一个表返回没有使用的行,在另一个表相应位置填充`NULL`。外连接可依据连接表保留左表、右表或全部表的行而进一步分为左连接、右连接和全连接。其中左连接(LEFT \[OUTER\] JOIN)中左表行未在右表匹配到行时,在右表自动填充 `NULL`。右连接(RIGHT \[OUTER\] JOIN)中右表行未在左表匹配到行时,在左表自动填充 `NULL`。全连接(FULL \[OUTER\] JOIN)左表或者右表未在其它表匹配到行时均会填充`NULL`。 + +SEMI 连接(SEMI-JOIN) +------------------------------ + +当 A 表和 B 表进行 `LEFT` 或 `RIGHT ANTI-JOIN` 的时候,它只返回 A 或 B 中所有能够在 B 或 A 中找到匹配的行。`SEMI-JOIN` 只能通过子查询展开得到。 + +ANTI 连接(ANTI-JOIN) +------------------------------ + +当 A 表和 B 表进行 `LEFT` 或 `RIGHT ANTI-JOIN` 的时候,它只返回 A 或 B 中所有不能在 B 或 A 中找到匹配的行。类似于 `SEMI-JOIN`,`ANTI-JOIN` 也只能通过子查询展开得到。 + +示例 +-------------- + +建立表 **table_a** 和表 **table_b** ,并插入数据。执行以下语句: + +```javascript +CREATE TABLE table_a(PK INT, name VARCHAR(25)); +INSERT INTO table_a VALUES(1,'福克斯'); +INSERT INTO table_a VALUES(2,'警察'); +INSERT INTO table_a VALUES(3,'的士'); +INSERT INTO table_a VALUES(4,'林肯'); +INSERT INTO table_a VALUES(5,'亚利桑那州'); +INSERT INTO table_a VALUES(6,'华盛顿'); +INSERT INTO table_a VALUES(7,'戴尔'); +INSERT INTO table_a VALUES(10,'朗讯'); +CREATE TABLE table_b(PK INT, name VARCHAR(25)); +INSERT INTO table_b VALUES(1,'福克斯'); +INSERT INTO table_b VALUES(2,'警察'); +INSERT INTO table_b VALUES(3,'的士'); +INSERT INTO table_b VALUES(6,'华盛顿'); +INSERT INTO table_b VALUES(7,'戴尔'); +INSERT INTO table_b VALUES(8,'微软'); +INSERT INTO table_b VALUES(9,'苹果'); +INSERT INTO table_b VALUES(11,'苏格兰威士忌'); +``` + + + +**自连接查询(SELF-JOIN)** : + +```javascript +SELECT * FROM table_a ta, table_a tb WHERE ta.NAME = tb.NAME; +``` + + + +查询结果如下: + +```javascript ++------+-----------------+------+-----------------+ +| PK | NAME | PK | NAME | ++------+-----------------+------+-----------------+ +| 1 | 福克斯 | 1 | 福克斯 | +| 2 | 警察 | 2 | 警察 | +| 3 | 的士 | 3 | 的士 | +| 4 | 林肯 | 4 | 林肯 | +| 5 | 亚利桑那州 | 5 | 亚利桑那州 | +| 6 | 华盛顿 | 6 | 华盛顿 | +| 7 | 戴尔 | 7 | 戴尔 | +| 10 | 朗讯 | 10 | 朗讯 | ++------+-----------------+------+-----------------+ +``` + + + +**内连接(INNER JOIN)查询** : + +```javascript +SELECT A.PK AS A_PK, A.name AS A_Value, B.PK AS B_PK, B.name AS B_Value +FROM table_a A INNER JOIN table_b B ON A.PK = B.PK; +``` + + + +查询结果如下: + +```javascript ++------+-----------+------+-----------+ +| A_PK | A_VALUE | B_PK | B_VALUE | ++------+-----------+------+-----------+ +| 1 | 福克斯 | 1 | 福克斯 | +| 2 | 警察 | 2 | 警察 | +| 3 | 的士 | 3 | 的士 | +| 6 | 华盛顿 | 6 | 华盛顿 | +| 7 | 戴尔 | 7 | 戴尔 | ++------+-----------+------+-----------+ +``` + + + +**左连接查询** : + +```javascript +SELECT A.PK AS A_PK, A.name AS A_Value, B.PK AS B_PK, B.name AS B_Value +FROM table_a A LEFT JOIN table_b B ON A.PK = B.PK; +``` + + + +查询结果如下: + +```javascript ++------+-----------------+------+-----------+ +| A_PK | A_VALUE | B_PK | B_VALUE | ++------+-----------------+------+-----------+ +| 1 | 福克斯 | 1 | 福克斯 | +| 2 | 警察 | 2 | 警察 | +| 3 | 的士 | 3 | 的士 | +| 6 | 华盛顿 | 6 | 华盛顿 | +| 7 | 戴尔 | 7 | 戴尔 | +| 4 | 林肯 | NULL | NULL | +| 5 | 亚利桑那州 | NULL | NULL | +| 10 | 朗讯 | NULL | NULL | ++------+-----------------+------+-----------+ +``` + + + +**右连接查询** : + +```javascript +obclient> SELECT A.PK AS A_PK, A.name AS A_Value, B.PK AS B_PK, B.name AS B_Value FROM table_a A RIGHT JOIN table_b B ON A.PK = B.PK; +``` + + + +查询结果如下: + +```javascript ++------+-----------+------+--------------------+ +| A_PK | A_VALUE | B_PK | B_VALUE | ++------+-----------+------+--------------------+ +| 1 | 福克斯 | 1 | 福克斯 | +| 2 | 警察 | 2 | 警察 | +| 3 | 的士 | 3 | 的士 | +| 6 | 华盛顿 | 6 | 华盛顿 | +| 7 | 戴尔 | 7 | 戴尔 | +| NULL | NULL | 8 | 微软 | +| NULL | NULL | 9 | 苹果 | +| NULL | NULL | 11 | 苏格兰威士忌 | ++------+-----------+------+--------------------+ +``` + + + +**全连接查询** : + +```javascript +obclient> SELECT A.PK AS A_PK,A.name AS A_Value,B.PK AS B_PK,B.name AS B_Value FROM table_a A FULL JOIN table_b B ON A.PK = B.PK; +``` + + + +查询结果如下: + +```javascript ++------+-----------------+------+--------------------+ +| A_PK | A_VALUE | B_PK | B_VALUE | ++------+-----------------+------+--------------------+ +| 1 | 福克斯 | 1 | 福克斯 | +| 2 | 警察 | 2 | 警察 | +| 3 | 的士 | 3 | 的士 | +| 6 | 华盛顿 | 6 | 华盛顿 | +| 7 | 戴尔 | 7 | 戴尔 | +| NULL | NULL | 8 | 微软 | +| NULL | NULL | 9 | 苹果 | +| NULL | NULL | 11 | 苏格兰威士忌 | +| 4 | 林肯 | NULL | NULL | +| 5 | 亚利桑那州 | NULL | NULL | +| 10 | 朗讯 | NULL | NULL | ++------+-----------------+------+--------------------+ +``` + + + +**Semi 连接(semi-join)** :有依赖关系的子查询被展开改写成 **SEMI-JOIN** 。 + +```javascript +explain SELECT * FROM table_a t1 WHERE t1.PK IN (SELECT t2.PK FROM table_b t2 WHERE t2.NAME = t1.NAME); +``` + + + +查询结果如下: + +```javascript ++------------------------------------------------+ +| Query Plan | ++------------------------------------------------+ +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |HASH SEMI JOIN| |8 |114 | +|1 | TABLE SCAN |T1 |8 |38 | +|2 | TABLE SCAN |T2 |8 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([T1.PK], [T1.NAME]), filter(nil), + equal_conds([T1.PK = T2.PK], [T2.NAME = T1.NAME]), other_conds(nil) + 1 - output([T1.NAME], [T1.PK]), filter(nil), + access([T1.NAME], [T1.PK]), partitions(p0) + 2 - output([T2.NAME], [T2.PK]), filter(nil), + access([T2.NAME], [T2.PK]), partitions(p0) ++------------------------------------------------+ +``` + + + +**Anti 连接(anti-join)** :有依赖关系的子查询被改写成 `Anti-join`。 + +```javascript +EXPLAIN SELECT * FROM table_a t1 WHERE t1.PK NOT IN (SELECT t2.PK +FROM table_b t2 WHERE t2.name = t1.name); +``` + + + +查询结果如下: + +```javascript ++------------------------------------------------+ +| Query Plan | ++------------------------------------------------+ +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |HASH ANTI JOIN| |0 |112 | +|1 | TABLE SCAN |T1 |8 |38 | +|2 | TABLE SCAN |T2 |8 |38 | +======================================= +Outputs & filters: +------------------------------------- + 0 - output([T1.PK], [T1.NAME]), filter(nil), + equal_conds([T2.NAME = T1.NAME]), other_conds([(T_OP_OR, T1.PK = T2.PK, + (T_OP_IS, T1.PK, NULL, 0), (T_OP_IS, T2.PK, NULL, 0))]) + 1 - output([T1.NAME], [T1.PK]), filter(nil), + access([T1.NAME], [T1.PK]), partitions(p0) + 2 - output([T2.NAME], [T2.PK]), filter(nil), + access([T2.NAME], [T2.PK]), partitions(p0) ++---------------------------------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/6.subquery-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/6.subquery-1.md new file mode 100644 index 000000000..7c66612bb --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/8.queries-and-subqueries-1/6.subquery-1.md @@ -0,0 +1,194 @@ +子查询 +======================== + + + +子查询指的是 `SELECT` 查询语句中嵌套了另一个或者多个 `SELECT` 语句,可以返回单行结果、多行结果或不返回结果。`SELECT` 语句的 `FROM` 子句中的子查询也称为内联视图,`SELECT` 语句的 `WHERE` 子句中的子查询也称为嵌套子查询。 + +子查询可以分为相关子查询和非相关子查询。相关子查询指该子查询的执行依赖了外部查询的变量,这种子查询通常会执行多次。非相关子查询指该子查询的执行不依赖外部查询的变量,这种子查询一般只需要计算一次。对于非相关子查询与部分相关子查询,可以通过改写进行子查询消除,实现嵌套子查询的展开。 + +语法 +-------------- + +```javascript +SELECT [ hint ] [ { { DISTINCT | UNIQUE } | ALL } ] select_list +FROM { table_reference | join_clause | ( join_clause ) } + [ , { table_reference | join_clause | (join_clause) } ] + [ where_clause ] + [ hierarchical_query_clause ] + [ group_by_clause ] +| subquery { UNION [ALL] | INTERSECT | MINUS } subquery [ { UNION [ALL] | INTERSECT | MINUS } subquery ] +| ( subquery ) [ order_by_clause ] [ row_limiting_clause ] +``` + + + +参数 +-------------- + + + +| 参数 | 说明 | +|-----------------|---------| +| select_list | 查询列表 | +| subquery | 子查询 | +| hint | 注释 | +| table_reference | 要查询的目标表 | + + + +如果子查询中的列与外层查询中的列具有相同列名,必须在外层查询中在重复列名前加上表名或使用别名。 + +当上层查询引用到子查询中相关列时,将执行子查询,上层查询可以是`SELECT`,`UPDATE` 或 `DELETE`语句,各语句中使用子查询方式: + +* 定义要插入到 `INSERT` 或 `CREATE TABLE` 语句的目标表中的行集。 + + + +* 在 `CREATE VIEW` 或 `CREATE MATERIALIZED VIEW` 语句中定义要包含在视图或物化视图中的行集。 + + + +* 在 `UPDATE` 中定义要分配给现有行的一个或多个值。 + + + +* 在 `WHERE` 子句、`HAVING` 子句或 `START WITH` 中提供条件值。 + + + +* 定义包含查询操作的表。 + + + + + + +嵌套子查询的展开(Unnesting of Nested Subqueries) +------------------------------------------------- + +嵌套子查询展开是数据库的一种优化策略,它把一些子查询置于外层的父查询中,其实质是把某些子查询转化为等价的多表连接操作。这种策略带来的一个明显的好处是能够有效利用访问路径、连接方法和连接顺序,使查询的层次尽可能的减少。 + +以下情况数据库将进行嵌套子查询的展开: + +* 不相关的 `IN` 子查询。 + + + +* `IN` 和 `EXISTS` 中的相关子查询不包含聚合函数或 `GROUP BY` 子句。 + + + + +可以通过 Hint `UNNEST` 控制是否展开嵌套子查询。 + +示例 +----------- + +以下语句创建了表 **table_a** 和表 **table_b** ,并向表中插入数据: + +```javascript +CREATE TABLE table_a(PK INT, name VARCHAR(25)); +INSERT INTO table_a VALUES(1,'福克斯'); +INSERT INTO table_a VALUES(2,'警察'); +INSERT INTO table_a VALUES(3,'的士'); +INSERT INTO table_a VALUES(4,'林肯'); +INSERT INTO table_a VALUES(5,'亚利桑那州'); +INSERT INTO table_a VALUES(6,'华盛顿'); +INSERT INTO table_a VALUES(7,'戴尔'); +INSERT INTO table_a VALUES(10,'朗讯'); +CREATE TABLE table_b(PK INT, name VARCHAR(25)); +INSERT INTO table_b VALUES(1,'福克斯'); +INSERT INTO table_b VALUES(2,'警察'); +INSERT INTO table_b VALUES(3,'的士'); +INSERT INTO table_b VALUES(6,'华盛顿'); +INSERT INTO table_b VALUES(7,'戴尔'); +INSERT INTO table_b VALUES(8,'微软'); +INSERT INTO table_b VALUES(9,'苹果'); +INSERT INTO table_b VALUES(11,'苏格兰威士忌'); +``` + + + +没有依赖关系的子查询,执行以下语句: + +```javascript +SELECT * FROM TABLE_A T1 WHERE T1.PK IN (SELECT T2.PK FROM TABLE_B T2); +``` + + + +查询结果如下: + +```javascript ++------+-----------+ +| PK | NAME | ++------+-----------+ +| 1 | 福克斯 | +| 2 | 警察 | +| 3 | 的士 | +| 6 | 华盛顿 | +| 7 | 戴尔 | ++------+-----------+ +``` + + + +有依赖关系的子查询,子查询中用到了外层查询变量 **T1.PK** ,执行以下语句: + +```javascript +SELECT * FROM TABLE_A T1 WHERE T1.PK IN (SELECT T2.PK FROM TABLE_B T2 WHERE T2.PK = T1.PK); +``` + + + +查询结果如下: + +```javascript ++------+-----------+ +| PK | NAME | ++------+-----------+ +| 1 | 福克斯 | +| 2 | 警察 | +| 3 | 的士 | +| 6 | 华盛顿 | +| 7 | 戴尔 | ++------+-----------+ +``` + + + +有依赖关系的子查询被展开改写成连接,执行以下语句: + +```javascript +EXPLAIN SELECT * FROM TABLE_A T1 WHERE T1.PK IN (SELECT T2.NAME FROM TABLE_B T2 WHERE T2.NAME = T1.NAME); +``` + + + +查询结果如下: + +```javascript ++------------------------------------+ +| Query Plan | ++------------------------------------+ +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |8 |107 | +|1 | TABLE SCAN |T2 |8 |38 | +|2 | TABLE SCAN |T1 |8 |38 | +============================================= +Outputs & filters: +------------------------------------- + 0 - output([T1.PK], [T1.NAME]), filter(nil), + equal_conds([T1.PK = T2.NAME], [T2.NAME = T1.NAME]), other_conds(nil) + 1 - output([T2.NAME]), filter(nil), + access([T2.NAME]), partitions(p0) + 2 - output([T1.NAME], [T1.PK]), filter(nil), + access([T1.NAME], [T1.PK]), partitions(p0) ++------------------------------------+ +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/1.alter-keystore.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/1.alter-keystore.md new file mode 100644 index 000000000..f0af1f0e3 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/1.alter-keystore.md @@ -0,0 +1,65 @@ +ALTER KEYSTORE +=================================== + + + +描述 +----------- + +该语句用于修改 Keystore 属性,包括打开/关闭 Keystore、修改 Keystore 密码、生成 Keystore 密钥。 + +格式 +----------- + +```javascript +## 打开/关闭 KEYSTORE +ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY [password]; +ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY [password]; + +## 设置密钥 +ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY [password] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|---------------|---------------------| +| keystore_name | 指定 Keystore 名称 | +| password | 指定访问控制 Keystore 的密码 | + + + +示例 +----------- + +* 打开 Keystore,在 keystore 处于 open 状态时,才能访问加密表以及 set key 操作。 + + + + + + +```javascript +ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY abcCBAK123; +``` + + + +* 更新 Keystore 中存放的主密钥。 + + + + + + +```javascript +ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY abcCBAK123; +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/10.create-outline-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/10.create-outline-1.md new file mode 100644 index 000000000..ec3680c9b --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/10.create-outline-1.md @@ -0,0 +1,96 @@ +CREATE OUTLINE +=================================== + + + +描述 +----------- + +该语句用来创建 OUTLINE。可以通过两种方式创建,一种是通过 SQL_TEXT(用户执行的带参数的原始语句),另一种是通过 SQL_ID 创建。 +**注意** + + + +创建 OUTLINE 需要进入对应的用户下执行。 + +格式 +----------- + +* **使用** **SQL_TEXT 创建** **OUTLINE** + + + + + + +```javascript +CREATE [OR REPLACE] OUTLINE outline_name ON stmt [ TO target_stmt ] +``` + + + +* **使用** **SQL_ID 创建** **OUTLINE** + + + + + + +```javascript +CREATE OUTLINE outline_name ON sql_id USING HINT hint; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| outline_name | 指定要创建的 OUTLINE 名称。 | +| OR REPLACE | 指定 OR REPLACE 后,如果要创建的 OUTLINE 已存在,则会替换原有的 OUTLINE。 | +| stmt | 一般为一个带有 hint 和原始参数的 DML 语句。 | +| TO target_stmt | 如果不指定 TO target_stmt, 则表示如果数据库接受的SQL参数化后与stmt去掉hint参数化文本相同,则将该SQL绑定stmt中hint生成执行计划;如果期望对含有hint的语句进行固定计划,则需要 TO target_stmt 来指明原始的SQL。 **注意** 在使用target_stmt时,严格要求stmt与target_stmt在去掉hint后完全匹配。 | +| sql_id | 如果sql_id对应的SQL语句已经有hint,则创建OUTLINE指定的hint会覆盖原始语句中所有hint。 | +| hint | 格式为 /\*+ xxx \*/ 。 | + + + +示例 +----------- + +* 使用 SQL_TEXT 创建 OUTLINE + + + + + + +```javascript +CREATE OUTLINE otl_idx_c2 +ON SELECT/*+ index(t1 idx_c2)*/ * FROM t1 WHERE c2 = 1; +``` + + + +* 使用 SQL_ID 创建 OUTLINE + + + + + + +```javascript +CREATE OUTLINE otl_idx_c2 +ON 'ED570339F2C856BA96008A29EDF04C74' +USING HINT /*+ index(t1 idx_c2)*/ ; +``` + + + +注意事项 +------------- + +使用 SQL_TEXT 方式创建的 OUTLINE 会覆盖 SQL_ID 方式创建的 OUTLINE,SQL_TEXT 方式创建的优先级高。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/11.create-restore-point-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/11.create-restore-point-1.md new file mode 100644 index 000000000..6f02581da --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/11.create-restore-point-1.md @@ -0,0 +1,47 @@ +CREATE RESTORE POINT +========================================= + + + +描述 +----------------------- + +该语句用来创建还原点(Restore Point)。使用该功能可以保留当前时刻的数据快照,并在之后指定在这个数据快照上进行查询。目前还不支持将数据回滚到该还原点。 + +创建还原点后,可以在 V$RESTORE_POINT 视图中查询到该还原点的 SCN 值,然后通过 `SELECT * FROM table_name AS OF SCN scn;` 查询数据快照中的值。 + +格式 +----------------------- + +```unknow +CREATE RESTORE POINT restore_point; +``` + + + +参数解释 +------------------------- + + + +| 参数 | 描述 | +|---------------|----------| +| restore_point | 指定还原点名称。 | + + + +示例 +----------------------- + +* 创建一个还原点 rp1。 + + ```unknow + obclient> CREATE RESTORE POINT rp1; + Query OK, 0 rows affected (0.01 sec) + ``` + + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/12.create-sequence.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/12.create-sequence.md new file mode 100644 index 000000000..ee3b05ba0 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/12.create-sequence.md @@ -0,0 +1,84 @@ +CREATE SEQUENCE +==================================== + + + +描述 +----------- + +该语句用来创建自增列。 + +格式 +----------- + +```javascript +CREATE SEQUENCE sequence_name +[MINVALUE value | NOMINVALUE] +[MAXVALUE value | NOMAXVALUE] +[START WITH value] +[INCREMENT BY value] +[CACHE value | NOCACHE] +[ORDER | NOORDER] +[CYCLE | NOCYCLE]; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------| +| MINVALUE value \| NOMINVALUE | 指定自增列的最小值,取值范围是 -10^27^ \~ (10^27^-1)。 如果指定为 NOMINVALUE,则升序时最小值为 1,降序时最小值为 -(10^27^-1)。 不指定时缺省为 NOMINVALUE。 | +| MAXVALUE value \| NOMAXVALUE | 指定自增列的最大值,取值范围是 (-10^27^+1) \~ 10^27^。 如果指定为 NOMAXVALUE,则升序时最大值为(10^28^-1),降序时最大值为 -1。 不指定时缺省为 NOMAXVALUE。 | +| START WITH value | 指定自增列的起始值。该值必须小于等于 MAXVALUE,且大于等于 MINVALUE。 如果不指定,则升序时默认取值为最小值,降序时默认取值为最大值。 | +| INCREMENT BY value | 指定自增列的自增步数。该值不可以为 0。 如果指定为正数,则自增列为升序;如果指定为负数,则自增列为降序。 不指定缺省值为 1。 | +| CACHE value \| NOCACHE | 指定在内存中预分配的自增值个数,默认为20。 | +| ORDER \| NOORDER | 指定自增列的值是否按顺序生成,默认为 NOORDER。 | +| CYCLE \| NOCYCLE | 指定自增列的值是否循环生成,默认为 NOCYCLE。 | + + + +示例 +----------- + +* 创建一个自增列 s1。 + + + + + + +```javascript +OceanBase(ADMIN@TEST)>create sequence S1 minvalue 1 maxvalue 5 nocycle noorder cache 10240000; +``` + + + +注意事项 +------------- + +* 同时指定 MINVALUE 和 MAXVALUE 时,MINVALUE 必须小于 MAXVALUE。 + + + +* MAXVALUE 和 MINVALUE 之差必须大于等于 INCREMENT BY value。 + + + +* CACHE value 的值必须大于 1,如果 CACHE value 的值为 1,则等价于 NOCACHE。 + + + +* 指定了 CYCLE,且 INCREMENT BY value 小于 0 时,必须指定 MINVALUE。 + + + +* 指定了 CYCLE 时, CACHE 的数量必须不能超过一个 cycle。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/13.create-synonym-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/13.create-synonym-1.md new file mode 100644 index 000000000..6fdb866c0 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/13.create-synonym-1.md @@ -0,0 +1,137 @@ +CREATE SYNONYM +=================================== + + + +描述 +----------- + +该语句用来创建一个同义词。 + +格式 +----------- + +```javascript +CREATE [ OR REPLACE ] [ PUBLIC ] +SYNONYM [ schema. ]synonym +FOR [ schema. ]object; +``` + + + +参数说明 +------------- + + + +| 参数 | 描述 | +|----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OR REPLACE | 表示如果要创建的同义词名称已存在,则使用新的定义重新创建同义词。 | +| PUBLIC | 指定 PUBLIC 来创建公共同义词,所有用户都可以使用。用户必须对基础对象具有相应的权限才能使用该同义词。 在解析对象的引用时,仅当对象没有指定 schema 时,才会使用公共同义词。 如果不指定 PUBLIC,则同义词是私有的,只能当前 schema访问,并且同义词名称在当前 schema 中必须唯一。 | +| \[ schema. \]synonym | schema 指定当前同义词属于哪个 schema,如果指定了 PUBLIC,则对同义词不需要指定 schema;synonym 表示同义词的名称。 | +| \[ schema. \]object | 表示同义词对应对象的名称。 | + + + +示例 +----------- + +* 创建一个同义词。 + + + + + + +```javascript +OceanBase(TEST@TEST)>create table t1(c1 int); +Query OK, 0 rows affected (0.11 sec) + +OceanBase(TEST@TEST)>create synonym s1 for t1; +Query OK, 0 rows affected (0.04 sec) + +OceanBase(TEST@TEST)>insert into s1 values(1); +Query OK, 1 row affected (0.04 sec) + +OceanBase(TEST@TEST)>select * from s1; ++------+ +| C1 | ++------+ +| 1 | ++------+ +1 row in set (0.02 sec) +``` + + + +* 创建一个 PUBLIC 同义词 + + + + + + +```javascript +OceanBase(TEST@TEST)>create public synonym syn_pub for t1; +Query OK, 0 rows affected (0.04 sec) + +OceanBase(TEST@TEST)>select * from syn_pub; ++------+ +| C1 | ++------+ +| 1 | ++------+ +1 row in set (0.01 sec) +``` + + + +注意事项 +------------- + +创建同义词时,需要满足如下权限要求: + +* 在当前的 schema 下创建私有的 synonym,需要 CREATE SYNONYM 权限 + + + +* 在非当前 schema 下创建私有的 synonym,需要 CREATE ANY SYNONYM 权限 + + + +* 创建 PUBLIC 的 synonym,需要 CREATE PUBLIC SYNONYM 权限 + + + +* 对于需要创建 synonym 的对象不需要存在,也不需要具有访问权限 + + + + + + +```javascript +// 创建synonym_user +OceanBase(TEST@TEST)>CREATE USER synonym_user IDENTIFIED BY synonym_user; +Query OK, 0 rows affected (0.04 sec) + +OceanBase(TEST@TEST)>grant CREATE on test.* to synonym_user; +Query OK, 0 rows affected (0.05 sec) + +OceanBase(TEST@TEST)>grant SELECT on test.* to synonym_user; +Query OK, 0 rows affected (0.02 sec) + +// 连接synonym_user +OceanBase(SYNONYM_USER@TEST)>create or replace synonym s1 for t1; +ERROR-00600: internal error code, arguments: -5036, Access denied; you need (at least one of) the CREATE SYNONYM privilege(s) for this operation + +// 重新给定CREATE SYNONYM权限 +OceanBase(TEST@TEST)>grant CREATE SYNONYM on *.* to synonym_user; +Query OK, 0 rows affected (0.03 sec) + +OceanBase(SYNONYM_USER@TEST)>create synonym s1 for t1; +Query OK, 0 rows affected (0.07 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/14.create-table-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/14.create-table-1.md new file mode 100644 index 000000000..66f3d4583 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/14.create-table-1.md @@ -0,0 +1,396 @@ +CREATE TABLE +================================= + + + +描述 +----------- + +该语句用来在数据库中创建一张新表。 + +格式 +----------- + +```javascript +CREATE [GLOBAL TEMPORARY] TABLE table_name + (table_definition_list) [table_option_list] [partition_option] [on_commit_option] +CREATE [GLOBAL TEMPORARY] TABLE table_name + (table_definition_list) [table_option_list] [partition_option] [AS] select; + +table_definition_list: + table_definition [, table_definition ...] + +table_definition: + column_definition + | INDEX [index_name] index_desc + | [CONSTRAINT [constraint_name]] [PRIMARY KEY|UNIQUE] (column_desc_list) [USING INDEX index_option_list] + | [CONSTRAINT [constraint_name]] FOREIGN KEY (column_name, column_name ...) references_clause constranit_state + | [CONSTRAINT [constraint_name]] CHECK(expression) constranit_state + + +column_definition_list: + column_definition [, column_definition ...] + +column_definition: + column_name data_type + [VISIBLE|INVISIBLE] + { + [DEFAULT expression] + [NULL | NOT NULL] + [CONSTRAINT [constraint_name] [PRIMARY] KEY] [UNIQUE [KEY]] + [CONSTRAINT [constraint_name] CHECK(expression) constranit_state] + [CONSTRAINT [constraint_name] references_clause + | + [GENERATED ALWAYS] AS (expression) [VIRTUAL] + [NULL | NOT NULL] [UNIQUE KEY] [[PRIMARY] KEY] [UNIQUE LOWER_KEY] [COMMENT string] + } + +references_clause: + REFERENCES table_name [ (column_name, column_name ...) ] [ON DELETE {CASCADE}]] + +constranit_state: + [RELY|NORELY] [USING INDEX index_option_list] [ENABLE|DISABLE] [VALIDATE|NOVALIDATE] + +index_desc: + (column_desc_list) [index_option_list] + +column_desc_list: + column_desc [, column_desc ...] + +column_desc: + column_name [ASC | DESC][NULL LAST|NULL FIRST] + +index_option_list: + index_option [ index_option ...] + +index_option: + [GLOBAL | LOCAL] + | block_size + | compression + | STORING(column_name_list) + | comment + +table_option_list: + table_option [ table_option ...] + +table_option: + primary_zone + | replica_num + | table_tablegroup + | block_size + | compression + | comment + | DUPLICATE_SCOPE [=] "none|zone|region|cluster" + | LOCALITY [=] "locality description" + | ENABLE ROW MOVEMENT + | DISABLE ROW MOVEMENT + | physical_attribute + | parallel_clause + +physical_attribute_list: + physical_attribute [physical_attribute] + +physical_attribute: + PCTFREE [=] num + | PCTUSED num + | INITRANS num + | MAXTRANS num + | STORAGE(storage_option [storage_option] ...) + | TABLESPACE tablespace + +parallel_clause: + {NOPARALLEL | PARALLEL integer} + +compression: + NOCOMPRESS + | COMPRESS { BASIC | FOR OLTP | FOR QUERY [LOW|HIGH] | FOR ARCHIVE [LOW|HIGH]} + +storage_option: + INITIAL_ num [K|M|G|T|P|E] + | NEXT num [K|M|G|T|P|E] + | MINEXTENTS num [K|M|G|T|P|E] + | MAXEXTENTS num [K|M|G|T|P|E] + +partition_option: + PARTITION BY HASH(column_name_list) + [subpartition_option] hash_partition_define + | PARTITION BY RANGE (column_name_list) + [subpartition_option] (range_partition_list) + | PARTITION BY LIST (column_name_list) + [subpartition_option] (list_partition_list) + +/*模板化二级分区*/ +subpartition_option: + SUBPARTITION BY HASH (column_name_list) hash_subpartition_define + | SUBPARTITION BY RANGE (column_name_list) SUBPARTITION TEMPLATE + (range_subpartition_list) + | SUBPARTITION BY LIST (column_name_list) SUBPARTITION TEMPLATE + (list_subpartition_list) + +/*非模板化二级分区*/ +subpartition_option: + SUBPARTITION BY HASH (column_name_list) + | SUBPARTITION BY RANGE (column_name_list) + | SUBPARTITION BY LIST (column_name_list) + +subpartition_list: + (hash_subpartition_list) + | (range_subpartition_list) + | (list_subpartition_list) + +hash_partition_define: + PARTITIONS partition_count [TABLESPACE tablespace] [compression] + | (hash_partition_list) + +hash_partition_list: + hash_partition [, hash_partition, ...] + +hash_partition: + partition [partition_name] [subpartition_list/*仅非模板化二级分区可定义*/] + +hash_subpartition_define: + SUBPARTITIONS subpartition_count + | SUBPARTITION TEMPLATE (hash_subpartition_list) + +hash_subpartition_list: + hash_subpartition [, hash_subpartition, ...] + +hash_subpartition: + subpartition [subpartition_name] + +range_partition_list: + range_partition [, range_partition ...] + +range_partition: + PARTITION [partition_name] + VALUES LESS THAN {(expression_list) | (MAXVALUE)} + [subpartition_list/*仅非模板化二级分区可定义*/] + [ID = num] [physical_attribute_list] [compression] + +range_subpartition_list: + range_subpartition [, range_subpartition ...] + +range_subpartition: + SUBPARTITION subpartition_name + VALUES LESS THAN {(expression_list) | MAXVALUE} [physical_attribute_list] + +list_partition_list: + list_partition [, list_partition] ... + +list_partition: + PARTITION [partition_name] + VALUES (DEFAULT|expression_list) + [subpartition_list/*仅非模板化二级分区可定义*/] + [ID num] [physical_attribute_list] [compression] + +list_subpartition_list: + list_subpartition [, list_subpartition] ... + +list_subpartition: + SUBPARTITION [partition_name] VALUES (DEFAULT|expression_list) [physical_attribute_list] + +expression_list: + expression [, expression ...] + +column_name_list: + column_name [, column_name ...] + +partition_name_list: + partition_name [, partition_name ...] + +partition_count | subpartition_count: + INT_VALUE + +on_commit_option: + ON COMMIT DELETE ROWS + | ON COMMIT PRESERVE ROWS +``` + + + +参数说明 +------------- + + + +| 参数 | 描述 | +|-----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| DUPLICATE_SCOPE | 用来指定复制表属性,取值如下: * none:表示该表是一个普通表 * zone:表示该表是一个复制表,leader 需要将事务复制到本 zone 的所有 F 副本及 R 副本 * region:表示该表是一个复制表,leader 需要将事务复制到本 region 的所有 F 副本及 R 副本 * cluster:表示该表是一个复制表,leader 需要将事务复掉到 cluster 的所有 F 副本及 R 副本 不指定 DUPLICATE_SCOPE 的情况下,默认值为 none。 | +| BLOCK_SIZE | 指定表的微块大小 | +| COMPRESSION | 指定存储格式 flat/encoding 以及压缩方法,对应如下: * nocompress:flat 格式, none 压缩 * compress \[basic\]:flat 格式, lz4_1.0 压缩 * compress for oltp:flat 格式, zstd_1.0 压缩 * query \[low\|high\]:encoding 格式, lz4_1.0 压缩 * archive \[low\|high\]:encoding 格式, zstd_1.0 压缩 | +| primary_zone | 指定主 Zone(副本 Leader 所在 Zone)。 | +| replica_num | 指定副本数。 | +| table_tablegroup | 指定表所属的 talegroup。 | +| comment | 注释。 | +| LOCALITY | 描述副本在 Zone 间的分布情况,如:F@z1,F@z2,F@z3,R@z4 表示 z1, z2, z3 为全功能副本,z4 为只读副本。 | +| physical_attribute | PCTFREE: 指定宏块保留空间百分比 其它属性:STORAGE, TABLESPACE 等仅为了语法兼容方便迁移,不生效 | +| ENABLE/DISABLE ROW MOVEMENT | 是否允许更会致行在不同分区间移动的分区键更新 | +| ON COMMIT DELETE ROWS | 事务级临时表:提交时删除数据 | +| ON COMMIT PRESERVE ROWS | 会话级临时表:会话结束时删除数据 | +| parallel_clause | 指定表级别的并行度: * NOPARALLEL:并行度为1,默认配置 * PARALLEL integer:指定并行度,integer 取值大于等于 1。 **注意** 当指定并行度时,优先级关系如下:通过 hint 指定的并行度 \> 通过 `ALTER SESSION` 指定的并行度 \> 表级别的并行度 | + + + +示例 +----------- + +* 创建数据库表。 + + + + + + +```javascript +CREATE TABLE test (c1 INT PRIMARY KEY, c2 VARCHAR(50)) REPLICA_NUM = 3, PRIMARY_ZONE = 'zone1'; +``` + + + +* 创建一个复制表。 + + + + + + +```javascript +CREATE TABLE item (i_id INT +, i_name VARCHAR(24) +, i_price DECIMAL(5,2) +, i_data VARCHAR(50) +, i_im_id INT +, PRIMARY KEY(i_id)) COMPRESS FOR QUERY pctfree=0 BLOCK_SIZE=16384 +DUPLICATE_SCOPE='cluster' LOCALITY='F@zone1, F@zone2,R{all_server}@zone3' primary_zone='zone1'; +``` + + + +* 创建带索引的表。 + + + + + + +```javascript +create table t1 (c1 int primary key, c2 int, c3 int, index i1 (c2)); +``` + + + +* 创建 hash 分区,分区数为 8 的表。 + + + + + + +```javascript +create table t1 (c1 int primary key, c2 int) partition by hash(c1) partitions 8; +``` + + + +* 创建一级分区为 range 分区,二级分区为 hash 分区的表。 + + + + + + +```javascript +create table t1 (c1 int, c2 int, c3 int) +partition by range(c1) subpartition by hash(c2) subpartitions 5 +(partition p0 values less than(0), partition p1 values less than(100)); +``` + + + +* 开启 encoding 并使用 zstd 压缩,宏块保留空间为 5%。 + + + + + + +```javascript +create table t1 (c1 int, c2 int, c3 varchar(64)) +COMPRESS FOR ARCHIVE +PCTFREE 5; +``` + + + +* 创建一个事务级临时表。 + + + + + + +```javascript +create global temporary table t1 (c1 int) on commit delete rows ; +``` + + + +* 创建一个带约束的表。 + + + + + + +```javascript +create table t1 (c1 int, c2 int, c3 int, CONSTRAINT equal_check CHECK(c2 = c3 * 2) ENABLE VALIDATE); +``` + + + +* 创建非模板化的二级分区表。 + + + + + + +```unknow +create table t_range_range1 (c1 int, c2 int, c3 int) partition by range(c1) +subpartition by range (c2) +( + partition p0 values less than (100) + ( + subpartition p0_r1 values less than (100), + subpartition p0_r2 values less than (200), + subpartition p0_r3 values less than (300) + ), + partition p1 values less than (200) + ( + subpartition p1_r1 values less than (100), + subpartition p1_r2 values less than (200), + subpartition p1_r3 values less than (300) + ), + partition p2 values less than (300) + ( + subpartition p2_r1 values less than (100), + subpartition p2_r2 values less than (200), + subpartition p2_r3 values less than (300) + ) +); +``` + + + +* 创建表 t1 的并行度为 3。 + + + + + + +```unknow +CREATE TABLE t1(c1 int primary key, c2 int) PARALLEL 3; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/15.create-tablegroup-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/15.create-tablegroup-1.md new file mode 100644 index 000000000..c777b99e6 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/15.create-tablegroup-1.md @@ -0,0 +1,99 @@ +CREATE TABLEGROUP +====================================== + + + +描述 +----------- + +该语句用来创建表组。 +**说明** + + + +只有租户下的管理员权限才可以创建表组。 + +格式 +----------- + +```javascript +CREATE TABLEGROUP [IF NOT EXISTS] tablegroupname [opt_tablegroup_option_list] [opt_tg_partition_option] + +opt_tablegroup_option_list: +tablegroup_option [tablegroup_option] + +tablegroup_option: +LOCALITY [=] locality_name +| PRIMARY_ZONE [=] primary_zone_name + +opt_tg_partition_option: +PARTITION BY + HASH COLUMN_NUM [tg_subpartition_option] PARTITIONS INTNUM +| RANGE COLUMNS COLUMN_NUM [tg_subpartition_option] {PARTITION partition_name VALUES LESS THAN range_partition_expr, ...} +| LIST COLUMNS COLUMN_NUM [tg_subpartition_option] {PARTITION partition_name VALUES in list_partition_expr, ...} + +tg_subpartition_option: +SUBPARTITION BY +RANGE COLUMN_NUM SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...} +| HASH COLUMN_NUM [SUBPARTITIONS INTNUM] +| LIST COLUMN_NUM SUBPARTITION TEMPLATE {SUBPARTITION partition_name VALUES in list_partition_expr, ...} +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| tablegroupname | 表组名称,最长 64 个字符,字符只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能使用 OceanBase 的关键字。 如果要创建的表组名称已存在,并且没有指定 IF NOT EXISTS,则会出现错误。 | +| opt_tablegroup_option_list | 表组的分区方式、locality、primary zone 必须和组内的表完全一致。 组内的表信息不能独立变更某一项,只可以通过操作表组进行批量操作。 相同的 locality:副本类型、个数、位置要完全一致 相同的 primary zone:leader 位置及其优先级要完全一致 相同的分区方式: * 分区类型相同(例如,都是 hash+range 分区)。 * 如果是 hash 分区,要求引用的列数相同,且分区个数相同。 * 如果是 range 分区,要求引用的列数相同,且分区数相同,且 range 分割点相同。 * 对于二级分区,根据分区类型,要求和上述一致 | +| opt_tg_partition_option | 表组的分区规则定义,与 CREATE TABLE 使用同样的分区方式。 表组没有具体的列定义,所以 HASH、RANGE、LIST 不需要写出具体的列,只需要指定列个数(COLUMN_NUM)。 | + + + +示例 +----------- + +* 创建名为 myTableGroup1 的表组。 + + + + + + +```javascript +OceanBase(admin@test)> CREATE TABLEGROUP myTableGroup1; +Query OK, 0 rows affected (0.07 sec) + +OceanBase(admin@test)> create table myt1 (c1 int, c2 int ) tablegroup = myTableGroup1; +Query OK, 0 rows affected (0.28 sec) + +OceanBase(admin@test)> create table myt2 (c1 int, c2 int ) tablegroup = myTableGroup1; +Query OK, 0 rows affected (0.26 sec) +``` + + + +* 创建 hash 分区的表组 tgh,同时创建 hash 分区的表 ttgh,且分区个数相同。 + + + + + + +```javascript +OceanBase(admin@test)> create tablegroup tgh locality='F,R{ALL_SERVER}@z1' partition by hash partitions 10; +Query OK, 0 rows affected (0.09 sec) + +OceanBase(admin@test)> create table ttgh(c1 int, c2 int) locality='F,R{ALL_SERVER}@z1' partition by hash(c1) partitions 10; +Query OK, 0 rows affected (0.55 sec) + +OceanBase(admin@test)> create table ttgh2(c1 int, c2 int) locality='F,R{ALL_SERVER}@z1' partition by hash(c2) partitions 10; +Query OK, 0 rows affected (0.39 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/16.create-tablespace.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/16.create-tablespace.md new file mode 100644 index 000000000..d37fef8ac --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/16.create-tablespace.md @@ -0,0 +1,49 @@ +CREATE TABLESPACE +====================================== + + + +描述 +----------- + +该语句用来创建 TableSpace 逻辑对象,TableSpace 属性支持加密。 + +格式 +----------- + +```javascript +CREATE TABLESPACE tablespace_name [ENCRYPTION USING 'AES-256|AES-128|AES-192|SM4'] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|--------------------------------|------------------------| +| tablespace_name | 指定要创建的 TableSpace 对象名称 | +| ENCRYPTION USING | 使用加密的关键字 | +| AES-256\|AES-128\|AES-192\|SM4 | 分别代表不同的加密算法 | + + + +示例 +----------- + +* 创建 TableSpace 对象。 + + + + + + +```javascript +CREATE TABLESPACE ob_tablespace; + +CREATE TABLESPACE ob_tablespace ENCRYPTION USING 'AES-256'; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/17.create-user-2.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/17.create-user-2.md new file mode 100644 index 000000000..64d8f8b06 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/17.create-user-2.md @@ -0,0 +1,103 @@ +CREATE USER +================================ + + + +描述 +----------- + +该语句用于创建新的 OceanBase 用户。创建新用户后,可以使用该用户连接 OceanBase。 +**说明** + + + +必须拥有 CREATE USER 的系统权限,才可以使用 CREATE USER 命令。 + +格式 +----------- + +```javascript +create_user_stmt: + CREATE USER user_name [host_name] IDENTIFIED BY password [REQUIRE {NONE | SSL | X509 | tls_option_list}] + [PROFILE user_profile] [DEFAULT TABLESPACE table_space] [PRIMARY_ZONE 'zone_name'] + +password: + STR_VALUE + +tls_option_list: + tls_option + | tls_option_list, tls_option + +tls_option: + CIPHER STR_VALUE + | ISSUER STR_VALUE + | SUBJECT STR_VALUE +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|--------------------------------|------------------------------------------------------| +| user_name | 用户名,新建用户后,"dba_users"表会新增一行该用户的表项。如果同名用户已经存在,则报错。 | +| host_name | 用户所在的主机名,为 @xxx.xxx.xx.x格式。 | +| IDENTIFIED BY | 必须使用 IDENTIFIED BY 子句,可以为账户指定一个密码。 | +| REQUIRE | 指定用户使用的加密协议为 NONE, SSL, X509 和 tls_option_list 中的一种。 | +| PROFILE user_profile | 指定用户使用的 Profile。 | +| DEFAULT TABLESPACE table_space | 指定用户的默认表空间。 | +| PRIMARY_ZONE | 指定用户的 Primary Zone。 | + + + +示例 +----------- + +1. 执行以下命令创建名为 sqluser 的用户,密码为 123456。 + + ```javascript + CREATE USER sqluser IDENTIFIED BY 123456; + ``` + + + + + + + + +2. 执行以下命令查看创建的用户。 + + ```javascript + SELECT username FROM dba_users; + ``` + + + + 执行结果如下所示。 + + ```javascript + OceanBase(TEST@TEST)>CREATE USER sqluser IDENTIFIED BY 123456; + Query OK, 0 rows affected (0.05 sec) + OceanBase(TEST@TEST)>SELECT username FROM dba_users; + +------------+ + | USERNAME | + +------------+ + | SYS | + | LBACSYS | + | ORAAUDITOR | + | ROOT | + | TEST | + | ADMIN | + | SQLUSER | + +------------+ + 7 rows in set (0.01 sec) + ``` + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/18.create-view-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/18.create-view-1.md new file mode 100644 index 000000000..3ed0bfd3b --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/18.create-view-1.md @@ -0,0 +1,59 @@ +CREATE VIEW +================================ + + + +描述 +----------- + +该语句用于创建视图语句,如果指定了 OR REPLACE 子句,该语句能够替换已有的视图。 + +视图在数据库中实际上并不是以表的形式存在,每次使用时他们就会派生。视图是通过 CREATE VIEW 语句中指定的 SELECT 语句的结果生成的。 + +支持可更新视图。 + +格式 +----------- + +```javascript +create_view_stmt: + CREATE [OR REPLACE] VIEW view_name [(column_name_list)] AS select_stmt; + +column_name_list: + column_name [, column_name ...] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OR REPLACE | 表示如果要创建的视图名称已存在,则使用新的定义重新创建视图。 | +| view_name | 视图名。 | +| select_stmt | 是一种 SELECT 语句。它给出了视图的定义。该语句可以从基表或其他视图进行选择。 | +| column_name_list | 视图必须具有唯一的列名,不得有重复,就像基表那样。默认情况下,由 SELECT 语句检索的列名将用作视图列名。 要想为视图列定义明确的名称,可使用可选的 column_name_list 子句,列出由逗号隔开的 ID。column_name_list 中的名称数目必须等于SELECT语句检索的列数。 SELECT 语句检索的列可以是对表列的简单引用。也可以是使用函数、常量值、操作符等的表达式。 | + + + +示例 +----------- + +* 选择表 t 中的 c1、c2 列来创建视图 v。 + + + + + + +```javascript +create or replace view v(vc1, vc2) as select c1, c2 from t; +``` + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/19.drop-index-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/19.drop-index-1.md new file mode 100644 index 000000000..0d33f803a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/19.drop-index-1.md @@ -0,0 +1,49 @@ +DROP INDEX +=============================== + + + +描述 +----------- + +该语句用来删除索引。当索引过多时,维护开销增大,因此,需要删除不必要的索引。 + +删除索引的时候需要等待一段时间才能完全删除。 + +格式 +----------- + +```javascript +DROP INDEX [schema.]indexname; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-----------|--------------| +| schema | 指定 schema 名称 | +| indexname | 指定索引名称 | + + + +示例 +----------- + +* 删除索引 test_index。 + + + + + + +```javascript +DROP INDEX test_index; +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/2.alter-outline-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/2.alter-outline-1.md new file mode 100644 index 000000000..68b3b1d8e --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/2.alter-outline-1.md @@ -0,0 +1,86 @@ +ALTER OUTLINE +================================== + + + +描述 +----------- + +该语句仅支持使用 SQL_TEXT 创建的 Outline,可用于添加绑定 Outline 和限流规则。 + +格式 +----------- + +```javascript +ALTER OUTLINE outline_name ADD stmt [ TO target_stmt ] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| outline_name | 指定要创建的 Outline 名称。 | +| stmt | 一般为一个带有 Hint 和原始参数的 DML 语句。 | +| TO target_stmt | 如果不指定 `TO target_stmt`,则表示如果数据库接受的 SQL 参数化后与 `stmt` 去掉 Hint 参数化文本相同,则将该 SQL 绑定 `stmt` 中 Hint 生成执行计划;如果期望对含有 Hint 的语句进行固定计划,则需要 `TO target_stmt` 来指明原始的 SQL。 **注意** 在使用 `target_stmt` 时,严格要求 `stmt` 与`target_stmt` 在去掉 Hint 后完全匹配。 | + + + +示例 +----------- + +* 通过 ALTER OUTLINE 来添加限流规则。 + + + + + + +```javascript +obclient>CREATE OUTLINE ol_1 ON SELECT /*+max_concurrent(1)*/ * FROM t1 WHERE c1 =1 + AND c2 = 1; +obclient>ALTER OUTLINE ol_1 ADD SELECT /*+max_concurrent(1)*/ * FROM t1 WHERE c1 =1 + AND c2 = ?; +obclient>ALTER OUTLINE ol_1 ADD SELECT /*+max_concurrent(1)*/ * FROM t1 WHERE c1 =? + AND c2 = 1; +``` + + + +* 通过 ALTER OUTLINE 来添加执行计划。 + + + + + + +```javascript +obclient>CREATE OUTLINE ol_2 ON SELECT /*+max_concurrent(1)*/ * FROM t1,t2 + WHERE t1.c1 = 1; +obclient>ALTER OUTLINE ol_2 ADD SELECT /*+use_nl(t2)*/ * FROM t1,t2 + WHERE t1.c1 = 1; +``` + + + +注意事项 +------------- + +* 同一个 `outline_name` 只能指定一个执行计划。如果通过 `CREATE OUTLINE` 语句指定了执行计划,则无法通过执行 `ALTER OUTLINE` 时再添加。 + + + +* 同 `CREATE OUTLINE` 类似,在 `ALTER OUTLINE` 时不能同时指定限流规则和执行计划。 + + + +* 执行 `ALTER OUTLINE` 时,需要` outline_name` 和 `signature` 同时匹配。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/20.drop-outline-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/20.drop-outline-1.md new file mode 100644 index 000000000..a98a1de41 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/20.drop-outline-1.md @@ -0,0 +1,46 @@ +DROP OUTLINE +================================= + + + +描述 +----------- + +该语句用于删除 OceanBase 数据库中的 OUTLINE。 + +格式 +----------- + +```javascript +DROP OUTLINE outline_name; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|--------------|--------------------| +| outline_name | 指定要删除的 OUTLINE 名称。 | + + + +示例 +----------- + +* 删除 OUTLINE ol_1 + + + + + + +```javascript +DROP OUTLINE ol_1; +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/21.drop-restore-point-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/21.drop-restore-point-1.md new file mode 100644 index 000000000..97f558a61 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/21.drop-restore-point-1.md @@ -0,0 +1,45 @@ +DROP RESTORE POINT +======================================= + + + +描述 +----------------------- + +该语句用来删除还原点(Restore Point)。 + +格式 +----------------------- + +```unknow +DROP RESTORE POINT restore_point; +``` + + + +参数解释 +------------------------- + + + +| 参数 | 描述 | +|---------------|----------| +| restore_point | 指定还原点名称。 | + + + +示例 +----------------------- + +* 删除一个还原点 rp1。 + + ```unknow + obclient> DROP RESTORE POINT rp1; + Query OK, 0 rows affected (0.01 sec) + ``` + + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/22.drop-sequence.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/22.drop-sequence.md new file mode 100644 index 000000000..0ccb792a3 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/22.drop-sequence.md @@ -0,0 +1,47 @@ +DROP SEQUENCE +================================== + + + +描述 +----------- + +该语句用来删除自增列。 + +格式 +----------- + +```javascript +DROP SEQUENCE sequence_name +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|---------------|-------------| +| sequence_name | 指定要删除的自增列名称 | + + + +示例 +----------- + +* 删除自增列 S1 + + + + + + +```javascript +OceanBase(TEST@TEST)>drop sequence S1; +Query OK, 0 rows affected (0.16 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/23.drop-synonym-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/23.drop-synonym-1.md new file mode 100644 index 000000000..ae46f088a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/23.drop-synonym-1.md @@ -0,0 +1,88 @@ +DROP SYNONYM +================================= + + + +描述 +----------- + +该语句用来删除一个同义词。 + +格式 +----------- + +```javascript +DROP [PUBLIC] SYNONYM [ schema. ]synonym; +``` + + + +参数说明 +------------- + + + +| 参数 | 描述 | +|----------------------|----------------------------------------------------------------------------| +| PUBLIC | 指定 PUBLIC 来删除公共同义词;如果不指定 PUBLIC,则删除私有同义词。 | +| \[ schema. \]synonym | schema 指定当前同义词属于哪个 schema,如果指定了 PUBLIC,则对同义词不需要指定 schema;synonym 表示同义词的名称。 | + + + +举例 +----------- + +* 删除一个同义词。 + + + + + + +```javascript +OceanBase(TEST@TEST)>drop synonym test.s1; +Query OK, 0 rows affected (0.04 sec) +``` + + + +* 删除一个 PUBLIC 同义词。 + + + + + + +```javascript +OceanBase(TEST@TEST)>drop public synonym syn_pub; +Query OK, 0 rows affected (0.03 sec) +``` + + + +注意事项 +------------- + +1. 删除同义词时,需要满足如下权限: + + + + + + + + + + + + + + + + +2. 删除 public synonym 时,必须指定 PUBLIC 关键字,且不能指定 schema。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/24.drop-table-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/24.drop-table-1.md new file mode 100644 index 000000000..f9f9f9da8 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/24.drop-table-1.md @@ -0,0 +1,48 @@ +DROP TABLE +=============================== + + + +描述 +----------- + +该语句用于删除 OceanBase 数据库中的表。 + +格式 +----------- + +```javascript +DROP TABLE table_name [CASCADE CONSTRAINTS] [PURGE] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|---------------------|------------------------| +| table_name | 指定要删除的表名 | +| CASCADE CONSTRAINTS | 级联删除跟 table_name 关联的约束 | +| PURGE | 彻底删除表 (不进回收站) | + + + +示例 +----------- + +* 删除表 test + + + + + + +```javascript +DROP TABLE test; +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/25.drop-tablegroup-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/25.drop-tablegroup-1.md new file mode 100644 index 000000000..0c2ff80ff --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/25.drop-tablegroup-1.md @@ -0,0 +1,46 @@ +DROP TABLEGROUP +==================================== + + + +描述 +----------- + +该语句用来删除表组。 + +格式 +----------- + +```javascript +DROP TABLEGROUP [IF EXISTS] tablegroupname +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|----------------|---------------------------------------------| +| tablegroupname | 表组名称。如果要删除的表组名称不存在,并且没有指定 IF EXISTS,则会出现错误。 | + + + +示例 +----------- + +* 删除名为 myTableGroup1 的表组。 + + + + + + +```javascript +OceanBase(admin@test)> DROP TABLEGROUP myTableGroup1; +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/26.drop-tablespace.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/26.drop-tablespace.md new file mode 100644 index 000000000..e67926d51 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/26.drop-tablespace.md @@ -0,0 +1,45 @@ +DROP TABLESPACE +==================================== + + + +描述 +----------- + +该语句用来删除 TableSpace 逻辑对象,仅在 TableSpace下没有表时可以删除成功。 + +格式 +----------- + +```javascript +DROP TABLESPACE tablespace_name; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-----------------|----------------------| +| tablespace_name | 指定要删除的 TableSpace 名称 | + + + +示例 +----------- + +* 删除 TableSpace 对象 ts + + + + + + +```javascript +OceanBase(root@oceanbase)>drop tablesapce ts; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/27.drop-user-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/27.drop-user-1.md new file mode 100644 index 000000000..e3cb81156 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/27.drop-user-1.md @@ -0,0 +1,61 @@ +DROP USER +============================== + + + +描述 +----------- + +该语句用于删除一个 OceanBase 用户。 +**说明** + + + +* 必须拥有 CREATE USER 的系统权限,才可以使用 DROP USER 命令。 + + + +* CASCADE 会指定在删除用户前,删除该用户拥有的所有 Object,包括权限,数据库,表等。 + + + + + + +格式 +----------- + +```javascript +DROP USER username CASCADE; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|----------|----------------| +| username | 用户名,只支持删除单个用户。 | + + + +示例 +----------- + +* 执行以下命令,删除名为 sqluser 的用户。 + + + + + + +```javascript +oceanBase(admin@TEST)>DROP USER sqluser CASCADE; +Query OK, 0 rows affected (0.06 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/28.drop-view-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/28.drop-view-1.md new file mode 100644 index 000000000..03a23e818 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/28.drop-view-1.md @@ -0,0 +1,53 @@ +DROP VIEW +============================== + + + +描述 +----------- + +该语句用于删除一个或多个视图。 +**说明** + + + +当前用户必须在每个视图上有 DROP 权限。 + +格式 +----------- + +```javascript +drop_view_stmt: +DROP VIEW view_name [CASCADE | RESTRICT]; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|---------------------|-----------------------------| +| view_name | 删除的视图名 | +| CASCADE \| RESTRICT | CASCADE 和 RESTRICT 会被解析和忽略。 | + + + +示例 +----------- + +* 删除视图 v1 + + + + + + +```javascript +OceanBase(root@oceanbase)>drop view v1; +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/29.RENAME.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/29.RENAME.md new file mode 100644 index 000000000..7ef4319ae --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/29.RENAME.md @@ -0,0 +1,64 @@ +RENAME +=========================== + + + +描述 +----------- + +该语句用来对对象进行重命名。 + +格式 +----------- + +```javascript +RENAME obj_name TO new_obj_name; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|--------------|-------| +| obj_name | 原对象名。 | +| new_obj_name | 新对象名。 | + + + +示例 +----------- + +1. 创建表 t1 和 t2。 + + + + + + +```javascript +create table t1(c1 int); +``` + + + +2. 将表 t1 重命名为 t11。 + + + + + + +```javascript +rename t1 to t11; +``` + + + +注意事项 +------------- + +重命名操作可以对表、视图、私有同义词、sequence 进行。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/3.alter-sequence.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/3.alter-sequence.md new file mode 100644 index 000000000..49a66536a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/3.alter-sequence.md @@ -0,0 +1,72 @@ +ALTER SEQUENCE +=================================== + + + +描述 +----------- + +该语句用来修改自增列。 + +格式 +----------- + +```javascript +ALTER SEQUENCE sequence_name +[MINVALUE value | NOMINVALUE] +[MAXVALUE value | NOMAXVALUE] +[INCREMENT BY value] +[CACHE value | NOCACHE] +[ORDER | NOORDER] +[CYCLE | NOCYCLE]; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------| +| MINVALUE value \| NOMINVALUE | 指定自增列的最小值,取值范围是 -10^27^ \~ (10^27^-1)。 如果指定为 NOMINVALUE,则升序时最小值为 1,降序时最小值为 -(10^27^-1)。 不指定时缺省为 NOMINVALUE。 | +| MAXVALUE value \| NOMAXVALUE | 指定自增列的最大值,取值范围是 (-10^27^+1) \~ 10^27^。 如果指定为 NOMAXVALUE,则升序时最大值为(10^28^-1),降序时最大值为 -1。 不指定时缺省为 NOMAXVALUE。 | +| START WITH value | 指定自增列的起始值。该值必须小于等于 MAXVALUE,且大于等于 MINVALUE。 如果不指定,则升序时默认取值为最小值,降序时默认取值为最大值。 | +| INCREMENT BY value | 指定自增列的自增步数。该值不可以为 0。 如果指定为正数,则自增列为升序;如果指定为负数,则自增列为降序。 不指定缺省值为 1。 | +| CACHE value \| NOCACHE | 指定在内存中预分配的自增值个数,默认为20。 | +| ORDER \| NOORDER | 指定自增列的值是否按顺序生成,默认为 NOORDER。 | +| CYCLE \| NOCYCLE | 指定自增列的值是否循环生成,默认为 NOCYCLE。 | + + + +示例 +----------- + +* 修改自增列 my_sequence 的最大值,并指定自增值循环生成。 + + + + + + +```javascript +OceanBase(root@oceanbase)>ALTER SEQUENCE my_sequence MAXVALUE 1024 CYCLE; +``` + + + +注意事项 +------------- + +* `ALTER SEQUENCE` 不支持修改 START WITH 值。如果希望修改下一个 SEQUENCE 的起始位置,可以通过修改 `INCREMENT BY` + + 实现。 + + +* 其他自增列取值注意事项可参考 [CREATE SEQUENCE](/zh-CN/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/12.create-sequence.md) 语句。 + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/30.truncate-table-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/30.truncate-table-1.md new file mode 100644 index 000000000..e9094c78a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/30.truncate-table-1.md @@ -0,0 +1,59 @@ +TRUNCATE TABLE +=================================== + + + +描述 +----------- + +该语句用于完全清空指定表,但是保留表结构,包括表中定义的 Partition 信息。从逻辑上说,该语句与用于删除所有行的DELETE FROM语句相同。执行TRUNCATE语句,必须具有表的删除和创建权限。 + +TRUNCATE TABLE 语句与 DELETE FROM 语句有以下不同: + +* 删减操作会取消并重新创建表,这比一行一行的删除行要快很多。 + + + +* TRUNCATE TABLE 语句执行结果显示影响行数始终显示为 0 行。 + + + + + + +格式 +----------- + +```javascript +TRUNCATE [TABLE] table_name; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|------------|-------| +| table_name | 指定表名。 | + + + +示例 +----------- + +* 完全清空表 tb1。 + + + + + + +```javascript +OceanBase(root@oceanbase)>TRUNCATE TABLE tb1; +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/4.alter-session.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/4.alter-session.md new file mode 100644 index 000000000..2a68341dc --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/4.alter-session.md @@ -0,0 +1,94 @@ +ALTER SESSION +================================== + + + +描述 +----------- + +该语句用来修改 SESSION 状态。 + +ALTER SESSION 下面对应了多种功能的语句,目前支持四种: + +* 切换当前 SESSION 连接的数据库 + + + +* 修改当前 SESSION 的隔离级别 + + + +* 设置 SESSION 变量,支持同一个语句设置多个变量 + + + +* 设置 QUERY 或 DML 的并行执行能力 + + + + + + +格式 +----------- + +```javascript +ALTER SESSION SET CURRENT_SCHEMA = current_schema; +ALTER SESSION SET ISOLATION_LEVEL = [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]; +ALTER SESSION SET var1_name = var1_value var2_name = var2_value ...; +ALTER SESSION { ENABLE | DISABLE | FORCE } PARALLEL { DML | QUERY } [ PARALLEL integer ]; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|---------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| CURRENT_SCHEMA | 指定 SESSION 连接要切换到的数据库名称。 | +| ISOLATION_LEVEL | 指定 SESSION 的隔离级别。 | +| var1_name = var1_value var2_name = var2_value ... | 指定要设置的 SESSION 变量名称和取值。设置多个变量时,变量之间没有逗号分隔。 | +| { ENABLE \| DISABLE \| FORCE } PARALLEL | 设置 QUERY 或 DML 的并行执行能力: * ENABLE:默认情况下 SESSION 上并行度的值根据Table DOP的值进行决定 * DISABLE:默认情况下 SESSION 上的并行度的值为 1 * FORCE:指定 QUERY 或 DML 的并行度的值,此时参数 `PARALLEL integer` 必须指定。 **注意** 当指定并行度时,优先级关系如下:通过 hint 指定的并行度 \> 通过 `ALTER SESSION` 指定的并行度 \> 表级别的并行度 | + + + +示例 +----------- + +* 修改 SESSION 的变量值 recyclebin、sql_warnings 和 tx_isolation。 + + + + + + +```javascript +obclient>alter session set recyclebin = 'on' sql_warnings = 'on' tx_isolation = 'read-committed'; +Query OK, 0 rows affected (0.01 sec) +``` + + + +* 设置 SESSION 上 QUERY 和 DML 的并行执行。 + + + + + + +```unknow +alter session force parallel query parallel 3; +select * from t1; # 以并发度为 3 并行执行 +alter session force parallel query parallel 1; +select * from t1; # 串行执行 + +alter session force parallel dml parallel 3; +insert into t3 select * from t1; # 开启 PDML 路径,以并发度为 3 并行执行 +alter session force parallel dml parallel 1; +insert into t3 select * from t1; # 串行执行 +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/5.alter-table-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/5.alter-table-1.md new file mode 100644 index 000000000..9da888a36 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/5.alter-table-1.md @@ -0,0 +1,414 @@ +ALTER TABLE +================================ + + + +描述 +----------- + +该语句用来修改已存在的表的结构,比如:修改表及表属性、新增列、修改列及属性、删除列等。 + +格式 +----------- + +```javascript +alter_table_stmt: + ALTER TABLE table_name + alter_table_action_list; + | RENAME TABLE rename_table_action_list; + +alter_table_action_list: + alter_table_action [, alter_table_action ...] + +alter_table_action: + ADD [COLUMN] {column_definition | (column_definition_list)} + | MODIFY [COLUMN] column_definition + | MODIFY CONSTRAINT constraint_name { ENABLE | DISABLE } + | DROP [COLUMN] column_name + | ADD [CONSTRAINT [constraint_name]] UNIQUE {INDEX | KEY} [index_name] index_desc + | ADD [CONSTRAINT [constraint_name]] FOREIGN KEY (column_name_list) references_clause + | ADD [CONSTRAINT [constraint_name]] CHECK (expr) + | ADD {INDEX | KEY} [index_name] index_desc + | ADD FULLTEXT [INDEX | KEY] [index_name] fulltext_index_desc + | ALTER INDEX index_name [VISIBLE | INVISIBLE] + | DROP {INDEX | KEY} index_name + | ADD PARTITION (range_partition_list) + | DROP PARTITION (partition_name_list) + | REORGANIZE PARTITION name_list INTO partition_range_or_list + | TRUNCATE PARTITION name_list + | [SET] table_option_list + | RENAME [TO] table_name + | DROP TABLEGROUP + | DROP CONSTRAINT constraint_name + | {ENABLE | DISABLE} CONSTRAINT constraint_name + +rename_table_action_list: + rename_table_action [, rename_table_action ...] + +rename_table_action: + table_name TO table_name + +column_definition_list: + column_definition [, column_definition ...] + +column_definition: + column_name data_type + [DEFAULT const_value] [AUTO_INCREMENT] + [NULL | NOT NULL] [[PRIMARY] KEY] [UNIQUE [KEY]] comment + +index_desc: + (column_desc_list) [index_type] [index_option_list] + +fulltext_index_desc: + (column_desc_list) CTXCAT(column_desc_list) [index_option_list] + +column_desc_list: + column_desc [, column_desc ...] + +column_desc: + column_name [(length)] [ASC | DESC] + +references_clause: + REFERENCES table_name [ (column_name, column_name ...) ] [ON DELETE {CASCADE}]] + +index_type: + USING BTREE + +index_option_list: + index_option [ index_option ...] + +index_option: + [GLOBAL | LOCAL] + | block_size + | compression + | STORING(column_name_list) + | comment + +table_option_list: + table_option [ table_option ...] + +table_option: + | primary_zone + | replica_num + | table_tablegroup + | block_size + | compression + | AUTO_INCREMENT [=] INT_VALUE + | comment + | DUPLICATE_SCOPE [=] "none|zone|region|cluster" + | parallel_clause + +parallel_clause: + {NOPARALLEL | PARALLEL integer} + +partition_option: + PARTITION BY HASH(column_name_list) + [subpartition_option] hash_partition_define + | PARTITION BY RANGE (column_name_list) + [subpartition_option] (range_partition_list) + | PARTITION BY LIST (column_name_list) + [subpartition_option] (list_partition_list) + +/*模板化二级分区*/ +subpartition_option: + SUBPARTITION BY HASH (column_name_list) hash_subpartition_define + | SUBPARTITION BY RANGE (column_name_list) SUBPARTITION TEMPLATE + (range_subpartition_list) + | SUBPARTITION BY LIST (column_name_list) SUBPARTITION TEMPLATE + (list_subpartition_list) + +/*非模板化二级分区*/ +subpartition_option: + SUBPARTITION BY HASH (column_name_list) + | SUBPARTITION BY RANGE (column_name_list) + | SUBPARTITION BY LIST (column_name_list) + +subpartition_list: + (hash_subpartition_list) + | (range_subpartition_list) + | (list_subpartition_list) + +hash_partition_define: + PARTITIONS partition_count [TABLESPACE tablespace] [compression] + | (hash_partition_list) + +hash_partition_list: + hash_partition [, hash_partition, ...] + +hash_partition: + partition [partition_name] [subpartition_list/*仅非模板化二级分区可定义*/] + +hash_subpartition_define: + SUBPARTITIONS subpartition_count + | SUBPARTITION TEMPLATE (hash_subpartition_list) + +hash_subpartition_list: + hash_subpartition [, hash_subpartition, ...] + +hash_subpartition: + subpartition [subpartition_name] + +range_partition_list: + range_partition [, range_partition ...] + +range_partition: + PARTITION [partition_name] + VALUES LESS THAN {(expression_list) | (MAXVALUE)} + [subpartition_list/*仅非模板化二级分区可定义*/] + [ID = num] [physical_attribute_list] [compression] + +range_subpartition_list: + range_subpartition [, range_subpartition ...] + +range_subpartition: + SUBPARTITION subpartition_name + VALUES LESS THAN {(expression_list) | MAXVALUE} [physical_attribute_list] + +list_partition_list: + list_partition [, list_partition] ... + +list_partition: + PARTITION [partition_name] + VALUES (DEFAULT|expression_list) + [subpartition_list/*仅非模板化二级分区可定义*/] + [ID num] [physical_attribute_list] [compression] + +list_subpartition_list: + list_subpartition [, list_subpartition] ... + +list_subpartition: + SUBPARTITION [partition_name] VALUES (DEFAULT|expression_list) [physical_attribute_list] + +expression_list: + expression [, expression ...] + +column_name_list: + column_name [, column_name ...] + +partition_name_list: + partition_name [, partition_name ...] + +partition_count | subpartition_count: + INT_VALUE +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ADD \[COLUMN\] | 增加列,目前不支持增加主键列。 | +| MODIFY \[COLUMN\] | 修改列属性。 | +| MODIFY CONSTRAINT | 修改约束的状态为开启或关闭,只支持外键约束和 CHECK 约束。 | +| DROP \[COLUMN\] | 删除列,不允许删除主键列或者包含索引的列。 | +| ADD \[UNIQUE INDEX\] | 增加唯一索引。 | +| ADD \[INDEX\] | 增加普通索引 | +| ALTER \[INDEX\] | 修改索引属性。 | +| ADD \[PARTITION\] | 增加分区。 | +| DROP \[PARTITION\] | 删除分区。 | +| REORGANIZE \[PARTITION\] | 分区重组。 | +| TRUNCATE \[PARTITION\] | 删除分区数据。 | +| RENAME \[TO\] table_name | 表重命名。 | +| DROP \[TABLEGROUP\] | 删除表组。 | +| DROP \[CONSTRAINT\] | 删除约束。 | +| SET BLOCK_SIZE | 设置 Partition 表 BLOCK 大小。 | +| SET REPLICA_NUM | 设置表的副本数(指表的副本总数)。 | +| SET COMPRESSION | 设置表的压缩方式。 | +| SET USE_BLOOM_FILTER | 设置是否使用 BloomFilter。 | +| SET COMMENT | 设置注释信息。 | +| SET PROGRESSIVE_MERGE_NUM | 设置渐进合并步数,取值范围是 1\~64。 | +| parallel_clause | 指定表级别的并行度: * NOPARALLEL:并行度为1,默认配置 * PARALLEL integer:指定并行度,integer 取值大于等于 1。 **注意** 当指定并行度时,优先级关系如下:通过 hint 指定的并行度 \> 通过 `ALTER SESSION` 指定的并行度 \> 表级别的并行度 | +| {ENABLE \| DISABLE} CONSTRAINT constraint_name | 修改约束的状态,支持外键约束或 CHECK 约束。 | + + + +示例 +----------- + +* 示例:修改表 t2 中字段 d 的字段类型。 + + + + + + +```javascript +obclient>CREATE TABLE t2(d VARCHAR(3)); +Query OK, 0 rows affected (0.04 sec) +obclient>ALTER TABLE t2 MODIFY d CHAR(10); +Query OK, 0 rows affected (0.04 sec) +``` + + + +* 示例:增加、删除列。 + + ```unknow + obclient> CREATE TABLE test (c1 NUMBER(30) PRIMARY KEY,c2 VARCHAR(50)); + Query OK, 0 rows affected (0.07 sec) + ``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* 示例:设置表格 test 的副本数,并且增加列 c5。 + + + + + + +```javascript +obclient> ALTER TABLE test SET REPLICA_NUM=2, ADD c5 INT; +Query OK, 0 rows affected (0.02 sec) +``` + + + +* 为非模板化二级分区表 t_range_range1 添加二级分区 p1_r4。 + + + + + + +```javascript +obclient>ALTER TABLE t_range_range1 MODIFY partition p1 ADD subpartition p1_r4 values less than (400); +Query OK, 0 rows affected (0.08 sec) +``` + + + +* 删除非模板化二级分区表 t_range_range1 的二级分区 p2_r1。 + + + + + + +```unknow +obclient>ALTER TABLE t_range_range1 DROP subpartition p2_r1; +Query OK, 0 rows affected (0.08 sec) +``` + + + +* 为非模板化二级分区表 t_range_range1 添加一级分区 p4,需要同时指定一级分区的定义和该分区下的二级分区定义。 + + + + + + +```unknow +obclient>ALTER TABLE t_range_range1 ADD partition p4 values less than (500) ( + subpartition p4_r1 values less than (100), + subpartition p4_r2 values less than (200), + subpartition p5_r3 values less than (300) +); +Query OK, 0 rows affected (0.08 sec) +``` + + + +* 为模板化二级分区表 t_range_range 添加一级分区 p3,只需要指定一级分区的定义,二级分区的定义会自动按照模板填充。 + + + + + + +```unknow +obclient>CREATE TABLE t_range_range(c1 INT, c2 INT, PRIMARY KEY(c1,c2)) + PARTITION BY RANGE(c1) SUBPARTITION BY RANGE(c2) SUBPARTITION TEMPLATE + (SUBPARTITION p0 VALUES LESS THAN (50),SUBPARTITION p1 VALUES LESS THAN (100)) + (PARTITION p0 VALUES LESS THAN (100), PARTITION p1 VALUES LESS THAN (200), + PARTITION p2 VALUES LESS THAN (300)); +Query OK, 0 rows affected (0.07 sec) + +obclient>ALTER TABLE t_range_range ADD PARTITION p3 VALUES LESS THAN (400); +Query OK, 0 rows affected (0.07 sec) +``` + + + +* 修改表 t1 的并行度为 3。 + + + + + + +```unknow +obclient> ALTER TABLE t1 PARALLEL 3; +Query OK, 0 rows affected (0.06 sec) +``` + + + +* 修改外键约束的状态 + + + + + + +```unknow +obclient> CREATE TABLE MMS_GROUPUSER ( + "ID" VARCHAR2(254 BYTE) NOT NULL, + "GROUPID" VARCHAR2(254 BYTE), + "USERID" VARCHAR2(254 BYTE), + CONSTRAINT "PK_MMS_GROUPUSER" PRIMARY KEY ("ID"), + CONSTRAINT "FK_MMS_GROUPUSER_02" FOREIGN KEY ("GROUPID") REFERENCES MMS_GROUPUSER ("ID") ON DELETE CASCADE DISABLE +); +Query OK, 0 rows affected (0.09 sec) + +obclient> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,STATUS from user_constraints where CONSTRAINT_NAME like 'FK_MMS_GROUPUSE%'; ++---------------------+-----------------+---------------+----------+ +| CONSTRAINT_NAME | CONSTRAINT_TYPE | TABLE_NAME | STATUS | ++---------------------+-----------------+---------------+----------+ +| FK_MMS_GROUPUSER_02 | R | MMS_GROUPUSER | DISABLED | ++---------------------+-----------------+---------------+----------+ +1 row in set (0.00 sec) + +obclient> ALTER TABLE MMS_GROUPUSER ENABLE CONSTRAINT FK_MMS_GROUPUSER_02; +Query OK, 0 rows affected (0.21 sec) + +obclient> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,STATUS from user_constraints where CONSTRAINT_NAME like 'FK_MMS_GROUPUSE%'; ++---------------------+-----------------+---------------+---------+ +| CONSTRAINT_NAME | CONSTRAINT_TYPE | TABLE_NAME | STATUS | ++---------------------+-----------------+---------------+---------+ +| FK_MMS_GROUPUSER_02 | R | MMS_GROUPUSER | ENABLED | ++---------------------+-----------------+---------------+---------+ +1 row in set (0.15 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/6.alter-tablegroup-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/6.alter-tablegroup-1.md new file mode 100644 index 000000000..b6ac21a0b --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/6.alter-tablegroup-1.md @@ -0,0 +1,142 @@ +ALTER TABLEGROUP +===================================== + + + +描述 +----------- + +该语句用来执行以下操作: + +* 对一个表组增加多张表。 + + + +* 修改表组的分区规则。 + + + +* 修改表组的 Locality 和 Primary Zone。 + + + + + + +格式 +----------- + +* 对一个表组增加多张表。 + + + + + + +```javascript +ALTER TABLEGROUP tablegroupname ADD [TABLE] tblname [, tblname...] +``` + + + +* 修改表组的分区规则。 + + + + + + +```javascript +ALTER TABLEGROUP tablegroupname alter_tg_partition_option +alter_tg_partition_option: +DROP PARTITION '(' name_list ')' +| ADD PARTITION opt_range_partition_list +| modify_tg_partition_info +``` + + + +* 修改表组的 Locality 和 Primary Zone。 + + + + + + +```javascript +ALTER TABLEGROUP tablegroupname alter_tablegroup_actions +alter_tablegroup_actions: +alter_tablegroup_action +| alter_tablegroup_action, alter_tablegroup_action +alter_tablegroup_action: +SET LOCALITY [=] locality_name +|SET PRIMARY_ZONE [=] primary_zone_name +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|--------------------------------|-------------------------------------------------------------------------------------------------------| +| tablegroupname | 指定表组。 | +| tblname | 表名。对一个表组增加多张表时,表与表之间以逗号(',')分隔。 当添加多个表时,允许表名重复。如果待添加的表已经属于`tablegroupname`的表格组,系统不报错。 | +| modify_tg_partition_info | 修改表组的分区规则。 | +| LOCALITY locality_name | 指定表组的 Locality。 | +| PRIMARY_ZONE primary_zone_name | 指定表组的主 Zone。 | + + + +示例 +----------- + +* 创建表组`tgh`,并将表组的 `Locality`修改为 `F@z1`,并创建两张关系表`ttgh1`和`ttgh2`。 + + + + + + +```javascript +obclient>CREATE TABLEGROUP tgh LOCALITY='F,R{ALL_SERVER}@z1' PARTITION BY HASH PARTITIONS 10; +Query OK, 0 rows affected (0.09 sec) + +obclient>SELECT LOCALITY FROM sys.all_virtual_tablegroup_agent WHERE tablegroup_name ='TGH'; ++------------------------------------+ +| LOCALITY | ++------------------------------------+ +| FULL{1},READONLY{ALL_SERVER}@1 | ++------------------------------------+ +1 row in set (0.01 sec) + +obclient>ALTER TABLEGROUP tgh SET LOCALITY ='F@z1'; +Query OK, 0 rows affected (0.09 sec) + +obclient>SELECT LOCALITY FROM sys.all_virtual_tablegroup_agent WHERE tablegroup_name ='TGH'; ++------------+ +| LOCALITY | ++------------+ +| FULL{1}@z1 | ++------------+ +1 row in set (0.05 sec) + +obclient>SELECT LOCALITY FROM sys.all_virtual_tablegroup_agent WHERE tablegroup_id=(SELECT tablegroup_id FROM sys.all_virtual_tablegroup_agent WHERE tablegroup_name ='TGH'); ++---------------+ +| LOCALITY | ++---------------+ +| FULL{1}@z1 | ++---------------+ +1 row in set (0.00 sec) + +obclient>CREATE TABLE ttgh1(c1 INT, c2 INT) TABLEGROUP = tgh LOCALITY='F@z1' PARTITION BY HASH(c1) PARTITIONS 10; +Query OK, 0 rows affected (0.55 sec) + +obclient>CREATE TABLE ttgh2(c1 INT, c2 INT) TABLEGROUP = tgh LOCALITY='F@z1' PARTITION BY HASH(c1) PARTITIONS 10; +Query OK, 0 rows affected (0.39 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/7.alter-user-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/7.alter-user-1.md new file mode 100644 index 000000000..f6a069259 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/7.alter-user-1.md @@ -0,0 +1,136 @@ +ALTER USER +=============================== + + + +描述 +----------- + +该语句主要用于执行以下操作: + +* 修改 OceanBase 用户的密码。 + + + +* 修改 OceanBase 用户连接的加密方式。 + + + +* 修改 OceanBase 用户的 Primary Zone。 + + + + + +**说明** + + + +必须拥有 UPDATE USER 的权限,才可以执行本命令。 + +格式 +----------- + +* 修改用户密码 + + + + + + +```javascript +ALTER USER username IDENTIFIED BY password; +``` + + + +* 修改用户连接的加密方式 + + + + + + +```javascript +ALTER USER user REQUIRE {NONE | SSL | x509 | tls_option_list} + +tls_option_list: + tls_option + | tls_option_list tls_option + +tls_option: + CIPHER str_value + | ISSUER str_value + | SUBJECT str_value +``` + + + +* 修改用户的 Primary Zone。 + + + + + + +```unknow +ALTER USER username PRIMARY_ZONE 'zone_name'; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|--------------|---------------------| +| REQUIRE | 指定加密协议。 | +| password | 指定用户密码。 | +| PRIMARY_ZONE | 指定用户的 Primary Zone。 | + + + +示例 +----------- + +* 修改用户 sqluser01 的密码为 abc123 + + + + + + +```javascript +ALTER USER sqluser01 IDENTIFIED BY abc123; +``` + + + +* 修改用户连接加密协议为 SSL + + + + + + +```javascript +ALTER USER sqluser REQUIRE SSL; +``` + + + +* 修改用户 sqluser 的 Primary Zone 为 Zone3 + + + + + + +```unknow +ALTER USER sqluser01 PRIMARY_ZONE 'Zone3'; +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/8.create-index-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/8.create-index-1.md new file mode 100644 index 000000000..308c9db4d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/8.create-index-1.md @@ -0,0 +1,85 @@ +CREATE INDEX +================================= + + + +描述 +----------- + +该语句用来创建索引。索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构。其作用主要在于提高查询的速度,降低数据库系统的性能开销。 + +格式 +----------- + +```javascript +CREATE [UNIQUE] INDEX indexname +     ON tblname (index_col_name,...) + [index_type] [index_options] +index_type: + USING BTREE + +index_options: + index_option [index_option...] + +index_option: + GLOBAL | LOCAL + | COMMENT 'string' + | COMPRESSION [=] {NONE | LZ4_1.0 | LZO_1.0 | SNAPPY_1.0 | ZLIB_1.0} + | BLOCK_SIZE [=] size + | STORING(columname_list) + | VISIBLE | INVISIBLE + +index_col_name: + colname [(length)] [ASC | DESC] + +columname_list: + colname [, colname...] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-----------------|-------------------------------------------------------------------------------------------------------------------------------| +| indexname | 指定要创建的索引名称。 | +| tblname | 指过索引所属的表名。 | +| index_col_name | 指定索引的列名,每个列名后都支持 ASC(升序),不支持 DESC(降序)。默认为升序。 建立索引的排序方式为:首先以`index_col_name`中第一个列的值排序;该列值相同的记录,按下一列名的值排序;以此类推。 | +| index_type | 索引类型,只支持`USING BTREE`,以 B 树为索引。 | +| UNIQUE | 指定为唯一索引。 | +| index_option | 指定索引选项,多个`index_option`以空格分隔。 | +| GLOBAL \| LOCAL | 指定该索引是全局索引或局部索引,默认是GLOBAL。 | +| COMMENT | 指定注释。 | +| COMPRESSION | 指定压缩算法。 | +| BLOCK_SIZE | 指定微块大小。 | +| STORING | 表示索引表中冗余存储某些列,以提高系统查询性能。 | + + + +示例 +----------- + +* 创建表 test 的索引。 + + + + + + +```javascript +/* 创建表 test */ +obclient> CREATE TABLE test (c1 INT PRIMARY KEY, c2 VARCHAR(10)); +Query OK, 0 rows affected (0.09 sec) + +/* 创建表 test 的索引 */ +obclient> CREATE INDEX test_index ON test (c1, c2); +Query OK, 0 rows affected (0.64 sec) + +/* 查看表 test 的索引 */ +obclient> SELECT * FROM USER_INDEXES WHERE table_name='TEST'\G +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/9.create-keystore.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/9.create-keystore.md new file mode 100644 index 000000000..d5cce50d9 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/1.DDL-1/9.create-keystore.md @@ -0,0 +1,44 @@ +CREATE KEYSTORE +==================================== + + + +描述 +----------- + +该语句用来创建 Keystore 对象,此对象用于存储密钥。在透明加密场景中,需要创建 Keystore 对象,每个租户最多只能创建一个 Keystore 对象。 + +格式 +----------- + +```javascript +ADMINISTER KEY MANAGEMENT CREATE KEYSTORE [KEYSTORE_NAME] IDENTIFIED BY [PASSSWORD] ; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|---------------|---------------------| +| KEYSTORE_NAME | 指定 Keystore 名称 | +| PASSWORD | 指定访问控制 Keystore 的密码 | + + + +示例 +----------- + +创建一个 Keystore 对象。 + +```javascript +OceanBase(admin@test)>ADMINISTER KEY MANAGEMENT CREATE KEYSTORE my_keystore IDENTIFIED BY abcCBAK123; +``` + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/1.DELETE-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/1.DELETE-1.md new file mode 100644 index 000000000..cda5db44f --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/1.DELETE-1.md @@ -0,0 +1,157 @@ +DELETE +=========================== + + + +描述 +----------- + +该语句用来删除表中符合条件的行,包括单表删除及多表删除两种方式。 + +格式 +----------- + +```javascript +DELETE [hint_options] [FROM] table_factor + [WHERE where_condition] + [{ RETURNING | RETURN } returning_exprs [into_clause]] + +table_factor: + {tbl_name | table_subquery | '(' table_reference ')' } + +where_condition: + expression + +returning_exprs: + projection [, ...] + +into_clause: +{ INTO into_var_list | BULK COLLECT INTO into_var_list} + +into_var_list: +{ USER_VARIABLE | ref_name } [, ...] + +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-----------------|----------------------------| +| hint_options | 指定 Hint 选项。 | +| table_factor | 指定需要删除的表名(基表、可更新视图、特殊子查询)。 | +| where_condition | 删除的表需要满足的过滤条件。 | +| returning_exprs | 返回删除数据前的投影列。 | +| into_clause | 将删除数据前的投影列插入到指定列表。 | + + +**注意** + + + +特殊子查询指的类似于可更新视图对应的子查询,这类子查询不应该包含复杂的算子(比如 `GROUP BY`/`DISTINCT`/`WINDOW FUNCTION`等) + +示例 +----------- + +创建表 t1 并插入数据: + +```javascript +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT); +Query OK, 0 rows affected (0.16 sec) + +obclient>INSERT INTO t1 VALUES(1,1); +Query OK, 1 row affected (0.00 sec) + +obclient>INSERT INTO t1 VALUES(2,2); +Query OK, 1 row affected (0.00 sec) + +obclient>INSERT INTO t1 VALUES(3,3); +Query OK, 1 row affected (0.00 sec) + +obclient>INSERT INTO t1 VALUES(4,4); +Query OK, 1 row affected (0.00 sec) + +obclient>SELECT * FROM t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.06 sec) +``` + + + +* 单表删除:删除 "c1=2" 的行,其中 c1 列为表 t1 中的 Primary Key。 + + + + + + +```javascript +obclient>DELETE FROM t1 WHERE c1 = 2; +Query OK, 1 row affected (0.02 sec) + +obclient>SELECT * FROM t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +3 rows in set (0.01 sec) +``` + + + +* 单表删除:直接操作子查询进去删除操作。 + + + + + + +```javascript +obclient>DELETE FROM (SELECT * FROM t1); +Query OK, 4 rows affected (0.04 sec) + +obclient>SELECT * FROM t1; +Empty set (0.01 sec) +``` + + + +* 单表删除:包含 `RETURNING` 子句。 + + + + + + +```javascript +obclient>DELETE FROM t1 RETURNING c1; ++----+ +| C1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | ++----+ +4 rows in set (0.01 sec) + +obclient>SELECT * FROM t1; +Empty set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/2.INSERT-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/2.INSERT-1.md new file mode 100644 index 000000000..e4099df1d --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/2.INSERT-1.md @@ -0,0 +1,288 @@ +INSERT +=========================== + + + +描述 +----------- + +该语句用于添加一个或多个记录到表中。 + +格式 +----------- + +```javascript +INSERT [hint_options] { single_table_insert | multi_table_insert } + +single_table_insert: +{ INTO insert_table_clause opt_nologging '(' column_list ')' values_clause [{ RETURNING | RETURN } returning_exprs [into_clause]] +| INTO insert_table_clause opt_nologging '(' ')' values_clause [{ RETURNING | RETURN } returning_exprs [into_clause]] +| INTO insert_table_clause opt_nologging values_clause [{ RETURNING | RETURN } returning_exprs [into_clause]] +} + +opt_nologging: { NOLOGGING | /*EMPTY*/ } + +returning_exprs: + projection [, ...] + +insert_into_clause: +{ INTO into_var_list | BULK COLLECT INTO into_var_list} + +into_var_list: +{ USER_VARIABLE | ref_name } [, ...] + +values_clause: +VALUES ({ expr | DEFAULT } [, { expr | DEFAULT } ]... ) + +multi_table_insert: +{ ALL { insert_into_clause [ values_clause ] [error_logging_clause] } +| conditional_insert_clause +} subquery + +conditional_insert_clause: +[ ALL | FIRST ] +WHEN condition +THEN insert_into_clause + [ values_clause ] + [ error_logging_clause ] + [ insert_into_clause [ values_clause ] [ error_logging_clause ] ]... +[ WHEN condition + THEN insert_into_clause + [ values_clause ] + [ error_logging_clause ] + [ insert_into_clause [ values_clause ] [ error_logging_clause ] ]... +]... +[ ELSE insert_into_clause + [ values_clause ] + [ error_logging_clause ] + [ insert_into_clause [ values_clause ] [ error_logging_clause ] ]... +] + +error_logging_clause: +LOG ERRORS [ INTO [schema.] table ] [ (simple_expression) ] [ REJECT LIMIT { integer | UNLIMITED } ] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|---------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| hint_options | 指定 Hint 选项。 | +| single_table_insert | 单表插入。 | +| insert_table_clause | 指定的插入的表,可以是基表、可更新视图、特殊子查询。 | +| opt_nologging | 尽量减少插入时的日志信息。 | +| column_list | 指定要插入的列名。 | +| returning_exprs | 返回插入数据之后的投影列。 | +| insert_into_clause | 将插入数据之后的列值插入到指定列表中。 | +| multi_table_insert | 多表插入。 | +| conditional_insert_clause | 带条件的多表插入。 * ALL:遍历所有匹配条件的分支,只要满足条件就会将数据插入对应的表。 * FIRST:找到第一个满足条件的分支后,将数据插入该分支对应的表,不会再继续检查剩余分支的条件是否满足。 | + + +**注意** + + + +特殊子查询指的类似于可更新视图对应的子查询,这类子查询不应该包含复杂的算子(比如 group by/distinct/window function 等) + +示例 +----------- + +示例表及数据基于以下定义: + +```javascript +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT,c3 INT); +Query OK, 0 rows affected (0.10 sec) + +obclient> SELECT * FROM t; +Empty set (0.02 sec) +``` + + + +* 单表插入:向表 t 中插入一行数据。 + + + + + + +```javascript +obclient> INSERT INTO t VALUES(1,2,3); +Query OK, 1 row affected (0.00 sec) + +obclient> SELECT * FROM t; ++----+------+------+ +| C1 | C2 | C3 | ++----+------+------+ +| 1 | 2 | 3 | ++----+------+------+ +1 row in set (0.00 sec) +``` + + + +* 单表插入:直接向子查询中插入数据 + + + + + + +```javascript +obclient>INSERT INTO (SELECT * FROM t) VALUES(1,2,3); +Query OK, 1 row affected (0.00 sec) + +obclient> SELECT * FROM t; ++----+------+------+ +| C1 | C2 | C3 | ++----+------+------+ +| 1 | 2 | 3 | ++----+------+------+ +1 row in set (0.01 sec) +``` + + + +* 单表插入:包含 `RETURNING` 子句。 + + + + + + +```javascript +obclient>INSERT INTO t VALUES(1,2,3) RETURNING c1; ++----+ +| C1 | ++----+ +| 1 | ++----+ +1 row in set (0.00 sec) + +obclient>SELECT * FROM t; ++----+------+------+ +| C1 | C2 | C3 | ++----+------+------+ +| 1 | 2 | 3 | ++----+------+------+ +1 row in set (0.00 sec) +``` + + + +* 普通的多表插入:当表 t 中有至少一行数据时,向表 t1 插入一行数据 (1,1,1),向表 t2 插入一行数据 (2,2,2)。 + + + + + + +```unknow +obclient>INSERT ALL INTO t1 VALUES(1,1,1) INTO t2 VALUES(2,2,2) SELECT * FROM t + WHERE ROWNUM< 2; +Query OK, 2 rows affected (0.01 sec) +Records: 2 Duplicates: 0 Warnings: 0 + +obclient>SELECT * FROM t1; ++----+------+------+ +| C1 | C2 | C3 | ++----+------+------+ +| 1 | 1 | 1 | ++----+------+------+ +1 row in set (0.02 sec) + +obclient>SELECT * FROM t2; ++----+------+------+ +| C1 | C2 | C3 | ++----+------+------+ +| 2 | 2 | 2 | ++----+------+------+ +1 row in set (0.01 sec) +``` + + + +* 带条件的多表插入:使用 `INSERT ALL`,当表 t 中 c2 的值大于 1 时,向表 t1 中插入数据 (1,1,1);当表 t 中 c3 的值大于 1 时,向表 t2 中插入数据 (2,2,2);如果都不满足,则向表 t1 中插入数据 (3,3,3)。 + + + + + + +```unknow +obclient>DELETE FROM (SELECT * FROM t); +Query OK, 4 rows affected (0.04 sec) + +obclient>INSERT INTO t VALUES(1,2,3); +Query OK, 1 row affected (0.00 sec) + +obclient>INSERT ALL + WHEN c2 > 1 THEN INTO t1 VALUES(1,1,1) + WHEN c3 > 1 THEN INTO t2 VALUES(2,2,2) + ELSE INTO t1 VALUES(3,3,3) SELECT c2,c3 FROM t; +Query OK, 2 rows affected (0.01 sec) +Records: 2 Duplicates: 0 Warnings: 0 + +obclient>SELECT * FROM t1; ++----+------+------+ +| C1 | C2 | C3 | ++----+------+------+ +| 1 | 1 | 1 | ++----+------+------+ +1 row in set (0.00 sec) + +obclient>SELECT * FROM t2; ++----+------+------+ +| C1 | C2 | C3 | ++----+------+------+ +| 2 | 2 | 2 | ++----+------+------+ +1 row in set (0.00 sec) +``` + + + +* 带条件的多表插入:使用 `INSERT FIRST`,当表 t 中 c2 的值大于 1 时,向表 t1 中插入数据 (1,1,1),向表 t2 中插入数据 (4,4,4);当表 t 中 c3 的值大于 1 时,向表 t2 中插入数据 (2,2,2);如果都不满足,则向表 t1 中插入数据 (3,3,3)。 + + + + + + +```unknow +obclient>DELETE FROM (SELECT * FROM t); +Query OK, 4 rows affected (0.04 sec) + +obclient>INSERT INTO t VALUES(1,2,3); +Query OK, 1 row affected (0.00 sec) + +obclient>INSERT ALL + WHEN c2 > 1 THEN INTO t1 VALUES(1,1,1) INTO t2 VALUES(4,4,4) + when c3 > 1 THEN INTO t2 VALUES(2,2,2) + ELSE INTO t1 VALUES(3,3,3) SELECT c2,c3 FROM t; +Query OK, 2 rows affected (0.01 sec) +Records: 2 Duplicates: 0 Warnings: 0 + +obclient>SELECT * FROM t1; ++----+------+------+ +| C1 | C2 | C3 | ++----+------+------+ +| 1 | 1 | 1 | ++----+------+------+ +1 row in set (0.00 sec) + +obclient>SELECT * FROM t2; ++------+------+------+ +| C1 | C2 | C3 | ++------+------+------+ +| 4 | 4 | 4 | +| 2 | 2 | 2 | ++------+------+------+ +2 rows in set (0.00 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/3.MERGE.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/3.MERGE.md new file mode 100644 index 000000000..4602ad4dd --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/3.MERGE.md @@ -0,0 +1,103 @@ +MERGE +========================== + + + +描述 +----------- + +该语句用来根据一张源表更新一张目标表的数据,可以对目标表进行插入、更新或者删除。 + +格式 +----------- + +```javascript +MERGE [hint_options] + INTO table_factor [opt_alias] + USING table_factor [opt_alias] + ON '(' expr ')' + [merge_update_clause] + [merge_insert_clause] + +merge_update_clause: + WHEN MATCHED THEN UPDATE SET update_asgn_list [WHERE expr] [DELETE WHERE expr] + +merge_insert_clause: + WHEN NOT MATCHED THEN INSERT opt_insert_columns VALUES '(' insert_vals ')' [WHERE expr] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|------------------|------------------------| +| hint_options | 指定 Hint 选项 | +| table_factor | 指定源表和目标表的表名 | +| ON expr | 源表和目标表的连接条件 | +| update_asgn_list | 更新语句的赋值操作 | +| WHERE expr | 触发更新、删除或者插入操作时的需要满足的条件 | + + + +示例 +----------- + +示例表和数据基于以下定义: + +```javascript +CREATE TABLE t1 (c1 INT, c2 INT); +CREATE TABLE t2 (c1 INT, c2 INT); + +INSERT INTO t1 VALUES(0, 0); +INSERT INTO t1 VALUES(1, null); +INSERT INTO t1 VALUES(2, null); +INSERT INTO t2 VALUES(1, 1); +INSERT INTO t2 VALUES(2, 20); +INSERT INTO t2 VALUES(3, 3); +INSERT INTO t2 VALUES(4, 40); +``` + + + +根据 T2 的数据更新 T1 的数据: + +1. 如果 t1.c1 在 t2 中能够找到 c1 取值相同的行,如果 t1.c2 取值为空,那么使用 t2.c2 更新 t1.c2;如果更新之后`t1.c2 >= 10`,那么删除该行。 + + + + + + + + +2. 如果 t2.c1 在 t1 中找不到取值相同的行,将 t2 中的这行插入到 t1 中,且只插入满足 `t2.c2 < 10` 的行。 + + + + + + +```javascript +obclient>MERGE INTO t1 USING t2 ON (t1.c1 = t2.c1) + WHEN MATCHED THEN UPDATE SET c2 = t2.c2 where t1.c2 IS NULL DELETE + WHERE t1.c2 >= 10 WHEN NOT MATCHED THEN INSERT VALUES(t2.c1, t2.c2) + WHERE t2.c2 < 10; +Query OK, 3 rows affected (0.02 sec) + +obclient>SELECT * FROM t1; ++------+------+ +| C1 | C2 | ++------+------+ +| 0 | 0 | +| 1 | 1 | +| 3 | 3 | ++------+------+ +3 rows in set (0.00 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/4.purge-index-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/4.purge-index-1.md new file mode 100644 index 000000000..260c9b290 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/4.purge-index-1.md @@ -0,0 +1,64 @@ +PURGE INDEX +================================ + + + +描述 +----------- + +该语句用来删除放在回收站中的索引表。 + +格式 +----------- + +```javascript + PURGE INDEX object_name; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-------------|--------------| +| object_name | 对象进入回收站后的新名字 | + + + +示例 +----------- + +* 删除放在回收站中的索引 RECYCLE_$_2_1615970480497000。 + + + + + + +```javascript +obclient>CREATE TABLE t1(c1 INT); +Query OK, 0 rows affected (0.09 sec) + +obclient>CREATE INDEX idx ON t1(c1); +Query OK, 0 rows affected (0.48 sec) + +obclient>DROP TABLE t1; +Query OK, 0 rows affected (0.03 sec) + +obclient>SHOW RECYCLEBIN; ++------------------------------+----------------------------+-------+------------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++------------------------------+----------------------------+-------+------------------------------+ +| RECYCLE_$_2_1615970480497000 | __idx_1102810162709362_IDX | INDEX | 17-MAR-21 04.41.20.497680 PM | +| RECYCLE_$_2_1615970480507000 | T1 | TABLE | 17-MAR-21 04.41.20.507102 PM | ++------------------------------+----------------------------+-------+------------------------------+ +2 rows in set (0.00 sec) + +obclient> PURGE RECYCLE_$_2_1615970480497000; +Query OK, 0 rows affected (0.04 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/5.purge-recyclebin-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/5.purge-recyclebin-1.md new file mode 100644 index 000000000..08e737236 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/5.purge-recyclebin-1.md @@ -0,0 +1,45 @@ +PURGE RECYCLEBIN +===================================== + + + +描述 +----------- + +该语句用于 root 用户清空回收站。 +**注意** + + + +PURGE RECYCLEBIN会清除回收站中的所有东西,只有 root 用户才能够执行这条语句,操作时请谨慎。 + +格式 +----------- + +```javascript + PURGE RECYCLEBIN; +``` + + + +参数解释 +------------- + +无。 + +示例 +----------- + +* root 用户清空回收站。 + + + + + + +```javascript +OceanBase(admin@test)> purge recyclebin; +Query OK, 0 rows affected (0.03 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/6.purge-table-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/6.purge-table-1.md new file mode 100644 index 000000000..fa8c60b50 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/6.purge-table-1.md @@ -0,0 +1,61 @@ +PURGE TABLE +================================ + + + +描述 +----------- + +该语句用于删除放在回收站的表。 + +格式 +----------- + +```javascript + PURGE TABLE object_name; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-------------|--------------| +| object_name | 对象进入回收站后的新名字 | + + + +示例 +----------- + +* 删除放在回收站中的表 RECYCLE_$_2_1615971441068848。 + + + + + + +```javascript +obclient>CREATE TABLE test(c1 INT); +Query OK, 0 rows affected (0.16 sec) + +obclient>DROP TABLE test; +Query OK, 0 rows affected (0.03 sec) + +obclient>SHOW RECYCLEBIN; ++-------------------------------------------+---------------+-------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++-------------------------------------------+---------------+-------+----------------------------+ +| RECYCLE_$_2_1615971441068848 | TEST | TABLE | 17-MAR-21 04.57.21.068968 PM | ++-------------------------------------------+---------------+-------+----------------------------+ +1 row in set (0.02 sec) + +obclient>PURGE TABLE RECYCLE_$_2_1615971441068848; +Query OK, 0 rows affected (0.04 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/7.SELECT-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/7.SELECT-1.md new file mode 100644 index 000000000..95af08b9b --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/7.SELECT-1.md @@ -0,0 +1,524 @@ +SELECT +=========================== + + + +`SELECT`的语法相对比较复杂。本节首先会介绍`SIMPLE SELECT`语法结构,然后介绍集合类`SELECT`的语法结构,最后介绍带有`with clause`的`SELECT`。 + +SIMPLE SELECT +---------------------- + +### 描述 + +该语句用于查询表中的内容。 + +### 格式 + +```javascript +simple_select: +SELECT [/*+ hint statement */] [DISTINCT | UNIQUE | ALL] + select_expr_list FROM from_list [WHERE condition] + [GROUP BY group_expression_list] [{ROLLUP | GROUPING SETS} group_expression_list] [HAVING condition]] + [ORDER BY order_expression_list] + [FOR UPDATE [OF column] [ {NOWAIT | WAIT integer | SKIP LOCKED } ] ] + +select_expr: + table_name.* + | table_alias_name.* + | expr [[AS] column_alias_name] + +from_list: + table_reference [, table_reference ...] + +table_reference: + simple_table + | joined_table + +simple_table: + table_factor [partition_option] [[AS] table_alias_name] + | (select_stmt) [AS] table_alias_name + | (table_reference_list) + +joined_table: + table_reference [INNER] JOIN simple_table [join_condition] + | table_reference outer_join_type JOIN simple_table join_condition + +partition_option: + PARTITION (partition_name_list) + +partition_name_list: + partition_name [, partition_name ...] + +outer_join_type: + {LEFT | RIGHT | FULL} [OUTER] + +join_condition: + ON expression + +condition: + expression + +group_expression_list: + group_expression [, group_expression ...] + +group_expression: + expression [ASC | DESC] + +order_expression_list: + order_expression [, order_expression ...] + +order_expression: + expression [ASC | DESC] +``` + + + +### 参数解释 + + + +| 参数 | 描述 | +|---------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| DISTINCT \| UNIQUE \| ALL | 在数据库表中,可能会包含重复值。 * 指定"DISTINCT",则在查询结果中相同的行只显示一行。 * 指定 "UNIQUE",则在查询结果中相同的行只显示一行。 * 指定"ALL",则在查询结果中显示所有的行(包含重复),默认为 ALL。 | +| select_expr | 列出要查询的表达式或列名,用","隔开。也可以用"\*"表示所有列。 | +| AS othername | 为输出字段重新命名。 | +| FROM table_references | 指名了从哪个表或哪些表中读取数据(支持多表查询)。 | +| WHERE where_conditions | 可选项,`WHERE`子句用来设置一个筛选条件,查询结果中仅包含满足条件的数据。`where_conditions` 为表达式。 | +| GROUP BY group_by_list | 按一些字段进行分组,产生统计值。 | +| ROLLUP group_expression_list | 合并 Group By 的分组,产生统计值。 | +| GROUPING SETS group_expression_list | 在一个查询中指定多个数据分组,分别产生统计值,并将指定的分组统计值聚合显示。`GROUPING SETS` 中可以指定单个字段或字段列表。 | +| HAVING search_confitions | `HAVING`子句与`WHERE`子句类似,但是`HAVING`子句可以使用累计函数(如 SUM、AVG 等)。 | +| ORDER BY order_list order_list : colname \[ASC \| DESC\] \[,colname \[ASC \| DESC\]...\] | 用来按升序(ASC)或者降序(DESC)显示查询结果。不指定 ASC 或者 DESC 时,默认为 ASC。 | +| FOR UPDATE | 对查询结果所有行上排他锁,以阻止其他事务的并发修改,或阻止在某些事务隔离级别时的并发读取。 * `OF column`:对于多表 Join 的场景,使用该子句可以指示仅锁定某些表(即 column 指定列所在的表)的查询结果行。 * `WAIT`:等待 Interger 时间后再对查询结果行尝试加锁,如果查询结果行中已经有被其他会话加锁的行,则执行失败。 * `NOWAIT`:立即对查询结果行尝试加锁如果查询结果行中已经有被其他会话加锁的行,则执行失败。 * `SKIP LOCKED`:如果查询结果中已经有被其他会话加锁的行,则会跳过这些加锁行,返回未被加锁的行。 **说明** SKIP LOCKED 暂不支持多表 JOIN 加锁的场景。 | +| PARTITION(partition_list) | 指定查询表的分区信息。例如:`partition(p0,p1...)` | + + + +### 示例 + +以如下表`a`为例。 + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/5455055061/p179248.png "image.png") + +```unknow +CREATE TABLE a (id INT,name VARCHAR(10),num INT); +INSERT INTO a VALUES (1, 'a',100); +INSERT INTO a VALUES (2, 'b',200); +INSERT INTO a VALUES (3, 'a',50); +``` + + + +* 从表`a`中读取`name`数据。 + + ```javascript + obclient> SELECT name FROM a; + +------+ + | NAME | + +------+ + | a | + | b | + | a | + +------+ + 3 rows in set (0.00 sec) + ``` + + + + + + + + +* 在查询结果中对`name`进行去重处理。 + + ```javascript + obclient> SELECT DISTINCT name FROM a; + +------+ + | NAME | + +------+ + | a | + | b | + +------+ + 2 rows in set (0.00 sec) + ``` + + + + + + + + +* 从表`a`中查询 `id`、`name`和`num`,然后把`num`列除以 2 输出,输出的列名为`avg`。 + + ```javascript + obclient> SELECT id, name, num/2 AS avg FROM a; + +----+------+------+ + | ID | NAME | AVG | + +----+------+------+ + | 1 | a | 50 | + | 2 | b | 100 | + | 3 | a | 25 | + +----+------+------+ + 3 rows in set (0.00 sec) + ``` + + + + + + + + +* 从表`a`中根据筛选条件" name = 'a' ",输出对应的`id` 、`name`和`num` 。 + + ```javascript + obclient> SELECT id, name, num FROM a WHERE name = 'a'; + +----+------+------+ + | ID | NAME | NUM | + +----+------+------+ + | 1 | a | 100 | + | 3 | a | 50 | + +----+------+------+ + 2 rows in set (0.00 sec) + ``` + + + + + + + + +* 从表`a`中查询`name`,按照`name`分组对`num`求和,并输出。 + + ```javascript + obclient> SELECT id, name, num FROM a WHERE name = 'a'; + +----+------+------+ + | ID | NAME | NUM | + +----+------+------+ + | 1 | a | 100 | + | 3 | a | 50 | + +----+------+------+ + 2 rows in set (0.00 sec) + ``` + + + + + + + + +* 从表`a`中查询`name`,按照`name`分组对`num`求和,查询`num`总和小于 160 的行,并输出。 + + ```javascript + obclient> SELECT name, SUM(num) as sum FROM a GROUP BY name HAVING SUM(num) < 160; + +------+------+ + | NAME | SUM | + +------+------+ + | a | 150 | + +------+------+ + 1 row in set (0.00 sec) + ``` + + + + + + + + +* 从表`a`中查询`id`、`name`和`num`,根据`num`按升序(ASC)输出查询结果。 + + ```javascript + obclient> SELECT * FROM a ORDER BY num ASC; + +----+------+------+ + | ID | NAME | NUM | + +----+------+------+ + | 3 | a | 50 | + | 1 | a | 100 | + | 2 | b | 200 | + +----+------+------+ + 3 rows in set (0.00 sec) + ``` + + + + + + + + +* 从表`a`中查询`id`、`name`和`num`,根据`num`按降序(DESC)输出查询结果。 + + ```javascript + obclient> SELECT * FROM a ORDER BY num DESC; + +----+------+------+ + | ID | NAME | NUM | + +----+------+------+ + | 2 | b | 200 | + | 1 | a | 100 | + | 3 | a | 50 | + +----+------+------+ + 3 rows in set (0.00 sec) + ``` + + + + + + + + +* 从表`a`中查询指定`id`的行,并使用`FOR UPDATE`子句把查询结果行进行锁定。 + + ```unknow + /* 在会话 1 中查询表 a 中 id=1 的行并锁定 */ + obclient> SELECT * FROM a WHERE id=1 FOR UPDATE; + +------+------+------+ + | ID | NAME | NUM | + +------+------+------+ + | 1 | a | 100 | + +------+------+------+ + 1 row in set (0.01 sec) + + /* 在会话 2 中查询表 a 中 id=1 或 id=2 的行并锁定 */ + obclient> SELECT * FROM a WHERE id=1 or id=2 FOR UPDATE; + ORA-30006: resource busy; acquire with WAIT timeout expired + + obclient> SELECT * FROM a WHERE id=1 or id=2 FOR UPDATE SKIP LOCKED; + +------+------+------+ + | ID | NAME | NUM | + +------+------+------+ + | 2 | b | 200 | + +------+------+------+ + 1 row in set (0.01 sec) + ``` + + + +* 从表`a`中按 name 和 num 分组查询并统计每个分组中的数量。 + + ```unknow + obclient> SELECT name, num, COUNT(*) from a GROUP BY GROUPING SETS(name, num); + +------+------+----------+ + | NAME | NUM | COUNT(*) | + +------+------+----------+ + | a | NULL | 2 | + | b | NULL | 1 | + | NULL | 100 | 1 | + | NULL | 200 | 1 | + | NULL | 50 | 1 | + +------+------+----------+ + 5 rows in set (0.01 sec) + ``` + + + + + + + + +集合类 SELECT +------------------- + +### 描述 + +该语句用于对多个`SELECT`查询的结果进行`UNION`、`MINUS`、`INTERSECT`。 + +### 格式 + +```javascript +select_clause_set: + simple_select [ UNION | UNION ALL | | INTERSECT] select_clause_set_right + [ORDER BY sort_list_columns] + +select_clause_set_right: + simple_select | + select_caluse_set +``` + + + +### 参数解释 + + + +| 参数 | 描述 | +|-----------|--------------------------| +| UNION ALL | 合并两个查询的结果 | +| UNION | 合并两个查询的结果,并去重 | +| MINUS | 从左查询结果集中去重出现在右查询中的结果,并去重 | +| INTERSECT | 保留左查询结果集中出现在右查询中的结果,并去重 | + + + +### 示例 + +以如下两表的数据为例: + +```javascript +CREATE TABLE t1 (c1 INT, c2 INT); +CREATE TABLE t2 (c1 INT, c2 INT); +INSERT INTO t1 VALUES (1, -1), (2, -2); +INSERT INTO t2 VALUES (1, 1), (2, -2), (3, 3); +``` + + + +* 计算`t1`、`t2`的所有的记录 + + ```javascript + obclient>SELECT c1, c2 FROM t1 UNION ALL SELECT c1, c2 FROM t2; + +------+------+ + | C1 | C2 | + +------+------+ + | 1 | -1 | + | 2 | -2 | + | 1 | 1 | + | 2 | -2 | + | 3 | 3 | + +------+------+ + 5 rows in set (0.01 sec) + ``` + + + + + + + + +* 计算`t1`、`t2`的去重后的所有记录 + + ```javascript + obclient>SELECT c1, c2 FROM t1 UNION SELECT c1, c2 FROM t2; + +------+------+ + | C1 | C2 | + +------+------+ + | 1 | -1 | + | 2 | -2 | + | 1 | 1 | + | 3 | 3 | + +------+------+ + 4 rows in set (0.01 sec) + ``` + + + + + + + + +* 计算`t1`和`t2`的交集 + + ```javascript + SELECT c1, c2 FROM t1 INTERSECT SELECT c1, c2 FROM t2; + +------+------+ + | C1 | C2 | + +------+------+ + | 2 | -2 | + +------+------+ + ``` + + + + + + + + +* 计算`t1`和`t2`的差集 + + ```javascript + obclient>SELECT c1, c2 FROM t1 INTERSECT SELECT c1, c2 FROM t2; + +------+------+ + | C1 | C2 | + +------+------+ + | 2 | -2 | + +------+------+ + ``` + + + + + + +带有 with clause 的 SELECT +-------------------------------- + +### 描述 + +如果查询语句中有多个相同的子查询,可以把相同的子查询放在`with clause`作为公共表达式,在主体查询中直接引用即可。 + +### 格式 + +```javascript +with_clause_select: + with_clause simple_select + +with_clause: + WITH table_name [opt_column_alias_name_list] AS ( select_clause ) + +select_clause: + simple_select | select_clause_set + +opt_column_alias_name_list: + (column_name_list) + +column_name_list: + column_name | column_name , column_name_list +``` + + + +### 参数解释 + +无 + +### 示例 + +以如下表格数据和`SELECT`查询为例。 + +```javascript +CREATE TABLE t1(c1 INT, c2 INT, c3 INT); +CREATE TABLE t2(c1 INT); +INSERT INTO t1 VALUES(1,1,1); +INSERT INTO t1 VALUES(2,2,2); +INSERT INTO t1 VALUES(3,3,3); +INSERT INTO t2 VALUES(4); + +obclient>SELECT * FROM t1 WHERE c1 > (SELECT COUNT(*) FROM t2) + AND c2 > (SELECT COUNT(*) FROM t2) + AND c3 > (SELECT COUNT(*) FROM t2); ++------+------+------+ +| C1 | C2 | C3 | ++------+------+------+ +| 2 | 2 | 2 | +| 3 | 3 | 3 | ++------+------+------+ +2 rows in set (0.01 sec) +``` + + + +可以抽取相同子查询为`with clause`: + +```javascript +obclient>WITH TEMP(cnt) AS (SELECT COUNT(*) FROM t2) + SELECT t1.* FROM t1, temp WHERE c1 > temp.cnt AND c2 > temp.cnt + AND c3 > temp.cnt; ++------+------+------+ +| C1 | C2 | C3 | ++------+------+------+ +| 2 | 2 | 2 | +| 3 | 3 | 3 | ++------+------+------+ +2 rows in set (0.00 sec) +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/8.UPDATE-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/8.UPDATE-1.md new file mode 100644 index 000000000..b42ddcfe8 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/2.DML/8.UPDATE-1.md @@ -0,0 +1,167 @@ +UPDATE +=========================== + + + +描述 +----------- + +该语句用于修改表中的字段值。 + +格式 +----------- + +```javascript +UPDATE [hint_options] dml_table_clause + SET update_asgn_list + [WHERE where_condition] + [{ RETURNING | RETURN } returning_exprs [into_clause]] + +dml_table_clause: + dml_table_name opt_table_alias + +update_asgn_list: + column_name = expr [, ...] + +where_condition: + expression + +returning_exprs: + projection [, ...] + +into_clause: +{ INTO into_var_list | BULK COLLECT INTO into_var_list} + +into_var_list: +{ USER_VARIABLE | ref_name } [, ...] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|------------------|-------------------------| +| hint_options | 指定 hint 选项。 | +| dml_table_clause | 指定修改的表名(基表、可更新视图、特殊子查询) | +| where_condition | 指定过滤条件。 | +| update_asgn_list | 指定更新列表。 | +| returning_exprs | 返回修改数据后的投影列。 | +| into_clause | 将修改数据后的投影列插入到指定列表 | + + +**注意** + + + +特殊子查询指的类似于可更新视图对应的子查询,这类子查询不应该包含复杂的算子(比如group by/distinct/window function等等) + +示例 +----------- + +创建示例表 t1 和 t2。 + +```javascript +OceanBase(admin@test)>create table t1(c1 int primary key, c2 int); +Query OK, 0 rows affected (0.16 sec) +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.06 sec) +``` + + + +* 单表更新:将表 t1 中 "t1.c1=1" 对应的那一行数据的 c2 列值修改为 100。 + + + + + + +```javascript +OceanBase(admin@test)>update t1 set t1.c2 = 100 where t1.c1 = 1; +Query OK, 1 row affected (0.02 sec) +Rows matched: 1 Changed: 1 Warnings: 0 + +OceanBase(admin@test)>select * from t1; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 100 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.01 sec) +``` + + + +* 单表更新:直接操作子查询,将子查询 中 "v.c1=1" 对应的那一行数据的 c2 列值修改为 100。 + + + + + + +```javascript +OceanBase(admin@test)>update (select * from t1)v set v.c2 = 100 where v.c1 = 1; +Query OK, 1 row affected (0.02 sec) +Rows matched: 1 Changed: 1 Warnings: 0 + +OceanBase(admin@test)>select * from t1; ++----+------+ +| C1 | C2 | ++----+------+ +| 1 | 100 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.01 sec) +``` + + + +* 单表更新:包含 returning 子句。 + + + + + + +```javascript +OceanBase(admin@test)>update t1 set t1.c2 = 100 where t1.c1 = 1 returning c2; ++------+ +| C2 | ++------+ +| 100 | ++------+ +1 row in set (0.02 sec) + +OceanBase(admin@test)>select * from t1; ++----+------+ +| C1 | C2 | ++----+------+ +| 1 | 100 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----+------+ +4 rows in set (0.01 sec) +``` + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/1.EXPLAIN-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/1.EXPLAIN-1.md new file mode 100644 index 000000000..0044cb261 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/1.EXPLAIN-1.md @@ -0,0 +1,213 @@ +EXPLAIN +============================ + + + +描述 +----------- + +该语句用于解释 SQL 语句的执行计划,可以是 `SELECT`、`DELETE`、`INSERT`、`REPLACE` 或 `UPDATE` 语句。 + +格式 +----------- + +```javascript +获取表或列的信息: +{EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild] + +获取SQL计划信息: +{EXPLAIN} +[BASIC | OUTLINE | EXTENDED | EXTENDED_NOADDR | PARTITIONS | FORMAT = {TRADITIONAL| JSON}] +{SELECT statement | DELETE statement | INSERT statement | UPDATE statement | MERGE statement} +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| tbl_name | 指定表名。 | +| col_name | 指定表的列名。 | +| BASIC | 指定输出计划的基础信息,如算子 ID、算子名称、所引用的表名。 | +| OUTLINE | 指定输出的计划信息包含 Outline 信息。 | +| EXTENDED | `EXPLAIN`产生附加信息,包括:每个算子的输入列和输出列,访问表的分区信息,当前使用的filter信息,如果当前算子使用了索引,显示所使用的索引列及抽取的 Query Range。 | +| EXTENDED_NOADDR | 以简约的方式展示附加信息。 | +| PARTITIONS | 显示分区相关信息。 | +| FORMAT = {TRADITIONAL\| JSON} | 指定`EXPALIN`的输出格式: * `TRADITIONAL`:表格输出格式. * `JSON`:`KEY:VALUE`输出格式,`JSON`显示为`JSON`字符串,包括`EXTENDED`和`PARTITIONS`信息。 | + + + +示例 +----------- + +* 省略 `explain_type` + + + + + + +```javascript +obclient>CREATE TABLE t1(c1 INT,c2 INT); +Query OK, 0 rows affected (0.04 sec) + +obclient>CREATE TABLE t2(c1 INT,c2 INT); +Query OK, 0 rows affected (0.07 sec) + +obclient>EXPLAIN SELECT * FROM t1,t2 WHERE t1.c2=t2.c2 AND t2.c1 > 4\G +*************************** 1. row *************************** +Query Plan: ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |HASH JOIN | |9801000 |5933109| +|1 | TABLE SCAN|t2 |10000 |6219 | +|2 | TABLE SCAN|t1 |100000 |68478 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t2.c2], [t2.c1]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) +``` + + + +* EXTENDED + + + + + + +```javascript +obclient>EXPLAIN EXTENDED_NOADDR SELECT * FROM t1,t2 + WHERE t1.c2=t2.c2 AND t2.c1 > 4\G +*************************** 1. row *************************** +Query Plan: ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |HASH JOIN | |9801000 |5933109| +|1 | TABLE SCAN|t2 |10000 |6219 | +|2 | TABLE SCAN|t1 |100000 |68478 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t2.c2], [t2.c1]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0), + is_index_back=false, + range_key([t2.c1]), range(4 ; MAX), + range_cond([t2.c1 > 4]) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0), + is_index_back=false, + range_key([t1.__pk_increment], [t1.__pk_cluster_id], [t1.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true +``` + + + +* `TRADITIONAL`格式 + + + + + + +```javascript +obclient>EXPLAIN FORMAT=TRADITIONAL SELECT * FROM t1,t2 + WHERE t1.c2=t2.c2 AND t2.c1 > 4\G +*************************** 1. row *************************** +Query Plan: ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |HASH JOIN | |9801000 |5933109| +|1 | TABLE SCAN|t2 |10000 |6219 | +|2 | TABLE SCAN|t1 |100000 |68478 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t2.c2], [t2.c1]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) +``` + + + +* JSON 格式 + + + + + + +```javascript +obclient>EXPLAIN FORMAT=JSON SELECT * FROM t1,t2 + WHERE t1.c2=t2.c2 AND t2.c1 > 4\G +*************************** 1. row *************************** +Query Plan: { + "ID":2, + "OPERATOR":"JOIN", + "NAME":"JOIN", + "EST.ROWS":9800999, + "COST":6840524, + "output": [ + "T1.C1", + "T1.C2", + "T2.C1", + "T2.C2" + ], + "CHILD_1": { + "ID":0, + "OPERATOR":"TABLE SCAN", + "NAME":"TABLE SCAN", + "EST.ROWS":10000, + "COST":80810, + "output": [ + "T2.C2", + "T2.C1" + ] + }, + "CHILD_2": { + "ID":1, + "OPERATOR":"TABLE SCAN", + "NAME":"TABLE SCAN", + "EST.ROWS":100000, + "COST":64065, + "output": [ + "T1.C2", + "T1.C1" + ] + } +} +1 row in set (0.01 sec) +``` + + + +EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列: + + +| 列名 | 说明 | +|----------|------------------| +| ID | 计划执行序列号。 | +| OPERATOR | 执行算子。 | +| NAME | 算子所引用的表。 | +| EST.ROWS | 估计执行到当前算子输出的行数。 | +| COST | 执行到当前算子的 CPU 时间。 | + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/10.SHOW.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/10.SHOW.md new file mode 100644 index 000000000..88cd95517 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/10.SHOW.md @@ -0,0 +1,45 @@ +SHOW +========================= + + + +描述 +----------- + +`SHOW PARAMETERS` 用于显示所有系统配置项。 + +`SHOW VARIABLES` 用于显示所有系统变量。 + +`SHOW ERRORS` 用于显示当前对象的错误信息。 + +格式 +----------- + +```javascript +SHOW PARAMETERS; +SHOW VARIABLES; +SHOW ERRORS; +``` + + + +参数解释 +------------- + +无 + +示例 +----------- + +* 显示所有系统配置项。 + + + + + + +```javascript +obclient> SHOW PARAMETERS; +``` + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/11.show-recyclebin-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/11.show-recyclebin-1.md new file mode 100644 index 000000000..6a864c54b --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/11.show-recyclebin-1.md @@ -0,0 +1,41 @@ +SHOW RECYCLEBIN +=============== + +描述 +----------- + +该语句用于查看回收站中的内容。 + +格式 +----------- + +```javascript + SHOW RECYCLEBIN; +``` + +参数解释 +------------- + +无。 + +示例 +----------- + +* 查看回收站中的内容。 + +```javascript +OceanBase(admin@test)> create table t1(c1 int); +Query OK, 0 rows affected (0.24 sec) + +OceanBase(admin@test)> drop table t1; +Query OK, 0 rows affected (0.07 sec) + +OceanBase(admin@test)> show recyclebin; ++-------------------------------------------+---------------+-------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++-------------------------------------------+---------------+-------+----------------------------+ +| __recycle_$_1_1099511628776_1099511677777 | t1 | TABLE | 2017-10-20 17:27:40.881506 | ++-------------------------------------------+---------------+-------+----------------------------+ +1 row in set (0.02 sec) +``` + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/12.SHRINK.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/12.SHRINK.md new file mode 100644 index 000000000..5577a9fcc --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/12.SHRINK.md @@ -0,0 +1,46 @@ +SHRINK +=========================== + + + +描述 +----------- + +该语句会将表的数据重整,即在合并的过程中重新写一遍。 + +格式 +----------- + +```javascript +ALTER TABLE table_name SHRINK SPACE +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|------------|----| +| table_name | 表名 | + + + +示例 +----------- + +* 将表 t1 的数据重整 + + + + + + +```javascript +OceanBase(admin@test)>ALTER TABLE t1 SHRINK SPACE; +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/13.TRANSACTION-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/13.TRANSACTION-1.md new file mode 100644 index 000000000..db03e3707 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/13.TRANSACTION-1.md @@ -0,0 +1,120 @@ +TRANSACTION +================================ + + + +描述 +----------- + +该语句用于开启事务。 + +数据库事务(Database Transaction)是指作为单个逻辑工作单元执行的一系列操作。事务处理可以用来维护数据库的完整性,保证成批的 SQL 操作全部执行或全部不执行。 + +显示事务是用户自定义或用户指定的事务。通过`BEGIN TRANSACTION`,或`BEGIN`和`BEGIN WORK`(被作为 `START TRANSACTION`的别名受到支持)语句显示开始,以`COMMIT`或`ROLLBACK`语句显示结束。 + +格式 +----------- + +```javascript +transaction_stmt: + START TRANSACTION [READ ONLY | READ WRITE]; + | BEGIN [WORK]; + | COMMIT [WORK]; + | ROLLBACK [WORK]; + | SET TRANSACTION {READ ONLY | READ WRITE}; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| START TRANSACTION \[READ ONLY \| READ WRITE\] | 开启事务语句。一旦开启事务,则随后的 SQL 数据操作语句(即`INSERT`、`UPDATE`、`DELETE`等)直到显式提交时才会生效。 `READ ONLY` 子句表示事务是只读方式开启,事务内不允许执行修改操作。 `READ WRITE` 子句表示事务是读写方式开启,默认就是此种模式。 | +| BEGIN | `BEGIN` 和 `BEGIN WORK` 被作为` START TRANSACTION` 的别名受到支持 | +| COMMIT | 提交当前事务。 | +| ROLLBACK | 回滚当前事务。 | +| SET TRANSACTION {READ ONLY \| READ WRITE} | 将当前事务设置成`READ ONLY`或者`READ WRITE`模式。 | + + + +示例 +----------- + +假设现有表 a 如下所示。 + + +| id | name | num | sell_date | +|----|------|-----|---------------------| +| 1 | a | 100 | 2013-06-21 10:06:43 | +| 2 | b | 200 | 2013-06-21 13:07:21 | +| 3 | a | 50 | 2013-06-21 13:08:15 | + + + +```javascript +CREATE TABLE a (id INT,name VARCHAR(10),num INT,sell_date DATE); +INSERT INTO a VALUES (1, 'a',100,'2013-06-21 10:06:43'); + +INSERT INTO a VALUES (2, 'b',200,'2013-06-21 13:07:21'); +INSERT INTO a VALUES (3, 'a',50,'2013-06-21 13:08:15'); +``` + + + +1. 依次执行以下命令开始执行事务,将 id 为 3 的的 name 改为 c,并插入一行当前卖出 a 的记录。 + + + + + + +```javascript +obclient> START TRANSACTION; +Query OK, 0 rows affected (0.00 sec) + +obclient> UPDATE a SET name = 'c' WHERE id = 3; +Query OK, 1 rows affected (0.00 sec) +Rows matched: 1 Changed: 1 Warnings: 0 + +obclient> INSERT INTO a VALUES (4, 'a', 30, '2013-06-21 16:09:13'); +Query OK, 1 rows affected (0.00 sec) + +obclient> COMMIT; +Query OK, 0 rows affected (0.00 sec) +``` + + + +2. 事务提交后,执行命令查看表 a 信息。 + + + + + + +```javascript +obclient>SELECT * FROM a; +``` + + + +结果如下: + + +| id | na | num | sell_date | +|----|----|-----|---------------------| +| 1 | a | 100 | 2013-06-21 10:06:43 | +| 2 | b | 200 | 2013-06-21 13:07:21 | +| 3 | c | 50 | 2013-06-21 13:08:15 | +| 4 | a | 30 | 2013-06-21 16:09:13 | + + +**注意** + + + +在事务还没有 `COMMIT` 之前,您可以查看下本事务中的操作是否已经生效,比如可以在 `COMMIT` 前,加一句 `SELECT * FROM a;` 。本事务 Session 的访问能读到最新的结果,本事务 Session 之外的访问结果肯定是没有生效,在事务还没有 `COMMIT` 前,你之前做的操作除当前事务连接之外都是不可见的。如果您想回滚该事务,直接用 `ROOLBACK` 代替 `COMMIT` 。 diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/2.flashback-table-before-drop.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/2.flashback-table-before-drop.md new file mode 100644 index 000000000..45f4df493 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/2.flashback-table-before-drop.md @@ -0,0 +1,103 @@ +FLASHBACK TABLE BEFORE DROP +================================================ + + + +描述 +----------- + +用于从回收站中恢复被删除的表。 + +前置条件 +------------- + +回收站需要处于开启状态,可以通过`SHOW VARIABLES LIKE 'recyclebin';`来查看回收站是否开启。 + +```javascript +obclient>SHOW VARIABLES LIKE 'recyclebin'; ++---------------+-------+ +| Variable_name | Value | ++---------------+-------+ +| recyclebin | ON | ++---------------+-------+ +1 row in set (0.00 sec) +``` + + + +如果回收站处于关闭状态,可以通过`SET RECYCLEBIN = ON;`来开启。回收站中的表没有被实际删除,仍然会占用资源,如果需要彻底删除,可以执行`PURGE RECYCLEBIN;` + +格式 +----------- + +```javascript + FLASHBACK TABLE object_name TO BEFORE DROP [RENAME to db_name.table_name]; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-------------|---------------------------------------------------| +| object_name | 指定要恢复的对象名称或表名,只有在表所在的数据库中才能执行。恢复表时,也会同步恢复和表相关的索引。 | +| RENAME to | 修改表名和表所属的库。 | + + + +示例 +----------- + +* 从回收站中恢复被删除的表 t。 + + + + + + +```javascript +obclient>CREATE TABLE t(id INT PRIMARY KEY, k INT); +Query OK, 0 rows affected (0.04 sec) + +obclient>INSERT INTO t VALUES(1,1); +Query OK, 1 row affected (0.00 sec) + +obclient>SELECT * FROM t; ++----+------+ +| id | k | ++----+------+ +| 1 | 1 | ++----+------+ +1 row in set (0.00 sec) + +obclient>DROP TABLE t; +Query OK, 0 rows affected (0.01 sec) + +obclient>SELECT * FROM t; +ORA-00942: table or view 'SYS.T' does not exist + +obclient>SHOW RECYCLEBIN; ++--------------------------------+---------------+-------+----------------------------+ +| OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME | ++--------------------------------+---------------+-------+----------------------------+ +| RECYCLE_$_2_1616038871797032 | T | TABLE | 18-MAR-21 11.41.11.797691 AM| ++--------------------------------+---------------+-------+----------------------------+ +1 row in set (0.00 sec) + +obclient>FLASHBACK TABLE t TO BEFORE DROP; +Query OK, 0 rows affected (0.01 sec) + +obclient>SELECT * FROM t; ++----+------+ +| id | k | ++----+------+ +| 1 | 1 | ++----+------+ +1 row in set (0.00 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/3.GRANT-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/3.GRANT-1.md new file mode 100644 index 000000000..e162212a0 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/3.GRANT-1.md @@ -0,0 +1,306 @@ +GRANT +========================== + + + +描述 +----------- + +该语句用于系统管理员授予 User 某些权限,包括对象权限,系统权限和角色。 +**说明** + + + +* 当授予对象权限时,当前用户必须是对象的所有者,或者拥有被授予的权限(例如,user1 把表 t1 的 SELECT 权限授予 user2,则 user1 必须拥有表 t1 的 SELECT 的权限),并且拥有 GRANT OPTION 权限,才能授予成功。 + + + +* 当授予系统权限和角色时,当前用户必须拥有被授予的权限或角色,并且拥有 GRANT OPTION 权限,才能授予成功。 + + + +* 用户授权后,该用户只有重新连接 OceanBase,权限才能生效。 + + + + + + +格式 +----------- + +```javascript +/*授予对象权限*/ +GRANT obj_with_col_priv_list + ON obj_clause TO grant_user_list [WITH GRANT OPTION]; + +obj_with_col_priv_list: + obj_with_col_priv + | obj_with_col_priv_list, obj_with_col_priv + +obj_with_col_priv: + obj_privilege [column_list] + +obj_privilege: + ALTER + | AUDIT + | COMMENT + | DELETE + | GRANT + | INDEX + | INSERT + | LOCK + | RENAME + | SELECT + | UPDATE + | REFERENCES + | EXECUTE + | CREATE + | FLASHBACK + | READ + | WRITE + | DEBUG + +obj_clause: + relation_name + | relation_name '.' relation_name + | DIRECTORY relation_name + +grant_user_list: + grant_user [, grant_user ...] + +/*授予系统权限*/ +GRANT {system_privilege_list | ALL PRIVILEGES} + TO grantee_user [IDENTIFIED BY password] [WITH {GRANT | ADMID} OPTION]; + +system_privilege_list: + system_privilege [, system_privilege ...] + +system_privilege: + CREATE SESSION + | EXEMPT REDACTION POLICY + | SYSDBA + | SYSOPER + | SYSBACKUP + | CREATE TABLE + | CREATE ANY TABLE + | ALTER ANY TABLE + | BACKUP ANY TABLE + | DROP ANY TABLE + | LOCK ANY TABLE + | COMMENT ANY TABLE + | SELECT ANY TABLE + | INSERT ANY TABLE + | UPDATE ANY TABLE + | DELETE ANY TABLE + | FLASHBACK ANY TABLE + | CREATE ROLE + | DROP ANY ROLE + | GRANT ANY ROLE + | ALTER ANY ROLE + | AUDIT ANY + | GRANT ANY PRIVILEGE + | GRANT ANY OBJECT PRIVILEGE + | CREATE ANY INDEX + | ALTER ANY INDEX + | DROP ANY INDEX + | CREATE ANY VIEW + | DROP ANY VIEW + | CREATE VIEW + | SELECT ANY DICTIONARY + | CREATE PROCEDURE + | CREATE ANY PROCEDURE + | ALTER ANY PROCEDURE + | DROP ANY PROCEDURE + | EXECUTE ANY PROCEDURE + | CREATE SYNONYM + | CREATE ANY SYNONYM + | DROP ANY SYNONYM + | CREATE PUBLIC SYNONYM + | DROP PUBLIC SYNONYM + | CREATE SEQUENCE + | CREATE ANY SEQUENCE + | ALTER ANY SEQUENCE + | DROP ANY SEQUENCE + | SELECT ANY SEQUENCE + | CREATE TRIGGER + | CREATE ANY TRIGGER + | ALTER ANY TRIGGER + | DROP ANY TRIGGER + | CREATE PROFILE + | ALTER PROFILE + | DROP PROFILE + | CREATE USER + | ALTER USER + | DROP USER + | CREATE TYPE + | CREATE ANY TYPE + | ALTER ANY TYPE + | DROP ANY TYPE + | EXECUTE ANY TYPE + | UNDER ANY TYPE + | PURGE DBA_RECYCLEBIN + | CREATE ANY OUTLINE + | ALTER ANY OUTLINE + | DROP ANY OUTLINE + | SYSKM + | CREATE TABLESPACE + | ALTER TABLESPACE + | DROP TABLESPACE + | SHOW PROCESS + | ALTER SYSTEM + | CREATE DATABASE LINK + | CREATE PUBLIC DATABASE LINK + | DROP DATABASE LINK + | ALTER SESSION + | ALTER DATABASE + +/*授予角色*/ +GRANT role_list TO grantee_user [IDENTIFIED BY password] [WITH {GRANT | ADMID} OPTION]; + +role_list: +role [, role ...] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| priv_type | 指定授予的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时把多个权限赋予用户时,权限类型用","隔开。 | +| system_privilege | 指定授予的系统权限类型。 同时把多个权限赋予用户时,权限类型用","隔开。 | +| obj_clause | 指定授予权限的层级。权限可以分为以下几个层级: * 全局层级:适用于所有的数据库。 * 数据库层级:适用于一个给定数据库中的所有目标。 * 表层级:表权限适用于一个给定表中的所有列 | +| WITH GRANT OPTION | 指定权限是否允许转授,取消授权时级联。 | +| WITH ADMIN OPTION | 指定权限是否允许转授,取消授权时不级联。 | + + + +可以授予的权限类型如下表所示。 + +**权限类型说明表** + + +| 权限 | 说明 | +|-----------------------------|----------------------------------------| +| ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 | +| ALTER | ALTER TABLE的权限。 | +| CREATE | CREATE TABLE的权限。 | +| DELETE | DELETE的权限。 | +| DROP | DROP的权限。 | +| GRANT OPTION | GRANT OPTION的权限。 | +| INSERT | INSERT的权限。 | +| UPDATE | UPDATE的权限。 | +| SELECT | SELECT的权限。 | +| INDEX | CREATE INDEX, DROP INDEX的权限 | +| SHOW VIEW | SHOW CREATE VIEW权限。 | +| SHOW DATABASES | 全局 SHOW DATABASES的权限。 | +| SUPER | SET GLOBAL修改全局系统参数的权限。 | +| REFERENCES | 创建指向表的约束的权限。 | +| EXECUTE | 执行预处理程序的权限。 | +| FLASHBACK | FLASHBACK的权限。 | +| READ | READ的权限。 | +| WRITE | WRITE的权限。 | +| CREATE SESSION | 连接到数据库的权限。 | +| EXEMPT REDACTION POLICY | 绕过任意现有 REDACTION POLICY 并查看数据的权限。 | +| SYSDBA | SYSDBA的权限。 | +| SYSOPER | SYSOPER的权限。 | +| SYSBACKUP | SYSBACKUP的权限。 | +| CREATE TABLE | 在指定用户SCHEMA内创建表的权限。 | +| CREATE ANY TABLE | 在除SYS外所有用户SCHEMA内创建表的权限。 | +| ALTER ANY TABLE | 在除SYS外所有用户SCHEMA内修改表的权限。 | +| BACKUP ANY TABLE | 在除SYS外所有用户SCHEMA内创建表的权限。 | +| DROP ANY TABLE | 在除SYS外所有用户SCHEMA内备份表的权限。 | +| LOCK ANY TABLE | 在除SYS外所有用户SCHEMA内锁定表的权限。 | +| COMMENT ANY TABLE | 在除SYS外所有用户SCHEMA内评论表的权限。 | +| SELECT ANY TABLE | 在除SYS外所有用户SCHEMA内查看表的权限。 | +| INSERT ANY TABLE | 在除SYS外所有用户SCHEMA内的表插入行的权限。 | +| UPDATE ANY TABLE | 在除SYS外所有用户SCHEMA内的表更新行的权限。 | +| DELETE ANY TABLE | 在除SYS外所有用户SCHEMA内删除表的权限。 | +| FLASHBACK ANY TABLE | 在除SYS外所有用户SCHEMA内FLASHBACK表的权限。 | +| CREATE ROLE | 创建角色的权限。 | +| DROP ANY ROLE | 删除任意角色的权限。 | +| GRANT ANY ROLE | 授予任意角色的权限。 | +| ALTER ANY ROLE | 修改任意角色的权限。 | +| AUDIT ANY | 在除SYS外所有用户SCHEMA内修改对象的权限。 | +| GRANT ANY PRIVILEGE | 授予任意系统权限的权限。 | +| GRANT ANY OBJECT PRIVILEGE | 授予任意对象权限的权限。 | +| CREATE ANY INDEX | 在除SYS外所有用户SCHEMA内创建索引的权限。 | +| ALTER ANY INDEX | 在除SYS外所有用户SCHEMA内修改索引的权限。 | +| DROP ANY INDEX | 在除SYS外所有用户SCHEMA内删除索引的权限。 | +| CREATE ANY VIEW | 在除SYS外所有用户SCHEMA内创建视图的权限。 | +| DROP ANY VIEW | 在除SYS外所有用户SCHEMA内删除索引的权限。 | +| CREATE VIEW | 在指定用户SCHEMA内创建视图的权限。 | +| SELECT ANY DICTIONARY | 在指定用户SCHEMA内查询DICTIONARY的权限。 | +| CREATE PROCEDURE | 在指定用户SCHEMA内创建PROCEDURE的权限。 | +| CREATE ANY PROCEDURE | 在除SYS外所有用户SCHEMA内创建PROCEDURE的权限。 | +| ALTER ANY PROCEDURE | 在除SYS外所有用户SCHEMA内修改PROCEDURE的权限。 | +| DROP ANY PROCEDURE | 在除SYS外所有用户SCHEMA内删除PROCEDURE的权限。 | +| EXECUTE ANY PROCEDURE | 在除SYS外所有用户SCHEMA内执行PROCEDURE的权限。 | +| CREATE SYNONYM | 在指定用户SCHEMA内创建SYNONYM的权限。 | +| CREATE ANY SYNONYM | 在除SYS外所有用户SCHEMA内创建SYNONYM的权限。 | +| DROP ANY SYNONYM | 在除SYS外所有用户SCHEMA内删除SYNONYM的权限。 | +| CREATE PUBLIC SYNONYM | 创建公共SYNONYM的权限。 | +| DROP PUBLIC SYNONYM | 删除公共SYNONYM的权限。 | +| CREATE SEQUENCE | 在指定用户SCHEMA内创建SEQUENCE的权限。 | +| CREATE ANY SEQUENCE | 在除SYS外所有用户SCHEMA内创建SEQUENCE的权限。 | +| ALTER ANY SEQUENCE | 在除SYS外所有用户SCHEMA内修改SEQUENCE的权限。 | +| DROP ANY SEQUENCE | 在除SYS外所有用户SCHEMA内删除SEQUENCE的权限。 | +| SELECT ANY SEQUENCE | 在除SYS外所有用户SCHEMA内查询SEQUENCE的权限。 | +| CREATE TRIGGER | 在指定用户SCHEMA内创建TRIGGER的权限。 | +| CREATE ANY TRIGGER | 在除SYS外所有用户SCHEMA内创建TRIGGER的权限。 | +| ALTER ANY TRIGGER | 在除SYS外所有用户SCHEMA内修改TRIGGER的权限。 | +| DROP ANY TRIGGER | 在除SYS外所有用户SCHEMA内删除TRIGGER的权限。 | +| CREATE PROFILE | 创建PROFILE的权限。 | +| ALTER PROFILE | 修改PROFILE的权限。 | +| DROP PROFILE | 删除PROFILE的权限。 | +| CREATE USER | 创建用户的权限。 | +| ALTER USER | 修改用户的权限。 | +| DROP USER | 删除用户的权限。 | +| CREATE TYPE | 在指定用户SCHEMA内创建TYPE的权限。 | +| CREATE ANY TYPE | 在除SYS外所有用户SCHEMA内创建TYPE的权限。 | +| ALTER ANY TYPE | 在除SYS外所有用户SCHEMA内修改TYPE的权限。 | +| DROP ANY TYPE | 在除SYS外所有用户SCHEMA内删除TYPE的权限。 | +| EXECUTE ANY TYPE | 在除SYS外所有用户SCHEMA内执行TYPE的权限。 | +| UNDER ANY TYPE | 在除SYS外所有用户SCHEMA内TYPE的基础上创建SUBTYPE的权限。 | +| PURGE DBA_RECYCLEBIN | 从系统回收站中删除所有对象的权限。 | +| CREATE ANY OUTLINE | 在除SYS外所有用户SCHEMA内创建OUTLINE的权限。 | +| ALTER ANY OUTLINE | 在除SYS外所有用户SCHEMA内修改OUTLINE的权限。 | +| DROP ANY OUTLINE | 在除SYS外所有用户SCHEMA内删除OUTLINE的权限。 | +| SYSKM | SYSKM的权限。 | +| CREATE TABLESPACE | 创建表空间的权限。 | +| ALTER TABLESPACE | 修改表空间的权限。 | +| DROP TABLESPACE | 删除表空间的权限。 | +| ALTER SYSTEM | ALTER SYSTEM的权限 | +| CREATE DATABASE LINK | 在指定用户SCHEMA内创建DATABASE LINK的权限。 | +| CREATE PUBLIC DATABASE LINK | 创建PUBLIC DATABASE LINK的权限。 | +| DROP DATABASE LINK | 在指定用户SCHEMA内删除DATABASE LINK的权限。 | +| ALTER SESSION | 修改SESSION的权限。 | +| ALTER DATABASE | 修改DATABASE的权限。 | + + + +示例 +----------- + +* 执行以下命令给用户 obsqluser 赋予所有权限。 + + + + + + +```javascript +obclient>GRANT ALL PRIVILEGES TO obsqluser; +Query OK, 0 rows affected (0.03 sec) +``` + + + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/4.KILL-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/4.KILL-1.md new file mode 100644 index 000000000..50d920984 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/4.KILL-1.md @@ -0,0 +1,66 @@ +KILL +========================= + + + +描述 +----------- + +该语句用来终止一个会话。 +**说明** + + + +如果您拥有 PROCESS 权限,则您可以查看所有会话。如果您拥有 SUPER 权限,您可以终止所有会话和语句。否则,您只能查看和终止您自己的会话和语句。 + +格式 +----------- + +```javascript +KILL [CONNECTION | QUERY] 'sessionid' +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-----------------|--------------------------------------| +| KILL | 与 KILL CONNECTION 一样,可终止给定的threadid。 | +| KILL CONNECTION | 与不含修改符的KILL一样,可终止给定的threadid。 | +| KILL QUERY | 可终止连接当前正在执行的语句,但是会保持连接的原状。 | + + + +示例 +----------- + +* 终止 sessionid 为 3221638213 的会话连接当前正在执行的语句后,再终止该会话。 + + + + + + +```javascript +OceanBase(admin@test)>show processlist; ++------------+-------+--------------------+------+---------+------+--------+------------------+ +| Id | User | Host | db | Command | Time | State | Info | ++------------+-------+--------------------+------+---------+------+--------+------------------+ +| 3221638212 | admin | 1.11.111.127:11161 | test | Query | 0 | ACTIVE | show processlist | +| 3221638213 | admin | 1.11.111.127:11161 | test | Query | 0 | ACTIVE | select "abcedfg" | ++------------+-------+--------------------+------+---------+------+--------+------------------+ +1 row in set (0.03 sec) + +OceanBase(admin@test)>kill query 3221638213; +Query OK, 0 rows affected (0.01 sec) + +OceanBase(admin@test)>kill 3221638212; +Query OK, 0 rows affected (0.01 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/5.REVOKE-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/5.REVOKE-1.md new file mode 100644 index 000000000..3fb493985 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/5.REVOKE-1.md @@ -0,0 +1,298 @@ +REVOKE +=========================== + + + +描述 +----------- + +该语句用于系统管理员撤销 User 的某些权限。 + +使用说明如下: + +* 用户必须拥有被撤销的权限(例如,user1 要撤销 user2 对表 t1 的 SELECT 权限,则 user1 必须拥有表 t1 的 SELECT 的权限),并且拥有 GRANT OPTION 权限。 + + + +* 撤销 ALL PRIVILEGES 和 GRANT OPTION 权限时,当前用户必须拥有全局 GRANT OPTION 权限,或者对权限表的 UPDATE 及 DELETE 权限。 + + + +* 当权限没有 GRANT OPTION 时,撤销操作不会级联。例如,用户 user1 给 user2 授予了某些权限,撤回 user1 的权限不会同时也撤回 user2 的相应权限。当拥有 GRANT OPTION 时,撤销操作会级联。 + + + + + + +格式 +----------- + +```javascript +/*撤销对象权限*/ +REVOKE obj_privileges + ON obj_clause FROM user_list; + +user_list: + user [, user ...] + +obj_privileges: + obj_privilege [, obj_privilege ...] + +obj_privilege: + ALTER + | AUDIT + | COMMENT + | DELETE + | GRANT + | INDEX + | INSERT + | LOCK + | RENAME + | SELECT + | UPDATE + | REFERENCES + | EXECUTE + | CREATE + | FLASHBACK + | READ + | WRITE + | DEBUG + +obj_clause: + relation_name + | relation_name '.' relation_name + | DIRECTORY relation_name + +relation_name: + STR_VALUE + +/*撤销系统权限*/ +REVOKE {system_privilege_list | ALL PRIVILEGES} + FROM user_list; +REVOKE ALL [PRIVILEGES], GRANT_OPTION FROM user_list; + +system_privilege_list: + system_privilege [, system_privilege ...] + +system_privilege: + CREATE SESSION + | EXEMPT REDACTION POLICY + | SYSDBA + | SYSOPER + | SYSBACKUP + | CREATE TABLE + | CREATE ANY TABLE + | ALTER ANY TABLE + | BACKUP ANY TABLE + | DROP ANY TABLE + | LOCK ANY TABLE + | COMMENT ANY TABLE + | SELECT ANY TABLE + | INSERT ANY TABLE + | UPDATE ANY TABLE + | DELETE ANY TABLE + | FLASHBACK ANY TABLE + | CREATE ROLE + | DROP ANY ROLE + | GRANT ANY ROLE + | ALTER ANY ROLE + | AUDIT ANY + | GRANT ANY PRIVILEGE + | GRANT ANY OBJECT PRIVILEGE + | CREATE ANY INDEX + | ALTER ANY INDEX + | DROP ANY INDEX + | CREATE ANY VIEW + | DROP ANY VIEW + | CREATE VIEW + | SELECT ANY DICTIONARY + | CREATE PROCEDURE + | CREATE ANY PROCEDURE + | ALTER ANY PROCEDURE + | DROP ANY PROCEDURE + | EXECUTE ANY PROCEDURE + | CREATE SYNONYM + | CREATE ANY SYNONYM + | DROP ANY SYNONYM + | CREATE PUBLIC SYNONYM + | DROP PUBLIC SYNONYM + | CREATE SEQUENCE + | CREATE ANY SEQUENCE + | ALTER ANY SEQUENCE + | DROP ANY SEQUENCE + | SELECT ANY SEQUENCE + | CREATE TRIGGER + | CREATE ANY TRIGGER + | ALTER ANY TRIGGER + | DROP ANY TRIGGER + | CREATE PROFILE + | ALTER PROFILE + | DROP PROFILE + | CREATE USER + | ALTER USER + | DROP USER + | CREATE TYPE + | CREATE ANY TYPE + | ALTER ANY TYPE + | DROP ANY TYPE + | EXECUTE ANY TYPE + | UNDER ANY TYPE + | PURGE DBA_RECYCLEBIN + | CREATE ANY OUTLINE + | ALTER ANY OUTLINE + | DROP ANY OUTLINE + | SYSKM + | CREATE TABLESPACE + | ALTER TABLESPACE + | DROP TABLESPACE + | SHOW PROCESS + | ALTER SYSTEM + | CREATE DATABASE LINK + | CREATE PUBLIC DATABASE LINK + | DROP DATABASE LINK + | ALTER SESSION + | ALTER DATABASE + +/*撤销角色*/ +REVOKE role_list FROM user; + +role_list: +role [, role ...] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| obj_privileges | 指定撤销的对象权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时撤销多个权限时,权限类型用","隔开。 | +| system_privilege | 指定撤销的系统权限类型。 同时撤销多个权限时,权限类型用","隔开。 | +| obj_clause | 指定撤销权限的层级,relation_name指定具体对象的名称。权限可以分为以下几个层级: * 全局层级:适用于所有的数据库。 * 数据库层级:适用于一个给定数据库中的所有目标。 * 表层级:表权限适用于一个给定表中的所有列。 | + + + +可以撤销的权限类型如下表所示。 + +**权限类型说明表** + + +| 权限 | 说明 | +|-----------------------------|----------------------------------------| +| ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 | +| ALTER | ALTER TABLE的权限。 | +| CREATE | CREATE TABLE的权限。 | +| DELETE | DELETE的权限。 | +| DROP | DROP的权限。 | +| GRANT OPTION | GRANT OPTION的权限。 | +| INSERT | INSERT的权限。 | +| UPDATE | UPDATE的权限。 | +| SELECT | SELECT的权限。 | +| INDEX | CREATE INDEX, DROP INDEX的权限 | +| SHOW VIEW | SHOW CREATE VIEW权限。 | +| SHOW DATABASES | 全局 SHOW DATABASES的权限。 | +| SUPER | SET GLOBAL修改全局系统参数的权限。 | +| REFERENCES | 创建指向表的约束的权限。 | +| EXECUTE | 执行预处理程序的权限。 | +| FLASHBACK | FLASHBACK的权限。 | +| READ | READ的权限。 | +| WRITE | WRITE的权限。 | +| CREATE SESSION | 连接到数据库的权限。 | +| EXEMPT REDACTION POLICY | 绕过任意现有 REDACTION POLICY 并查看数据的权限。 | +| SYSDBA | SYSDBA的权限。 | +| SYSOPER | SYSOPER的权限。 | +| SYSBACKUP | SYSBACKUP的权限。 | +| CREATE TABLE | 在指定用户SCHEMA内创建表的权限。 | +| CREATE ANY TABLE | 在除SYS外所有用户SCHEMA内创建表的权限。 | +| ALTER ANY TABLE | 在除SYS外所有用户SCHEMA内修改表的权限。 | +| BACKUP ANY TABLE | 在除SYS外所有用户SCHEMA内创建表的权限。 | +| DROP ANY TABLE | 在除SYS外所有用户SCHEMA内备份表的权限。 | +| LOCK ANY TABLE | 在除SYS外所有用户SCHEMA内锁定表的权限。 | +| COMMENT ANY TABLE | 在除SYS外所有用户SCHEMA内评论表的权限。 | +| SELECT ANY TABLE | 在除SYS外所有用户SCHEMA内查看表的权限。 | +| INSERT ANY TABLE | 在除SYS外所有用户SCHEMA内的表插入行的权限。 | +| UPDATE ANY TABLE | 在除SYS外所有用户SCHEMA内的表更新行的权限。 | +| DELETE ANY TABLE | 在除SYS外所有用户SCHEMA内删除表的权限。 | +| FLASHBACK ANY TABLE | 在除SYS外所有用户SCHEMA内FLASHBACK表的权限。 | +| CREATE ROLE | 创建角色的权限。 | +| DROP ANY ROLE | 删除任意角色的权限。 | +| GRANT ANY ROLE | 授予任意角色的权限。 | +| ALTER ANY ROLE | 修改任意角色的权限。 | +| AUDIT ANY | 在除SYS外所有用户SCHEMA内修改对象的权限。 | +| GRANT ANY PRIVILEGE | 授予任意系统权限的权限。 | +| GRANT ANY OBJECT PRIVILEGE | 授予任意对象权限的权限。 | +| CREATE ANY INDEX | 在除SYS外所有用户SCHEMA内创建索引的权限。 | +| ALTER ANY INDEX | 在除SYS外所有用户SCHEMA内修改索引的权限。 | +| DROP ANY INDEX | 在除SYS外所有用户SCHEMA内删除索引的权限。 | +| CREATE ANY VIEW | 在除SYS外所有用户SCHEMA内创建视图的权限。 | +| DROP ANY VIEW | 在除SYS外所有用户SCHEMA内删除索引的权限。 | +| CREATE VIEW | 在指定用户SCHEMA内创建视图的权限。 | +| SELECT ANY DICTIONARY | 在指定用户SCHEMA内查询DICTIONARY的权限。 | +| CREATE PROCEDURE | 在指定用户SCHEMA内创建PROCEDURE的权限。 | +| CREATE ANY PROCEDURE | 在除SYS外所有用户SCHEMA内创建PROCEDURE的权限。 | +| ALTER ANY PROCEDURE | 在除SYS外所有用户SCHEMA内修改PROCEDURE的权限。 | +| DROP ANY PROCEDURE | 在除SYS外所有用户SCHEMA内删除PROCEDURE的权限。 | +| EXECUTE ANY PROCEDURE | 在除SYS外所有用户SCHEMA内执行PROCEDURE的权限。 | +| CREATE SYNONYM | 在指定用户SCHEMA内创建SYNONYM的权限。 | +| CREATE ANY SYNONYM | 在除SYS外所有用户SCHEMA内创建SYNONYM的权限。 | +| DROP ANY SYNONYM | 在除SYS外所有用户SCHEMA内删除SYNONYM的权限。 | +| CREATE PUBLIC SYNONYM | 创建公共SYNONYM的权限。 | +| DROP PUBLIC SYNONYM | 删除公共SYNONYM的权限。 | +| CREATE SEQUENCE | 在指定用户SCHEMA内创建SEQUENCE的权限。 | +| CREATE ANY SEQUENCE | 在除SYS外所有用户SCHEMA内创建SEQUENCE的权限。 | +| ALTER ANY SEQUENCE | 在除SYS外所有用户SCHEMA内修改SEQUENCE的权限。 | +| DROP ANY SEQUENCE | 在除SYS外所有用户SCHEMA内删除SEQUENCE的权限。 | +| SELECT ANY SEQUENCE | 在除SYS外所有用户SCHEMA内查询SEQUENCE的权限。 | +| CREATE TRIGGER | 在指定用户SCHEMA内创建TRIGGER的权限。 | +| CREATE ANY TRIGGER | 在除SYS外所有用户SCHEMA内创建TRIGGER的权限。 | +| ALTER ANY TRIGGER | 在除SYS外所有用户SCHEMA内修改TRIGGER的权限。 | +| DROP ANY TRIGGER | 在除SYS外所有用户SCHEMA内删除TRIGGER的权限。 | +| CREATE PROFILE | 创建PROFILE的权限。 | +| ALTER PROFILE | 修改PROFILE的权限。 | +| DROP PROFILE | 删除PROFILE的权限。 | +| CREATE USER | 创建用户的权限。 | +| ALTER USER | 修改用户的权限。 | +| DROP USER | 删除用户的权限。 | +| CREATE TYPE | 在指定用户SCHEMA内创建TYPE的权限。 | +| CREATE ANY TYPE | 在除SYS外所有用户SCHEMA内创建TYPE的权限。 | +| ALTER ANY TYPE | 在除SYS外所有用户SCHEMA内修改TYPE的权限。 | +| DROP ANY TYPE | 在除SYS外所有用户SCHEMA内删除TYPE的权限。 | +| EXECUTE ANY TYPE | 在除SYS外所有用户SCHEMA内执行TYPE的权限。 | +| UNDER ANY TYPE | 在除SYS外所有用户SCHEMA内TYPE的基础上创建SUBTYPE的权限。 | +| PURGE DBA_RECYCLEBIN | 从系统回收站中删除所有对象的权限。 | +| CREATE ANY OUTLINE | 在除SYS外所有用户SCHEMA内创建OUTLINE的权限。 | +| ALTER ANY OUTLINE | 在除SYS外所有用户SCHEMA内修改OUTLINE的权限。 | +| DROP ANY OUTLINE | 在除SYS外所有用户SCHEMA内删除OUTLINE的权限。 | +| SYSKM | SYSKM的权限。 | +| CREATE TABLESPACE | 创建表空间的权限。 | +| ALTER TABLESPACE | 修改表空间的权限。 | +| DROP TABLESPACE | 删除表空间的权限。 | +| ALTER SYSTEM | ALTER SYSTEM的权限 | +| CREATE DATABASE LINK | 在指定用户SCHEMA内创建DATABASE LINK的权限。 | +| CREATE PUBLIC DATABASE LINK | 创建PUBLIC DATABASE LINK的权限。 | +| DROP DATABASE LINK | 在指定用户SCHEMA内删除DATABASE LINK的权限。 | +| ALTER SESSION | 修改SESSION的权限。 | +| ALTER DATABASE | 修改DATABASE的权限。 | + + + +示例 +----------- + +执行以下命令撤销用户 obsqluser 的所有权限。 + +```javascript +obclient>REVOKE ALL PRIVILEGES FROM sqluser; +Query OK, 0 rows affected (0.10 sec) +``` + + + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/6.SAVEPOINT-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/6.SAVEPOINT-1.md new file mode 100644 index 000000000..f2c673aad --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/6.SAVEPOINT-1.md @@ -0,0 +1,135 @@ +SAVEPOINT +============================== + + + +描述 +----------- + +`SAVEPOINT`语句用来实现事务的部分回滚。 + +格式 +----------- + +* 创建`SAVEPOINT`: + + + + + + +```javascript +SAVEPOINT spname +``` + + + +* 回滚到`SAVEPOINT`: + + + + + + +```javascript +ROLLBACK [WORK] to [SAVEPOINT] spname +``` + + + +参数说明 +------------- + + + +| 参数 | 描述 | +|--------|-------------------------------------------------------------------------------------------------------------------------------------| +| spname | 指定`SAVEPOINT`的名称`SAVEPOINT`是事务范围内唯一的,一个`SAVEPOINT`会覆盖前一个同名的`SAVEPOINT`。创建`SAVEPOINT`后可以将事务回滚到指定`SAVEPOINT`,也可以使用`ROLLBACK`语句回滚整个事务。 | + + + +示例 +----------- + +假设一个事务执行了如下语句: + + +| **sql_no** | **语句** | **分区** | +|------------|---------------|------------| +| 1 | update... | p1, p4 | +| | savepoint sp1 | | +| 2 | update... | p2, p4 | +| 3 | update... | p3, p5 | +| | savepoint sp2 | | +| 4 | update... | p1, p3, p6 | +| 5 | update... | p1, p5 | +| | savepoint sp3 | | +| 6 | select... | | +| 7 | update... | p5, p6 | +| | savepoint sp4 | | + + + +#### 记录 Savepoint + +用户在提交事务之前可以创建`SAVEPOINT`,需要根据`SAVEPOINT`创建的顺序,将事务的`SAVEPOINT`串成链表。以上事务包含了 7 条 SQL 和 4 个`SAVEPOINT`,记录`SAVEPOINT`的链表如下图所示,其中每个节点记录了``的映射关系: + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7455055061/p179258.png "image.png") + +#### 事务参与者列表 + +事务为了支持回滚某条 SQL 之后的所有修改,需要将每条语句涉及的参与者以及对应的 `sql_no` 记录下来,以上事务执行了 7 条 SQL,涉及 p1\~p6 共 6 个分区: + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7455055061/p179259.png "image.png") + +#### Savepoint 回滚过程 + +1. 根据`SAVEPOINT`链表查询`spname`对应的`sql_no` + + 假设用户执行`ROLLBACK to SAVEPOINT sp2`,根据savepoint链表查询到 sp2 对应的`sql_no`为 3。 + + + + + + + +2. 根据事务参与者列表查询`sql_no`对应的分区 + + 根据事务参与者列表查询到`sql_no`大于 3 的语句操作的分区涉及 p1、p3、p5、p6。 + + + + + + + +3. 回滚分区数据 + + 根据第 2 步查询到的分区,调度程序向这些分区发起回滚请求,回滚当前事务在这些分区上 sp2 之后的所有修改。其中 p1、p3、p5 上关于本事务的部分修改被回滚掉,p6 上关于本事务的所有修改都被回滚掉。 + + + + + + + +4. 更新事务参与者列表信息 + + 修改事务参与者列表,将`sql_no`大于 3 的操作信息从事务参与者列表中删除,由于 p6上的所有修改都被回滚掉,因此 p6 可以从参与者列表中删除。 + + + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7455055061/p179260.png "image.png") + +5. 删除无效的 Savepoint + + 用户执行`ROLLBACK to SAVEPOINT sp2`成功后,系统会删除 sp3 和 sp4 的`SAVEPOINT`,不允许再回滚到 sp3 和 sp4。 + + + + + +![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7455055061/p179261.png "image.png") diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/7.set-names.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/7.set-names.md new file mode 100644 index 000000000..930906429 --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/7.set-names.md @@ -0,0 +1,92 @@ +SET NAMES +============================== + + + +描述 +----------- + +该语句用来设置当前连接的数据库的字符集编码。 + +格式 +----------- + +```javascript +SET NAMES 'charset_name' [COLLATE 'collation_name'] +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|----------------|------------------------------| +| charset_name | 指定字符集 | +| collation_name | 指定字符集排序规则。如未指定,则使用字符集默认排序规则。 | + + +**说明** + + + +该语句将三个会话系统变量 `character_set_client` , `character_set_connection` 和 `character_set_results` 设置为给定的字符集。将 `character_set_connection` 设置为 `charset_name` ,将 `collation_connection` 设置为 `charset_name` 的默认排序规则。 + +示例 +----------- + +* 设置数据库的字符集和排序规则。 + + + + + + +```javascript +OceanBase(admin@test)>SET NAMES 'utf8mb4' COLLATE 'utf8mb4_general_ci'; +Query OK, 0 rows affected (0.00 sec) + +OceanBase(admin@test)>show variables like 'character_set_c%'; ++--------------------------+---------+ +| Variable_name | Value | ++--------------------------+---------+ +| character_set_client | utf8mb4 | +| character_set_connection | utf8mb4 | ++--------------------------+---------+ +2 rows in set (0.01 sec) + +OceanBase(admin@test)>show variables like 'collation_connection'; ++----------------------+--------------------+ +| Variable_name | Value | ++----------------------+--------------------+ +| collation_connection | utf8mb4_general_ci | ++----------------------+--------------------+ +1 row in set (0.05 sec) + + +OceanBase(admin@test)>SET NAMES 'gbk'; +Query OK, 0 rows affected (0.02 sec) + +OceanBase(admin@test)>show variables like 'character_set_c%'; ++--------------------------+-------+ +| Variable_name | Value | ++--------------------------+-------+ +| character_set_client | gbk | +| character_set_connection | gbk | ++--------------------------+-------+ +2 rows in set (0.01 sec) + + +OceanBase(admin@test)>show variables like 'collation_connection'; ++----------------------+----------------+ +| Variable_name | Value | ++----------------------+----------------+ +| collation_connection | gbk_chinese_ci | ++----------------------+----------------+ +1 row in set (0.01 sec) +``` + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/8.set-password-1.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/8.set-password-1.md new file mode 100644 index 000000000..b4171e97a --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/8.set-password-1.md @@ -0,0 +1,53 @@ +SET PASSWORD +================================= + + + +描述 +----------- + +该语句用于修改 OceanBase 当前登录用户或其他用户的密码。 + +格式 +----------- + +```javascript +SET PASSWORD [FOR user] = PASSWORD(password); +ALTER USER user IDENTIFIED BY password; + +password: + STR_VALUE +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|----------|--------------------------------------------------------------------------------------------------------------------------------------| +| FOR user | 如果没有 For user 子句,表示修改当前用户的密码。任何成功登录的用户都可以修改当前用户的密码。 如果有 For user 子句,表示修改指定用户的密码。必须拥有 CREATE USER 的系统权限,才可以修改指定用户的密码。 | + + + +示例 +----------- + +* 执行以下命令将 sqluser 用户的密码修改为 abc123。 + + + + + + +```javascript +oceanBase(admin@TEST)>SET PASSWORD for sqluser = PASSWORD(abc123); +Query OK, 0 rows affected (0.02 sec) +``` + + + + + diff --git a/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/9.set-variable.md b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/9.set-variable.md new file mode 100644 index 000000000..8ef0500ca --- /dev/null +++ b/docs/docs/docs-cn/11.sql-reference-oracle-mode/9.sql-statement-1/3.DCL/9.set-variable.md @@ -0,0 +1,53 @@ +SET VARIABLE +================================= + + + +描述 +----------- + +该语句用来设置用户自定义和系统定义的 session 变量。 + +格式 +----------- + +```javascript +SET var1_name = var1_value, var2_name = var2_value, ...; +``` + + + +参数解释 +------------- + + + +| 参数 | 描述 | +|-----------|---------------------------------------------------| +| var1_name | 指定要设置的变量,可以是用户自定义的变量,也可以是系统变量。如果要设置多个变量,中间用 , 分隔。 | + + + +示例 +----------- + +```javascript +OceanBase(TEST@TEST)>set @a = 1, @b = 2, @c = 3; +Query OK, 0 rows affected (0.02 sec) + +OceanBase(TEST@TEST)>set @@tx_isolation = 'read-what'; +ORA-00600: internal error code, arguments: -5145, Variable 'tx_isolation' can't be set to the value of 'read-what' + +OceanBase(TEST@TEST)>set @@tx_isolation = 'read-committed'; +Query OK, 0 rows affected (0.01 sec) + +OceanBase(TEST@TEST)>select @a,@b,@c,@@tx_isolation from dual; ++------+------+------+----------------+ +| @A | @B | @C | @@TX_ISOLATION | ++------+------+------+----------------+ +| 1 | 2 | 3 | read-committed | ++------+------+------+----------------+ +1 row in set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/1.sql-request-execution-process-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/1.sql-request-execution-process-3.md new file mode 100644 index 000000000..10d507c05 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/1.sql-request-execution-process-3.md @@ -0,0 +1,23 @@ +SQL 请求执行流程 +=============================== + + + +SQL 引擎从接受 SQL 请求到执行的典型流程如下图所示: + +![newSQL 请求](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7973677161/p261032.png) + +下表为 SQL 请求执行流程的步骤说明。 + + +| **步骤** | **说明** | +|-----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Parser(词法/语法解析模块) | 在收到用户发送的 SQL 请求串后,Parser 会将字符串分成一个个的"单词",并根据预先设定好的语法规则解析整个请求,将 SQL 请求字符串转换成带有语法结构信息的内存数据结构,称为语法树(Syntax Tree)。 | +| Plan Cache(执行计划缓存模块) | 执行计划缓存模块会将该 SQL 第一次生成的执行计划缓存在内存中,后续的执行可以反复执行这个计划,避免了重复查询优化的过程。 | +| Resolver(语义解析模块) | Resolver 将生成的语法树转换为带有数据库语义信息的内部数据结构。在这一过程中,Resolver 将根据数据库元信息将 SQL 请求中的 Token 翻译成对应的对象(例如库、表、列、索引等),生成的数据结构叫做 Statement Tree。 | +| Transfomer(逻辑改写模块) | 分析用户 SQL 的语义,并根据内部的规则或代价模型,将用户 SQL 改写为与之等价的其他形式,并将其提供给后续的优化器做进一步的优化。Transformer 的工作方式是在原 Statement Tree 上做等价变换,变换的结果仍然是一棵 Statement Tree。 | +| Optimizer(优化器) | 优化器是整个 SQL 请求优化的核心,其作用是为 SQL 请求生成最佳的执行计划。在优化过程中,优化器需要综合考虑 SQL 请求的语义、对象数据特征、对象物理分布等多方面因素,解决访问路径选择、联接顺序选择、联接算法选择、分布式计划生成等多个核心问题,最终选择一个对应该 SQL 的最佳执行计划。 | +| Code Generator(代码生成器) | 将执行计划转换为可执行的代码,但是不做任何优化选择。 | +| Executor(执行器) | 启动 SQL 的执行过程。 * 对于本地执行计划,Executor 会简单的从执行计划的顶端的算子开始调用,根据算子自身的逻辑完成整个执行的过程,并返回执行结果。 * 对于远程或分布式计划,将执行树分成多个可以调度的子计划,并通过 RPC 将其发送给相关的节点去执行。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/1.introduction-to-sql-execution-plans-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/1.introduction-to-sql-execution-plans-2.md new file mode 100644 index 000000000..1ebd71a3a --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/1.introduction-to-sql-execution-plans-2.md @@ -0,0 +1,190 @@ +SQL 执行计划简介 +=============================== + +执行计划(EXPLAIN)是对一条 SQL 查询语句在数据库中执行过程的描述。 + +用户可以通过 `EXPLAIN` 命令查看优化器针对给定 SQL 生成的逻辑执行计划。如果要分析某条 SQL 的性能问题,通常需要先查看 SQL 的执行计划,排查每一步 SQL 执行是否存在问题。所以读懂执行计划是 SQL 优化的先决条件,而了解执行计划的算子是理解 `EXPLAIN` 命令的关键。 + +EXPLAIN 命令格式 +--------------------------------- + +OceanBase 数据库的执行计划命令有三种模式:`EXPLAIN BASIC`、`EXPLAIN` 和 `EXPLAIN EXTENDED`。这三种模式对执行计划展现不同粒度的细节信息: + +* `EXPLAIN BASIC` 命令用于最基本的计划展示。 + + + +* `EXPLAIN EXTENDED` 命令用于最详细的计划展示(通常在排查问题时使用这种展示模式)。 + + + +* `EXPLAIN` 命令所展示的信息可以帮助普通用户了解整个计划的执行方式。 + + + + + + +命令格式如下:​​ + +```sql +EXPLAIN [BASIC | EXTENDED | PARTITIONS | FORMAT = format_name] explainable_stmt +format_name: { TRADITIONAL | JSON } +explainable_stmt: { SELECT statement +| DELETE statement +| INSERT statement +| REPLACE statement +| UPDATE statement } +``` + + + +执行计划形状与算子信息 +-------------------------------- + +在数据库系统中,执行计划在内部通常是以树的形式来表示的,但是不同的数据库会选择不同的方式展示给用户。 + +如下示例分别为 PostgreSQL 数据库、Oracle 数据库和 OceanBase 数据库对于 TPCDS Q3 的计划展示。 + +```sql +obclient>SELECT /*TPC-DS Q3*/ * + FROM (SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + Sum(ss_net_profit) sum_agg + FROM date_dim dt, + store_sales, + item + WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manufact_id = 914 + AND dt.d_moy = 11 + GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id + ORDER BY dt.d_year, + sum_agg DESC, + brand_id) + WHERE rownum <= 100; + +``` + + + +* PostgreSQL 数据库执行计划展示如下: + + ```sql + Limit (cost=13986.86..13987.20 rows=27 width=91) + -> Sort (cost=13986.86..13986.93 rows=27 width=65) + Sort Key: dt.d_year, (sum(store_sales.ss_net_profit)), item.i_brand_id + -> HashAggregate (cost=13985.95..13986.22 rows=27 width=65) + -> Merge Join (cost=13884.21..13983.91 rows=204 width=65) + Merge Cond: (dt.d_date_sk = store_sales.ss_sold_date_sk) + -> Index Scan using date_dim_pkey on date_dim dt (cost=0.00..3494.62 rows=6080 width=8) + Filter: (d_moy = 11) + -> Sort (cost=12170.87..12177.27 rows=2560 width=65) + Sort Key: store_sales.ss_sold_date_sk + -> Nested Loop (cost=6.02..12025.94 rows=2560 width=65) + -> Seq Scan on item (cost=0.00..1455.00 rows=16 width=59) + Filter: (i_manufact_id = 914) + -> Bitmap Heap Scan on store_sales (cost=6.02..658.94 rows=174 width=14) + Recheck Cond: (ss_item_sk = item.i_item_sk) + -> Bitmap Index Scan on store_sales_pkey (cost=0.00..5.97 rows=174 width=0) + Index Cond: (ss_item_sk = item.i_item_sk) + ``` + + + + + + +* Oracle 数据库执行计划展示如下: + + ```sql + Plan hash value: 2331821367 + -------------------------------------------------------------------------------------------------- + | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | + -------------------------------------------------------------------------------------------------- + | 0 | SELECT STATEMENT | | 100 | 9100 | 3688 (1)| 00:00:01 | + |* 1 | COUNT STOPKEY | | | | | | + | 2 | VIEW | | 2736 | 243K| 3688 (1)| 00:00:01 | + |* 3 | SORT ORDER BY STOPKEY | | 2736 | 256K| 3688 (1)| 00:00:01 | + | 4 | HASH GROUP BY | | 2736 | 256K| 3688 (1)| 00:00:01 | + |* 5 | HASH JOIN | | 2736 | 256K| 3686 (1)| 00:00:01 | + |* 6 | TABLE ACCESS FULL | DATE_DIM | 6087 | 79131 | 376 (1)| 00:00:01 | + | 7 | NESTED LOOPS | | 2865 | 232K| 3310 (1)| 00:00:01 | + | 8 | NESTED LOOPS | | 2865 | 232K| 3310 (1)| 00:00:01 | + |* 9 | TABLE ACCESS FULL | ITEM | 18 | 1188 | 375 (0)| 00:00:01 | + |* 10 | INDEX RANGE SCAN | SYS_C0010069 | 159 | | 2 (0)| 00:00:01 | + | 11 | TABLE ACCESS BY INDEX ROWID| STORE_SALES | 159 | 2703 | 163 (0)| 00:00:01 | + -------------------------------------------------------------------------------------------------- + ``` + + + + + + + + +* OceanBase 数据库执行计划展示如下: + + ```sql + |ID|OPERATOR |NAME |EST. ROWS|COST | + ------------------------------------------------------- + |0 |LIMIT | |100 |81141| + |1 | TOP-N SORT | |100 |81127| + |2 | HASH GROUP BY | |2924 |68551| + |3 | HASH JOIN | |2924 |65004| + |4 | SUBPLAN SCAN |VIEW1 |2953 |19070| + |5 | HASH GROUP BY | |2953 |18662| + |6 | NESTED-LOOP JOIN| |2953 |15080| + |7 | TABLE SCAN |ITEM |19 |11841| + |8 | TABLE SCAN |STORE_SALES|161 |73 | + |9 | TABLE SCAN |DT |6088 |29401| + ======================================================= + ``` + + + + + + +由示例可见,OceanBase 数据库的计划展示与 Oracle 数据库类似。OceanBase 数据库执行计划中的各列的含义如下: + + +| 列名 | 含义 | +|-----------|----------------------------| +| ID | 执行树按照前序遍历的方式得到的编号(从 0 开始)。 | +| OPERATOR | 操作算子的名称。 | +| NAME | 对应表操作的表名(索引名)。 | +| EST. ROWS | 估算该操作算子的输出行数。 | +| COST | 该操作算子的执行代价(微秒)。 | + + +**说明** + + + +在表操作中,NAME 字段会显示该操作涉及的表的名称(别名),如果是使用索引访问,还会在名称后的括号中展示该索引的名称, 例如 t1(t1_c2) 表示使用了 t1_c2 这个索引。如果扫描的顺序是逆序,还会在后面使用 RESERVE 关键字标识,例如 `t1(t1_c2,RESERVE)`。 + +OceanBase 数据库 `EXPLAIN` 命令输出的第一部分是执行计划的树形结构展示。其中每一个操作在树中的层次通过其在 operator 中的缩进予以展示。树的层次关系用缩进来表示,层次最深的优先执行,层次相同的以特定算子的执行顺序为标准来执行。 + +上述 TPCDS Q3 示例的计划展示树如下: + +![explain](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8927937061/p181620.png)OceanBase 数据库 `EXPLAIN` 命令输出的第二部分是各操作算子的详细信息,包括输出表达式、过滤条件、分区信息以及各算子的独有信息(包括排序键、连接键、下压条件等)。示例如下: + +```unknow +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), prefix_pos(1) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c2, ASC]) + 3 - output([t2.c2], [t2.c1]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/1.table-scan-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/1.table-scan-2.md new file mode 100644 index 000000000..58fe698c6 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/1.table-scan-2.md @@ -0,0 +1,69 @@ +TABLE SCAN +=============================== + +TABLE SCAN 算子是存储层和 SQL 层的接口,用于展示优化器选择哪个索引来访问数据。 + +在 OceanBase 数据库中,对于普通索引,索引的回表逻辑是封装在 TABLE SCAN 算子中的;而对于全局索引,索引的回表逻辑由 TABLE LOOKUP 算子完成。 + +示例:含 TABLE SCAN 算子的执行计划 + +```javascript +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT, c3 INT, c4 INT, + INDEX k1(c2,c3)); +Query OK, 0 rows affected (0.09 sec) + +Q1: +obclient>EXPLAIN EXTENDED SELECT * FROM t1 WHERE c1 = 1\G; +*************************** 1. row *************************** +Query Plan: +| ================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------- +|0 |TABLE GET|t1 |1 |53 | +================================== +Outputs & filters: +------------------------------------- + 0 - output([t1.c1(0x7f22fbe69340)], [t1.c2(0x7f22fbe695c0)], [t1.c3(0x7f22fbe69840)], [t1.c4(0x7f22fbe69ac0)]), filter(nil), + access([t1.c1(0x7f22fbe69340)], [t1.c2(0x7f22fbe695c0)], [t1.c3(0x7f22fbe69840)], [t1.c4(0x7f22fbe69ac0)]), partitions(p0), + is_index_back=false, + range_key([t1.c1(0x7f22fbe69340)]), range[1 ; 1], + range_cond([t1.c1(0x7f22fbe69340) = 1(0x7f22fbe68cf0)]) + +Q2: +obclient>EXPLAIN EXTENDED SELECT * FROM t1 WHERE c2 < 1 AND c3 < 1 AND + c4 < 1\G; +*************************** 1. row *************************** +Query Plan: +| ====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t1(k1)|100 |12422| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1(0x7f22fbd1e220)], [t1.c2(0x7f227decec40)], [t1.c3(0x7f227decf9b0)], [t1.c4(0x7f22fbd1dfa0)]), filter([t1.c3(0x7f227decf9b0) < 1(0x7f227decf360)], [t1.c4(0x7f22fbd1dfa0) < 1(0x7f22fbd1d950)]), + access([t1.c2(0x7f227decec40)], [t1.c3(0x7f227decf9b0)], [t1.c4(0x7f22fbd1dfa0)], [t1.c1(0x7f22fbd1e220)]), partitions(p0), + is_index_back=true, filter_before_indexback[true,false], + range_key([t1.c2(0x7f227decec40)], [t1.c3(0x7f227decf9b0)], [t1.c1(0x7f22fbd1e220)]), + range(NULL,MAX,MAX ; 1,MIN,MIN), + range_cond([t1.c2(0x7f227decec40) < 1(0x7f227dece5f0)]) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细展示了 TABLE SCAN 算子的输出信息如下: + + +| **信息名称** | **含义** | +|---------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| operator | TABLE SCAN 算子的 operator 有两种形式:TABLE SCAN 和 TABLE GET。 * TABLE SCAN:属于范围扫描,会返回 0 行或者多行数据。 * TABLE GET:直接用主键定位,返回 0 行或者 1 行数据。 | +| name | 选择用哪个索引来访问数据。选择的索引的名字会跟在表名后面,如果没有索引的名字,则说明执行的是主表扫描。 这里需要注意,在 OceanBase 数据库中,主表和索引的组织结构是一样的,主表本身也是一个索引。 | +| output | 该算子的输出列。 | +| filter | 该算子的过滤谓词。 由于示例中 TABLE SCAN 算子没有设置 filter,所以为 nil。 | +| partitions | 查询需要扫描的分区。 | +| is_index_back | 该算子是否需要回表。 例如,在 Q1 查询中,因为选择了主表,所以不需要回表。在 Q2 查询中,索引列是 `(c2,c3,c1)`, 由于查询需要返回 c4 列,所以需要回表。 | +| filter_before_indexback | 与每个 filter 对应,表明该 filter 是可以直接在索引上进行计算,还是需要索引回表之后才能计算。 例如,在 Q2 查询中,filter `c3 < 1` 可以直接在索引上计算,能减少回表数量;filter `c4 < 1` 需要回表取出 c4 列之后才能计算。 | +| range_key/range/range_cond | * range_key:索引的 rowkey 列。 * range:索引开始扫描和结束扫描的位置。判断是否是全表扫描需要关注 range 的范围。例如,对于一个 rowkey 有三列的场景,`range(MIN,MIN, MIN ; MAX, MAX, MAX)`代表的就是真正意义上的全表扫描。 * range_cond:决定索引开始扫描和结束扫描位置的相关谓词。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/10.MATERIAL-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/10.MATERIAL-1-2.md new file mode 100644 index 000000000..8cbc1305c --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/10.MATERIAL-1-2.md @@ -0,0 +1,50 @@ +MATERIAL +============================= + +MATERIAL 算子用于物化下层算子输出的数据。 + +OceanBase 数据库以流式数据执行计划,但有时算子需要等待下层算子输出所有数据后才能够开始执行,所以需要在下方添加一个 MATERIAL 算子物化所有的数据。或者在子计划需要重复执行的时候,使用 MATERIAL 算子可以避免重复执行。 + +如下示例中,t1 表与 t2 表执行 NESTED LOOP JOIN 运算时,右表需要重复扫描,可以在右表有一个 MATERIAL 算子,保存 t2 表的所有数据。 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT, c3 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t2(c1 INT ,c2 INT ,c3 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT /*+ORDERED USE_NL(T2)*/* FROM t1,t2 + WHERE t1.c1=t2.c1\G; +*************************** 1. row *************************** +Query Plan: +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |NESTED-LOOP JOIN| |2970 |277377| +|1 | TABLE SCAN |t1 |3 |37 | +|2 | MATERIAL | |100000 |176342| +|3 | TABLE SCAN |t2 |100000 |70683 | +=========================================== +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 = t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) +``` + + + +上述示例中,执行计划展示中 2 号算子 MATERIAL 的功能是保存 t2 表的数据,以避免每次联接都从磁盘扫描 t2 表的数据。执行计划展示中的 outputs \& filters 详细展示了 MATERIAL 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|------------------------------------------------------------------| +| output | 该算子输出的表达式。 其中 rownum() 表示 ROWNUM 对应的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 MATERIAL 算子没有设置 filter,所以为 nil。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/11.SORT-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/11.SORT-1-2.md new file mode 100644 index 000000000..a28a1b45a --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/11.SORT-1-2.md @@ -0,0 +1,42 @@ +SORT +========================= + +SORT 算子用于对输入的数据进行排序。 + +示例:对 t1 表的数据排序,并按照 c1 列降序排列和 c2 列升序排列 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT c1 FROM t1 ORDER BY c1 DESC, c2 ASC\G; +*************************** 1. row *************************** +Query Plan: +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |SORT | |3 |40 | +|1 | TABLE SCAN|t1 |3 |37 | +==================================== +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC], [t1.c2, ASC]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) +``` + + + +上述示例中,执行计划展示中 0 号算子 SORT 对 t1 表的数据进行排序,执行计划展示中的 outputs \& filters 详细展示了 SORT 算子的输出信息如下: + + +| **信息名称** | **含义** | +|-------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| output | 该算子的输出列。 | +| filter | 该算子的过滤谓词。 由于示例中 SORT 算子没有设置 filter,所以为 nil。 | +| sort_keys(\[column, DESC\],\[column, ASC\] ...) | 按 column 列排序。 * DESC:降序。 * ASC:升序。 例如,`sort_keys([t1.c1, DESC],[t1.c2, ASC])`中指定排序键分别为 c1 和 c2,并且以 c1 列降序, c2 列升序排列。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/12.LIMIT-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/12.LIMIT-1-2.md new file mode 100644 index 000000000..de9f4ba40 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/12.LIMIT-1-2.md @@ -0,0 +1,226 @@ +LIMIT +========================== + +LIMIT 算子用于限制数据输出的行数,与 MySQL 的 LIMIT 算子功能相同。 + +在 OceanBase 数据库的 MySQL 模式中处理含有 LIMIT 的 SQL 时,SQL 优化器都会为其生成一个 LIMIT 算子,但在一些特殊场景不会给与分配,例如 LIMIT 可以下压到基表的场景,就没有分配的必要性。 + +而对于 OceanBase 数据库的 Oracle 模式,以下两种场景会为其分配 LIMIT 算子: + +* ROWNUM 经过 SQL 优化器改写生成 + + + +* 为了兼容 Oracle12c 的 FETCH 功能 + + + + + + +MySQL 模式含有 LIMIT 的 SQL 场景 +---------------------------------------------- + +示例 1:OceanBase 数据库的 MySQL 模式含有 LIMIT 的 SQL 场景 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1, 1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2, 2); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(3, 3); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t2 VALUES(1, 1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t2 VALUES(2, 2); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t2 VALUES(3, 3); +Query OK, 1 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN SELECT t1.c1 FROM t1,t2 LIMIT 1 OFFSET 1\G; +*************************** 1. row *************************** +Query Plan: +| ===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------------- +|0 |LIMIT | |1 |39 | +|1 | NESTED-LOOP JOIN CARTESIAN| |2 |39 | +|2 | TABLE SCAN |t1 |1 |36 | +|3 | TABLE SCAN |t2 |100000 |59654| +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(1), offset(1) + 1 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.__pk_increment]), filter(nil), + access([t2.__pk_increment]), partitions(p0) + +Q2: +obclient>EXPLAIN SELECT * FROM t1 LIMIT 2\G; +*************************** 1. row *************************** +Query Plan: +| =================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(2), offset(nil) + +``` + + + +上述示例中,Q1 查询的执行计划展示中的 outputs \& filters 详细列出了 LIMIT 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|--------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 LIMIT 算子没有设置 filter,所以为 nil。 | +| limit | 限制输出的行数,是一个常量。 | +| offset | 距离当前位置的偏移行数,是一个常量。 由于示例中的 SQL 中不含有 offset,因此生成的计划中为 nil。 | + + + +Q2 查询的执行计划展示中,虽然 SQL 中含有 LIMIT,但是并未分配 LIMIT 算子,而是将相关表达式下压到了 TABLE SCAN 算子上,这种下压 LIMIT 行为是 SQL 优化器的一种优化方式,详细信息请参见 [TABLE SCAN](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/1.table-scan-2.md)。 + +Oracle 模式含有 COUNT 的 SQL 改写为 LIMIT 场景 +--------------------------------------------------------- + +由于 Oracle 模式含有 COUNT 的 SQL 改写为 LIMIT 场景在 COUNT 算子章节已经有过相关介绍,详细信息请参见 [COUNT](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/4.COUNT-1-2-3-4.md)。 + +Oracle 模式含有 FETCH 的 SQL 场景 +----------------------------------------------- + +示例 2:OceanBase 数据库的 Oracle 模式含有 FETCH 的 SQL 场景 + +```javascript +obclient>CREATE TABLE T1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE T1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1, 1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2, 2); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(3, 3); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t2 VALUES(1, 1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t2 VALUES(2, 2); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t2 VALUES(3, 3); +Query OK, 1 rows affected (0.12 sec) + +Q3: +obclient>EXPLAIN SELECT * FROM t1,t2 OFFSET 1 ROWS + FETCH NEXT 1 ROWS ONLY\G; +*************************** 1. row *************************** +Query Plan: +| ===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------------- +|0 |LIMIT | |1 |238670 | +|1 | NESTED-LOOP JOIN CARTESIAN| |2 |238669 | +|2 | TABLE SCAN |T1 |1 |36 | +|3 | MATERIAL | |100000 |238632 | +|4 | TABLE SCAN |T2 |100000 |64066| +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2]), filter(nil), limit(?), offset(?) + 1 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 3 - output([T2.C1], [T2.C2]), filter(nil) + 4 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p0) + + + Q4: +obclient>EXPLAIN SELECT * FROM t1 FETCH NEXT 1 ROWS ONLY\G; +*************************** 1. row *************************** +Query Plan: + | =================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|T1 |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0), + limit(?), offset(nil) + + + Q5: +obclient>EXPLAIN SELECT * FROM t2 ORDER BY c1 FETCH NEXT 10 + PERCENT ROW WITH TIES\G; +*************************** 1. row *************************** +Query Plan: +| ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |LIMIT | |10000 |573070| +|1 | SORT | |100000 |559268| +|2 | TABLE SCAN|T2 |100000 |64066 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([T2.C1], [T2.C2]), filter(nil), limit(nil), offset(nil), percent(?), with_ties(true) + 1 - output([T2.C1], [T2.C2]), filter(nil), sort_keys([T2.C1, ASC]) + 2 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p0) +``` + + + +上述示例中,Q3 和 Q4 的查询的执行计划展示中,与之前 MySQL 模式的 Q1 和 Q2 查询基本相同,这是因为 Oracle 12c 的 FETCH 功能和 MySQL 的 LIMIT 功能类似,两者的区别如 Q5 执行计划展示中所示。 + +执行计划展示中的 outputs \& filters 详细列出了 LIMIT 算子的输出信息如下: + + +| **信息名称** | **含义** | +|-----------|-------------------------------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 LIMIT 算子没有设置 filter,所以为 nil。 | +| limit | 限制输出的行数,是一个常量。 | +| offset | 距离当前位置的偏移行数,是一个常量。 | +| percent | 按照数据总行数的百分比输出,是一个常量。 | +| with_ties | 是否在排序后的将最后一行按照等值一起输出。 例如,要求输出最后一行,但是排序之后有两行的值都为 1,如果设置了最后一行按照等值一起输出,那么这两行都会被输出。 | + + + +以上 LIMIT 算子的新增的计划展示属性,都是在 Oracle 模式下的 FETCH 功能特有的,不影响 MySQL 模式计划。关于 Oracle12c 的 FETCH 语法的详细信息,请参见 [Oracle 12c Fetch Rows](https://renenyffenegger.ch/notes/development/databases/Oracle/SQL/select/first-n-rows/index#ora-sql-row-limiting-clause)。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/13.for-update-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/13.for-update-2.md new file mode 100644 index 000000000..1494ece01 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/13.for-update-2.md @@ -0,0 +1,135 @@ +FOR UPDATE +=============================== + +FOR UPDATE 算子用于对表中的数据进行加锁操作。 + +OceanBase 数据库支持的 FOR UPDATE 算子包括 FOR UPDATE 和 MULTI FOR UPDATE。 + +FOR UPDATE 算子执行查询的一般流程如下: + +1. 首先执行 `SELECT` 语句部分,获得查询结果集。 + + + +2. 对查询结果集相关的记录进行加锁操作。 + + + + + + +FOR UPDATE +------------------------------- + +FOR UPDATE 用于对单表(或者单个分区)进行加锁。 + +如下示例中,Q1 查询是对 t1 表中满足 `c1 = 1` 的行进行加锁。这里 t1 表是一张单分区的表,所以 1 号算子生成了一个 FOR UPDATE 算子。 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1, 1); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2, 2); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(3, 3); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t2 VALUES(1, 1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t2 VALUES(2, 2); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t2 VALUES(3, 3); +Query OK, 1 rows affected (0.12 sec) + +Q1: +obclient> EXPLAIN SELECT * FROM t1 WHERE c1 = 1 FOR UPDATE\G; +*************************** 1. row *************************** +Query Plan: +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MATERIAL | |10 |856 | +|1 | FOR UPDATE | |10 |836 | +|2 | TABLE SCAN|T1 |10 |836 | +===================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2]), filter(nil) + 1 - output([T1.C1], [T1.C2]), filter(nil), lock tables(T1) + 2 - output([T1.C1], [T1.C2], [T1.__pk_increment]), filter([T1.C1 = 1]), + access([T1.C1], [T1.C2], [T1.__pk_increment]), partitions(p0) +``` + + + +上述示例中,Q1 查询的执行计划展示中的 outputs \& filters 详细列出了 FOR UPDATE 算子的输出信息如下: + + +| **信息名称** | **含义** | +|-------------|--------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 FOR UPDATE 算子没有设置 filter,所以为 nil。 | +| lock tables | 需要加锁的表。 | + + + +MULTI FOR UPDATE +------------------------------------- + +MULTI FOR UPDATE 用于对多表(或者多个分区)进行加锁操作。 + +如下示例中,Q2 查询是对 t1 和 t2 两张表的数据进行加锁,加锁对象是满足 `c1 = 1 AND c1 = d1` 的行。由于需要对多个表的行进行加锁,因此 1 号算子是 MULTI FOR UPDATE。 + +```javascript +obclient>CREATE TABLE t1 (c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t2 (d1 INT, d2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT * FROM t1, t2 WHERE c1 = 1 AND c1 = d1 + FOR UPDATE\G; +*************************** 1. row *************************** +Query Plan: +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |MATERIAL | |10 |931 | +|1 | MULTI FOR UPDATE | |10 |895 | +|2 | NESTED-LOOP JOIN CARTESIAN| |10 |895 | +|3 | TABLE GET |T2 |1 |52 | +|4 | TABLE SCAN |T1 |10 |836 | +===================================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.D1], [T2.D2]), filter(nil) + 1 - output([T1.C1], [T1.C2], [T2.D1], [T2.D2]), filter(nil), lock tables(T1, T2) + 2 - output([T1.C1], [T1.C2], [T2.D1], [T2.D2], [T1.__pk_increment]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([T2.D1], [T2.D2]), filter(nil), + access([T2.D1], [T2.D2]), partitions(p0) + 4 - output([T1.C1], [T1.C2], [T1.__pk_increment]), filter([T1.C1 = 1]), + access([T1.C1], [T1.C2], [T1.__pk_increment]), partitions(p0) +``` + + + +上述示例中,Q2 查询的执行计划展示中的 outputs \& filters 详细列出了 MULTI FOR UPDATE 算子的信息如下: + + +| **信息名称** | **含义** | +|-------------|--------------------------------------------------------------------------| +| output | 该算子输出的列。 | +| filter | 该算子上的过滤条件。 由于示例中 MULTI FOR UPDATE 算子没有设置 filter,所以为 nil。 | +| lock tables | 需要加锁的表。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/14.select-into-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/14.select-into-2.md new file mode 100644 index 000000000..8186df025 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/14.select-into-2.md @@ -0,0 +1,47 @@ +SELECT INTO +================================ + +SELECT INTO 算子用于将查询结果赋值给变量列表,查询仅返回一行数据。 + +如下示例查询中, `SELECT` 输出列为 `COUNT(*)` 和 `MAX(c1)`,其查询结果分别赋值给变量 @a 和 @b。 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1,1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2,2); +Query OK, 1 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT COUNT(*), MAX(c1) INTO @a, @b FROM t1\G; +*************************** 1. row *************************** +Query Plan: +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SELECT INTO | |0 |37 | +|1 | SCALAR GROUP BY| |1 |37 | +|2 | TABLE SCAN |t1 |2 |37 | +========================================= +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_MAX(t1.c1)]), filter(nil) + 1 - output([T_FUN_COUNT(*)], [T_FUN_MAX(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_MAX(t1.c1)]) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细列出了 SELECT INTO 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|---------------------------------------------------------------------| +| output | 该算子赋值给变量列表的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 SELECT INTO 算子没有设置 filter,所以为 nil。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/15.subplan-scan-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/15.subplan-scan-2.md new file mode 100644 index 000000000..8a3d51363 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/15.subplan-scan-2.md @@ -0,0 +1,79 @@ +SUBPLAN SCAN +================================= + +SUBPLAN SCAN 算子用于展示优化器从哪个视图访问数据。 + +当查询的 FROM TABLE 为视图时,执行计划中会分配 SUBPLAN SCAN 算子。SUBPLAN SCAN 算子类似于 TABLE SCAN 算子,但它不从基表读取数据,而是读取孩子节点的输出数据。 + +如下示例中,Q1 查询中 1 号算子为视图中查询生成,0 号算子 SUBPLAN SCAN 读取 1 号算子并输出。 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1,1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2,2); +Query OK, 1 rows affected (0.12 sec) + +obclient>CREATE VIEW v AS SELECT * FROM t1 LIMIT 5; +Query OK, 1 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN SELECT * FROM V WHERE c1 > 0\G; +*************************** 1. row *************************** +Query Plan: +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |SUBPLAN SCAN|v |1 |37 | +|1 | TABLE SCAN |t1 |2 |37 | +===================================== +Outputs & filters: +------------------------------------- + 0 - output([v.c1], [v.c2]), filter([v.c1 > 0]), + access([v.c1], [v.c2]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(5), offset(nil) +``` + + +**说明** + + + +目前 LIMIT 算子只支持 MySQL 模式的 SQL 场景。详细信息请参考 [LIMIT](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/12.LIMIT-1-2.md)。 + +上述示例中,Q1 查询的执行计划展示中的 outputs \& filters 详细列出了 SUBPLAN SCAN 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|-------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 例如 `filter([v.c1 > 0])` 中的 `v.c1 > 0`。 | +| access | 该算子从子节点读取的需要使用的列名。 | + + + +当 `FROM TABLE` 为视图并且查询满足一定条件时能够对查询进行视图合并改写,此时执行计划中并不会出现 SUBPLAN SCAN。如下例所示,Q2 查询相比 Q1 查询减少了过滤条件,不再需要分配 SUBPLAN SCAN 算子。 + +```javascript +Q2: +obclient>EXPLAIN SELECT * FROM v\G; +*************************** 1. row *************************** +Query Plan: +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(5), offset(nil) +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/16.UNION-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/16.UNION-1-2.md new file mode 100644 index 000000000..85e81a034 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/16.UNION-1-2.md @@ -0,0 +1,121 @@ +UNION +========================== + +UNION 算子用于将两个查询的结果集进行并集运算。 + +OceanBase 数据库支持的 UNION 算子包括 UNION ALL、 HASH UNION DISTINCT 和 MERGE UNION DISTINCT。 + +UNION ALL +------------------------------ + +UNION ALL 用于直接对两个查询结果集进行合并输出。 + +如下示例中,Q1 对两个查询使用 UNION ALL 进行联接,使用 UNION ALL 算子进行并集运算。算子执行时依次输出左右子节点所有输出结果。 + +```javascript +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1,1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2,2); +Query OK, 1 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN SELECT c1 FROM t1 UNION ALL SELECT c2 FROM t1\G; +*************************** 1. row *************************** +Query Plan: +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UNION ALL | |4 |74 | +|1 | TABLE SCAN|T1 |2 |37 | +|2 | TABLE SCAN|T1 |2 |37 | +==================================== +Outputs & filters: +------------------------------------- + 0 - output([UNION(T1.C1, T1.C2)]), filter(nil) + 1 - output([T1.C1]), filter(nil), + access([T1.C1]), partitions(p0) + 2 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细列出了 UNION ALL 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|-------------------------------------------------------------------| +| output | 该算子的输出表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 UNION ALL 算子没有设置 filter,所以为 nil。 | + + + +MERGE UNION DISTINCT +----------------------------------------- + +MERGE UNION DISTINCT 用于对结果集进行并集、去重后进行输出。 + +如下示例中,Q2 对两个查询使用 UNION DISTINCT 进行联接, c1 有可用排序,0 号算子生成 MERGE UNION DISTINCT 进行取并集、去重。由于 c2 无可用排序,所以在 3 号算子上分配了 SORT 算子进行排序。算子执行时从左右子节点读取有序输入,进行合并得到有序输出并去重。 + +```javascript +Q2: +obclient>EXPLAIN SELECT c1 FROM t1 UNION SELECT c2 FROM t1\G; +*************************** 1. row *************************** +Query Plan: +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE UNION DISTINCT| |4 |77 | +|1 | TABLE SCAN |T1 |2 |37 | +|2 | SORT | |2 |39 | +|3 | TABLE SCAN |T1 |2 |37 | +============================================= +Outputs & filters: +------------------------------------- + 0 - output([UNION(T1.C1, T1.C2)]), filter(nil) + 1 - output([T1.C1]), filter(nil), + access([T1.C1]), partitions(p0) + 2 - output([T1.C2]), filter(nil), sort_keys([T1.C2, ASC]) + 3 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 MERGE UNION DISTINCT 算子的输出信息,字段的含义与 UNION ALL 算子相同。 + +HASH UNION DISTINCT +---------------------------------------- + +HASH UNION DISTINCT 用于对结果集进行并集、去重后进行输出。 + +如下示例中,Q3 对两个查询使用 UNION DISTINCT 进行联接,无可利用排序,0 号算子使用 HASH UNION DISTINCT 进行并集、去重。算子执行时读取左右子节点输出,建立哈希表进行去重,最终输出去重后结果。 + +```javascript +Q3: +obclient>EXPLAIN SELECT c2 FROM t1 UNION SELECT c2 FROM t1\G; +*************************** 1. row *************************** +Query Plan: +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |HASH UNION DISTINCT| |4 |77 | +|1 | TABLE SCAN |T1 |2 |37 | +|2 | TABLE SCAN |T1 |2 |37 | +============================================ +Outputs & filters: +------------------------------------- + 0 - output([UNION(T1.C2, T1.C2)]), filter(nil) + 1 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) + 2 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 HASH UNION DISTINCT 算子的输出信息,字段的含义与 UNION ALL 算子相同。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/17.INTERSECT-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/17.INTERSECT-1-2.md new file mode 100644 index 000000000..57233f774 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/17.INTERSECT-1-2.md @@ -0,0 +1,86 @@ +INTERSECT +============================== + +INTERSECT 算子用于对左右孩子算子输出进行交集运算,并进行去重。 + +OceanBase 数据库支持的 INTERSECT 算子包括 MERGE INTERSECT DISTINCT 和 HASH INTERSECT DISTINCT。 + +MERGE INTERSECT DISTINCT +--------------------------------------------- + +如下示例中,Q1 对两个查询使用 INTERSECT 联接,c1 有可用排序,0 号算子生成了 MERGE INTERSECT DISTINCT 进行求取交集、去重。由于 c2 无可用排序,所以在 3 号算子上分配了 SORT 算子进行排序。算子执行时从左右子节点读取有序输入,利用有序输入进行 MERGE,实现去重并得到交集结果。 + +```javascript +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1,1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2,2); +Query OK, 1 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN SELECT c1 FROM t1 INTERSECT SELECT c2 FROM t1\G; +*************************** 1. row *************************** +Query Plan: +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |MERGE INTERSECT DISTINCT| |2 |77 | +|1 | TABLE SCAN |T1 |2 |37 | +|2 | SORT | |2 |39 | +|3 | TABLE SCAN |T1 |2 |37 | +================================================= +Outputs & filters: +------------------------------------- + 0 - output([INTERSECT(T1.C1, T1.C2)]), filter(nil) + 1 - output([T1.C1]), filter(nil), + access([T1.C1]), partitions(p0) + 2 - output([T1.C2]), filter(nil), sort_keys([T1.C2, ASC]) + 3 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细列出了所有 INTERSECT 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|------------------------------------------------------------------------------------------| +| output | 该算子的输出表达式。 使用 INTERSECT 联接的两个子算子对应输出,即表示交集运算输出结果中的一列,括号内部为左右子节点对应此列的输出列。 | +| filter | 该算子上的过滤条件。 由于示例中 INTERSECT 算子没有设置 filter,所以为 nil。 | + + + +HASH INTERSECT DISTINCT +-------------------------------------------- + +如下例所示,Q2 对两个查询使用 INTERSECT 进行联接,不可利用排序,0 号算子使用 HASH INTERSECT DISTINCT 进行求取交集、去重。算子执行时先读取一侧子节点输出建立哈希表并去重,再读取另一侧子节点利用哈希表求取交集并去重。 + +```javascript +Q2: +obclient>EXPLAIN SELECT c2 FROM t1 INTERSECT SELECT c2 FROM t1\G; +*************************** 1. row *************************** +Query Plan: +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |HASH INTERSECT DISTINCT| |2 |77 | +|1 | TABLE SCAN |T1 |2 |37 | +|2 | TABLE SCAN |T1 |2 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([INTERSECT(T1.C2, T1.C2)]), filter(nil) + 1 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) + 2 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 HASH INTERSECT DISTINCT 算子的输出信息,字段的含义与 MERGE INTERSECT DISTINCT 算子相同。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/18.except-minus-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/18.except-minus-2.md new file mode 100644 index 000000000..1514b9dd1 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/18.except-minus-2.md @@ -0,0 +1,87 @@ +EXCEPT/MINUS +================================= + +EXCEPT 算子用于对左右孩子算子输出集合进行差集运算,并进行去重。 + +Oracle 模式下一般使用 MINUS 进行差集运算,MySQL 模式下一般使用 EXCEPT 进行差集运算。OceanBase 数据库的 MySQL 模式不区分 EXCEPT 和 MINUS,两者均可作为差集运算关键字使用。 + +OceanBase 数据库支持的 EXCEPT 算子包括 MERGE EXCEPT DISTINCT 和 HASH EXCEPT DISTINCT。 + +MERGE EXCEPT DISTINCT +------------------------------------------ + +如下示例中,Q1 对两个查询使用 MINUS 进行联接, c1 有可用排序,0 号算子生成了 MERGE EXCEPT DISTINCT 进行求取差集、去重,由于 c2 无可用排序,所以在 3 号算子上分配了 SORT 算子进行排序。算子执行时从左右孩子节点读取有序输入,利用有序输入进行 MERGE, 实现去重并得到差集结果。 + +```javascript +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1,1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2,2); +Query OK, 1 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN SELECT c1 FROM t1 MINUS SELECT c2 FROM t1\G; +*************************** 1. row *************************** +Query Plan: +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE EXCEPT DISTINCT| |2 |77 | +|1 | TABLE SCAN |T1 |2 |37 | +|2 | SORT | |2 |39 | +|3 | TABLE SCAN |T1 |2 |37 | +============================================== +Outputs & filters: +------------------------------------- + 0 - output([MINUS(T1.C1, T1.C2)]), filter(nil) + 1 - output([T1.C1]), filter(nil), + access([T1.C1]), partitions(p0) + 2 - output([T1.C2]), filter(nil), sort_keys([T1.C2, ASC]) + 3 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细列出了 EXCEPT 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|----------------------------------------------------------------------------------------------------------------------------------| +| output | 该算子的输出表达式。 使用 EXCEPT/MINUS 联接的两孩子算子对应输出(Oracle 模式使用 MINUS,MySQL 模式使用 EXCEPT),表示差集运算输出结果中的一列,括号内部为左右孩子节点对应此列的输出列。 | +| filter | 该算子上的过滤条件。 由于示例中 EXCEPT 算子没有设置 filter,所以为 nil。 | + + + +HASH EXCEPT DISTINCT +----------------------------------------- + +如下示例中,Q2 对两个查询使用 MINUS 进行联接,不可利用排序,0 号算子使用 HASH EXCEPT DISTINCT 进行求取差集、去重。算子执行时先读取左侧孩子节点输出建立哈希表并去重,再读取右侧孩子节点输出利用哈希表求取差集并去重。 + +```javascript +Q2: +obclient>EXPLAIN SELECT c2 FROM t1 MINUS SELECT c2 FROM t1\G; +*************************** 1. row *************************** +Query Plan: +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |HASH EXCEPT DISTINCT| |2 |77 | +|1 | TABLE SCAN |T1 |2 |37 | +|2 | TABLE SCAN |T1 |2 |37 | +============================================= +Outputs & filters: +------------------------------------- + 0 - output([MINUS(T1.C2, T1.C2)]), filter(nil) + 1 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) + 2 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 HASH EXCEPT DISTINCT 算子的输出信息,字段的含义与 MERGE EXCEPT DISTINCT 算子相同。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/19.INSERT-1-2-3-4.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/19.INSERT-1-2-3-4.md new file mode 100644 index 000000000..6def2155d --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/19.INSERT-1-2-3-4.md @@ -0,0 +1,232 @@ +INSERT +=========================== + +INSERT 算子用于将指定的数据插入数据表,数据来源包括直接指定的值和子查询的结果。 + +OceanBase 数据库支持的 INSERT 算子包括 INSERT 和 MULTI PARTITION INSERT。 + +INSERT +--------------------------- + +INSERT 算子用于向数据表的单个分区中插入数据。 + +如下例所示,Q1 查询将值 (1, '100') 插入到非分区表 t1 中。其中 1 号算子 EXPRESSION 用来生成常量表达式的值。 + +```javascript +obclient>CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 VARCHAR2(10)); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t2 (c1 INT PRIMARY KEY, c2 VARCHAR2(10)) PARTITION BY + HASH(c1) PARTITIONS 10; +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t3 (c1 INT PRIMARY KEY, c2 VARCHAR2(10)); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE INDEX IDX_t3_c2 ON t3 (c2) PARTITION BY HASH(c2) PARTITIONS 3; +Query OK, 0 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN INSERT INTO t1 VALUES (1, '100')\G; +*************************** 1. row *************************** +Query Plan: +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([__values.C1], [__values.C2]), filter(nil), + columns([{T1: ({T1: (T1.C1, T1.C2)})}]), partitions(p0) + 1 - output([__values.C1], [__values.C2]), filter(nil) + values({1, '100'}) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细列出了 INSERT 算子的输出信息如下: + + +| **信息名称** | **含义** | +|------------|----------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 INSERT 算子没有设置 filter,所以为 nil。 | +| columns | 插入操作涉及的数据表的列。 | +| partitions | 插入操作涉及到的数据表的分区(非分区表可以认为是一个只有一个分区的分区表)。 | + + + +更多 INSERT 算子的示例如下: + +* Q2 查询将值(2, '200')、(3, '300')插入到表 t1 中。 + + ```unknow + Q2: + obclient>EXPLAIN INSERT INTO t1 VALUES (2, '200'),(3, '300')\G; + *************************** 1. row *************************** + Query Plan: + ==================================== + |ID|OPERATOR |NAME|EST. ROWS|COST| + ------------------------------------ + |0 |INSERT | |2 |1 | + |1 | EXPRESSION| |2 |1 | + ==================================== + + Outputs & filters: + ------------------------------------- + 0 - output([__values.C1], [__values.C2]), filter(nil), + columns([{T1: ({T1: (T1.C1, T1.C2)})}]), partitions(p0) + 1 - output([__values.C1], [__values.C2]), filter(nil) + values({2, '200'}, {3, '300'}) + ``` + + + +* Q3 查询将子查询 `SELECT * FROM t3` 的结果插入到表 t1 中。 + + ```unknow + Q3: + obclient>EXPLAIN INSERT INTO t1 SELECT * FROM t3\G; + *************************** 1. row *************************** + Query Plan: + ==================================== + |0 |INSERT | |100000 |117862| + |1 | EXCHANGE IN DISTR | |100000 |104060| + |2 | EXCHANGE OUT DISTR| |100000 |75662 | + |3 | SUBPLAN SCAN |VIEW1|100000 |75662 | + |4 | TABLE SCAN |T3 |100000 |61860 | + ================================================ + + Outputs & filters: + ------------------------------------- + 0 - output([VIEW1.C1], [VIEW1.C2]), filter(nil), + columns([{T1: ({T1: (T1.C1, T1.C2)})}]), partitions(p0) + 1 - output([VIEW1.C1], [VIEW1.C2]), filter(nil) + 2 - output([VIEW1.C1], [VIEW1.C2]), filter(nil) + 3 - output([VIEW1.C1], [VIEW1.C2]), filter(nil), + access([VIEW1.C1], [VIEW1.C2]) + 4 - output([T3.C1], [T3.C2]), filter(nil), + access([T3.C2], [T3.C1]), partitions(p0) + ``` + + + +* Q4 查询将值(1, '100')插入到分区表 t2 中,通过 `partitions` 参数可以看出,该值会被插入到 t2 的 p5 分区。 + + ```javascript + Q4: + obclient>EXPLAIN INSERT INTO t2 VALUES (1, '100')\G; + *************************** 1. row *************************** + Query Plan: + ==================================== + |ID|OPERATOR |NAME|EST. ROWS|COST| + ------------------------------------ + |0 |INSERT | |1 |1 | + |1 | EXPRESSION| |1 |1 | + ==================================== + Outputs & filters: + ------------------------------------- + 0 - output([__values.C1], [__values.C2]), filter(nil), + columns([{T2: ({T2: (T2.C1, T2.C2)})}]), partitions(p5) + 1 - output([__values.C1], [__values.C2]), filter(nil) + values({1, '100'}) + ``` + + + + + + +MULTI PARTITION INSERT +------------------------------------------- + +MULTI PARTITION INSERT 算子用于向数据表的多个分区中插入数据。 + +如下例所示,Q5 查询将值(2, '200')、(3, '300')插入到分区表 t2 中,通过 `partitions` 可以看出,这些值会被插入到 t2 的 p0 和 p6 分区。 + +```javascript +Q5: +obclient>EXPLAIN INSERT INTO t2 VALUES (2, '200'),(3, '300')\G; +*************************** 1. row *************************** +Query Plan: +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |MULTI PARTITION INSERT| |2 |1 | +|1 | EXPRESSION | |2 |1 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([__values.C1], [__values.C2]), filter(nil), + columns([{T2: ({T2: (T2.C1, T2.C2)})}]), partitions(p0, p6) + 1 - output([__values.C1], [__values.C2]), filter(nil) + values({2, '200'}, {3, '300'}) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 MULTI PARTITION INSERT 算子的信息,字段的含义与 INSERT 算子相同。 + +更多 MULTI PARTITION INSERT 算子的示例如下: + +* Q6 查询将子查询 `SELECT * FROM t3` 的结果插入到分区表 t2 中,因为无法确定子查询的结果集,因此数据可能插入到 t2 的 p0 到 p9 的任何一个分区中。从1 号算子可以看到,这里的 `SELECT * FROM t3` 会被放在一个子查询中,并将子查询命名为 VIEW1。当 OceanBase 数据库内部改写 SQL 产生了子查询时,会自动为子查询命名,并按照子查询生成的顺序命名为 VIEW1、VIEW2、VIEW3... + + ```unknow + Q6: + obclient>EXPLAIN INSERT INTO t2 SELECT * FROM t3\G; + *************************** 1. row *************************** + Query Plan: + ============================================== + |ID|OPERATOR |NAME|EST. ROWS|COST| + -------------------------------------------------- + |0 |MULTI PARTITION INSERT| |100000 |117862| + |1 | EXCHANGE IN DISTR | |100000 |104060| + |2 | EXCHANGE OUT DISTR | |100000 |75662 | + |3 | SUBPLAN SCAN |VIEW1|100000 |75662 | + |4 | TABLE SCAN |T3 |100000 |61860 | + ================================================== + + Outputs & filters: + ------------------------------------- + 0 - output([VIEW1.C1], [VIEW1.C2]), filter(nil), + columns([{T2: ({T2: (T2.C1, T2.C2)})}]), partitions(p[0-9]) + 1 - output([VIEW1.C1], [VIEW1.C2]), filter(nil) + 2 - output([VIEW1.C1], [VIEW1.C2]), filter(nil) + 3 - output([VIEW1.C1], [VIEW1.C2]), filter(nil), + access([VIEW1.C1], [VIEW1.C2]) + 4 - output([T3.C1], [T3.C2]), filter(nil), + access([T3.C2], [T3.C1]), partitions(p0) + ``` + + + +* Q7 查询将值(1, '100')插入到非分区表 t3 中。虽然 t3 本身是一个非分区表,但因为 t3 上存在全局索引 idx_t3_c2,因此本次插入也涉及到了多个分区。 + + ```javascript + Q7: + obclient>EXPLAIN INSERT INTO t3 VALUES (1, '100')\G; + *************************** 1. row *************************** + Query Plan: + ============================================== + |ID|OPERATOR |NAME|EST. ROWS|COST| + ----------------------------------------------- + |0 |MULTI PARTITION INSERT| |1 |1 | + |1 | EXPRESSION | |1 |1 | + =============================================== + + Outputs & filters: + ------------------------------------- + 0 - output([__values.C1], [__values.C2]), filter(nil), + columns([{T3: ({T3: (T3.C1, T3.C2)}, {IDX_T3_C2: (T3.C2, T3.C1)})}]), partitions(p0) + 1 - output([__values.C1], [__values.C2]), filter(nil) + values({1, '100'}) + ``` + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/2.table-lookup-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/2.table-lookup-2.md new file mode 100644 index 000000000..d8d0fb4b7 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/2.table-lookup-2.md @@ -0,0 +1,45 @@ +TABLE LOOKUP +================================= + +TABLE LOOKUP 算子用于表示全局索引的回表逻辑。 + +示例:全局索引回表 + +```javascript +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT, c3 INT) PARTITION BY + HASH(c1) PARTITIONS 4; +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE INDEX i1 ON t1(c2) GLOBAL; +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT * FROM t1 WHERE c2 = 1\G; +*************************** 1. row *************************** +Query Plan: +| ======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------- +|0 |TABLE LOOKUP|t1 |3960 |31065| +|1 | TABLE SCAN |t1(i1)|3960 |956 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + partitions(p[0-3]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) +``` + + + +上述示例中,1 号算子是扫描全局索引 i1, 0 号算子表明从主表中获取不在全局索引的列。执行计划展示中的 outputs \& filters 详细展示了 TABLE LOOKUP 算子的输出信息如下: + + +| **信息名称** | **含义** | +|------------|---------------------------------------------------------------------| +| output | 该算子的输出列。 | +| filter | 该算子的过滤谓词。 由于示例中 TABLE LOOKUP 算子没有设置 filter,所以为 nil。 | +| partitions | 查询需要扫描的分区。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/20.DELETE-1-2-3-4.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/20.DELETE-1-2-3-4.md new file mode 100644 index 000000000..ea6be722c --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/20.DELETE-1-2-3-4.md @@ -0,0 +1,176 @@ +DELETE +=========================== + +DELETE 算子用于删除数据表中满足指定条件的数据行。 + +OceanBase 数据库支持的 DELETE 算子包括 DELETE 和 MULTI PARTITION DELETE。 + +DELETE +--------------------------- + +DELETE 算子用于删除数据表单个分区中的数据。 + +如下例所示,Q1 查询删除了表 t1 中所有满足 `c2>'100'` 的行。 + +```javascript +obclient>CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 VARCHAR2(10)); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t2 (c1 INT PRIMARY KEY, c2 VARCHAR2(10)) PARTITION BY + HASH(c1) PARTITIONS 10; +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t3 (c1 INT PRIMARY KEY, c2 VARCHAR2(10)); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE INDEX IDX_t3_c2 ON t3 (c2) PARTITION BY HASH(c2) PARTITIONS 3; +Query OK, 0 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN DELETE FROM t1 WHERE c2 > '100'\G; +*************************** 1. row *************************** +Query Plan: +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------- +|0 |DELETE | |10000 |118697| +|1 | TABLE SCAN|T1 |10000 |108697| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{T1: ({T1: (T1.C1, T1.C2)})}]) + 1 - output([T1.C1], [T1.C2]), filter([T1.C2 > '100']), + access([T1.C1], [T1.C2]), partitions(p0) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细列出了 DELETE 算子的输出信息如下: + + +| **信息名称** | **含义** | +|---------------|-----------------------------------------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。由于示例中 DELETE 算子没有设置 filter,所以为 nil。对于删除语句,WHERE 中的谓词会下推到基表上,比如 Q1 查询中的 `c2>'100'` 被下推到了 1 号算子上。 | +| table_columns | 删除操作涉及的数据表的列。 | + + + +更多 DELETE 算子的示例如下: + +* Q2 查询删除 t1 中的所有数据行。 + + + +* Q3 查询删除分区表 t2 中满足 `c1 = 1` 的数据行。 + + + +* Q4 查询删除分区表 t2 中满足 `c2 > '100' ` 的数据行。从执行计划中可以看到,DELETE 算子分配在 EXCHANGE 算子下面,因此 2 号和 3 号算子会作为一个 task 以分区的粒度进行调度。在计划执行时, 3 号算子扫描出 t2 一个分区中满足 `c2 > '100'` 的数据,2 号算子 DELETE 则只会删除相应分区下扫描出的数据。 + + + + + + +```javascript +Q2: +obclient>EXPLAIN DELETE FROM t1\G; +*************************** 1. row *************************** +Query Plan: +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------- +|0 |DELETE | |100000 |161860| +|1 | TABLE SCAN|T1 |100000 |61860 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{T1: ({T1: (T1.C1, T1.C2)})}]) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + + +Q3: +obclient>EXPLAIN DELETE FROM t2 WHERE c1 = 1\G; +*************************** 1. row *************************** +Query Plan: +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |DELETE | |1 |53 | +|1 | TABLE GET|T2 |1 |52 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{T2: ({T2: (T2.C1, T2.C2)})}]) + 1 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p5) + + +Q4: +obclient>EXPLAIN DELETE FROM t2 WHERE c2 > '100'\G; +*************************** 1. row *************************** +Query Plan: +=============================================== + +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------- +|0 |PX COORDINATOR | |100000 |1186893| +|1 | EXCHANGE OUT DISTR |:EX10000|100000 |1186893| +|2 | PX PARTITION ITERATOR| |100000 |1186893| +|3 | DELETE | |100000 |1186893| +|4 | TABLE SCAN |T2 |100000 |1086893| +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil) + 1 - output(nil), filter(nil), dop=1 + 2 - output(nil), filter(nil) + 3 - output(nil), filter(nil), table_columns([{T2: ({T2: (T2.C1, T2.C2)})}]) + 4 - output([T2.C1], [T2.C2]), filter([T2.C2 > '100']), + access([T2.C1], [T2.C2]), partitions(p[0-9]) +``` + + + +MULTI PARTITION DELETE +------------------------------------------- + +MULTI PARTITION DELETE 算子用于删除数据表多个分区中的数据。 + +如下例所示,Q5 查询删除了表 t3 中所有满足 `c2 > '100' ` 的数据行。虽然 t3 本身是一个非分区表,但因为 t3 上存在全局索引 idx_t3_c2,因此每一条数据行会存在于多个分区中。 + +```javascript +Q5: +obclient>EXPLAIN DELETE FROM t3 WHERE c2 > '100'\G; +*************************** 1. row *************************** +Query Plan: +======================================================== + +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------------------------- +|0 |MULTI PARTITION DELETE | |10001 |27780| +|1 | PX COORDINATOR | |10001 |17780| +|2 | EXCHANGE OUT DISTR |:EX10000 |10001 |14941| +|3 | PX PARTITION ITERATOR| |10001 |14941| +|4 | TABLE SCAN |T3(IDX_T3_C2)|10001 |14941| +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{T3: ({T3: (T3.C1, T3.C2)}, {IDX_T3_C2: (T3.C2, T3.C1)})}]) + 1 - output([T3.C1], [T3.C2]), filter(nil) + 2 - output([T3.C2], [T3.C1]), filter(nil), dop=1 + 3 - output([T3.C2], [T3.C1]), filter(nil) + 4 - output([T3.C2], [T3.C1]), filter(nil), + access([T3.C2], [T3.C1]), partitions(p[0-2]) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 MULTI PARTITION DELETE 算子的信息,字段的含义与 DELETE 算子相同。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/21.UPDATE-1-2-3-4.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/21.UPDATE-1-2-3-4.md new file mode 100644 index 000000000..4dd28a075 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/21.UPDATE-1-2-3-4.md @@ -0,0 +1,219 @@ +UPDATE +=========================== + +UPDATE 算子用于更新数据表中满足指定条件的数据行。 + +OceanBase 数据库支持的 UPDATE 算子包括 UPDATE 和 MULTI PARTITION UPDATE。 + +UPDATE +--------------------------- + +UPDATE 算子用于更新数据表单个分区中的数据。 + +如下例所示,Q1 查询更新了表 t1 中所有满足 `c2 = '100'` 的行,并将 c2 的值设置为 200。 + +```javascript +obclient>CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 VARCHAR2(10)); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t2 (c1 INT PRIMARY KEY, c2 VARCHAR2(10)) PARTITION BY + HASH(c1) PARTITIONS 10; +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t3 (c1 INT PRIMARY KEY, c2 VARCHAR2(10)); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE INDEX IDX_t3_c2 ON t3 (c2) PARTITION BY HASH(c2) PARTITIONS 3; +Query OK, 0 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN UPDATE t1 SET c2 = '200' WHERE c2 = '100'\G; +*************************** 1. row *************************** +Query Plan: +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------- +|0 |EXCHANGE IN REMOTE | |990 |109687| +|1 | EXCHANGE OUT REMOTE| |990 |109687| +|2 | UPDATE | |990 |109687| +|3 | TABLE SCAN |T1 |990 |108697| +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil) + 1 - output(nil), filter(nil) + 2 - output(nil), filter(nil), table_columns([{T1: ({T1: (T1.C1, T1.C2)})}]), + update([T1.C2=?]) + 3 - output([T1.C1], [T1.C2], [?]), filter([T1.C2 = '100']), + access([T1.C2], [T1.C1]), partitions(p0) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细列出了 UPDATE 算子的输出信息如下: + + +| **信息名称** | **含义** | +|---------------|-----------------------------------------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。由于示例中 UPDATE 算子没有 filter,所以为 nil。对于更新语句,WHERE 中的谓词会下推到基表上,比如 Q1 查询中的 `c2 = '100'` 被下推到了 1 号算子上。 | +| table_columns | 更新操作涉及的数据表的列。 | +| update | 更新操作中所有的赋值表达式。 | + + + +更多 UPDATE 算子的示例如下: + +* Q2 查询更新 t1 中的所有数据行,并将 c2 的值置为 200。 + + + +* Q3 查询更新分区表 t2 中满足 `c1='100'` 的数据行,并将 c2 的值置为 150。 + + + +* Q4 查询更新分区表 t2 中满足 `c2 ='100'` 的数据行,并将`c2` 的值置为`rpad(t2.c2, 10, '9')`。从执行计划中可以看到,UPDATE 算子分配在 EXCHANGE 算子下面,因此 2 号和 3 号算子会作为一个 task 以分区的粒度进行调度。执行时 3 号算子扫描出 t2 一个分区中满足 `c2 = '100'` 的数据,2 号 UPDATE 算子则只会更新相应分区下扫描出的数据。 + + + + + + +```javascript +Q2: +obclient>EXPLAIN UPDATE t1 SET c2 = '200'\G; +*************************** 1. row *************************** +Query Plan: +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------- +|0 |EXCHANGE IN REMOTE | |100000 |161860| +|1 | EXCHANGE OUT REMOTE| |100000 |161860| +|2 | UPDATE | |100000 |161860| +|3 | TABLE SCAN |T1 |100000 |61860 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil) + 1 - output(nil), filter(nil) + 2 - output(nil), filter(nil), table_columns([{T1: ({T1: (T1.C1, T1.C2)})}]), + update([T1.C2=?]) + 3 - output([T1.C1], [T1.C2], [?]), filter(nil), + access([T1.C2], [T1.C1]), partitions(p0) + + +Q3: +obclient>EXPLAIN UPDATE t2 SET t2.c2 = '150' WHERE t2.c1 = '100'\G; +*************************** 1. row *************************** +Query Plan: +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |UPDATE | |1 |53 | +|1 | TABLE GET|T2 |1 |52 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{T2: ({T2: (T2.C1, T2.C2)})}]), + update([T2.C2=?]) + 1 - output([T2.C1], [T2.C2], [?]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p5) + + +Q4: +obclient>EXPLAIN UPDATE t2 SET t2.c2 = RPAD(t2.c2, 10, '9') WHERE t2.c2 = '100'\G; +*************************** 1. row *************************** +Query Plan: +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------- +|0 |PX COORDINATOR | |9900 |1096793| +|1 | EXCHANGE OUT DISTR |:EX10000|9900 |1096793| +|2 | PX PARTITION ITERATOR| |9900 |1096793| +|3 | UPDATE | |9900 |1096793| +|4 | TABLE SCAN |T2 |9900 |1086893| +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil) + 1 - output(nil), filter(nil), dop=1 + 2 - output(nil), filter(nil) + 3 - output(nil), filter(nil), table_columns([{T2: ({T2: (T2.C1, T2.C2)})}]), + update([T2.C2=column_conv(VARCHAR,utf8mb4_bin,length:10,NULL,RPAD(T2.C2, 10, ?))]) + 4 - output([T2.C1], [T2.C2], [column_conv(VARCHAR,utf8mb4_bin,length:10,NULL,RPAD(T2.C2, 10, ?))]), filter([T2.C2 = '100']), + access([T2.C1], [T2.C2]), partitions(p[0-9]) +``` + + + +MULTI PARTITION UPDATE +------------------------------------------- + +MULTI PARTITION UPDATE 算子表示更新数据表多个分区中的数据。如下例所示,Q5 查询更新表 t3 中所有满足`c2 < '100'`的数据行,并将 c2 的值置为 200。虽然 t3 本身是一个非分区表,但 t3 上存在全局索引 idx_t3_c2,因此每一条数据行会存在于多个分区中。 + +```javascript +Q5: +obclient>EXPLAIN UPDATE t3 SET c2 = '200' WHERE c2 < '100'\G; +*************************** 1. row *************************** +Query Plan: +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------------------------- +|0 |MULTI PARTITION UPDATE | |10001 |27780| +|1 | PX COORDINATOR | |10001 |17780| +|2 | EXCHANGE OUT DISTR |:EX10000 |10001 |14941| +|3 | PX PARTITION ITERATOR| |10001 |14941| +|4 | TABLE SCAN |T3(IDX_T3_C2)|10001 |14941| +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{T3: ({T3: (T3.C1, T3.C2)}, {IDX_T3_C2: (T3.C2, T3.C1)})}]), + update([T3.C2=?]) + 1 - output([T3.C1], [T3.C2], [?]), filter(nil) + 2 - output([T3.C2], [T3.C1], [?]), filter(nil), dop=1 + 3 - output([T3.C2], [T3.C1], [?]), filter(nil) + 4 - output([T3.C2], [T3.C1], [?]), filter(nil), + access([T3.C2], [T3.C1]), partitions(p[0-2]) +``` + + + +更多 MULTI PARTITION UPDATE 的示例如下: + +* Q6 查询更新分区表 t2 中满足 `c1 = 100` 的数据行,并将 c1 的值设置为 101。因为更新的列是主键列,可能会导致更新后的数据行与更新前的数据行位于不同的分区,因此需要使用 MULTI PARTITION UPDATE 算子进行更新。 + + + + + + +```javascript +Q6: +obclient>EXPLAIN UPDATE t2 SET t2.c1 = 101 WHERE t2.c1 = 100\G; +*************************** 1. row *************************** +Query Plan: +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |MULTI PARTITION UPDATE| |1 |54 | +|1 | EXCHANGE IN DISTR | |1 |53 | +|2 | EXCHANGE OUT DISTR | |1 |52 | +|3 | TABLE GET |T2 |1 |52 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{T2: ({T2: (T2.C1, T2.C2)})}]), + update([T2.C1=?]) + 1 - output([T2.C1], [T2.C2], [?]), filter(nil) + 2 - output([T2.C1], [T2.C2], [?]), filter(nil) + 3 - output([T2.C1], [T2.C2], [?]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p5) +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/22.MERGE-1-2-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/22.MERGE-1-2-3.md new file mode 100644 index 000000000..984c44b5a --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/22.MERGE-1-2-3.md @@ -0,0 +1,120 @@ +MERGE +========================== + +MERGE 算子用于将源表中的数据行以更新或插入的方式合并到目标表中。 + +OceanBase 数据库支持的 MERGE 算子包括 MERGE 和 MULTI PARTITION MERGE。 + +MERGE +-------------------------- + +MERGE 算子用于合并数据表单个分区中的数据。 + +如下例所示,Q1 查询将 src_tbl 表中的数据行合并到 t1 表中,对于 src_tbl 中的每一条数据行按照如下方式进行合并: + +* 当 t1 中存在满足 `t1.c1=src_tbl.c1` 条件的数据行: + + + + + + + + + + + + +* 当 t1 中不存在满足 `t1.c1 = src_tbl.c1` 条件的数据行: + + + + + + + + +* 其中,OUTER JOIN 是合并功能实现时依赖的一次联接操作,使用 MERGE 算子时,一定会在 `source_table` 和 `target_table` 上做一次外联接,目的是为了区分哪些行是匹配的,哪些是不匹配的。 + +* 执行计划展示中的 outputs \& filters 详细列出了 MERGE 算子的输出信息如下: + + + + +MULTI PARTITION MERGE +------------------------------------------ + +MULTI PARTITION MERGE 算子用于合并数据表多个分区中的数据。 + +如下例所示,Q2 查询将 src_tbl 表中的数据行合并到分区表 t2 表中,对于 src_tbl 中的每一条数据行按照如下方式进行合并: + +* 当 t2 中存在满足 `t2.c1 = src_tbl.c1` 条件的数据行: + + + + + + + + + + + + +* 当 t2 中不存在满足 `t2.c1 = src_tbl.c1` 条件的数据行,执行插入操作,向 t2 中插入 `(src_tbl.c1, src_tbl.c2)`。 + + + + + + +```javascript +Q2: +obclient>EXPLAIN MERGE INTO t2 USING SRC_TBL ON (t2.c1 = src_tbl.c1) + WHEN MATCHED THEN + UPDATE SET t2.c2 = SUBSTR(src_tbl.c2, 1, 5) + DELETE WHERE t2.c2 > '80000' + WHEN NOT MATCHED THEN + INSERT (t2.c1, t2.c2) VALUES (src_tbl.c1,src_tbl.c2)\G; +*************************** 1. row *************************** +Query Plan: +============================================================ + +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------------------- +|0 |MULTI PARTITION MERGE | |100000 |100000 | +|1 | PX COORDINATOR | |100000 |956685 | +|2 | EXCHANGE OUT DISTR |:EX10001|100000 |899889 | +|3 | MERGE OUTER JOIN | |100000 |899889 | +|4 | EXCHANGE IN DISTR | |100000 |90258 | +|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|100000 |61860 | +|6 | TABLE SCAN |SRC_TBL |100000 |61860 | +|7 | SORT | |1000000 |5447108| +|8 | PX PARTITION ITERATOR | |1000000 |618524 | +|9 | TABLE SCAN |T2 |1000000 |618524 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(DECIMAL,PS:(38,0),NOT NULL,SRC_TBL.C1)], [column_conv(VARCHAR,utf8mb4_bin,length:10,NULL,SRC_TBL.C2)]), filter(nil), + columns([{T2: ({T2: (T2.C1, T2.C2)})}]), partitions(p[0-9]), + update([T2.C2=column_conv(VARCHAR,utf8mb4_bin,length:10,NULL,SUBSTR(SRC_TBL.C2, 1, 5))]), + match_conds([T2.C1 = SRC_TBL.C1]), insert_conds(nil), + update_conds(nil), delete_conds([T2.C2 > '80000']) + 1 - output([SRC_TBL.C1], [SRC_TBL.C2], [T2.C1], [T2.C1 = SRC_TBL.C1], [T2.C2]), filter(nil) + 2 - output([SRC_TBL.C1], [SRC_TBL.C2], [T2.C1], [T2.C1 = SRC_TBL.C1], [T2.C2]), filter(nil), dop=1 + 3 - output([SRC_TBL.C1], [SRC_TBL.C2], [T2.C1], [T2.C1 = SRC_TBL.C1], [T2.C2]), filter(nil), + equal_conds([T2.C1 = SRC_TBL.C1]), other_conds(nil) + 4 - output([SRC_TBL.C1], [SRC_TBL.C2]), filter(nil) + 5 - (#keys=1, [SRC_TBL.C1]), output([SRC_TBL.C1], [SRC_TBL.C2]), filter(nil), is_single, dop=1 + 6 - output([SRC_TBL.C1], [SRC_TBL.C2]), filter(nil), + access([SRC_TBL.C1], [SRC_TBL.C2]), partitions(p0) + 7 - output([T2.C1], [T2.C2]), filter(nil), sort_keys([T2.C1, ASC]), local merge sort + 8 - output([T2.C1], [T2.C2]), filter(nil) + 9 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p[0-9]) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 MULTI PARTITION MERGE 算子的输出信息,字段的含义与 MERGE 算子相同。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/23.EXCHANGE-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/23.EXCHANGE-1-2.md new file mode 100644 index 000000000..dab04dccf --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/23.EXCHANGE-1-2.md @@ -0,0 +1,263 @@ +EXCHANGE +============================= + +EXCHANGE 算子用于线程间进行数据交互的算子。 + +EXCHANGE 算子适用于在分布式场景,一般都是成对出现的,数据源端有一个 OUT 算子,目的端会有一个 IN 算子。 + +EXCH-IN/OUT +-------------------------------- + +EXCH-IN/OUT 即 EXCHANGE IN/ EXCHANGE OUT 用于将多个分区上的数据汇聚到一起,发送到查询所在的主节点上。 + +如下例所示,下面的查询中访问了 5 个分区的数据(p0-p4),其中 1 号算子接受 2 号算子产生的输出,并将数据传出;0 号算子接收多个分区上 1 号算子产生的输出,并将结果汇总输出。 + +```javascript +obclient>CREATE TABLE t (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 5; +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT * FROM t\G; +*************************** 1. row *************************** +Query Plan: +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------------- +|0 |EXCHANGE IN DISTR | |500000 |545109| +|1 | EXCHANGE OUT DISTR| |500000 |320292| +|2 | TABLE SCAN |T |500000 |320292| +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T.C1], [T.C2]), filter(nil) + 1 - output([T.C1], [T.C2]), filter(nil) + 2 - output([T.C1], [T.C2]), filter(nil), + access([T.C1], [T.C2]), partitions(p[0-4]) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 EXCH-IN/OUT 算子的输出信息如下: + + +| 信息名称 | 含义 | +|--------|---------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 EXCH-IN/OUT 算子没有设置 filter,所以为 nil。 | + + + +EXCH-IN/OUT (REMOTE) +----------------------------------------- + +EXCH-IN/OUT (REMOTE) 算子用于将远程的数据(单个分区的数据)拉回本地。 + +如下例所示,在 A 机器上创建了一张非分区表,在 B 机器上执行查询,读取该表的数据。此时,由于待读取的数据在远程,执行计划中分配了 0 号算子和 1 号算子来拉取远程的数据。其中,1 号算子在 A 机器上执行,读取 t 表的数据,并将数据传出;0 号算子在 B 机器上执行,接收 1 号算子产生的输出。 + +```javascript +obclient>CREATE TABLE t (c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT * FROM t\G; +*************************** 1. row *************************** +Query Plan: +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------- +|0 |EXCHANGE IN REMOTE | |100000 |109029| +|1 | EXCHANGE OUT REMOTE| |100000 |64066 | +|2 | TABLE SCAN |T |100000 |64066 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T.C1], [T.C2]), filter(nil) + 1 - output([T.C1], [T.C2]), filter(nil) + 2 - output([T.C1], [T.C2]), filter(nil), + access([T.C1], [T.C2]), partitions(p0) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 EXCH-IN/OUT (REMOTE) 算子的输出信息,字段的含义与 EXCH-IN/OUT 算子相同。 + +EXCH-IN/OUT (PKEY) +--------------------------------------- + +EXCH-IN/OUT (PKEY) 算子用于数据重分区。它通常用于二元算子中,将一侧孩子节点的数据按照另外一些孩子节点的分区方式进行重分区。 + +如下示例中,该查询是对两个分区表的数据进行联接,执行计划将 s 表的数据按照 t 的分区方式进行重分区,4 号算子的输入是 s 表扫描的结果,对于 s 表的每一行,该算子会根据 t 表的数据分区,以及根据查询的联接条件,确定一行数据应该发送到哪个节点进行。 + +此外,可以看到 3 号算子是一个 EXCHANGE IN MERGE SORT DISTR,它是一个特殊的 EXCHANGE IN 算子,它用于在汇总多个分区的数据时,会进行一定的归并排序,在这个执行计划中,3 号算子接收到的每个分区的数据都是按照 c1 有序排列的,它会对每个接收到的数据进行归并排序,从而保证结果输出结果也是按照 c1 有序排列的。 + +```javascript +obclient>CREATE TABLE t (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 5; +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE s (c1 INT PRIMARY KEY, c2 INT) PARTITION BY HASH(c1) PARTITIONS 4; +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT * FROM s, t WHERE s.c1 = t.c1\G; +*************************** 1. row *************************** +Query Plan: + =============================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +--------------------------------------------------------------- +|0 |EXCHANGE IN DISTR | |1960200000|3090308367| +|1 | EXCHANGE OUT DISTR | |1960200000|1327558071| +|2 | MERGE JOIN | |1960200000|1327558071| +|3 | EXCHANGE IN MERGE SORT DISTR| |400000 |436080 | +|4 | EXCHANGE OUT DISTR (PKEY) | |400000 |256226 | +|5 | TABLE SCAN |S |400000 |256226 | +|6 | TABLE SCAN |T |500000 |320292 | +=============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([S.C1], [S.C2], [T.C1], [T.C2]), filter(nil) + 1 - output([S.C1], [S.C2], [T.C1], [T.C2]), filter(nil) + 2 - output([S.C1], [S.C2], [T.C1], [T.C2]), filter(nil), + equal_conds([S.C1 = T.C1]), other_conds(nil) + 3 - output([S.C1], [S.C2]), filter(nil), sort_keys([S.C1, ASC]) + 4 - (#keys=1, [S.C1]), output([S.C1], [S.C2]), filter(nil) + 5 - output([S.C1], [S.C2]), filter(nil), + access([S.C1], [S.C2]), partitions(p[0-3]) + 6 - output([T.C1], [T.C2]), filter(nil), + access([T.C1], [T.C2]), partitions(p[0-4]) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 EXCH-IN/OUT (PKEY) 算子的输出信息如下: + + +| 信息名称 | 含义 | +|--------|--------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 EXCH-IN/OUT(PKEY)算子没有设置 filter,所以为 nil。 | +| pkey | 按照哪一列进行重分区。 例如,`#keys=1, [s.c1]` 表示按照 c1 这一列重分区 | + + + +EXCH-IN/OUT (HASH) +--------------------------------------- + +EXCH-IN/OUT (HASH) 算子用于对数据使用一组 HASH 函数进行重分区。 + +如下例所示的执行计划中,3-5 号以及 7-8 号是两组使用 HASH 重分区的 EXCHANGE 算子。这两组算子的作用是把 t 表和 s 表的数据按照一组新的 HASH 函数打散成多份,在这个例子中 HASH 的列为 t.c2 和 s.c2,这保证了 c2 取值相同的行会被分发到同一份中。基于重分区之后的数据,2 号算子 HASH JOIN 会对每一份数据按照 `t.c2= s.c2` 进行联接。 + +此外,由于查询中执行了并行度为 2,计划中展示了 dop = 2 (dop 是 Degree of Parallelism 的缩写)。 + +```javascript +obclient>CREATE TABLE t (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 4; +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE s (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 4; +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT /*+PQ_DISTRIBUTE(@"SEL$1" ("TEST.S"@"SEL$1" ) HASH HASH), + PARALLEL(2)*/ * FROM t, s WHERE t.c2 = s.c2\G; +*************************** 1. row *************************** +Query Plan: +================================================================= +|ID|OPERATOR |NAME |EST. ROWS |COST | +----------------------------------------------------------------- +|0 |PX COORDINATOR | |1568160000|2473629500| +|1 | EXCHANGE OUT DISTR |:EX10002|1568160000|1063429263| +|2 | HASH JOIN | |1568160000|1063429263| +|3 | EXCHANGE IN DISTR | |400000 |436080 | +|4 | EXCHANGE OUT DISTR (HASH)|:EX10000|400000 |256226 | +|5 | PX PARTITION ITERATOR | |400000 |256226 | +|6 | TABLE SCAN |T |400000 |256226 | +|7 | EXCHANGE IN DISTR | |400000 |436080 | +|8 | EXCHANGE OUT DISTR (HASH)|:EX10001|400000 |256226 | +|9 | PX PARTITION ITERATOR | |400000 |256226 | +|10| TABLE SCAN |S |400000 |256226 | +================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T.C1], [T.C2], [S.C1], [S.C2]), filter(nil) + 1 - output([T.C1], [T.C2], [S.C1], [S.C2]), filter(nil), dop=2 + 2 - output([T.C1], [T.C2], [S.C1], [S.C2]), filter(nil), + equal_conds([T.C2 = S.C2]), other_conds(nil) + 3 - output([T.C1], [T.C2]), filter(nil) + 4 - (#keys=1, [T.C2]), output([T.C1], [T.C2]), filter(nil), dop=2 + 5 - output([T.C1], [T.C2]), filter(nil) + 6 - output([T.C1], [T.C2]), filter(nil), + access([T.C1], [T.C2]), partitions(p[0-3]) + 7 - output([S.C1], [S.C2]), filter(nil) + 8 - (#keys=1, [S.C2]), output([S.C1], [S.C2]), filter(nil), dop=2 + 9 - output([S.C1], [S.C2]), filter(nil) + 10 - output([S.C1], [S.C2]), filter(nil), + access([S.C1], [S.C2]), partitions(p[0-3]) +``` + + + +其中,PX PARTITION ITERATO 算子用于按照分区粒度迭代数据,详细信息请参见 [GI](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/24.GI-1-2.md)。 + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 EXCH-IN/OUT (HASH) 算子的输出信息如下: + + +| 信息名称 | 含义 | +|--------|--------------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 EXCH-IN/OUT (HASH) 算子没有设置 filter,所以为 nil。 | +| pkey | 按照哪一列进行 HASH 重分区。 例如,`#keys=1, [s.c2]` 表示按照 c2 这一列进行 HASH 重分区。 | + + + +EXCH-IN/OUT(BROADCAST) +------------------------------------------- + +EXCH-IN/OUT(BROADCAST) 算子用于对输入数据使用 BROADCAST 的方法进行重分区,它会将数据广播到其他线程上。 + +如下示例的执行计划中,3-4 号是一组使用 BROADCAST 重分区方式的 EXCHANGE 算子。它会将 t 表的数据广播到每个线程上,s 表每个分区的数据都会尝试和被广播的 t 表数据进行联接。 + +```javascript +obclient>CREATE TABLE t (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 4; +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE s (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 4; +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO s VALUES (1, 1), (2, 2), (3, 3), (4, 4); +Query OK, 1 rows affected (0.12 sec) + +obclient>EXPALIN SELECT /*+PARALLEL(2) */ * FROM t, s WHERE t.c2 = s.c2\G; +*************************** 1. row *************************** +Query Plan: +====================================================================== +|ID|OPERATOR |NAME |EST. ROWS |COST | +---------------------------------------------------------------------- +|0 |PX COORDINATOR | |1568160000|2473449646| +|1 | EXCHANGE OUT DISTR |:EX10001|1568160000|1063249409| +|2 | HASH JOIN | |1568160000|1063249409| +|3 | EXCHANGE IN DISTR | |400000 |436080 | +|4 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000|400000 |256226 | +|5 | PX PARTITION ITERATOR | |400000 |256226 | +|6 | TABLE SCAN |T |400000 |256226 | +|7 | PX PARTITION ITERATOR | |400000 |256226 | +|8 | TABLE SCAN |S |400000 |256226 | +====================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T.C1], [T.C2], [S.C1], [S.C2]), filter(nil) + 1 - output([T.C1], [T.C2], [S.C1], [S.C2]), filter(nil), dop=2 + 2 - output([T.C1], [T.C2], [S.C1], [S.C2]), filter(nil), + equal_conds([T.C2 = S.C2]), other_conds(nil) + 3 - output([T.C1], [T.C2]), filter(nil) + 4 - output([T.C1], [T.C2]), filter(nil), dop=2 + 5 - output([T.C1], [T.C2]), filter(nil) + 6 - output([T.C1], [T.C2]), filter(nil), + access([T.C1], [T.C2]), partitions(p[0-3]) + 7 - output([S.C1], [S.C2]), filter(nil) + 8 - output([S.C1], [S.C2]), filter(nil), + access([S.C1], [S.C2]), partitions(p[0-3]) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 EXCH-IN/OUT (BROADCAST) 算子的信息,字段的含义与 EXCH-IN/OUT 算子相同。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/24.GI-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/24.GI-1-2.md new file mode 100644 index 000000000..9538caad4 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/24.GI-1-2.md @@ -0,0 +1,86 @@ +GI +======================= + +GI 算子用于并行执行中,用于按照分区或者按照数据块迭代整张表。 + +按照迭代数据的粒度划分,GI 算子包括 PX PARTITION ITERATOR 和 PX BLOCK ITERATOR。 + +PX PARTITION ITERATOR +------------------------------------------ + +PX PARTITION ITERATOR 算子用于按照分区粒度迭代数据。 + +如下示例中,2 号算子按分区粒度迭代出数据。 + +```sql +obclient>CREATE TABLE t (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 4; +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE INDEX idx ON t (c1); +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT /*+FULL(t)*/ c1 FROM t\G; +*************************** 1. row *************************** +Query Plan: +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------ +|0 |PX COORDINATOR | |400000 |427257| +|1 | EXCHANGE OUT DISTR |:EX10000|400000 |247403| +|2 | PX PARTITION ITERATOR| |400000 |247403| +|3 | TABLE SCAN |T |400000 |247403| +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T.C1], [T.C2]), filter(nil) + 1 - output([T.C1], [T.C2]), filter(nil), dop=1 + 2 - output([T.C1], [T.C2]), filter(nil) + 3 - output([T.C1], [T.C2]), filter(nil), + access([T.C1], [T.C2]), partitions(p[0-3]) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 PX PARTITION ITERATOR 算子的输出信息如下: + + +| 信息名称 | 含义 | +|--------|-------------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 PX PARTITION ITERATOR 算子没有设置 filter,所以为 nil。 | + + + +PX BLOCK ITERATOR +-------------------------------------- + +PX BLOCK ITERATOR 算子用于按照数据块粒度迭代数据。 + +相对于 PX PARTITION ITERATOR,PX BLOCK ITERATOR 算子按照数据块迭代的方式粒度更小,能够切分出更多的任务,支持更高的并行度。 + +```sql +obclient>EXPLAIN SELECT /*+PARALLEL(4)*/ c1 FROM t\G; +*************************** 1. row *************************** +Query Plan: +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |PX COORDINATOR | |400000 |279171| +|1 | EXCHANGE OUT DISTR|:EX10000|400000 |189244| +|2 | PX BLOCK ITERATOR| |400000 |189244| +|3 | TABLE SCAN |T(IDX) |400000 |189244| +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T.C1]), filter(nil) + 1 - output([T.C1]), filter(nil), dop=4 + 2 - output([T.C1]), filter(nil) + 3 - output([T.C1]), filter(nil), + access([T.C1]), partitions(p[0-3]) +``` + + + +上述示例的执行计划展示中的 outputs \& filters 详细列出了 PX BLOCK ITERATOR 算子的输出信息,字段的含义与 PX PARTITION ITERATOR 算子相同。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/3.JOIN-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/3.JOIN-1-2.md new file mode 100644 index 000000000..02d017cad --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/3.JOIN-1-2.md @@ -0,0 +1,262 @@ +JOIN +========================= + +JOIN 算子用于将两张表的数据,按照特定的条件进行联接。 + +JOIN 的类型主要包括内联接(INNER JOIN)、外联接(OUTER JOIN)和半联接(SEMI/ANTI JOIN)三种。 + +OceanBase 数据库支持的 JOIN 算子主要有 NESTED LOOP JOIN (NLJ)、MERGE JOIN (MJ) 和 HASH JOIN (HJ)。 + +NESTED LOOP JOIN (NLJ) +------------------------------------------- + +如下示例中,Q1 和 Q2 查询使用 HINT 指定了查询使用 NLJ。其中,0 号算子是一个 NLJ 算子。这个算子存在两个子节点,分别是 1 号算子和 2 号算子,它的执行逻辑为: + +1. 从 1 号算子读取一行。 + + + +2. 打开 2 号算子,读取所有的行。 + + + +3. 联接接 1和 2 号算子的输出结果,并执行过滤条件,输出结果。 + + + +4. 重复第一步,直到 1 号算子迭代结束。 + + + + + + +```javascript +obclient>CREATE TABLE t1 (c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>CREATE TABLE t2 (d1 INT, d2 INT, PRIMARY KEY (d1)); +Query OK, 0 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN SELECT /*+USE_NL(t1, t2)*/ t1.c2 + t2.d2 FROM t1, t2 + WHERE c2 = d2\G; +*************************** 1. row *************************** +Query Plan: +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |NESTED-LOOP JOIN| |9782 |411238| +|1 | TABLE SCAN |T1 |999 |647 | +|2 | MATERIAL | |999 |1519 | +|3 | TABLE SCAN |T2 |999 |647 | +=========================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C2 + T2.D2]), filter(nil), + conds([T1.C2 = T2.D2]), nl_params_(nil) + 1 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) + 2 - output([T2.D2]), filter(nil) + 3 - output([T2.D2]), filter(nil), + access([T2.D2]), partitions(p0) +``` + + + +其中,MATERIAL 算子用于物化下层算子输出的数据,详细信息请参见 [MATERIAL](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/10.MATERIAL-1-2.md)。 + +```javascript +Q2: +obclient>EXPLAIN SELECT /*+USE_NL(t1, t2)*/ t1.c2 + t2.d2 FROM t1, t2 + WHERE c1 = d1\G; +*************************** 1. row *************************** +Query Plan: +| ========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |NESTED-LOOP JOIN| |990 |37346| +|1 | TABLE SCAN |T1 |999 |669 | +|2 | TABLE GET |T2 |1 |36 | +========================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C2 + T2.D2]), filter(nil), + conds(nil), nl_params_([T1.C1]) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 2 - output([T2.D2]), filter(nil), + access([T2.D2]), partitions(p0) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细展示了 NESTED LOOP JOIN 算子的具体输出信息如下: + + +| **信息名称** | **含义** | +|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 NLJ 算子没有设置 filter,所以为 nil。 | +| conds | 联接条件。 例如 Q1 查询中 `t1.c2 = t2.d2` 联接条件。 | +| nl_params_ | 根据 NLJ 左表的数据产生的下推参数。 例如 Q2 查询中的 `t1.c1`。 NLJ 在迭代到左表的每一行时,都会根据 `nl_params` 构造一个参数,根据这个参数和原始的联接条件 `c1 = d1` ,构造一个右表上的过滤条件: `d1 = ?`。 这个过滤条件会下推到右表上,并抽取索引上的查询范围,即需要扫描索引哪个范围的数据。在 Q2 查询中,由于存在下推条件 `d1 = ?`,所以 2 号算子是 TABLE GET 算子。 | + + + +如下示例中,Q3 查询中没有指定任何的联接条件,0 号算子展示成了一个 `NESTED-LOOP JOIN CARTESIAN`,逻辑上它还是一个 NLJ 算子,代表一个没有任何联接条件的 NLJ。 + +```javascript +Q3: +obclient>EXPLAIN SELECT t1.c2 + t2.d2 FROM t1, t2\G; +*************************** 1. row *************************** +Query Plan: +| ===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |998001 |747480| +|1 | TABLE SCAN |T1 |999 |647 | +|2 | MATERIAL | |999 |1519 | +|3 | TABLE SCAN |T2 |999 |647 | +===================================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C2 + T2.D2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([T1.C2]), filter(nil), + access([T1.C2]), partitions(p0) + 2 - output([T2.D2]), filter(nil) + 3 - output([T2.D2]), filter(nil), + access([T2.D2]), partitions(p0) +``` + + + +MERGE JOIN (MJ) +------------------------------------ + +如下示例中,Q4 查询使用 `USE_MERGE` 的 HINT 指定了查询使用 MJ。其中,0 号算子是一个 MJ 算子,它有两个子节点,分别是 1 和 3 号算子。该算子会对左右子节点的数据进行归并联接,因此,要求左右子节点的数据相对于联接列是有序的。 + +以 Q4 查询为例,联接条件为 `t1.c2 = t2.d2`,它要求 t1 的数据是按照 c2 排序的,t2 的数据是按照 d2 排序的。在 Q4 查询中,2 号算子的输出是无序的;4 号算子的输出是按照 d2 排序的,均不满足 MERGE JOIN 对序的要求,因此,分配了 1 和 3 号算子进行排序。 + +```javascript +Q4: +obclient>EXPLAIN SELECT /*+USE_MERGE(t1, t2)*/ t1.c2 + t2.d2 FROM t1, t2 + WHERE c2 = d2 AND c1 + d1 > 10\G; +*************************** 1. row *************************** +Query Plan: +| ====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------- +|0 |MERGE JOIN | |3261 |14199| +|1 | SORT | |999 |4505 | +|2 | TABLE SCAN|T1 |999 |669 | +|3 | SORT | |999 |4483 | +|4 | TABLE SCAN|T2 |999 |647 | +====================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C2 + T2.D2]), filter(nil), + equal_conds([T1.C2 = T2.D2]), other_conds([T1.C1 + T2.D1 > 10]) + 1 - output([T1.C2], [T1.C1]), filter(nil), sort_keys([T1.C2, ASC]) + 2 - output([T1.C2], [T1.C1]), filter(nil), + access([T1.C2], [T1.C1]), partitions(p0) + 3 - output([T2.D2], [T2.D1]), filter(nil), sort_keys([T2.D2, ASC]) + 4 - output([T2.D2], [T2.D1]), filter(nil), + access([T2.D2], [T2.D1]), partitions(p0) +``` + + + +如下示例中,Q5 查询中联接条件是 `t1.c1 = t2.d1` ,它要求 t1 的数据是按照 c1 排序的,t2 的数据是按照 d1 排序的。在这个执行计划中,t2 选择了主表扫描,结果是按照 d1 有序的,因此不需要额外分配一个 SORT 算子。理想情况下,JOIN 的左右表选择了合适的索引,索引提供的数据顺序能够满足 MJ 的要求,此时不需要分配任何 SORT 算子。 + +```javascript +Q5: +obclient>EXPLAIN SELECT /*+USE_MERGE(t1, t2)*/ t1.c2 + t2.d2 FROM t1, t2 + WHERE c1 = d1\G; +*************************** 1. row *************************** +Query Plan: +| ===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |990 |6096| +|1 | SORT | |999 |4505| +|2 | TABLE SCAN|T1 |999 |669 | +|3 | TABLE SCAN |T2 |999 |647 | +===================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C2 + T2.D2]), filter(nil), + equal_conds([T1.C1 = T2.D1]), other_conds(nil) + 1 - output([T1.C2], [T1.C1]), filter(nil), sort_keys([T1.C1, ASC]) + 2 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 3 - output([T2.D1], [T2.D2]), filter(nil), + access([T2.D1], [T2.D2]), partitions(p0) +``` + + + +上述示例中,执行计划展示的 outputs \& filters 中详细展示了 MERGE JOIN 算子的具体输出信息如下: + + +| **信息名称** | **含义** | +|-------------|-----------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于 MJ 算子没有设置 filter,所以为 nil。 | +| equal_conds | 归并联接时使用的等值联接条件,左右子节点的结果集相对于联接列必须是有序的。 | +| other_conds | 其他联接条件。 例如 Q4 查询中的 `t1.c1 + t2.d1 > 10` 。 | + + + +HASH JOIN (HJ) +----------------------------------- + +如下示例中,Q6 查询使用 `USE_HASH` 的 HINT 指定了查询使用 HJ。其中,0 号算子是一个 HJ 算子,它有两个子节点,分别是 1 和 2 号算子。该算子的执行逻辑步骤如下: + +1. 读取左子节点的数据,根据联接列计算哈希值(例如 `t1.c1`),构建一张哈希表。 + + + +2. 读取右子节点的数据,根据联接列计算哈希值(例如 `t2.d1`),尝试与对应哈希表中 t1 的数据进行联接。 + + + + + + +```javascript +Q6: +obclient>EXPLAIN SELECT /*+USE_HASH(t1, t2)*/ t1.c2 + t2.d2 FROM t1, t2 + WHERE c1 = d1 AND c2 + d2 > 1\G; +*************************** 1. row *************************** +Query Plan: +| ==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |330 |4850| +|1 | TABLE SCAN|T1 |999 |669 | +|2 | TABLE SCAN|T2 |999 |647 | +==================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C2 + T2.D2]), filter(nil), + equal_conds([T1.C1 = T2.D1]), other_conds([T1.C2 + T2.D2 > 1]) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 2 - output([T2.D1], [T2.D2]), filter(nil), + access([T2.D1], [T2.D2]), partitions(p0) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细展示了 HASH JOIN 算子的输出信息如下: + + +| **信息名称** | **含义** | +|-------------|---------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于 HJ 算子没有设置 filter,所以为 nil。 | +| equal_conds | 等值联接,左右两侧的联接列会用于计算哈希值。 | +| other_conds | 其他联接条件。 例如 Q6 查询中的 `t1.c2 + t2.d2 > 1`。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/4.COUNT-1-2-3-4.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/4.COUNT-1-2-3-4.md new file mode 100644 index 000000000..4205b551b --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/4.COUNT-1-2-3-4.md @@ -0,0 +1,94 @@ +COUNT +========================== + +COUNT 算子用于兼容 Oracle 的 ROWNUM 功能,实现 ROWNUM 表达式的自增操作。 + +在一般场景下,当 SQL 查询含有 ROWNUM 时,SQL 优化器就会在生成执行计划的时候分配一个 COUNT 算子。当然在一些情况下,SQL 优化器会将含有 ROWNUM 的 SQL 改写为 LIMIT 算子,这时就不会再分配 COUNT 算子。 + +正常分配 COUNT 算子的场景 +------------------------------------- + +示例 1:含有 ROWNUM 的 SQL 查询正常分配 COUNT 算子场景。 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1, 1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(3, 3); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(5, 5); +Query OK, 1 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN SELECT c1,ROWNUM FROM t1\G; +*************************** 1. row *************************** +Query Plan: +| ==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |COUNT | |1 |37 | +|1 | TABLE SCAN|T1 |1 |36 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [rownum()]), filter(nil) + 1 - output([T1.C1]), filter(nil), + access([T1.C1]), partitions(p0) + +obclient>SELECT c1,ROWNUM FROM t1; ++------+--------+ +| C1 | ROWNUM | ++------+--------+ +| 1 | 1 | +| 3 | 2 | +| 5 | 3 | ++------+--------+ +3 rows in set (0.01 sec) +``` + + + +上述示例中,执行计划展示中的 outputs \& filters 详细展示了 COUNT 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|---------------------------------------------------------------| +| output | 该算子输出的表达式。 其中 rownum() 表示 ROWNUM 对应的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 COUNT 算子没有设置 filter,所以为 nil。 | + + + +从上述执行计划示例的输出结果可以发现,ROWNUM 对应的表达式的初始值为 1,每通过一次 COUNT 算子,COUNT 算子就会为 ROWNUM 对应的表达式的值加上 1,实现 ROWNUM 表达式的自增操作。 + +不分配 COUNT 算子的场景 +------------------------------------ + +示例 2:含有 rownum 的 SQL 改写为 LIMIT 后,不分配 COUNT 算子的场景。 + +```javascript +Q2: +obclient>EXPLAIN SELECT 1 FROM DUAL WHERE ROWNUM < 2\G; +*************************** 1. row *************************** +Query Plan: +| ==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |LIMIT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter(nil), limit(?), offset(nil) + 1 - output([1]), filter(nil) + values({1}) +``` + + + +从上述执行计划示例的输出结果可以发现,虽然 SQL 中含有 ROWNUM,但是经过 SQL 优化器改写之后,已经将涉及含有 ROWNUM 的表达式转换为了等价的 LIMIT 表达式,转换的好处在于可以做更多的优化,详细信息请参见 [LIMIT](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/12.LIMIT-1-2.md)。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/5.group-by-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/5.group-by-2.md new file mode 100644 index 000000000..408ba7d6c --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/5.group-by-2.md @@ -0,0 +1,140 @@ +GROUP BY +============================= + +GROUP BY 算子主要用于在 SQL 中进行分组聚合计算操作。 + +用于对数据进行分组的算法有 HASH 算法和 MERGE 算法,因此根据算法可以将 GROUP BY 算子分为两种:HASH GROUP BY 和 MERGE GROUP BY。执行计划生成时根据 SQL 优化器对于两种算子的代价评估,来选择使用哪种 GROUP BY 算子。 + +对于普通的聚合函数(SUM/MAX/MIN/AVG/COUNT/STDDEV)也是通过分配 GROUP BY 算子来完成,而对于只有聚合函数而不含有 GROUP BY 的 SQL,分配的是 SCALAR GROUP BY 算子,因此 GROUP BY 算子又可以分为三种:SCALAR GROUP BY、HASH GROUP BY 和 MERGE GROUP BY。 + +SCALAR GROUP BY +------------------------------------ + +示例 1:含 SCALAR GROUP BY 算子的执行计划 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1, 1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2, 2); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(3, 3); +Query OK, 1 rows affected (0.12 sec) + +Q1: +obclient> EXPLAIN SELECT SUM(c1) FROM t1\G; +*************************** 1. row *************************** +Query Plan: +| ======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |37 | +|1 | TABLE SCAN |T1 |3 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(T1.C1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(T1.C1)]) + 1 - output([T1.C1]), filter(nil), + access([T1.C1]), partitions(p0) +``` + + + +上述示例中,Q1 查询的执行计划展示中的 outputs \& filters 中详细列出了 SCALAR GROUP BY 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|------------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 SCALAR GROUP BY 算子未设置 filter,所以为 nil。 | +| group | 需要进行分组的列。 例如,Q1 查询中是 SCALAR GROUP BY 算子,所以为 nil。 | +| agg_func | 所涉及的聚合函数。 例如,Q1 查询是计算表 t1 的 c1 列数据之和,因此为 `T_FUN_SUM(t1.c1)`。 | + + + +HASH GROUP BY +---------------------------------- + +示例 2:含 HASH GROUP BY 算子的执行计划 + +```javascript +Q2: +obclient>EXPLAIN SELECT SUM(c2) FROM t1 GROUP BY c1 HAVING SUM(c2) > 2\G; +*************************** 1. row *************************** +Query Plan: +| ====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |1 |40 | +|1 | TABLE SCAN |T1 |3 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(T1.C2)]), filter([T_FUN_SUM(T1.C2) > 2]), + group([T1.C1]), agg_func([T_FUN_SUM(T1.C2)]) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) +``` + + + +上述示例中,Q2 查询的执行计划展示中的 outputs \& filters 详细列出了 HASH GROUP BY 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|------------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于设置要求分组后的 c2 列求和大于 2,因此为 `T_FUN_SUM(t1.c2) > 2`。 | +| group | 需要进行分组的列。 例如,Q2 查询是 HASH GROUP BY 算子,所以为 nil。 | +| agg_func | 所涉及的聚合函数。 例如,Q2 查询中计算表 t1 的 c1 列之和,因此为 `T_FUN_SUM(t1.c1)`。 | + + +**说明** + + + +HASH GROUP BY 算子将会保证在执行时采用 HASH 算法进行分组。 + +MERGE GROUP BY +----------------------------------- + +示例 3:含 MERGE GROUP BY 算子的执行计划 + +```javascript +Q3: +obclient>EXPLAIN SELECT /*+NO_USE_HASH_AGGREGATION*/SUM(c2) FROM + t1 GROUP BY c1 HAVING SUM(c2) > 2\G; +*************************** 1. row *************************** +Query Plan: +| ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |MERGE GROUP BY| |1 |45 | +|1 | SORT | |3 |44 | +|2 | TABLE SCAN |T1 |3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(T1.C2)]), filter([T_FUN_SUM(T1.C2) > 2]), + group([T1.C1]), agg_func([T_FUN_SUM(T1.C2)]) + 1 - output([T1.C1], [T1.C2]), filter(nil), sort_keys([T1.C1, ASC]) + 2 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) +``` + + + +上述示例中,Q3 查询的执行计划展示中的 outputs \& filters 中详细列出了 MERGE GROUP BY 算子的信息,可以看出相同的 SQL 生成执行计划时选择了 MERGE GROUP BY 算子,其算子基本信息都是相同的,最大的区别是在执行的时候选择的分组算法不一样。同时,这里的 2 号算子 TABLE SCAN 返回的结果是一个无序结果,而 GROUP BY 算法采用的是 MERGE GROUP BY,因此必须分配一个 SORT 算子。 +**注意** + + + +NO_USE_HASH_AGGREGATION 和 USE_HASH_AGGREGATION 的 HINT 可以用于控制 GROUP BY 算子选择何种算法进行分组。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/6.window-function-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/6.window-function-2.md new file mode 100644 index 000000000..6863fe53a --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/6.window-function-2.md @@ -0,0 +1,63 @@ +WINDOW FUNCTION +==================================== + +WINDOW FUNCTION 算子用于实现 SQL 中的分析函数(也叫窗口函数),计算窗口下的相关行的结果。 + +窗口函数与聚集函数不同的是,聚集函数一组只能返回一行,而窗口函数每组可以返回多行,组内每一行都是基于窗口的逻辑计算的结果。因此,在执行含有 WINDOW FUNCTION 的 SQL 时 (格式一般为 `OVER(...)`),都会在生成执行计划的时候分配一个 WINDOW FUNCTION 算子。 + +示例:含 WINDOW FUNCTION 算子的执行计划 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(1, 1); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(2, 2); +Query OK, 1 rows affected (0.12 sec) + +obclient>INSERT INTO t1 VALUES(3, 3); +Query OK, 1 rows affected (0.12 sec) + +Q1: +obclient>EXPLAIN SELECT MAX(c1) OVER(PARTITION BY c1 ORDER BY c2) FROM t1\G; +*************************** 1. row *************************** +Query Plan: +| ======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |WINDOW FUNCTION| |3 |45 | +|1 | SORT | |3 |44 | +|2 | TABLE SCAN |T1 |3 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(T1.C1)]), filter(nil), + win_expr(T_FUN_MAX(T1.C1)), partition_by([T1.C1]), order_by([T1.C2, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + 1 - output([T1.C1], [T1.C2]), filter(nil), sort_keys([T1.C1, ASC], [T1.C2, ASC]) + 2 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) +``` + + + +其中,窗口函数中指定了一个 ORDER BY/PARTITION BY 的时候,会在下层分配一个 SORT 算子,将排序结果返回给窗口函数算子使用。 + +上述示例中,Q1 查询的执行计划展示中的 outputs \& filters 详细列出了 WINDOW FUNCTION 算子的输出信息如下: + + +| **信息名称** | **含义** | +|--------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| output | 该算子输出的表达式。 | +| filter | 该算子上的过滤条件。 由于示例中 WINDOW FUNCTION 算子没有设置 filter,所以为 nil。 | +| win_expr | 在窗口中使用何种聚合函数。 例如,Q1 查询为求 c1 列的最大值,因此为`T_FUN_MAX(t1.c1)`。 | +| partition_by | 在窗口中按照何种方式分组。 例如,Q1 查询为按照 c1 列分组,因此为 `t1.c1`。 | +| order_by | 在窗口中按照何种方式排序。 例如,Q1 查询为按照 c2 列排序,因此为 `t1.c2`。 | +| window_type | 窗口类型,包括 range 和 rows 两种: * range :按照逻辑位置偏移进行计算窗口上下界限,默认使用 range 方式。 * rows :按照实际物理位置偏移进行计算窗口上下界限。 例如,Q1 查询未设置窗口类型,因此选择了默认方式 range。 | +| upper | 设定窗口的上边界: * UNBOUNDED :无边界,选择最大的值(默认)。 * CURRENT ROW :从当前行开始,如果出现数字则表示移动的行数。 * PRECEDING :向前取边 * FOLLOWING:向后取边界。 例如,Q1 查询设置的上边界为向前无边界。 | +| lower | 设定窗口的下边界,边界属性设置同 upper。 例如,Q1 查询设置的下边界为当前行。 | + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/7.subplan-filter-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/7.subplan-filter-2.md new file mode 100644 index 000000000..e7e0f67d9 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/7.subplan-filter-2.md @@ -0,0 +1,136 @@ +SUBPLAN FILTER +=================================== + +SUBPLAN FILTER 算子用于驱动表达式中的子查询执行。 + +OceanBase 数据库以 NESTED-LOOP 算法执行 SUBPLAN FILTER 算子,执行时左边取一行数据,然后执行右边的子计划。SUBPLAN FILTER 算子可以驱动相关子查询和非相关子查询计算,并且两种执行方式不同。 + +驱动非相关子查询计算 +------------------------------- + +示例 1:SUBPLAN FILTER 算子驱动非相关子查询计算 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.09 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT); +Query OK, 0 rows affected (0.09 sec) + +obclient>EXPLAIN SELECT /*+NO_REWRITE*/c1 FROM t1 WHERE + c2 > (SELECT MAX(c2) FROM t2)\G; +*************************** 1. row *************************** +Query Plan: +| =========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |SUBPLAN FILTER | |33334 |167652| +|1 | TABLE SCAN |T1 |100000 |68478 | +|2 | SCALAR GROUP BY| |1 |85373 | +|3 | TABLE SCAN |T2 |100000 |66272 | +=========================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C1]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([T1.C1]), filter([T1.C2 > ?]), + access([T1.C2], [T1.C1]), partitions(p0) + 2 - output([T_FUN_MAX(T2.C2)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(T2.C2)]) + 3 - output([T2.C2]), filter(nil), + access([T2.C2]), partitions(p0) +``` + + + +上述示例中,执行计划展示中 0 号算子 SUBPLAN FILTER 驱动右边 SCALAR GROUP BY 子计划执行,outputs \& filters 详细列出了 SUBPLAN FILTER 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| output | 该算子输出的列。 | +| filter | 该算子上的过滤条件。 由于示例中的 SUBPLAN FILTER 算子没有设置 filter,所以为 nil。 | +| exec_params_ | 右子计划依赖左子计划的参数,执行期由SUBPLAN FILTER 从左子计划中获取,传递给右子计划执行。 由于示例中 SUBPLAN FILTER 算子驱动非相关子查询没有涉及该参数,所以为 nil。 | +| onetime_exprs_ | 计划中只计算一次的表达式,如果右子计划是非相关子查询,每次重复执行的结果都是一样的,所以执行一次后保存在参数集合中。 每次执行 SUBPLAN FILTER 时,可以直接从参数集获取右子计划的执行结果。参数 subquery(1) 表示 SUBPLAN FILTER 右边第一个子计划是 onetime expr。 | +| init_plan_ids_ | 该算子中只需要执行一次的子计划。 它与 onetime_exprs_ 的区别是,init_plan_返回多行多列,onetime_expr_ 返回单行单列。 由于示例中的 SQL 查询未设置此项,所以为 nil。 | + + + +SUBPLAN FILTER 算子驱动非相关子查询计算的一般执行流程如下: + +1. SUBPLAN FILTER 在启动时会执行 onetime_exprs_。 + + + +2. 从参数中拿到右边非相关子查询的结果,下推 filter 到左边计划,执行左边的查询。 + + + +3. 输出左边查询的行。 + + + + + + +驱动相关子查询计算 +------------------------------ + +示例 2:SUBPLAN FILTER 算子驱动相关子查询计算 + +```javascript +obclient>EXPLAIN SELECT /*+NO_REWRITE*/c1 FROM t1 WHERE c2 > (SELECT + MAX(c2) FROM t2 WHERE t1.c1=t2.c1)\G; +*************************** 1. row *************************** +Query Plan: +| =============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------- +|0 |SUBPLAN FILTER | |33334 |8541203533| +|1 | TABLE SCAN |T1 |100000 |68478 | +|2 | SCALAR GROUP BY| |1 |85412 | +|3 | TABLE SCAN |T2 |990 |85222 | +=============================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C1]), filter([T1.C2 > subquery(1)]), + exec_params_([T1.C1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 2 - output([T_FUN_MAX(T2.C2)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(T2.C2)]) + 3 - output([T2.C2]), filter([? = T2.C1]), + access([T2.C1], [T2.C2]), partitions(p0) +``` + + + +上述示例中,执行计划展示中 0 号算子 SUBPLAN FILTER 驱动右边 SCALAR GROUP BY 子计划执行,outputs \& filters 详细列出了 SUBPLAN FILTER 算子的输出信息如下: + + +| **信息名称** | **含义** | +|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| output | 该算子输出的列。 | +| filter | 该算子上的过滤条件。 例如,示例 2 中的 SQL 查询过滤条件为 `t1.c2 > subquery(1)`。 | +| exec_params_ | 右子计划依赖左子计划的参数,执行期由SUBPLAN FILTER 从左子计划中获取,传递给右子计划执行。 左边输出一行数据后需要下推的参数,在非相关子查询中一般没有下推的参数。 | +| onetime_exprs_ | 计划中只计算一次的表达式,如果右子计划是非相关子查询,每次重复执行的结果都是一样的,所以执行一次后保存在参数集合中。 每次执行 SUBPLAN FILTER 时,可以直接从参数集获取右子计划的执行结果。参数 subquery(1) 表示 SUBPLAN FILTER 右边第一个子计划是 onetime expr。 由于示例中的 SQL 查询未设置此项,所以为 nil。 | +| init_plan_idxs_ | 该算子中只需要执行一次的子计划。 与 onetime_exprs_ 的区别是,init_plan_返回多行多列,onetime_expr_ 返回单行单列。 由于示例中的 SQL 查询未设置此项,所以为 nil。 | + + + +SUBPLAN FILTER 算子驱动相关子查询计算的一般执行流程如下: + +1. SUBPLAN FILTER 在启动时会执行 `onetime_exprs_`。 + + + +2. 执行左边的查询,输出一行后,计算相关参数,下推到右边,执行右边的子查询。 + + + +3. 执行 filter,输出符合条件的数据行。 + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/8.DISTINCT-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/8.DISTINCT-1-2.md new file mode 100644 index 000000000..7939f4a18 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/8.DISTINCT-1-2.md @@ -0,0 +1,91 @@ +DISTINCT +============================= + +DISTINCT 算子用于为对数据行去重,包括去除重复的 NULL 值。 + +DISTINCT 算子包括 HASH DISTINCT 和 MERGE DISTINCT。 + +HASH DISTINCT +---------------------------------- + +HASH DISTINCT 算子使用 HASH 算法执行 DISTINCT 运算。 + +示例 1:使用 HASH 算法执行 DISTINCT 运算,对 t1 表的 c1 列进行去重处理 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.09 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT); +Query OK, 0 rows affected (0.09 sec) + +obclient>EXPLAIN SELECT /*+USE_HASH_AGGREGATION*/ DISTINCT c1 FROM t1\G; +*************************** 1. row *************************** +Query Plan: +|======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |HASH DISTINCT| |101 |99169| +|1 | TABLE SCAN |t1 |100000 |66272| +======================================= +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + distinct([t1.c1]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) +``` + + + +上述示例中,执行计划展示中 0 号算子 HASH DISTINCT 执行去重运算,outputs \& filters 详细展示了 HASH DISTINCT 算子的具体输出信息如下: + + +| **信息名称** | **含义** | +|-----------|-------------------------------------------------------------------------------------------------| +| output | 该算子的输出列。 | +| filter | 该算子的过滤谓词。 由于示例中 HASH DISTINCT 算子没有设置 filter,所以为 nil。 | +| partition | 查询需要扫描的分区。 | +| distinct | 指定需要去重的列。 例如,`distinct([t1.c1])` 的参数 `t1.c1` 指定对 t1 表的 c1 列进行去重处理,并且采用 HASH 算法。 | + + + +MERGE DISTINCT +----------------------------------- + +MERGE DISTINCT 算子使用 MERGE 算法执行 DISTINCT 运算。 + +示例 2:使用 MERGE 算法执行 DISTINCT 运算 + +```javascript +obclient>EXPLAIN SELECT /*+NO_USE_HASH_AGGREGATION*/ DISTINCT c1 FROM t1\G; +*************************** 1. row *************************** +Query Plan: +|======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |MERGE DISTINCT| |3 |40 | +|1 | SORT | |3 |39 | +|2 | TABLE SCAN |t1 |3 |37 | +======================================= +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + distinct([t1.c1]) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) +``` + + + +上述示例中,0 号算子 MERGE DISTINCT 执行去重运算,采用了 MERGE 算法,并且由于 2 号算子输出的数据是无序的,而 MERGE DISTINCT 算子需要输入的数据有序,所以在执行去重运算前需要使用 SORT 算子对数据排序。执行计划展示中的 outputs \& filters 详细展示了 MERGE DISTINCT 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|--------------------------------------------------------------------------------------------------| +| output | 该算子的输出列。 | +| filter | 该算子的过滤谓词。 由于示例中 MERGE DISTINCT 算子没有设置 filter,所以为 nil。 | +| distinct | 指定需要去重的列。 例如,`distinct([t1.c1])` 的参数 `t1.c1` 指定对 t1 表的 c1 列进行去重处理,并且采用 MERGE 算法。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/9.SEQUENCE-1-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/9.SEQUENCE-1-2.md new file mode 100644 index 000000000..b6223c0c4 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/9.SEQUENCE-1-2.md @@ -0,0 +1,46 @@ +SEQUENCE +============================= + +SEQUENCE 算子用于计算伪列 SEQUENCE 的值。 + +伪列 SEQUENCE 是由 `CREATE SEQUENCE` 创建的序列,下层算子每输出一行执行一次计算。 + +示例:计算伪列 SEQUENCE 的当前值与下一个值 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.09 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT); +Query OK, 0 rows affected (0.09 sec) + +obclient>CREATE SEQUENCE seq INCREMENT BY 1 START WITH 1; +Query OK, 0 rows affected (0.09 sec) + +obclient>EXPLAIN SELECT seq.NEXTVAL, seq.CURRVAL FROM t1\G; +*************************** 1. row *************************** +Query Plan: +|===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------- +|0 |SEQUENCE | |100000 |77868| +|1 | TABLE SCAN|T1 |100000 |64066| +===================================== +Outputs & filters: +------------------------------------- + 0 - output([SEQ.NEXTVAL], [SEQ.CURRVAL]), filter(nil) + 1 - output([T1.__pk_increment]), filter(nil), + access([T1.__pk_increment]), partitions(p0) +``` + + + +上述示例中,执行计划展示中 0 号算子 SEQUENCE 用来计算序列的值,`output([SEQ.NEXTVAL],[SEQ.CURRVAL]` 指定了 SEQUENCE 需要计算序列的当前值与下一个值。t1 表每输出一行数据,SEQUENCE 就会计算一次序列的值。执行计划展示中 outputs \& filters 详细列出了 SEQUENCE 算子的输出信息如下: + + +| **信息名称** | **含义** | +|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| output | 该算子输出的列。 SEQUENCE 算子参数信息如下: * CURRVAl:计算序列的当前值。 * NEXTVAL:计算序列的下一个值。 | +| filter | 该算子上的过滤条件。 由于示例中的 SEQUENCE 算子没有设置 filter,所以为 nil。 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/3.execution-plan-cache-4.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/3.execution-plan-cache-4.md new file mode 100644 index 000000000..6832abcb3 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/3.execution-plan-cache-4.md @@ -0,0 +1,199 @@ +执行计划缓存 +=========================== + +执行计划缓存(Plan Cache)用于减少执行计划的生成次数。 + +OceanBase 数据库会缓存之前生成的执行计划,以便在下次执行该 SQL 时直接使用,可以避免反复执行,从而优化执行过程,这种策略被称为"Optimize Once",即"一次优化"。 + +计划缓存是一个典型的 Key-Value 结构,Key 就是参数化后的 SQL 字符串,Value 就是该条 SQL 所对应的执行计划。 + +每个租户在每一台服务器上都有一个独立的计划缓存,用以缓存在此服务器上处理过的 SQL 计划。在 OceanBase 数据库的计划缓存中,SQL 的执行计划可以分为本地计划、远程计划和分布式计划三种类型。在计划缓存中,同一条 SQL 根据其需要访问的数据不同,可能同时具有三种执行计划。 + +对于一条 SQL 的一种执行计划,OceanBase 数据库默认只会保留第一次执行 SQL 时生成的计划;但在某些情况下,同一条 SQL 的参数值可能会影响到执行计划的选择,所以计划缓存会根据需要,为不同的参数值保留不同的执行计划,从而保证每次执行时可以使用最合适的计划。 + +计划缓存的淘汰 +---------------- + +计划缓存的淘汰是指将执行计划从计划缓存中删除,减少计划缓存对内存的使用。OceanBase 数据库支持自动淘汰和手动淘汰两种方式。 + +#### **自动淘汰** + +自动淘汰是指当计划缓存占用的内存达到了需要淘汰计划的内存上限(即淘汰计划的高水位线)时,对计划缓存中的计划执行自动淘汰。 + +* 触发执行计划淘汰的条件 + + 每隔一段时间(具体时间间隔由配置项 `plan_cache_evict_interval` 设置)系统会自动检查不同租户在不同服务器上的计划缓存,并判断是否需要执行计划淘汰。如果某个计划缓存占用的内存超过该租户设置的淘汰计划的高水位线,则会触发计划缓存淘汰。 + + + + + + + +* 执行计划淘汰策略 + + 当触发计划缓存淘汰后,优先淘汰最久没被使用的执行计划,淘汰一部分执行计划后,当计划缓存使用的内存为该租户设置的淘汰计划的低水位线时,停止淘汰。 + + + + + + + +* 与计划缓存淘汰相关配置 + + + + + + + + + + +例如,租户内存大小为 10 G,各参数值设置如下: + +* `ob_plan_cache_percentage`=10 + + + +* `ob_plan_cache_evict_high_percentage`=90 + + + +* `ob_plan_cache_evict_low_percentage`=50 + + + + + + +则计算得出: + +* 计划缓存内存上限绝对值 = 10G \* 10 / 100 = 1 G + + + +* 淘汰计划的高水位线 = 1G \* 90 / 100 = 0.9 G + + + +* 淘汰计划的低水位线 = 1G \* 50 / 100 = 0.5 G + + + + + + +由计算结果可知,当该租户在某个服务器上计划缓存使用超过 0.9 G 时,会触发淘汰,优先淘汰最久没执行的计划,当淘汰到使用内存只有 0.5 G 时,则停止淘汰。 如果淘汰速度没有新计划生成速度快,计划缓存使用内存达到内存上限绝对值 1 G 时,将不在往计划缓存中添加新计划,直到执行淘汰后所占内存小于 1 G 才会添加新计划到计划缓存中。 + +#### **手动淘汰** + +手动淘汰是指强制将计划缓存中计划进行删除。现在支持指定不同租户对应的当前服务器或全部服务器中计划缓存全部删除,具体命令如下: + +```javascript +obclient>ALTER SYSTEM FLUSH PLAN CACHE [tenant_list] [global] +/*其中 tenant_list 的格式为 tenant = 'tenant1, tenant2, tenant3....'*/ +``` + + + +其中 tenant_list 和 global 为可选字段,使用说明如下: + +* 如果没有指定 tenant_list,则清空所有租户的计划缓存。反之,则只清空特定租户的计划缓存。 + + + +* 如果没有指定 global,则清空本机的计划缓存。反之,则清空该租户所在的所有服务器上的计划缓存。 + + + + + + + + +计划缓存的刷新 +---------------- + +计划缓存中执行计划可能因为各种原因而失效,这时需要将计划缓存中失效计划进行刷新,即将该执行计划删除后重新优化生成计划再加入计划缓存。 + +如下场景会导致执行计划失效,需要对执行计划进行刷新: + +* SQL 中涉及表的 Schema 变更时(比如添加索引、删除或增加列等),该 SQL 在计划缓存中所对应的执行计划将被刷新。 + + + + + + + + +* SQL 中涉及重新收集表的统计信息时,该 SQL 在计划缓存中所对应的执行计划会被刷新。由于 OceanBase 数据库在数据合并时会统一进行统计信息的收集,因此在每次进行合并后,计划缓存中所有计划将被刷新。 + + + + + + + + +计划缓存的使用控制 +------------------ + +计划缓存可以使用系统变量及 HINT 实现使用控制。 + +* 系统变量控制 + + 当 `ob_enable_plan_cache` 设置为 TURE 时,表示 SQL 请求可以使用计划缓存;设置为 FALSE 时,表示 SQL 请求不使用计划缓存。默认为 TURE。此系统变量可被设置为 SESSION 级别或者 GLOBAL 级别。 + + +* HINT 控制 + + + + + + + + + + +计划缓存暂不支持的场景 +-------------------- + +* 执行计划所占内存超过 20 M 时,不会加入计划缓存。 + + + +* 如果该计划为分布式执行计划且涉及多个表,不会加入计划缓存。 + + + + + + +计划缓存的视图 +---------------- + +执行计划相关视图包括: + +* `(g)v$plan_cache_stat` + + 记录每个计划缓存的状态,每个计划缓存在该视图中有一条记录。 + + +* `(g)v$plan_cache_plan_stat` + + 记录计划缓存中所有执行计划的具体信息及每个计划总的执行统计信息。 + + +* `(g)v$plan_cache_plan_explain` + + 记录某条 SQL 在计划缓存中的执行计划。 + + + + + +有关视图的详细参数信息,请参考 [计划缓存相关视图](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/3.plan-cache-view.md)。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/4.fast-parameterization-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/4.fast-parameterization-3.md new file mode 100644 index 000000000..76ab95887 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/4.fast-parameterization-3.md @@ -0,0 +1,212 @@ +快速参数化 +========================== + +参数化过程是指把 SQL 查询中的常量变成变量的过程。 + +同一条 SQL 语句在每次执行时可能会使用不同的参数,将这些参数做参数化处理,可以得到与具体参数无关的 SQL 字符串,并使用该字符串作为计划缓存的键值,用于在计划缓存中获取执行计划,从而达到参数不同的 SQL 能够共用相同的计划目的。 + +由于传统数据库在进行参数化时一般是对语法树进行参数化,然后使用参数化后的语法树作为键值在计划缓存中获取计划,而 OceanBase 数据库使用的词法分析对文本串直接参数化后作为计划缓存的键值,因此叫做快速参数化。 + +OceanBase 数据库支持自适应计划共享(Adaptive Cursor Sharing)功能以支持不同参数条件下的计划选择。 + +基于快速参数化而获取执行计划的流程如下图所示: + +![快速参数化](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4447194061/p179646.jpg) + +**示例解析** + +```javascript +obclient>SELECT * FROM T1 WHERE c1 = 5 AND c2 ='oceanbase'; +``` + + + +上述示例中的 SQL 查询参数化后结果如下所示,常量 5 和 oceanbase 被参数化后变成了变量 @1 和 @2: + +```javascript +obclient>SELECT * FROM T1 WHERE c1 = @1 AND c2 = @2; +``` + + + +但在计划匹配中,不是所有常量都可以被参数化,例如 ORDER BY 后面的常量,表示按照 SELECT 投影列中第几列进行排序,所以不可以被参数化。 + +如下例所示,表 t1 中含 c1、c2 列,其中 c1 为主键列,SQL 查询的结果按照 c1 列进行排序,由于 c1 作为主键列是有序的,所以使用主键访问可以免去排序。 + +```javascript +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY,c2 INT); +Query OK, 0 rows affected (0.06 sec) + +obclient>INSERT INTO t1 VALUES (1,2); +Query OK, 1 row affected (0.01 sec) + +obclient>INSERT INTO t1 VALUES (2,1); +Query OK, 1 row affected (0.01 sec) + +obclient>INSERT INTO t1 VALUES (3,1); +Query OK, 1 row affected (0.01 sec) + +obclient>SELECT c1, c2 FROM t1 ORDER BY 1; + ++----+------+ +| C1 | C2 | ++----+------+ +| 1 | 2 | +| 2 | 1 | +| 3 | 1 | ++----+------+ +3 rows in set (0.00 sec) + +obclient>EXPLAIN SELECT c1, c2 FROM t1 ORDER BY 1\G; +*************************** 1. row *************************** +Query Plan: +| =================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1000 |1381| +=================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) +``` + + + +但如果执行如下命令: + +```javascript +obclient>SELECT c1, c2 FROM t1 ORDER BY 2; + ++----+------+ +| C1 | C2 | ++----+------+ +| 2 | 1 | +| 3 | 1 | +| 1 | 2 | ++----+------+ +3 rows in set (0.00 sec) +``` + + + +则结果需要对 c2 排序,因此需要执行显示的排序操作,执行计划如下例所示: + +```javascript +obclient>EXPLAIN SELECT c1, c2 FROM t1 ORDER BY 2\G; +*************************** 1. row *************************** +Query Plan: +| ==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |SORT | |1000 |1886| +|1 | TABLE SCAN|t1 |1000 |1381| +==================================== +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2]), filter(nil), sort_keys([T1.C2, ASC]) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) +``` + + + +因此,如果将 ORDER BY 后面的常量参数化,不同 ORDER BY 的值具有相同的参数化后的 SQL,从而导致命中错误的计划。除此之外,如下场景中的常量均不能参数化(即参数化的约束条件): + +* 所有 ORDER BY 后常量(例如 `ORDER BY 1,2;`) + + + +* 所有 GROUP BY 后常量(例如 `GROUP BY 1,2;`) + + + +* LIMIT 后常量(例如 `LIMIT 5;`) + + + +* 作为格式串的字符串常量(例如 `SELECT DATE_FORMAT('2006-06-00', '%d');` 里面的` %d`) + + + +* 函数输入参数中,影响函数结果并最终影响执行计划的常量(例如 `CAST(999.88 as NUMBER(2,1)) `中的 `NUMBER(2,1)`,或者 `SUBSTR('abcd', 1, 2) `中的 1 和 2) + + + +* 函数输入参数中,带有隐含信息并最终影响执行计划的常量(例如 `SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012');` 里面的"2015-11-13 10:20:19.012",指定输入时间戳的同时,隐含指定了函数处理的精度值为毫秒) + + + + + + +为了解决上面这种可能存在的误匹配问题,在硬解析生成执行计划过程中会对 SQL 请求使用分析语法树的方法进行参数化,并获取相应的不一致的信息。例如,某语句对应的信息是"快速参数化参数数组的第 3 项必须为数字 3",可将其称为"约束条件"。 + +对于下例所示的 Q1 查询: + +```javascript +Q1: +obclient>SELECT c1, c2, c3 FROM t1 + WHERE c1 = 1 AND c2 LIKE 'senior%' ORDER BY 3; +``` + + + +经过词法分析,可以得到参数化后的 SQL 语句如下例所示: + +```javascript +obclient>SELECT c1, c2, c3 FROM t1 + WHERE c1 = @1 AND c2 LIKE @2 ORDER BY @3 ; +/*参数化数组为 {1,'senior%' ,3}*/ +``` + + + +当 ORDER BY 后面的常量不同时,不能共用相同的执行计划,因此在通过分析语法树进行参数化时会获得另一种参数化结果,如下例所示: + +```javascript +obclient>SELECT c1, c2, c3 FROM t1 + WHERE c1 = @1 AND c2 LIKE @2 ORDER BY 3 ; + +/*参数化数组为{1, 'senior'} +约束条件为"快速参数化参数数组的第 3 项必须为数字 3"*/ +``` + + + +Q1 请求新生成的参数化后的文本及约束条件和执行计划均会存入计划缓存中。 + +当用户再次发出如下 Q2 请求命令: + +```javascript +Q2: +obclient>SELECT c1, c2, c3 FROM t1 + WHERE c1 = 1 AND c2 LIKE 'senior%' ORDER BY 2; +``` + + + +经过快速参数化后结果如下例所示: + +```javascript +obclient>SELECT c1, c2, c3 FROM t1 + WHERE c1 = @1 and c2 like @2 ORDER BY @3; +/*参数化数组为 {1,'senior%' ,2}*/ +``` + + + +这与 Q1 请求快速参数化后 SQL 结果一样,但由于不满足"快速参数化参数数组的第 3 项必须为数字 3"这个约束条件,无法匹配该计划。此时 Q2 会通过硬解析生成新的执行计划及约束条件(即"快速参数化参数数组的第 3 项必须为数字 2"),并将新的计划和约束条件加入到缓存中,这样在下次执行 Q1 和 Q2 时均可命中对应正确的执行计划。 + +基于快速参数化的执行计划缓存优点如下: + +* 节省了语法分析过程。 + + + +* 查找 HASH MAP 时,可以将对参数化后语法树的 HASH 和比较操作,替换为对文本串进行 HASH 和 MEMCMP 操作,以提高执行效率。 + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/5.real-time-execution-plan-display-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/5.real-time-execution-plan-display-3.md new file mode 100644 index 000000000..b8cb81d05 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/2.sql-execution-plan-3/5.real-time-execution-plan-display-3.md @@ -0,0 +1,109 @@ +实时执行计划展示 +============================= + + + +使用 EXPLAIN 命令可以展示出当前优化器所生成的执行计划,但由于统计信息变化、用户 session 变量设置变化等,会造成该 SQL 在计划缓存中实际对应的计划可能与 EXPLAIN 的结果并不相同。为了确定该 SQL 在系统中实际使用的执行计划,需要进一步分析计划缓存中的物理执行计划。 + +用户可以通过查询 `(g)v$plan_cache_plan_explain` 视图来展示某条 SQL 在计划缓存中的执行计划。 + +如下例所示: + +```sql +obclient>VIEW_DEFINITION='SELECT * +FROM oceanbase.gv$plan_cache_plan_explain +WHERE IP =host_ip() AND PORT = rpc_port()' +``` + + + +参数解释如下表: + + +| **字段名称** | **类型** | **描述** | +|-----------|--------------|-----------------| +| TENANT_ID | bigint(20) | 租户 ID | +| IP | varchar(32) | IP 地址 | +| PORT | bigint(20) | 端口号 | +| PLAN_ID | bigint(20) | 执行计划的 ID | +| OPERATOR | varchar(128) | operator 的名称 | +| NAME | varchar(128) | 表的名称 | +| ROWS | bigint(20) | 预估的结果行数 | +| COST | bigint(20) | 预估的代价 | +| PROPERTY | varchar(256) | 对应 operator 的信息 | + + + + + +第一步 查询 SQL 在计划缓存中的 plan_id +----------------------------------- + +OceanBase 数据库每个服务器的计划缓存都是独立的。用户可以直接访问 `v$plan_cache_plan_stat` 视图查询本服务器上的计划缓存并提供 tenant_id 和需要查询的 SQL 字符串(可以使用模糊匹配),查询该条 SQL 在计划缓存中对应的 plan_id。 + +```javascript +obclient>SELECT * FROM v$plan_cache_plan_stat WHERE tenant_id= 1001 + AND STATEMENT LIKE 'INSERT INTO T1 VALUES%'\G + +***************************1. row *************************** + tenant_id: 1001 + svr_ip:100.81.152.44 + svr_port:15212 + plan_id: 7 + sql_id:0 + type: 1 + statement: insert into t1 values(1) + plan_hash:1 +last_active_time:2016-05-28 19:08:57.416670 + avg_exe_usec:0 +slowest_exe_time:1970-01-01 08:00:00.000000 +slowest_exe_usec:0 + slow_count:0 + hit_count:0 + mem_used:8192 +1 rowin set (0.01 sec) +``` + + + + + +第二步 使用 plan_id 展示对应执行计划 +-------------------------------- + +获得 plan_id 后,用户可以使用 tenant_id 和 plan_id 访问 `v$plan_cache_plan_explain` 来展示该执行计划。 +**注意** + + + +这里展示的计划为物理执行计划,在算子命名上会与 EXPLAIN 所展示的逻辑执行计划有所不同。 + +```sql +obclient>SELECT * FROM v$plan_cache_plan_explain + WHERE tenant_id = 1001 AND plan_id = 7; + ++-----------+---------------+-------+---------+--------------------+------+------+------+ +| TENANT_ID | IP | PORT | PLAN_ID | OPERATOR | NAME | ROWS | COST | ++-----------+---------------+-------+---------+--------------------+------+------+------+ +| 1001 | 100.81.152.44 | 15212 | 7 | PHY_ROOT_TRANSMIT | NULL | 0 | 0 | +| 1001 | 100.81.152.44 | 15212 | 7 | PHY_INSERT | NULL | 0 | 0 | +| 1001 | 100.81.152.44 | 15212 | 7 | PHY_EXPR_VALUES | NULL | 0 | 0 | ++-----------+---------------+-------+---------+--------------------+------+------+------+ +3 rows in set (0.01 sec) +``` + + +**注意** + + + +* 如果访问 `gv$plan_cache_plan_explain`,必须给定 IP、port、tenant_id 和 plan_id 这四列的值。 + + + +* 如果访问 `v$plan_cache_plan_explain`,必须给定 tenant_id 和 plan_id 的值,否则系统将返回空集。 + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/1.distributed-execution-and-parallel-query-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/1.distributed-execution-and-parallel-query-3.md new file mode 100644 index 000000000..ac4a639c5 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/1.distributed-execution-and-parallel-query-3.md @@ -0,0 +1,47 @@ +分布式执行和并行查询 +=============================== + +本章节介绍分布式执行和并行查询。 + +分布式执行 +-------------------------- + +对于 Shared-Nothing 的分布式系统,由于一个关系数据表的数据会以分区的方式存放在系统里面的各个节点上,所以对于跨分区的数据查询请求,必然会要求执行计划能够对多个节点的数据进行操作,因而 OceanBase 数据库具有分布式执行计划生成和执行能力。 + +对于分布式执行计划,分区可以提高查询性能。如果数据库关系表比较小,则不必要进行分区,如果关系表比较大,则需要根据上层业务需求谨慎选择分区键,以保证大多数查询能够使用分区键进行分区裁剪,从而减少数据访问量。 + +同时,对于有关联性的表,建议使用关联键作为分区键,并采用相同分区方式,使用 Table Group 将相同的分区配置在同样的节点上,以减少跨节点的数据交互。 + +OceanBase 数据库的优化器会自动根据查询和数据的物理分布生成分布式执行计划。 + +并行查询 +------------------------- + +并行查询是指通过对查询计划的改造,提升对每一个查询计划的 CPU 和 IO 处理能力,从而缩短单个查询的响应时间。并行查询技术可以用于分布式执行计划,也可以用于本地查询计划。 + +当单个查询的访问数据不在同一个节点上时,需要通过数据重分布的方式,将相关的数据分布到相同的节点进行计算。以每一次的数据重分布节点为上下界,OceanBase 数据库的执行计划在垂直方向上被划分为多个 DFO(Data Flow Object),而每一个 DFO 可以被切分为指定并行度的任务,通过并发执行以提高执行效率。 + +一般来说,当并行度提高时,查询的响应时间会缩短,更多的 CPU、IO 和内存资源会被用于执行查询命令。对于支持大数据量查询处理的 DSS(Decision Support Systems)系统或者数据仓库型应用来说,查询时间的提升尤为明显。 + +整体来说,并行查询的总体思路和分布式执行计划有相似之处,即将执行计划分解之后,将执行计划的每个部分由多个执行线程执行,通过一定的调度的方式,实现执行计划的 DFO 之间的并发执行和 DFO 内部的并发执行。并行查询特别适用于在线交易(OLTP)场景的批量更新操作、创建索引和维护索引等操作。 + +当系统满足以下条件时,并行查询可以有效提升系统处理性能: + +* 充足的 IO 带宽 + + + +* 系统 CPU 负载较低 + + + +* 充足的内存资源 + + + + + + +如果系统没有充足的资源进行额外的并行处理,使用并行查询或者提高并行度并不能提高执行性能。相反,在系统过载的情况下,操作系统会被迫进行更多的调度,例如,执行上下文切换或者页面交换,可能会导致性能的下降。 + +通常在 DSS 系统中,需要访问大量分区和数据仓库环境,这时并行执行能够提升执行响应时间。对于简单的 DML 操作或者分区内查询以及涉及分区数比较小的查询来说,使用并行查询并不能很明显的降低查询响应时间。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/2.generation-of-distributed-plans-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/2.generation-of-distributed-plans-3.md new file mode 100644 index 000000000..ad2b4b08c --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/2.generation-of-distributed-plans-3.md @@ -0,0 +1,294 @@ +分布式计划的生成 +============================= + + + +OceanBase 数据库的优化器会分为以下两大阶段来生成分布式的执行计划。 + +1. 第一阶段:不考虑数据的物理分布,生成所有基于本地关系优化的最优执行计划。在本地计划生成后,优化器会检查数据是否访问了多个分区,或者是否访问的是本地单分区表但是用户使用 HINT 强制采用了并行查询执行。 + +2. 第二阶段:生成分布式计划。根据执行计划树,在需要进行数据重分布的地方,插入 EXCHANGE 节点,从而将原先的本地计划树变成分布式执行计划。 + +分布式执行计划的算子 +------------------------------- + +生成分布式计划的过程就是在原始计划树上寻找恰当位置插入 EXCHANGE 算子的过程,在自顶向下遍历计划树的时候,需要根据相应算子的数据处理情况以及输入算子的数据分区情况,来决定是否需要插入 EXCHANGE 算子。 + +如下示例为最简单的单表扫描: + +```sql +obclient>CREATE TABLE t1 (v1 INT, v2 INT) PARTITION BY HASH(v1) PARTITIONS 5; +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT * FROM t1\G; +*************************** 1. row *************************** +Query Plan: +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------ +|0 |PX COORDINATOR | |500000 |545109| +|1 | EXCHANGE OUT DISTR |:EX10000|500000 |320292| +|2 | PX PARTITION ITERATOR| |500000 |320292| +|3 | TABLE SCAN |T1 |500000 |320292| +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.V1], [T1.V2]), filter(nil) + 1 - output([T1.V1], [T1.V2]), filter(nil), dop=1 + 2 - output([T1.V1], [T1.V2]), filter(nil) + 3 - output([T1.V1], [T1.V2]), filter(nil), + access([T1.V1], [T1.V2]), partitions(p[0-4]) +``` + + + +当 t1 是一个分区表,可以在 TABLE SCAN 上插入配对的 EXCHANGE 算子,从而将 TABLE SCAN 和 EXCHANGE OUT 封装成一个 job,可以用于并行的执行。 + +**单输入可下压算子** + +单输入可下压算子主要包括 AGGREGATION、SORT、GROUP BY 和 LIMIT 算子等,除了 LIMIT 算子以外,其余所列举的算子都会有一个操作的键,如果操作的键和输入数据的数据分布是一致的,则可以做一阶段聚合操作,也即 Partition Wise Aggregation。如果操作的键和输入数据的数据分布是不一致的,则需要做两阶段聚合操作,聚合算子需要做下压操作。 + +一阶段聚合操作如下例所示: + +```sql +obclient>CREATE TABLE t2 (v1 INT, v2 INT) PARTITION BY HASH(v1) PARTITIONS 4; +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT SUM(v1) FROM t2 GROUP BY v1\G; +*************************** 1. row *************************** +Query Plan: +| ====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------ +|0 |PX COORDINATOR | |101 |357302| +|1 | EXCHANGE OUT DISTR |:EX10000|101 |357297| +|2 | PX PARTITION ITERATOR| |101 |357297| +|3 | MERGE GROUP BY | |101 |357297| +|4 | TABLE SCAN |t2 |400000 |247403| +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t2.v1)]), filter(nil) + 1 - output([T_FUN_SUM(t2.v1)]), filter(nil), dop=1 + 2 - output([T_FUN_SUM(t2.v1)]), filter(nil) + 3 - output([T_FUN_SUM(t2.v1)]), filter(nil), + group([t2.v1]), agg_func([T_FUN_SUM(t2.v1)]) + 4 - output([t2.v1]), filter(nil), + access([t2.v1]), partitions(p[0-3]) +``` + + + +二阶段聚合操作如下例所示: + +```sql +| ============================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------------ +|0 |PX COORDINATOR | |101 |561383| +|1 | EXCHANGE OUT DISTR |:EX10001|101 |561374| +|2 | HASH GROUP BY | |101 |561374| +|3 | EXCHANGE IN DISTR | |101 |408805| +|4 | EXCHANGE OUT DISTR (HASH)|:EX10000|101 |408795| +|5 | HASH GROUP BY | |101 |408795| +|6 | PX PARTITION ITERATOR | |400000 |256226| +|7 | TABLE SCAN |t2 |400000 |256226| +============================================================ + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(T_FUN_SUM(t2.v1))]), filter(nil) + 1 - output([T_FUN_SUM(T_FUN_SUM(t2.v1))]), filter(nil), dop=1 + 2 - output([T_FUN_SUM(T_FUN_SUM(t2.v1))]), filter(nil), + group([t2.v2]), agg_func([T_FUN_SUM(T_FUN_SUM(t2.v1))]) + 3 - output([t2.v2], [T_FUN_SUM(t2.v1)]), filter(nil) + 4 - (#keys=1, [t2.v2]), output([t2.v2], [T_FUN_SUM(t2.v1)]), filter(nil), dop=1 + 5 - output([t2.v2], [T_FUN_SUM(t2.v1)]), filter(nil), + group([t2.v2]), agg_func([T_FUN_SUM(t2.v1)]) + 6 - output([t2.v1], [t2.v2]), filter(nil) + 7 - output([t2.v1], [t2.v2]), filter(nil), + access([t2.v1], [t2.v2]), partitions(p[0-3]) +``` + + + +**二元输入算子** + +二元输入算子主要考虑 JOIN 算子的情况。对于 JOIN 算子来说,主要基于规则来生成分布式执行计划和选择数据重分布方法。JOIN 算子主要有以下三种联接方式: + +* Partition-Wise Join + + 当左右表都是分区表且分区方式相同,物理分布一样,并且 JOIN 的联接条件为分区键时,可以使用以分区为单位的联接方法。如下例所示: + + ```javascript + obclient>CREATE TABLE t3 (v1 INT, v2 INT) PARTITION BY HASH(v1) PARTITIONS 4; + Query OK, 0 rows affected (0.12 sec) + + obclient>EXPLAIN SELECT * FROM t2, t3 WHERE t2.v1 = t3.v1\G; + *************************** 1. row *************************** + Query Plan: + =========================================================== + |ID|OPERATOR |NAME |EST. ROWS |COST | + |0 |PX COORDINATOR | |1568160000|1227554264| + |1 | EXCHANGE OUT DISTR |:EX10000|1568160000|930670004 | + |2 | PX PARTITION ITERATOR| |1568160000|930670004 | + |3 | MERGE JOIN | |1568160000|930670004 | + |4 | TABLE SCAN |t2 |400000 |256226 | + |5 | TABLE SCAN |t3 |400000 |256226 | + =========================================================== + + Outputs & filters: + ------------------------------------- + 0 - output([t2.v1], [t2.v2], [t3.v1], [t3.v2]), filter(nil) + 1 - output([t2.v1], [t2.v2], [t3.v1], [t3.v2]), filter(nil), dop=1 + 2 - output([t2.v1], [t2.v2], [t3.v1], [t3.v2]), filter(nil) + 3 - output([t2.v1], [t2.v2], [t3.v1], [t3.v2]), filter(nil), + equal_conds([t2.v1 = t3.v1]), other_conds(nil) + 4 - output([t2.v1], [t2.v2]), filter(nil), + access([t2.v1], [t2.v2]), partitions(p[0-3]) + 5 - output([t3.v1], [t3.v2]), filter(nil), + access([t3.v1], [t3.v2]), partitions(p[0-3]) + ``` + + + + + + + + +* Partial Partition-Wise Join + + 当左右表中一个表为分区表,另一个表为非分区表,或者两者皆为分区表但是联接键仅和其中一个分区表的分区键相同的情况下,会以该分区表的分区分布为基准,重新分布另一个表的数据。如下例所示: + + ```sql + obclient>CREATE TABLE t4 (v1 INT, v2 INT) PARTITION BY HASH(v1) PARTITIONS 3; + Query OK, 0 rows affected (0.12 sec) + + obclient>EXPLAIN SELECT * FROM t4, t2 WHERE t2.v1 = t4.v1\G; + *************************** 1. row *************************** + Query Plan: + =========================================================== + |ID|OPERATOR |NAME |EST. ROWS|COST | + ----------------------------------------------------------- + |0 |PX COORDINATOR | |11880 |17658| + |1 | EXCHANGE OUT DISTR |:EX10001|11880 |15409| + |2 | NESTED-LOOP JOIN | |11880 |15409| + |3 | EXCHANGE IN DISTR | |3 |37 | + |4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|3 |37 | + |5 | PX PARTITION ITERATOR | |3 |37 | + |6 | TABLE SCAN |t4 |3 |37 | + |7 | PX PARTITION ITERATOR | |3960 |2561 | + |8 | TABLE SCAN |t2 |3960 |2561 | + =========================================================== + + Outputs & filters: + ------------------------------------- + 0 - output([t4.v1], [t4.v2], [t2.v1], [t2.v2]), filter(nil) + 1 - output([t4.v1], [t4.v2], [t2.v1], [t2.v2]), filter(nil), dop=1 + 2 - output([t4.v1], [t4.v2], [t2.v1], [t2.v2]), filter(nil), + conds(nil), nl_params_([t4.v1]) + 3 - output([t4.v1], [t4.v2]), filter(nil) + 4 - (#keys=1, [t4.v1]), output([t4.v1], [t4.v2]), filter(nil), dop=1 + 5 - output([t4.v1], [t4.v2]), filter(nil) + 6 - output([t4.v1], [t4.v2]), filter(nil), + access([t4.v1], [t4.v2]), partitions(p[0-2]) + 7 - output([t2.v1], [t2.v2]), filter(nil) + 8 - output([t2.v1], [t2.v2]), filter(nil), + access([t2.v1], [t2.v2]), partitions(p[0-3]) + ``` + + + + + + + + +* 数据重分布 + + 当联接键和左右表的分区键都没有关系的情况下,可以根据规则计算来选择使用 BROADCAST 还是 HASH HASH 的数据重分布方式,如下例所示: + **注意** + + + + 只有在并行度大于 1 时, 以下示例中两种数据重分发方式才有可能被选中。 + + ```sql + obclient>EXPLAIN SELECT /*+ PARALLEL(2)*/* FROM t4, t2 WHERE t2.v2 = t4.v2\G; + *************************** 1. row *************************** + Query Plan: + ================================================================= + |ID|OPERATOR |NAME |EST. ROWS|COST | + ----------------------------------------------------------------- + |0 |PX COORDINATOR | |11880 |396863| + |1 | EXCHANGE OUT DISTR |:EX10001|11880 |394614| + |2 | HASH JOIN | |11880 |394614| + |3 | EXCHANGE IN DISTR | |3 |37 | + |4 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000|3 |37 | + |5 | PX BLOCK ITERATOR | |3 |37 | + |6 | TABLE SCAN |t4 |3 |37 | + |7 | PX PARTITION ITERATOR | |400000 |256226| + |8 | TABLE SCAN |t2 |400000 |256226| + ================================================================= + + Outputs & filters: + ------------------------------------- + 0 - output([t4.v1], [t4.v2], [t2.v1], [t2.v2]), filter(nil) + 1 - output([t4.v1], [t4.v2], [t2.v1], [t2.v2]), filter(nil), dop=2 + 2 - output([t4.v1], [t4.v2], [t2.v1], [t2.v2]), filter(nil), + equal_conds([t2.v2 = t4.v2]), other_conds(nil) + 3 - output([t4.v1], [t4.v2]), filter(nil) + 4 - output([t4.v1], [t4.v2]), filter(nil), dop=2 + 5 - output([t4.v1], [t4.v2]), filter(nil) + 6 - output([t4.v1], [t4.v2]), filter(nil), + access([t4.v1], [t4.v2]), partitions(p[0-2]) + 7 - output([t2.v1], [t2.v2]), filter(nil) + 8 - output([t2.v1], [t2.v2]), filter(nil), + access([t2.v1], [t2.v2]), partitions(p[0-3]) + + + obclient>EXPLAIN SELECT /*+ PQ_DISTRIBUTE(t2 HASH HASH) PARALLEL(2)*/* FROM t4, t2 + WHERE t2.v2 = t4.v2\G; + *************************** 1. row *************************** + Query Plan: + ============================================================ + |ID|OPERATOR |NAME |EST. ROWS|COST | + ------------------------------------------------------------ + |0 |PX COORDINATOR | |11880 |434727| + |1 | EXCHANGE OUT DISTR |:EX10002|11880 |432478| + |2 | HASH JOIN | |11880 |432478| + |3 | EXCHANGE IN DISTR | |3 |37 | + |4 | EXCHANGE OUT DISTR (HASH)|:EX10000|3 |37 | + |5 | PX BLOCK ITERATOR | |3 |37 | + |6 | TABLE SCAN |t4 |3 |37 | + |7 | EXCHANGE IN DISTR | |400000 |294090| + |8 | EXCHANGE OUT DISTR (HASH)|:EX10001|400000 |256226| + |9 | PX PARTITION ITERATOR | |400000 |256226| + |10| TABLE SCAN |t2 |400000 |256226| + ============================================================ + + Outputs & filters: + ------------------------------------- + 0 - output([t4.v1], [t4.v2], [t2.v1], [t2.v2]), filter(nil) + 1 - output([t4.v1], [t4.v2], [t2.v1], [t2.v2]), filter(nil), dop=2 + 2 - output([t4.v1], [t4.v2], [t2.v1], [t2.v2]), filter(nil), + equal_conds([t2.v2 = t4.v2]), other_conds(nil) + 3 - output([t4.v1], [t4.v2]), filter(nil) + 4 - (#keys=1, [t4.v2]), output([t4.v1], [t4.v2]), filter(nil), dop=2 + 5 - output([t4.v1], [t4.v2]), filter(nil) + 6 - output([t4.v1], [t4.v2]), filter(nil), + access([t4.v1], [t4.v2]), partitions(p[0-2]) + 7 - output([t2.v1], [t2.v2]), filter(nil) + 8 - (#keys=1, [t2.v2]), output([t2.v1], [t2.v2]), filter(nil), dop=2 + 9 - output([t2.v1], [t2.v2]), filter(nil) + 10 - output([t2.v1], [t2.v2]), filter(nil), + access([t2.v1], [t2.v2]), partitions(p[0-3]) + ``` + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/3.distributed-execution-plan-scheduling-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/3.distributed-execution-plan-scheduling-3.md new file mode 100644 index 000000000..1ce5539e1 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/3.distributed-execution-plan-scheduling-3.md @@ -0,0 +1,89 @@ +分布式执行计划调度 +============================== + + + +分布式执行计划的简单调度模型如下: + +在执行计划生成的最后阶段,以 EXCHANGE 节点为界,拆分成多个子计划,每个子计划被封装成为一个 DFO,在并行度大于 1 的场景下,会一次调度两个 DFO,依次完成 DFO 树的遍历执行;在并行度等于 1 的场景下,每个 DFO 会将产生的数据存入中间结果管理器,按照后序遍历的形式完成整个 DFO 树的遍历执行。 + +单 DFO 调度 +----------------------------- + +示例:在并行度为 1 的场景下,对于查询计划执行单 DFO 调度。 + +```sql +====================================================================================== +|ID|OPERATOR |NAME |EST. ROWS |COST | +-------------------------------------------------------------------------------------- +|0 |LIMIT | |10 |6956829987| +|1 | PX COORDINATOR MERGE SORT | |10 |6956829985| +|2 | EXCHANGE OUT DISTR |:EX10002 |10 |6956829976| +|3 | LIMIT | |10 |6956829976| +|4 | TOP-N SORT | |10 |6956829975| +|5 | HASH GROUP BY | |454381562 |5815592885| +|6 | HASH JOIN | |500918979 |5299414557| +|7 | EXCHANGE IN DISTR | |225943610 |2081426759| +|8 | EXCHANGE OUT DISTR (PKEY) |:EX10001 |225943610 |1958446695| +|9 | MATERIAL | |225943610 |1958446695| +|10| HASH JOIN | |225943610 |1480989849| +|11| JOIN FILTER CREATE | |30142669 |122441311 | +|12| PX PARTITION ITERATOR | |30142669 |122441311 | +|13| TABLE SCAN |CUSTOMER |30142669 |122441311 | +|14| EXCHANGE IN DISTR | |731011898 |900388059 | +|15| EXCHANGE OUT DISTR (PKEY)|:EX10000 |731011898 |614947815 | +|16| JOIN FILTER USE | |731011898 |614947815 | +|17| PX BLOCK ITERATOR | |731011898 |614947815 | +|18| TABLE SCAN |ORDERS |731011898 |614947815 | +|19| PX PARTITION ITERATOR | |3243094528|1040696710| +|20| TABLE SCAN |LINEITEM(I_L_Q06_001)|3243094528|1040696710| +====================================================================================== +``` + + + +如下图所示,DFO 树除 ROOT DFO 外,在垂直方向上被分别划分为 0、1、2 号 DFO, 从而后序遍历调度的顺序为 0-\>1-\>2,即可完成整个计划树的迭代。 + +![1](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4765994061/p179917.jpg) + +两 DFO 调度 +----------------------------- + +示例:对于并行度大于 1 的计划, 对于查询计划执行两 DFO 调度。 + +```javascript +Query Plan +============================================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |9873917 |692436562| +|1 | EXCHANGE OUT DISTR |:EX10002|9873917 |689632565| +|2 | SORT | |9873917 |689632565| +|3 | SUBPLAN SCAN |VIEW5 |9873917 |636493382| +|4 | WINDOW FUNCTION | |29621749 |629924873| +|5 | HASH GROUP BY | |29621749 |624266752| +|6 | HASH JOIN | |31521003 |591048941| +|7 | JOIN FILTER CREATE | |407573 |7476793 | +|8 | EXCHANGE IN DISTR | |407573 |7476793 | +|9 | EXCHANGE OUT DISTR (BROADCAST) |:EX10001|407573 |7303180 | +|10| HASH JOIN | |407573 |7303180 | +|11| JOIN FILTER CREATE | |1 |53 | +|12| EXCHANGE IN DISTR | |1 |53 | +|13| EXCHANGE OUT DISTR (BROADCAST)|:EX10000|1 |53 | +|14| PX BLOCK ITERATOR | |1 |53 | +|15| TABLE SCAN |NATION |1 |53 | +|16| JOIN FILTER USE | |10189312 |3417602 | +|17| PX BLOCK ITERATOR | |10189312 |3417602 | +|18| TABLE SCAN |SUPPLIER|10189312 |3417602 | +|19| JOIN FILTER USE | |803481600|276540086| +|20| PX PARTITION ITERATOR | |803481600|276540086| +|21| TABLE SCAN |PARTSUPP|803481600|276540086| +============================================================================= +``` + + + +如下图所示,DFO 树除 ROOT DFO 外,被划分为 3 个 DFO,调度时会先调 0 和 1 对应的 DFO,待 0 号 DFO 执行完毕后,会再调度 1 号和 2 号 DFO,依次迭代完成执行。 + +![2](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4765994061/p179918.jpg) + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/4.distributed-execution-plan-management-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/4.distributed-execution-plan-management-2.md new file mode 100644 index 000000000..627f48719 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/4.distributed-execution-plan-management-2.md @@ -0,0 +1,238 @@ +分布式执行计划管理 +============================== + +分布式执行计划可以使用 HINT 管理,以提高 SQL 查询性能。 + +分布式执行框架支持的 HINT 包括 ORDERED、LEADING、USE_NL、USE_HASH 和 USE_MERGE 等。 + +NO_USE_PX +------------------------------ + +如果某个 query 确定不希望走并行执行框架,使用 NO_USE_PX 拉回数据并生成本地执行计划。 + +PARALLEL +----------------------------- + +指定分布式执行的并行度。启用 3 个 worker 并行执行扫描,如下例所示: + +```sql +obclient>SELECT /*+ PARALLEL(3) */ MAX(L_QUANTITY) FROM table_name; +``` + + +**注意** + + + +在复杂查询中,调度器可以调度 2 个 DFO 并行流水执行,此时,启用的 worker 数量为并行度的2倍,即 PARALLEL \* 2。 + +ORDERED +---------------------------- + +ORDERED HINT 指定并行查询计划中 JOIN 的顺序,严格按照 FROM 语句中的顺序生成。 + +如下例所示,强制要求 CUSTOMER 为左表,ORDERS 为右表,并且使用 NESTED LOOP JOIN: + +```javascript +obclient>CREATE TABLE lineitem( + l_orderkey NUMBER(20) NOT NULL , + + l_linenumber NUMBER(20) NOT NULL , + l_quantity NUMBER(20) NOT NULL , + l_extendedprice DECIMAL(10,2) NOT NULL , + l_discount DECIMAL(10,2) NOT NULL , + l_tax DECIMAL(10,2) NOT NULL , + + l_shipdate DATE NOT NULL, + + PRIMARY KEY(L_ORDERKEY, L_LINENUMBER)); +Query OK, 1 row affected (0.00 sec) + +obclient>CREATE TABLE customer( + c_custkey NUMBER(20) NOT NULL , + c_name VARCHAR(25) DEFAULT NULL, + c_address VARCHAR(40) DEFAULT NULL, + c_nationkey NUMBER(20) DEFAULT NULL, + c_phone CHAR(15) DEFAULT NULL, + c_acctbal DECIMAL(10,2) DEFAULT NULL, + c_mktsegment CHAR(10) DEFAULT NULL, + c_comment VARCHAR(117) DEFAULT NULL, + PRIMARY KEY(c_custkey)); +Query OK, 1 row affected (0.00 sec) + +obclient>CREATE TABLE orders( + o_orderkey NUMBER(20) NOT NULL , + o_custkey NUMBER(20) NOT NULL , + o_orderstatus CHAR(1) DEFAULT NULL, + o_totalprice DECIMAL(10,2) DEFAULT NULL, + o_orderdate DATE NOT NULL, + o_orderpriority CHAR(15) DEFAULT NULL, + o_clerk CHAR(15) DEFAULT NULL, + o_shippriority NUMBER(20) DEFAULT NULL, + o_comment VARCHAR(79) DEFAULT NULL, + PRIMARY KEY(o_orderkey,o_orderdate,o_custkey)); +Query OK, 1 row affected (0.00 sec) + +obclient> INSERT INTO lineitem VALUES(1,2,3,6.00,0.20,0.01,'01-JUN-02'); +Query OK, 1 row affected (0.01 sec) + +obclient> INSERT INTO customer VALUES(1,'Leo',null,null,'13700461258',null,'BUILDING',null); +Query OK, 1 row affected (0.01 sec) + +obclient> INSERT INTO orders VALUES(1,1,null,null,'01-JUN-20',10,null,8,null); +Query OK, 1 row affected (0.00 sec) + +obclient>SELECT /*+ ORDERED USE_NL(orders) */o_orderdate, o_shippriority + FROM customer, orders WHERE c_mktsegment = 'BUILDING' AND + c_custkey = o_custkey GROUP BY o_orderdate, o_shippriority; + ++-------------+----------------+ +| O_ORDERDATE | O_SHIPPRIORITY | ++-------------+----------------+ +| 01-JUN-20 | 8 | ++-------------+----------------+ +1 row in set (0.01 sec) +``` + + + +在手写 SQL 时,ORDERED 较为有用,用户知道 JOIN 的最佳顺序时,可以将表按照顺序写在 FROM 的后面,然后加上 ORDERED HINT。 + +LEADING +---------------------------- + +LEADING HINT 指定并行查询计划中最先 JOIN 哪些表,LEADING 中的表从左到右的顺序,也是 JOIN 的顺序。它比 ORDERED 有更大的灵活性。 +**注意** + + + +如果 ORDERED 和 LEADING 同时使用,仅 ORDERED 生效。 + +PQ_DISTRIBUTE +---------------------------------- + +PQ HINT 即 `PQ_DISTRIBUTE`,用于指定并行查询计划中的数据分布方式。PQ HINT 会改变分布式 JOIN 时的数据分发方式。 + +PQ HINT 的基本语法如下: + +```unknow +PQ_DISTRIBUTE(tablespec outer_distribution inner_distribution) +``` + + + +参数解释如下: + +* tablespec 指定关注的表,关注 JOIN 的右表。 + + + +* outer_distribution 指定左表的数据分发方式。 + + + +* inner_distribution 指定右表的数据分发方式。 + + + + + + +两表的数据分发方式共有以下六种: + +* HASH, HASH + + + +* BROADCAST, NONE + + + +* + NONE, BROADCAST + + + +* PARTITION, NONE + + + +* + NONE, PARTITION + + + +* + NONE, NONE + + + + + + +其中,带分区的两种分发方式要求左表或右表有分区,而且分区键就是 JOIN 的键。如果不满足要求的话,PQ HINT 不会生效。 + +```sql +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT, c3 INT, c4 DATE); +Query OK, 0 rows affected (0.09 sec) + +obclient>CREATE INDEX i1 ON t1(c3); +Query OK, 0 rows affected (0.09 sec) + +obclient>CREATE TABLE t2(c1 INT(11) NOT NULL, c2 INT(11) NOT NULL, c3 INT(11) + NOT NULL, +PRIMARY KEY (c1, c2, c3)) PARTITION BY KEY(c2) PARTITIONS 4; +Query OK, 0 rows affected (0.09 sec) + +obclient>EXPLAIN BASIC SELECT /*+USE_PX PARALLEL(3) PQ_DISTRIBUTE + (t2 BROADCAST NONE) LEADING(t1 t2)*/ * FROM t1 JOIN t2 ON + t1.c2 = t2.c2\G; +*************************** 1. row *************************** +Query Plan: +================================================ +|ID|OPERATOR |NAME | +------------------------------------------------ +|0 |EXCHANGE IN DISTR | | +|1 | EXCHANGE OUT DISTR |:EX10001| +|2 | HASH JOIN | | +|3 | EXCHANGE IN DISTR | | +|4 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000| +|5 | PX BLOCK ITERATOR | | +|6 | TABLE SCAN |t1 | +|7 | PX BLOCK ITERATOR | | +|8 | TABLE SCAN |t2 | +================================================ +``` + + + +USE_NL +--------------------------- + +USE_NL HINT 指定 JOIN 使用 NESTED LOOP JOIN,并且需要满足 USE_NL 中指定的表是 JOIN 的右表。 + +如下例所示,如果希望 join1 为 NESTED LOOP JOIN,则 HINT 写法为 `LEADING(a, (b,c)) USE_NL((b,c))`。 + +当 USE_NLJ 和 ORDERED、LEADING HINT 一起使用时,如果 USE_NLJ 中注明的表不是右表,则 USE_NLJ HINT 会被忽略。 + +![1](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4765994061/p179945.png) + +USE_HASH +----------------------------- + +USE_HASH HINT 指定 JOIN 使用 HASH JOIN,并且需要满足 USE_HASH 中指定的表是 JOIN 的右表。 +**注意** + + + +如果没有使用 ORDERED 和 LEADING HINT,并且优化器生成的 JOIN 顺序中指定的表之间不是直接 JOIN 的关系,那么 USE_HASH HINT 会被忽略。 + +USE_MERGE +------------------------------ + +USE_MERGE HINT 指定 JOIN 使用 MERGE JOIN,并且需要满足 USE_MERGE 中指定的表是 JOIN 的右表。 +**注意** + + + +如果没有使用 ORDERED 和 LEADING HINT,并且优化器生成的 JOIN 顺序中指定的表之间不是直接 JOIN 的关系,那么 USE_MERGE HINT 会被忽略。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/5.execution-of-parallel-query-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/5.execution-of-parallel-query-2.md new file mode 100644 index 000000000..4ac9ec28c --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/5.execution-of-parallel-query-2.md @@ -0,0 +1,334 @@ +并行查询的执行 +============================ + +并行执行(Parallel Execution)是将一个较大的任务切分为多个较小的任务,启动多个线程或者进程来并行处理这些小任务,这样可以利用更多的 CPU 与 IO 资源来缩短操作的响应时间。 + +并行执行分为并行查询(Parallel Query)、并行 DDL(Parallel DDL)和并行 DML(Parallel DML)。目前 OceanBase 数据库仅支持并行查询,并行 DDL 与并行 DML 还未支持。 + +启动并行查询的方式有以下两种: + +* 通过 PARALLEL HINT 指定并行度(dop)的方式启动并行查询。 + + + +* 针对查询分区数大于 1 的分区表会自动启动并行查询。 + + + + + + +启用分区表并行查询 +------------------------------ + +针对分区表的查询,如果查询的目标分区数大于 1,系统会自动启用并行查询,dop 的值由系统默认指定为 1。 + +如下例所示,创建一个分区表 ptable,对 ptable 进行全表数据的扫描操作,通过 EXPLAIN 命令查看生成的执行计划。 + +```javascript +obclient>CREATE TABLE PTABLE(c1 INT , c2 INT) PARTITION BY HASH(c1) PARTITIONS 16; +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT * FROM ptable\G; +*************************** 1. row *************************** +Query Plan: +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------- +|0 |EXCHANGE IN DISTR | |1600000 |1246946| +|1 | EXCHANGE OUT DISTR |:EX10000|1600000 |1095490| +|2 | PX PARTITION ITERATOR| |1600000 |1095490| +|3 | TABLE SCAN |ptable |1600000 |1095490| +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([ptable.c1], [ptable.c2]), filter(nil) + 1 - output([ptable.c1], [ptable.c2]), filter(nil), dop=1 + 2 - output([ptable.c1], [ptable.c2]), filter(nil) + 3 - output([ptable.c1], [ptable.c2]), filter(nil), + access([ptable.c1], [ptable.c2]), partitions(p[0-15]) +``` + + + +通过执行计划可以看出,分区表默认的并行查询的 dop 为 1。如果 OceanBase 集群一共有 3 个 OBServer,表 ptable 的 16 个分区分散在 3 个 OBServer 中,那么每一个 OBServer 都会启动一个工作线程(Worker Thread)来执行分区数据的扫描工作,一共需要启动 3 个工作线程来执行表的扫描工作。 + +针对分区表,添加 PARALLEL HINT 启动并行查询,并指定 dop,通过 EXPLAIN 命令查看生成的执行计划。 + +```javascript +obclient>EXPLAIN SELECT /*+ PARALLEL(8) */ * FROM ptable\G; +*************************** 1. row *************************** +Query Plan: +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------- +|0 |EXCHANGE IN DISTR | |1600000 |1246946| +|1 | EXCHANGE OUT DISTR |:EX10000|1600000 |1095490| +|2 | PX PARTITION ITERATOR| |1600000 |1095490| +|3 | TABLE SCAN |ptable |1600000 |1095490| +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([ptable.c1], [ptable.c2]), filter(nil) + 1 - output([ptable.c1], [ptable.c2]), filter(nil), dop=8 + 2 - output([ptable.c1], [ptable.c2]), filter(nil) + 3 - output([ptable.c1], [ptable.c2]), filter(nil), + access([ptable.c1], [ptable.c2]), partitions(p[0-15]) +``` + + + +通过执行计划可以看出,并行查询的 dop 为 8。如果查询分区所在的 OBServer 的个数小于等于 dop,那么工作线程(总个数等于 dop)会按照一定的策略分配到涉及的 OBServer 上;如果查询分区所在的 OBServer 的个数大于 dop,那么每一个 OBServer 都会至少启动一个工作线程,一共需要启动的工作线程的数目会大于 dop。 + +例如,当 `dop=8`,如果 16 个分区均匀的分布在 4 台 OBServer 节点上,那么每一个 OBServer 上都会启动 2 个工作线程来扫描其对应的分区(一共启动 8 个工作线程);如果 16 个分区分布在 16 台 OBServer 节点上(每一个节点一个分区),那么每一台 OBServer 上都会启动 1 个工作线程来扫描其对应的分区(一共启动 16 个工作线程)。 + +如果针对分区表的查询,查询分区数目小于等于 1,系统不会启动并行查询。如下例所示,对 ptable 的查询添加一个过滤条件 `c1=1`。 + +```javascript +obclient>EXPLAIN SELECT * FROM ptable WHERE c1 = 1\G; +*************************** 1. row *************************** +Query Plan: +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|ptable|990 |85222| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([ptable.c1], [ptable.c2]), filter([ptable.c1 = 1]), + access([ptable.c1], [ptable.c2]), partitions(p1) +``` + + + +通过计划可以看出,查询的目标分区个数为 1,系统没有启动并行查询。如果希望针对一个分区的查询也能够进行并行执行,就只能通过添加 PARALLEL HINT 的方式进行分区内并行查询,通过 EXPLAIN 命令查看生成的执行计划。 + +```javascript +obclient>EXPLAIN SELECT /*+ PARALLEL(8) */ * FROM ptable WHERE c1 = 1\G; +*************************** 1. row *************************** +Query Plan: +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------- +|0 |EXCHANGE IN DISTR | |990 |85316| +|1 | EXCHANGE OUT DISTR|:EX10000|990 |85222| +|2 | PX BLOCK ITERATOR| |990 |85222| +|3 | TABLE SCAN |ptable |990 |85222| +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([ptable.c1], [ptable.c2]), filter(nil) + 1 - output([ptable.c1], [ptable.c2]), filter(nil), dop=8 + 2 - output([ptable.c1], [ptable.c2]), filter(nil) + 3 - output([ptable.c1], [ptable.c2]), filter([ptable.c1 = 1]), + access([ptable.c1], [ptable.c2]), partitions(p1) +``` + + +**注意** + + + +* 如果希望在查询分区数等于 1 的情况下,能够采用 HINT 的方式进行分区内并行查询,需要对应的 dop 的值大于等于 2。 + + + +* 如果 dop 的值为空或者小于 2 将不启动并行查询。 + + + + + + +启用非分区表并行查询 +------------------------------- + +非分区表本质上是只有 1 个分区的分区表,因此针对非分区表的查询,只能通过添加 PARALLEL HINT 的方式启动分区内并行查询,否则不会启动并行查询。 + +如下例所示,创建一个非分区表 stable,对 stable 进行全表数据的扫描操作,通过 EXPLAIN 命令查看生成的执行计划。 + +```javascript +obclient>CREATE TABLE stable(c1 INT, c2 INT); +Query OK, 0 rows affected (0.12 sec) + +obclient>EXPLAIN SELECT * FROM stable\G; +*************************** 1. row *************************** +Query Plan: +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|stable|100000 |68478| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([stable.c1], [stable.c2]), filter(nil), + access([stable.c1], [stable.c2]), partitions(p0) +``` + + + +通过执行计划可以看出,非分区表不使用 HINT 的情况下,不会启动并行查询。 + +针对非分区表,添加 PARALLEL HINT 启动分区内并行查询,并指定 dop(大于等于 2),通过 EXPLAIN 命令查看生成的执行计划。 + +```javascript +obclient>EXPLAIN SELECT /*+ PARALLEL(4)*/ * FROM stable\G; +*************************** 1. row *************************** +Query Plan: +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------- +|0 |EXCHANGE IN DISTR | |100000 |77944| +|1 | EXCHANGE OUT DISTR|:EX10000|100000 |68478| +|2 | PX BLOCK ITERATOR| |100000 |68478| +|3 | TABLE SCAN |stable |100000 |68478| +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([stable.c1], [stable.c2]), filter(nil) + 1 - output([stable.c1], [stable.c2]), filter(nil), dop=4 + 2 - output([stable.c1], [stable.c2]), filter(nil) + 3 - output([stable.c1], [stable.c2]), filter(nil), + access([stable.c1], [stable.c2]), partitions(p0) +``` + + + +启用多表并行查询 +----------------------------- + +在查询中,多表 JOIN 查询最为常见。 + +如下例所示,首先创建两张分区表 p1table 和 p2table: + +```javascript +obclient>CREATE TABLE p1table(c1 INT ,c2 INT) PARTITION BY HASH(c1) PARTITIONS 2; +Query OK, 0 rows affected (0.02 sec) + +obclient>CREATE TABLE p2table(c1 INT ,c2 INT) PARTITION BY HASH(c1) PARTITIONS 4; +Query OK, 0 rows affected (0.02 sec) +``` + + + +查询 p1table 与 p2table 的 JOIN 结果,JOIN 条件是 `p1table.c1=p2table.c2`,执行计划如下: + +```javascript +obclient>EXPLAIN SELECT * FROM p1table p1 JOIN p2table p2 ON p1.c1=p2.c2\G; +*************************** 1. row *************************** +Query Plan: +==================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------------------------- +|0 |EXCHANGE IN DISTR | |784080000|614282633| +|1 | EXCHANGE OUT DISTR |:EX10001|784080000|465840503| +|2 | HASH JOIN | |784080000|465840503| +|3 | EXCHANGE IN DISTR | |200000 |155887 | +|4 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000|200000 |136955 | +|5 | PX PARTITION ITERATOR | |200000 |136955 | +|6 | TABLE SCAN |p1 |200000 |136955 | +|7 | PX PARTITION ITERATOR | |400000 |273873 | +|8 | TABLE SCAN |p2 |400000 |273873 | +==================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([p1.c1], [p1.c2], [p2.c1], [p2.c2]), filter(nil) + 1 - output([p1.c1], [p1.c2], [p2.c1], [p2.c2]), filter(nil), dop=1 + 2 - output([p1.c1], [p1.c2], [p2.c1], [p2.c2]), filter(nil), + equal_conds([p1.c1 = p2.c2]), other_conds(nil) + 3 - output([p1.c1], [p1.c2]), filter(nil) + 4 - output([p1.c1], [p1.c2]), filter(nil), dop=1 + 5 - output([p1.c1], [p1.c2]), filter(nil) + 6 - output([p1.c1], [p1.c2]), filter(nil), + access([p1.c1], [p1.c2]), partitions(p[0-1]) + 7 - output([p2.c1], [p2.c2]), filter(nil) + 8 - output([p2.c1], [p2.c2]), filter(nil), + access([p2.c1], [p2.c2]), partitions(p[0-3]) +``` + + + +默认情况下针对 p1table 与 p2table(两张表需要查询的分区数都大于 1)都会采用并行查询,默认的 dop 为 1。同样,也可以通过使用 PARALLEL HINT 的方式来改变并行度。 + +如下例所示,改变 JOIN 的条件为 `p1table.c1=p2table.c2` 和 `p2table.c1=1`,这样针对 p2table 仅仅会选择单个分区,执行计划如下所示: + +```javascript +obclient>EXPLAIN SELECT * FROM p1table p1 JOIN p2table p2 ON p1.c1=p2.c2 AND p2.c1=1\G; +*************************** 1. row *************************** +Query Plan: +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------------- +|0 |EXCHANGE IN DISTR | |1940598 |1807515| +|1 | EXCHANGE OUT DISTR |:EX10001|1940598 |1440121| +|2 | HASH JOIN | |1940598 |1440121| +|3 | EXCHANGE IN DISTR | |990 |85316 | +|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|990 |85222 | +|5 | TABLE SCAN |p2 |990 |85222 | +|6 | PX PARTITION ITERATOR | |200000 |136955 | +|7 | TABLE SCAN |p1 |200000 |136955 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([p1.c1], [p1.c2], [p2.c1], [p2.c2]), filter(nil) + 1 - output([p1.c1], [p1.c2], [p2.c1], [p2.c2]), filter(nil), dop=1 + 2 - output([p1.c1], [p1.c2], [p2.c1], [p2.c2]), filter(nil), + equal_conds([p1.c1 = p2.c2]), other_conds(nil) + 3 - output([p2.c1], [p2.c2]), filter(nil) + 4 - (#keys=1, [p2.c2]), output([p2.c1], [p2.c2]), filter(nil), dop=1 + 5 - output([p2.c1], [p2.c2]), filter([p2.c1 = 1]), + access([p2.c1], [p2.c2]), partitions(p1) + 6 - output([p1.c1], [p1.c2]), filter(nil) + 7 - output([p1.c1], [p1.c2]), filter(nil), + access([p1.c1], [p1.c2]), partitions(p[0-1]) +``` + + + +通过计划可以看出,p2table 仅需要扫描一个分区,在默认情况下不进行并行查询;p1table 需要扫描两个分区,默认情况下进行并行查询。同样,也可以通过添加 PARALLEL HINT 的方式改变并行度,使 p2table 针对一个分区的查询变为分区内并行查询。 + +关闭并行查询 +--------------------------- + +分区表在查询的时候会自动启动并行查询(查询分区个数大于 1),如果不想启动并行查询,可以使用添加 HINT `/*+ NO_USE_PX */` 来关闭并行查询。 + +例如,针对分区表 ptable,添加 HINT `/*+ NO_USE_PX */` 来关闭并行查询,通过生成的执行计划可以看出对 ptable 表的扫描没有进行并行查询。 + +```javascript +obclient>EXPLAIN SELECT /*+ NO_USE_PX */ * FROM ptable\G; +*************************** 1. row *************************** +Query Plan: +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------- +|0 |EXCHANGE IN DISTR | |1600000 |1246946| +|1 | EXCHANGE OUT DISTR| |1600000 |1095490| +|2 | TABLE SCAN |ptable|1600000 |1095490| +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([ptable.c1], [ptable.c2]), filter(nil) + 1 - output([ptable.c1], [ptable.c2]), filter(nil) + 2 - output([ptable.c1], [ptable.c2]), filter(nil), + access([ptable.c1], [ptable.c2]), partitions(p[0-15]) +``` + + + +并行执行相关的系统视图 +-------------------------------- + +OceanBase 数据库提供了系统视图 `gv$sql_audit/v$sql_audit` 来查看并行执行的运行状态以及一些统计信息。 + +`gv$sql_audit/v$sql_audit` 包含字段较多,其中与并行执行相关的字段为:qc_id、dfo_id、sqc_id 和 worker_id。 + +详细信息请参考 [(g)v$sql_audit 介绍](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/1.g-v-sql_audit-introduction.md)。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/6.optimize-the-parameters-for-parallel-query-2.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/6.optimize-the-parameters-for-parallel-query-2.md new file mode 100644 index 000000000..ebe6ac6a3 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/3.distributed-execution-plan-2/6.optimize-the-parameters-for-parallel-query-2.md @@ -0,0 +1,69 @@ +并行查询的参数调优 +============================== + +Oceanbase 数据库并行查询(PX)的参数决定了并行查询的速度,主要包括并行度和 EXCHANGE 相关参数 。 + +并行度参数 +-------------------------- + +并行度相关参数主要决定每个 query 并发时的 worker 个数。 + + +| **参数名称** | **描述** | **取值范围** | **默认值** | **配置建议** | +|-------------------------|------------------------------------------------------------------------------------------|-------------|------------------------------|---------------------------------------------------------------------------| +| parallel_max_servers | 控制每个服务器最大的并行执行线程个数,所有PX worker 加起来不能超过该值。 | \[0, 1800\] | 10(目前会根据 CPU 个数计算得到,以实际大小为准) | 该参数主要是控制 PX 场景下所有 PX worker 总数,建议值为可用 CPU个数的倍数关系。 | +| parallel_servers_target | 当 query 准备排队之前,控制检查 query 要求的并行度和已统计的 worker 总和是否超过该值。如果超过该值,则 query 需要排队,否则 query 继续执行。 | \[0, 1800\] | 10(目前会根据 CPU 个数计算得到,以实际大小为准) | 该参数主要是控制 PX 场景下,当 query 准备进行并行查询时,如果没有足够 worker 处理该 query,决定是否继续进行还是排队等待。 | + + + +`parallel_max_servers` 参数用于控制最大的并发度,`parallel_servers_target` 参数用来决策 query 在并行查询时是否排队,两者需要协同工作。如果只使用 `parallel_max_servers` 设置最大并行度,当查询过多时,会导致所有 worker 都被调度起来,导致 CPU 等资源紧张,查询性能下降。在 CPU 等资源有限的情况下,使用 `parallel_servers_target` 控制 query 进行排队可以提高整个并发的吞吐量。 + +可以通过 `SHOW VARIABLES` 来查看这些参数的值,如下例所示: + +```javascript +obclient>SHOW VARIABLES LIKE '%paral%'; + ++-------------------------+-------+ +| Variable_name | Value | ++-------------------------+-------+ +| ob_max_parallel_degree | 32 | +| ob_stmt_parallel_degree | 1 | +| parallel_max_servers | 5 | +| parallel_servers_target | 4 | ++-------------------------+-------+ +4 rows in set (0.00 sec) +``` + + +**注意** + + + +`ob_stmt_parallel_degree` 参数不需要设置,对 PX 框架无效。 + +EXCHANGE(Shuffle)参数 +---------------------------------------- + +EXCHANGE(Shuffle)参数主要用来控制在每个 DFO 之间进行数据传输时的参数控制,也就是数据进行 shuffle 时的内存控制。Oceanbase 数据库将数据传输封装成了叫做 DTL(Data Transfer layer)的模块。 + + +| **参数名称** | **描述** | **取值范围** | **默认值** | **配置建议** | +|-----------------|----------------------------------------------------------------------------------------------|-------------|------------------------------|-------------------------------------------------------------------------------| +| dtl_buffer_size | 控制 EXCHANGE 算子之间(即transmit 和 receive 之间)发送数据时,每次发送数据的 buffer 的大小。即当数据达到了该值上限才进行发送,减少每行传输的代价。 | \[0, 1800\] | 10(目前会根据 CPU 个数计算得到,以实际大小为准) | PX 场景下,EXCHANGE 之间发送数据依赖于该参数大小,一般不需要调整该参数,如果是为了减少发送数据次数等可以尝试进行修改,一般不建议修改该值大小。 | + + + +可以通过 `SHOW PARAMETERS` 来查看参数的值,如下例所示: + +```javascript +obclient>SHOW PARAMETERS LIKE '%dtl%'; + ++-------+----------+----------------+----------+-----------------+-----------+-------+---------------+----------+---------+---------+-------------------+ +| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | ++-------+----------+----------------+----------+-----------------+-----------+-------+---------------+----------+---------+---------+-------------------+ +| zone1 | observer | 100.81.152.114 | 36500 | dtl_buffer_size | NULL | 64K | to be removed | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | ++-------+----------+----------------+----------+-----------------+-----------+-------+---------------+----------+---------+---------+-------------------+ +1 row in set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/1.overview-of-sql-optimization.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/1.overview-of-sql-optimization.md new file mode 100644 index 000000000..e71d52c19 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/1.overview-of-sql-optimization.md @@ -0,0 +1,37 @@ +SQL 调优概览 +============================= + +SQL 调优是指通过综合分析 SQL 的执行计划、执行监控信息、系统配置、系统负载等多方面因素,调整 SQL 的执行策略,以实现资源利用最大化。 + +SQL 调优方式一般可分为单条 SQL 调优和系统 SQL 调优。 + +单条 SQL 调优 +------------------------------ + +单一的 SQL 调优的优化主体是被调试的 SQL 执行本身,一般调优的目标包括该 SQL 的执行时间、试行期的资源消耗等。常见的调优手段包括调整访问路径、执行顺序、逻辑改写等。 + +针对单条 SQL 的执行计划性能调优又可以分为单表访问和多表访问两种场景。 + + +| **场景** | **SQL 调优的关注点** | +|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 单表访问 | * 访问路径是否开启索引扫描:使用索引扫描可以减小数据的访问量。 * 是否创建合适的索引:使用索引排序以减少排序或聚合等耗时操作。 * 分区裁剪是否正确:适当的分区条件可以减少不必要的分区访问。 * 是否提高查询的并行度:分区数目较多时,通过提高并行度以更多资源的代价获取单条 SQL 查询的性能提升。 | +| 多表访问 | 不仅要关注单表的 SQL 调优问题,还要关注多表间的联接问题: * 联接顺序 * 联接算法 * 跨机或并行联接的数据再分布方式 * 查询改写 | + + + +系统的 SQL 调优 +------------------------------- + +系统的 SQL 调优的目的是提高整个系统的吞吐量或者系统利用率等。系统的 SQL 调优过程往往需要结合多条 SQL 的执行计划,综合分析当前系统的负载特征,主要关注热点行竞争、buffer cache 命中率等全局性的调优点。 + +针对吞吐量的性能调优主要是考虑在一定资源(CPU、IO、网络等)情况下,将数据库系统处理请求量最大化。主要关注以下几个方面: + + +| **主要方法** | **说明** | +|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 优化慢 SQL | 找到具体的慢 SQL 后,针对单条 SQL 进行性能调优,请参见示例 [查询某段时间内执行时间排名 TOP N 的请求](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/8.query-the-top-n-requests-with-the-most-execution-time-1.md)。 | +| 均衡 SQL 的请求流量资源 | 请参见示例 [查看集群 SQL 请求流量是否均衡](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/6.check-whether-the-sql-request-traffic-is-balanced-1.md)。 影响均衡的因素主要有: * `ob_read_consistency` 如何设置 * Primary Zone 如何设置 * Proxy 或 Java 客户端路由策略相关设置 * 业务热点查询分区是否均衡 | +| 均衡子计划的 RPC 请求流量资源 | 请参见示例 [查看分布式子计划 RPC 执行数是否均衡](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/12.check-whether-the-number-of-distributed-rpc-executions-is-balanced-1.md)。 影响子计划请求是否均匀的主要因素如下: * OBServer 内部路由策略相关设置 * 业务热点查询的分区是否均衡 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/2.optimize-sql-statements-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/2.optimize-sql-statements-1.md new file mode 100644 index 000000000..ccd01f5f6 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/2.optimize-sql-statements-1.md @@ -0,0 +1,27 @@ +SQL 调优基本流程 +=============================== + + + +在 SQL 调优中,针对慢 SQL 的分析步骤如下: + +1. 通过全局 SQL 审计表 (g)v$sql_audit、 SQL Trace 和计划缓存视图查看 SQL 执行信息,初步查找 SQL 请求的流程中导致耗时或消耗资源(如内存、磁盘 IO 等)的 SQL。请参见示例 [查询某段时间内执行时间排名 TOP N 的请求](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/8.query-the-top-n-requests-with-the-most-execution-time-1.md)。 + + + +2. 单条 SQL 的执行性能往往与该 SQL 的执行计划相关,因此,执行计划的分析是最重要的手段。通过执行 EXPALIN 命令查看优化器针对给定 SQL 生成的逻辑执行计划,确定可能的调优方向。请参见示例 [查看执行计划形状并做分析](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/3.view-and-analyze-the-execution-plan-1.md)。 + + 关于执行计划的详细信息请参考 [SQL 执行计划简介](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/1.introduction-to-sql-execution-plans-2.md)。 + + +3. 找到具体的慢 SQL,为了使某些 SQL 的执行时间或资源消耗符合预期,常见的优化方式如下: + + + + + + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/1.g-v-sql_audit-introduction.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/1.g-v-sql_audit-introduction.md new file mode 100644 index 000000000..ae6cc855c --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/1.g-v-sql_audit-introduction.md @@ -0,0 +1,160 @@ +(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) | 该请求消耗的内存 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/2.sql-trace-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/2.sql-trace-1.md new file mode 100644 index 000000000..1a4265940 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/2.sql-trace-1.md @@ -0,0 +1,151 @@ +SQL Trace +============================== + +SQL Trace 能够交互式的提供上一次执行的 SQL 请求执行过程信息及各阶段的耗时。 + +SQL Trace 开关 +--------------------- + +SQL Trace 功能默认是关闭的,可通过 session 变量来控制其打开和关闭。 + +* 打开 SQL Trace 功能的语句如下: + + ```unknow + obclient>SET ob_enable_trace_log = 1; + ``` + + + + + + + + +* 关闭 SQL Trace 功能的语句如下: + + ```unknow + obclient>SET ob_enable_trace_log = 0; + ``` + + + + + + + + +Show Trace +------------------- + +当 SQL Trace 功能打开后,执行需要诊断的 SQL,然后通过 `SHOW TRACE` 能够查看该 SQL 执行的信息。这些执行信息以表格方式输出,每列说明如下: + + +| **列名** | **说明** | +|----------|------------------------| +| Title | 记录执行过程某一个阶段点 | +| KeyValue | 记录某一个阶段点产生的一些执行信息 | +| Time | 记录上一个阶段点到这次阶段点执行耗时(us) | + + + +示例 +----------- + +1. 打开 SQL Trace: + + ```unknow + obclient> SET ob_enable_trace_log = 1; + ``` + + + + + + + + +2. 执行目标 SQL: + + ```unknow + obclient> CREATE TABLE t1(c1 INT,c2 INT,c3 INT); + Query OK, 0 rows affected (0.02 sec) + + obclient> INSERT INTO t1 VALUES(1,1,1); + Query OK, 1 rows affected (0.02 sec) + + obclient> INSERT INTO t1 VALUES(2,2,2); + Query OK, 1 rows affected (0.02 sec) + + obclient>SELECT * FROM t1 WHERE c1 = 1; + + +----+------+------+ + | c1 | c2 | c3 | + +----+------+------+ + | 1 | 1 | 1 | + +----+------+------+ + ``` + + + + + + + + +3. 显示 Trace: + + ```unknow + obclient> SHOW TRACE; + +------------------------------+---------------------------------------------------------------------------------------------------+ + + | TITLE | KEYVALUE | TIME | + +------------------------------+----------------------------------------------------------------------------+------+ + | process begin | in_queue_time:17, receive_ts:1612420489580707, enqueue_ts:1612420489580709 | 0 | + | query begin | trace_id:YB42AC1E87E6-0005B8AB2D57844F | 1 | + | parse begin | stmt:"set ob_enable_trace_log = 1", stmt_len:27 | 62 | + | pc get plan begin | NULL | 9 | + | pc get plan end | NULL | 19 | + | transform_with_outline begin | NULL | 1 | + | transform_with_outline end | NULL | 31 | + | resolve begin | NULL | 21 | + | resolve end | NULL | 33 | + | execution begin | arg1:false, end_trans_cb:false | 14 | + | start_auto_end_plan begin | NULL | 39 | + | start_auto_end_plan end | NULL | 1 | + | execution end | NULL | 11 | + | query end | NULL | 39 | + +------------------------------+---------------------------------------------------------------------------------------------+------+ + ``` + + + + 示例中 `SHOW TRACE` 结果说明如下: + * Title 列包含整个 SQL 执行经历的各个阶段的信息以及该 SQL 真实的执行路径。上述示例的结果中有经过 Resolve、Transform、Optimizer 和 Code Generate 四个流程,说明该 SQL 重新生成了计划,没有命中 plan cache。 + + + + + + + + * KeyValue 列包含一些执行信息,可以用于排查问题: + + + + + + + + + + + * Time 列显示上一个阶段点到这次阶段点执行耗时。 + + 例如,resolve end 对应的 206 us 表示的是 resolve begin 到 resolve 耗时。如果某个 SQL 执行很慢,则通过查看 time 列,能够快速定位出具体是哪个阶段执行较慢,然后再进行具体分析。此例中,执行耗时主要在生成计划过程中,因此只需要分析没有命中 plan cache 的原因,可能是计划淘汰后 第一次执行该 SQL,或是 plan cache 不支持的 SQL。 + + + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/3.plan-cache-view.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/3.plan-cache-view.md new file mode 100644 index 000000000..cefb1da8c --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/3.plan-cache-view.md @@ -0,0 +1,117 @@ +计划缓存视图 +=========================== + +计划缓存视图包含记录执行计划的缓存状态、执行统计的相关信息以及计划信息。 + +(g)v$plan_cache_stat +----------------------------- + +(g)v$plan_cache_stat 视图用于记录每个计划缓存的状态,每个计划缓存在该视图中有一条记录。 + + +| **字段名称** | **类型** | **描述** | +|--------------|-------------|-----------------------------------| +| tenant_id | bigint(20) | 租户 ID | +| svr_ip | varchar(32) | IP 地址 | +| svr_port | bigint(20) | 端口号 | +| sql_num | bigint(20) | plan_cache 涉及 SQL 条数 | +| mem_used | bigint(20) | plan_cache 已经使用的内存 | +| access_count | bigint(20) | 进 plan_cache 的次数 | +| hit_count | bigint(20) | 命中 plan_cache 的次数 | +| hit_rate | bigint(20) | 命中 plan_cache 的次数 | +| plan_num | bigint(20) | plan 的个数 | +| mem_limit | bigint(20) | plan_cache 的内存上限 | +| hash_bucket | bigint(20) | plan_cache hash map 中的 bucket 的个数 | +| stmtkey_num | bigint(20) | plan_cache 中 stmt_key 的个数 | + + + +(g)v$plan_cache_plan_stat +---------------------------------- + +(g)v$plan_cache_plan_stat 用于记录计划缓存中所有 plan 的具体信息及每个计划总的执行统计信息,每个 plan 在该视图中有一条记录。 + + +| **字段名称** | **类型** | **描述** | +|-----------------------|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| tenant_id | bigint(20) | 租户 ID | +| svr_ip | varchar(32) | 机器的 IP 地址 | +| svr_port | bigint(20) | 机器端口号 | +| plan_id | bigint(20) | 执行计划的 ID | +| sql_id | varchar(32) | 这条 SQL 的 ID | +| type | bigint(20) | 执行计划的类型: * 1 表示 local plan * 2 表示 remote plan * 3 表示 distribute plan | +| db_id | bigint(20) unsigned | database 的 ID | +| is_bind_sensitive | bigint(20) | 该计划是否需要打开 ACS | +| is_bind_aware | bigint(20) | 该计划已经打开了 ACS | +| statement | varchar(4096) | 参数化后的 SQL 语句 | +| query_sql | varchar(65536) | 第一次加载计划时查询的原始 SQL 语句 | +| sys_vars | varchar(4096) | 影响计划的系统变量的值 | +| plan_hash | bigint(20) | 执行计划的 hash 值 | +| first_load_time | timestamp(6) | 第一次被加载时间 | +| schema_version | bigint(20) | schema 版本号 | +| merged_version | bigint(20) | 当前缓存的 plan 对应的合并版本号 | +| last_active_time | timestamp(6) | 上一次被执行时间 | +| avg_exe_usec | bigint(20) | 平均执行时间 | +| slowest_exe_time | timestamp(6) | 最慢一次执行耗时 | +| slowest_exe_usec | bigint(20) | 最慢执行时间戳 | +| slow_count | bigint(20) | 当前 plan 成为慢查询次数 | +| hit_count | bigint(20) | 被命中次数 | +| plan_size | bigint(20) | 执行计划的大小 | +| executions | bigint(20) | 执行次数 | +| disk_reads | bigint(20) | 所有执行物理读次数 | +| direct_writes | bigint(20) | 所有执行写盘的次数 | +| buffer_gets | 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 类事件的总时间 | +| rows_processed | bigint(20) | 所有执行选择的结果行数或执行更改表中的行数 | +| elapsed_time | bigint(20) unsigned | 所有执行接收到请求到执行结束消耗时间 | +| cpu_time | bigint(20) unsigned | 所有执行消耗的 CPU 时间 | +| large_querys | bigint(20) | 被判断为大查询的次数 | +| delayed_large_querys | bigint(20) | 被判断为大查询且被丢入大查询队列的次数 | +| outline_version | bigint(20) | outline 版本号 | +| outline_id | bigint(20) | outline 的 ID。 如果为 -1 表示不是通过绑定 outline 生成的计划 | +| outline_data | varchar(65536) | 计划对应的 outline 信息 | +| acs_sel_info | varchar(65536) | 当前 ACS 计划对应的选择率空间 | +| table_scan | tinyint(4) | 表示该查询是否为主键扫描 | +| evolution | bool | 表示该执行计划是否在演进中 | +| evo_executions | bigint(20) | 演进次数 | +| evo_cpu_time | bigint(20) unsigned | 演进过程中总的执行 CPU 时间 | +| timeout_count | bigint(20) | 超时次数 | +| ps_stmt_id | bigint(20) | prepare statement 的 ID | + + + +(g)v$plan_cache_plan_explain +------------------------------------- + +(g)v$plan_cache_plan_explain 用于查询某条 SQL 在计划缓存中的执行计划。 +**注意** + + + +* 如果查询 `gv$plan_cache_plan_explain` 表, 则需要指定 IP、port、tenant_id、plan_id 等条件。 + + + +* 如果查询 `v$plan_cache_plan_explain` 表, 则需要指定 tenant_id、plan_id 等条件。 + + + + + + + +| **字段名称** | **类型** | **描述** | +|-----------|--------------|-----------------| +| TENANT_ID | bigint(20) | 租户 ID | +| IP | varchar(32) | IP 地址 | +| PORT | bigint(20) | 端口号 | +| PLAN_ID | bigint(20) | 执行计划的 ID | +| OPERATOR | varchar(128) | operator 的名称 | +| NAME | varchar(128) | 表的名称 | +| ROWS | bigint(20) | 预估的结果行数 | +| COST | bigint(20) | 预估的代价 | +| PROPERTY | varchar(256) | 对应 operator 的信息 | + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/1.analyze-events-waiting-in-a-query-using-sql-audit-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/1.analyze-events-waiting-in-a-query-using-sql-audit-1.md new file mode 100644 index 000000000..cb957223d --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/1.analyze-events-waiting-in-a-query-using-sql-audit-1.md @@ -0,0 +1,50 @@ +通过 SQL Audit 分析查询中等待事件 +=========================================== + + + +SQL Audit 记录了关于等待事件的如下信息: + +* 记录了 4 大类等待事件分别的耗时(即 APPLICATION_WAIT_TIME、CONCURRENCY_WAIT_TIME、USER_IO_WAIT_TIME 和 SCHEDULE_TIME),每类等待事件都涉及很多具体的等待事件。 + + + +* 记录了耗时最多的等待事件名称(EVENT)及该等待事件耗时(WAIT_TIME_MICRO)。 + + + +* 记录了所有等待事件的发生的次数(TOTAL_WAITS)及所有等待事件总耗时(TOTAL_WAIT_TIME_MICRO)。 + + + + + + +一般情况下,如果等待事件总耗时较多,通过查看耗时最多的等待事件名称(EVENT)能够基本确定是什么原因导致较慢。 + +如下例所示,可分析出等待事件主要耗时在 IO 等待上。 + +```sql +obclient>SELECT SQL_ID, ELAPSED_TIME, QUEUE_TIME, GET_PLAN_TIME, EXECUTE_TIME, + APPLICATION_WAIT_TIME, CONCURRENCY_WAIT_TIME, USER_IO_WAIT_TIME, SCHEDULE_TIME, EVENT, + WAIT_CLASS, WAIT_TIME_MICRO, TOTAL_WAIT_TIME_MICRO + FROM v$sql_audit + WHERE TRACE_ID = 'YB42AC1E87E6-0005B8AB2D578471'\G; + +************************** 1. row *************************** + SQL_ID: CAFC81EE933820AEC5A86CBBAC1D0F6D + ELAPSED_TIME: 2168 + QUEUE_TIME: 33 + GET_PLAN_TIME: 276 + EXECUTE_TIME: 1826 +APPLICATION_WAIT_TIME: 0 +CONCURRENCY_WAIT_TIME: 0 + USER_IO_WAIT_TIME: 0 + SCHEDULE_TIME: 0 + EVENT: sync rpc + WAIT_CLASS: NETWORK + WAIT_TIME_MICRO: 1596 +TOTAL_WAIT_TIME_MICRO: 1596 +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/10.queries-the-sql-statements-that-are-used-for-full-table-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/10.queries-the-sql-statements-that-are-used-for-full-table-1.md new file mode 100644 index 000000000..bdf339256 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/10.queries-the-sql-statements-that-are-used-for-full-table-1.md @@ -0,0 +1,21 @@ +查找某个租户中执行全表扫描的 SQL +======================================= + + + +运行如下语句可以查询某个租户中执行全表扫描的 SQL: + +```javascript +obclient>SELECT query_sql + FROM oceanbase.gv$sql_audit + WHERE table_scan = 1 AND tenant_id = 1001 + GROUP BY sql_id; + ++-------------------------------+ +| query_sql | ++-------------------------------+ +| SHOW VARIABLES LIKE 'version' | ++-------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/11.analyze-query-problems-related-to-distributed-plans-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/11.analyze-query-problems-related-to-distributed-plans-1.md new file mode 100644 index 000000000..52eb7b27f --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/11.analyze-query-problems-related-to-distributed-plans-1.md @@ -0,0 +1,43 @@ +分析分布式计划相关的查询问题 +=================================== + + + +分布式计划根据以下步骤分析查询问题: + +1. 通过查看 `(g)v$plan_cache_plan_stat` 视图、`(g)v$sql_audit` 中对执行计划类型的记录,确定是否为分布式计划。 + + + +2. 分析该执行计划是否正确。 + + + +3. 通过 trace_id 关联查询 `gv$sql_audit`,查看所有执行的子计划耗时情况,每个子计划的 RPC 执行均对应一条 sql_audit 记录,分析该 sql_audit 记录来定位问题。 + + + + + + +如下例所示,`is_executor_rpc = 1` 表示子计划执行在 sql_audit 中记录,主要记录执行相关的信息。`is_executor_rpc = 0` 表示接受 SQL 请求的线程在 sql_audit 中的记录。该记录含有 SQL 执行过程的信息,包括 SQL 信息、获取执行计划信息等。 + +```sql +obclient>SELECT/*+ PARALLEL(15)*/sql_id, is_executor_rpc, elapsed_time + FROM oceanbase.gv$sql_audit WHERE trace_id = 'YB420AB74FC6-00056349D323483A'; + ++----------------------------------+-----------------+--------------+ +| sql_id | is_executor_rpc | elapsed_time | ++----------------------------------+-----------------+--------------+ +| | 1 | 124 | +| | 1 | 191 | +| | 1 | 123447 | +| | 1 | 125 | +| 20172B18BC9EE3F806D4149895754CE0 | 0 | 125192 | +| | 1 | 148 | +| | 1 | 149 | +| | 1 | 140 | ++----------------------------------+-----------------+--------------+ +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/12.check-whether-the-number-of-distributed-rpc-executions-is-balanced-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/12.check-whether-the-number-of-distributed-rpc-executions-is-balanced-1.md new file mode 100644 index 000000000..303be7cd2 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/12.check-whether-the-number-of-distributed-rpc-executions-is-balanced-1.md @@ -0,0 +1,38 @@ +查看分布式子计划 RPC 执行数是否均衡 +========================================= + + + +运行如下语句可以查看分布式计划 RPC 执行数是否均衡: + +```sql +obclient>SELECT/*+ PARALLEL(15)*/t2.zone, t1.svr_ip, COUNT(*) AS RPC_COUNT, + AVG(t1.elapsed_time),AVG(t1.queue_time) + FROM oceanbase.gv$sql_audit t1, __all_server t2 + WHERE t1.svr_ip = t2.svr_ip AND IS_EXECUTOR_RPC = 1 + AND tenant_id = 1001 + AND request_time > (time_to_usec(now()) - 1000000) + AND request_time < time_to_usec(now()) + GROUP BY t1.svr_ip ORDER BY t2.zone; + ++--------+----------------+-----------+----------------------+--------------------+ +| zone | svr_ip | RPC_COUNT | avg(t1.elapsed_time) | avg(t1.queue_time) | ++--------+----------------+-----------+----------------------+--------------------+ +| ET2_1 | 10.103.224.119 | 2517 | 514.2241 | 13.5515 | +| ET2_1 | 10.103.226.124 | 2786 | 1628.0948 | 13.2915 | +| ET2_1 | 10.103.228.177 | 3068 | 1984.0238 | 12.9029 | +| ET2_1 | 10.103.229.107 | 3216 | 538.7646 | 12.8629 | +| ET2_1 | 10.103.229.94 | 2228 | 802.8577 | 13.4138 | +| EU13_2 | 10.183.78.113 | 2000 | 805.0485 | 13.0610 | +| EU13_2 | 10.183.78.86 | 3296 | 1115.0725 | 13.2700 | +| EU13_2 | 10.183.79.56 | 2460 | 1129.4085 | 14.3293 | +| EU13_2 | 10.183.85.152 | 2533 | 891.0683 | 13.8602 | +| EU13_3 | 10.183.76.140 | 3045 | 677.6591 | 13.7209 | +| EU13_3 | 10.183.78.165 | 2202 | 821.9496 | 12.8247 | +| EU13_3 | 10.183.79.198 | 2825 | 1277.0375 | 13.3345 | +| EU13_3 | 10.183.86.65 | 2142 | 746.0808 | 13.0121 | +| EU13_3 | 11.180.113.7 | 2735 | 765.8731 | 12.4750 | ++--------+----------------+-----------+----------------------+--------------------+ +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/2.sql-statement-that-analyzes-sudden-jitter-of-rt-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/2.sql-statement-that-analyzes-sudden-jitter-of-rt-1.md new file mode 100644 index 000000000..e5023a7cd --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/2.sql-statement-that-analyzes-sudden-jitter-of-rt-1.md @@ -0,0 +1,40 @@ +分析 RT 突然抖动的 SQL +==================================== + + + +推荐使用外部诊断工具 Tars 进行问题分析,或者使用 `(g)v$sql_audit` 视图进行问题排查。 + +使用 `(g)v$sql_audit` 进行问题排查方式如下: + +1. 在线上如果出现 RT 抖动,但 RT 并不是持续很高的情况,可以考虑在抖动出现后,立刻将 sql_audit 关闭 (`alter system set ob_enable_sql_audit = 0`),从而确保该抖动的 SQL 请求在 sql_audit 中存在。 + + + +2. 通过 SQL Audit 查询抖动附近那段时间 RT 的 TOP N 请求,分析有异常的 SQL。 + + + +3. 找到对应的 RT 异常请求,则可以分析该请求在 sql_audit 中的记录进行问题排查: + + + + + + + + +a. 查看是否有很长等待事件耗时。 + +b. 分析逻辑读次数是否异常多(突然有大账户时可能会出现)。 + +```sql +逻辑读次数 = 2 * ROW_CACHE_HIT ++ 2 * BLOOM_FILTER_CACHE_HIT ++ BLOCK_INDEX_CACHE_HIT ++ BLOCK_CACHE_HIT + DISK_READS +``` + + + +如果在 SQL Audit 中 RT 抖动的请求数据已被淘汰,则需要查看 OBServer 中抖动时间点是否有慢查询的 trace 日志,并分析对应的 trace 日志。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/3.view-and-analyze-the-execution-plan-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/3.view-and-analyze-the-execution-plan-1.md new file mode 100644 index 000000000..25a96d479 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/3.view-and-analyze-the-execution-plan-1.md @@ -0,0 +1,17 @@ +查看执行计划形状并做分析 +================================= + + + +根据如下步骤查看执行计划形状并做分析: + +1. 通过 `EXPLAIN` 命令查看执行计划形状,或者通过实时执行计划展示查看缓存执行计划。详细信息请参见 [SQL 执行计划简介](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/1.introduction-to-sql-execution-plans-2.md)和 [实时执行计划展示](t1962412.html#topic-1962412)。 + + + +2. 获得执行计划形状后,可以分析索引、联接顺序、 联接算法等选择是否合理正确。详细信息请参见 [访问路径](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/1.overview-16.md)、[联接顺序](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/3.join-order-3.md)和 [联接算法](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/2.join-algorithm-6.md)。 + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/4.analyze-slow-sql-queries-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/4.analyze-slow-sql-queries-1.md new file mode 100644 index 000000000..f692b1f97 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/4.analyze-slow-sql-queries-1.md @@ -0,0 +1,18 @@ +分析慢 SQL 查询 +=============================== + + + +如果已知某条 SQL 查询一直比较慢,可以使用如下方式进行分析: + +* 使用 sql_audit 查看统计数据并分析该 SQL 的执行计划。详细步骤请参考示例 + + [分析 RT 突然抖动的 SQL](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/2.sql-statement-that-analyzes-sudden-jitter-of-rt-1.md) 。 + + +* 分析下执行计划是否正确。详细步骤请参考示例 [查看执行计划形状并做分析](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/3.view-and-analyze-the-execution-plan-1.md)。 + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/5.query-sql-traffic-and-query-the-qps-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/5.query-sql-traffic-and-query-the-qps-1.md new file mode 100644 index 000000000..bbd106846 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/5.query-sql-traffic-and-query-the-qps-1.md @@ -0,0 +1,21 @@ +查询 SQL 流量分布情况及 QPS +======================================= + + + +运行如下语句可以查询 SQL 流量分布情况及 QPS: + +```sql +obclient>SELECT/*+ PARALLEL(15)*/t2.zone, t1.svr_ip, COUNT(*) AS RPC_COUNT, +AVG(t1.elapsed_time), AVG(t1.queue_time) +FROM oceanbase.gv$sql_audit t1, __all_server t2 +WHERE t1.svr_ip = t2.svr_ip +AND tenant_id = 1001 +AND SQL_ID = 'BF7AA13A28DF50BA5C33FF19F1DBD8A9' +AND IS_EXECUTOR_RPC = 0 +AND request_time > (time_to_usec(now()) - 1000000) +AND request_time < time_to_usec(now()) +GROUP BY t1.svr_ip; +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/6.check-whether-the-sql-request-traffic-is-balanced-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/6.check-whether-the-sql-request-traffic-is-balanced-1.md new file mode 100644 index 000000000..bfcaeb35a --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/6.check-whether-the-sql-request-traffic-is-balanced-1.md @@ -0,0 +1,37 @@ +查看集群 SQL 请求流量是否均衡 +====================================== + + + +运行如下语句可以查看集群 SQL 请求流量是否均衡: + +```sql +obclient>SELECT/*+ PARALLEL(15)*/t2.zone, t1.svr_ip, COUNT(*) AS QPS, + AVG(t1.elapsed_time), AVG(t1.queue_time) + FROM oceanbase.gv$sql_audit t1, __all_server t2 + WHERE t1.svr_ip = t2.svr_ip AND IS_EXECUTOR_RPC = 0 + AND request_time > (time_to_usec(now()) - 1000000) + AND request_time < time_to_usec(now()) + GROUP BY t1.svr_ip ORDER BY t2.zone; + ++--------+----------------+------+----------------------+--------------------+ +| zone | svr_ip | QPS | avg(t1.elapsed_time) | avg(t1.queue_time) | ++--------+----------------+------+----------------------+--------------------+ +| ET2_1 | 10.103.224.119 | 379 | 5067.3034 | 33.7071 | +| ET2_1 | 10.103.226.124 | 507 | 5784.1538 | 12.5878 | +| ET2_1 | 10.103.228.177 | 370 | 5958.2162 | 10.9811 | +| ET2_1 | 10.103.229.107 | 356 | 5730.9972 | 39.4185 | +| ET2_1 | 10.103.229.94 | 369 | 5851.7886 | 64.9621 | +| EU13_2 | 10.183.78.113 | 354 | 6182.6384 | 11.3107 | +| EU13_2 | 10.183.78.86 | 349 | 5881.3209 | 10.7393 | +| EU13_2 | 10.183.79.56 | 347 | 5936.0144 | 11.9049 | +| EU13_2 | 10.183.85.152 | 390 | 5988.4846 | 12.0487 | +| EU13_3 | 10.183.76.140 | 284 | 5657.2218 | 11.7993 | +| EU13_3 | 10.183.78.165 | 372 | 5360.6989 | 11.6290 | +| EU13_3 | 10.183.79.198 | 416 | 4154.2861 | 12.2524 | +| EU13_3 | 10.183.86.65 | 446 | 6487.6009 | 24.5112 | +| EU13_3 | 11.180.113.7 | 364 | 5444.4203 | 12.3462 | ++--------+----------------+------+----------------------+--------------------+ +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/7.top-n-sql-statements-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/7.top-n-sql-statements-1.md new file mode 100644 index 000000000..34314b0d7 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/7.top-n-sql-statements-1.md @@ -0,0 +1,99 @@ +查询排名 TOP N 的 SQL +===================================== + + + +查询某段时间内请求次数排在 TOP N 的 SQL +---------------------------------------------- + +运行如下语句可以查询某段时间内请求次数排在 TOP N 的 SQL: + +```sql +obclient>SELECT/*+ PARALLEL(15)*/ SQL_ID, COUNT(*) AS QPS, AVG(t1.elapsed_time) RT + FROM oceanbase.gv$sql_audit t1 WHERE tenant_id = 1001 AND + IS_EXECUTOR_RPC = 0 AND request_time > (time_to_usec(now()) - 10000000) AND + request_time < time_to_usec (now()) + GROUP BY t1.sql_id ORDER BY QPS DESC LIMIT 10; + ++----------------------------------+------+------------+ +| SQL_ID | QPS | RT | ++----------------------------------+------+------------+ +| BF7AA13A28DF50BA5C33FF19F1DBD8A9 | 2523 | 4233.2085 | +| CE7208ADDE365D0AB5E68EE24E5FD730 | 1268 | 5935.8683 | +| E5C7494018989226E69AE7D08B3D0F15 | 1028 | 7275.7490 | +| D0E8D8C937E44BC3BB9A5379AE1064C5 | 1000 | 12999.1640 | +| 2D45D7BE4E459CFBEAE4803971F0C6F9 | 1000 | 8050.6360 | +| C81CE9AA555BE59B088B379CC7AE5B40 | 1000 | 6865.4940 | +| BDC4FE903B414203A04E41C7DDA6627D | 1000 | 12751.8960 | +| B1B136047D7C3B6B9125F095363A9D23 | 885 | 13293.2237 | +| 47993DD69888868E92A7CAB2FDE65380 | 880 | 7282.0557 | +| 05C6279D767C7F212619BF4B659D3BAB | 844 | 11474.5438 | ++----------------------------------+------+------------+ +``` + + + +查询某段时间内平均 RT 排在 TOP N 的 SQL +------------------------------------------------ + +运行如下语句可以查询某段时间内平均 RT 排在 TOP N 的 SQL: + +```sql +obclient>SELECT/*+ PARALLEL(15)*/ SQL_ID, COUNT(*) AS QPS, AVG(t1.elapsed_time) RT + FROM oceanbase.gv$sql_audit t1 + WHERE tenant_id = 1001 AND IS_EXECUTOR_RPC = 0 + AND request_time > (time_to_usec(now()) - 10000000) + AND request_time < time_to_usec(now()) + GROUP BY t1.sql_id ORDER BY RT DESC LIMIT 10; + + ++----------------------------------+------+------------+ +| SQL_ID | QPS | RT | ++----------------------------------+------+------------+ +| 0A3D3DCB3343BBBB10E4B4B9777B77FC | 1 | 53618.0000 | +| A3831961C337545AF5BD1219BE29867A | 1 | 50764.0000 | +| F3DC5EF627DA63AE52044FCE7732267C | 1 | 48497.0000 | +| 39C63F143FDDACAEC090F480789DBCA5 | 1 | 47035.0000 | +| A3BF306B02FF86E76C96C9CEFADBDB7E | 1 | 45553.0000 | +| 7942E8D29BAFBF23EF3E3D29D55F428A | 1 | 45285.0000 | +| 20989A74CC1703664BDE9D6EA7830C24 | 1 | 39143.0000 | +| 80F40791E76C79D3DCD46FEEFFAB338E | 1 | 37654.0000 | +| 07E2FE351E3DD82843E81930B84D3DDE | 1 | 37231.0000 | +| 11B19DB5A1393590ABBE08005C155B2E | 1 | 37139.0000 | ++----------------------------------+------+------------+ +``` + + + +查询所有 SQL 中平均执行时间排在 TOP N 的 SQL +--------------------------------------------------- + +运行如下语句可以查询所有 SQL 中平均执行时间排在 TOP N 的 SQL: + +```sql +obclient>SELECT/*+ PARALLEL(15)*/avg_exe_usec, svr_ip, svr_port, sql_id, plan_id + FROM oceanbase.gv$plan_cache_plan_stat + WHERE tenant_id = 1001 + ORDER BY avg_exe_usec DESC LIMIT 3\G; + +*************************** 1. row *************************** +avg_exe_usec: 9795912 + svr_ip: 10.183.76.140 + svr_port: 2882 + sql_id: C5D91E6C772D1B87C32BB3C9ED1435E1 + plan_id: 4668689 +*************************** 2. row *************************** +avg_exe_usec: 9435052 + svr_ip: 10.103.229.107 + svr_port: 2882 + sql_id: 3B6EFEEC8332EB2A0822A3EA7B769500 + plan_id: 4692858 +*************************** 3. row *************************** +avg_exe_usec: 9335002 + svr_ip: 11.180.113.7 + svr_port: 2882 + sql_id: 3B6EFEEC8332EB2A0822A3EA7B769500 + plan_id: 4683085 +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/8.query-the-top-n-requests-with-the-most-execution-time-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/8.query-the-top-n-requests-with-the-most-execution-time-1.md new file mode 100644 index 000000000..22436d754 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/8.query-the-top-n-requests-with-the-most-execution-time-1.md @@ -0,0 +1,33 @@ +查询某段时间内执行时间排名 TOP N 的请求 +============================================ + + + +运行如下语句可以查询某段时间内执行时间排名 TOP N 的请求: + +```javascript +obclient>SELECT/*+ PARALLEL(15)*/ sql_id, elapsed_time , trace_id + FROM oceanbase.gv$sql_audit + WHERE tenant_id = 1001 + and IS_EXECUTOR_RPC = 0 + and request_time > (time_to_usec(now()) - 10000000) + AND request_time < time_to_usec(now()) + ORDER BY elapsed_time DESC LIMIT 10; + ++----------------------------------+--------------+-------------------------------+ +| sql_id | elapsed_time | trace_id | ++----------------------------------+--------------+-------------------------------+ +| CFA269275E3BB270408747C01F64D837 | 87381 | YB420AB75598-0005634FBED5C5E8 | +| 1979A5B4A27D5C3DBE08F80383FD6EB6 | 83465 | YB420AB74E56-0005634B4B87353B | +| 51248E6C3BB5EF1FC4E8E79CA685723E | 82767 | YB420AB74E56-0005634B4B82E7E1 | +| 249C40E669DFCCE80E3D11446272FA11 | 79919 | YB420A67E27C-00056349549A79D3 | +| BEFAD568C3858D2C2E35F01558CBEC06 | 77210 | YB420A67E4B1-00056345B0F2E97E | +| FB1A6A8BC4125C324A38F91B3808D364 | 75870 | YB420AB74E71-00056347074261E6 | +| 0343A519C0C5BF31C68CB68F63721990 | 75666 | YB420BB47107-00056346A5A631FB | +| B140BB0C671D9B8616FB048544F3B85B | 73902 | YB420A67E56B-00056342A5A4683E | +| 4F9B1D0A3822A3E0DF69DB11ABFBE0EA | 72963 | YB420BB47107-00056346A5AAC5F5 | +| 9963E8D252E6CBA72FBA45AC5790BA11 | 72354 | YB420A67E56B-00056342A5A66089 | ++----------------------------------+--------------+-------------------------------+ +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/9.analyze-whether-the-execution-of-the-system-or-an-sql-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/9.analyze-whether-the-execution-of-the-system-or-an-sql-1.md new file mode 100644 index 000000000..323a51281 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/3.monitor-sql-execution-performance-1/4.sql-performance-analysis-example-1/9.analyze-whether-the-execution-of-the-system-or-an-sql-1.md @@ -0,0 +1,18 @@ +分析系统或某个 SQL 的执行是否出现大量不合理远程执行请求 +=================================================== + + + +运行如下 SQL 语句能够分析出某段时间内不同类型的计划的执行次数: + +```javascript +obclient>SELECT COUNT(*),plan_type FROM oceanbase.gv$sql_audit WHERE tenant_id = 1001 +AND IS_EXECUTOR_RPC = 0 +AND request_time > (time_to_usec(now()) - 10000000) +AND request_time < time_to_usec(now()) +GROUP BY plan_type ; +``` + + + +一般情况下,如果出现远程执行请求比较多时,可能是由于出现切主或 Proxy 客户端路由不准确。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/4.query-rewrite-3/1.overview-15.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/4.query-rewrite-3/1.overview-15.md new file mode 100644 index 000000000..c3e5305df --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/4.query-rewrite-3/1.overview-15.md @@ -0,0 +1,14 @@ +概述 +======================= + +数据库中的查询改写(Query Rewrite)是指将一个 SQL 改写成另外一个更加容易优化的 SQL。 + +OceanBase 数据库所支持的查询改写规则分为基于规则的查询改写和基于代价的查询改写。 + +基于规则的查询改写总是会把 SQL 往"好"的方向进行改写,从而增加该 SQL 的优化空间。一个典型的基于规则的改写是把子查询改写成联接。如果不改写,子查询的执行方式只能是 Nested Loop Join,改写之后,优化器就也可以考虑 Hash Join 和 Merge Join 的执行方式。 + +基于代价的查询改写并不能总是把 SQL 往"好"的方向进行改写,需要使用代价模型来判断。一个典型的基于代价的改写就是 Or-Expansion。 + +在数据库中,一个改写规则通常需要满足特定的条件才能够实现,而且很多规则的改写可以互相作用(一个规则的改写会触发另外一个规则的改写)。OceanBase 数据库把所有基于规则的查询改写分成若干个规则集合。对于每个规则集合,OceanBase 数据库采用迭代的方式进行改写,一直到 SQL 不能被改写为止或者迭代次数达到预先设定的阈值。类似地,对于基于代价的改写规则也是采用这种方式处理。 + +这里需要注意的是,基于代价的改写之后可能又会重新触发基于规则的改写,所以整体上的基于代价的改写和基于规则的改写也会采用这种迭代的方式进行改写。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/4.query-rewrite-3/2.rule-based-query-rewriting-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/4.query-rewrite-3/2.rule-based-query-rewriting-3.md new file mode 100644 index 000000000..5d7ead287 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/4.query-rewrite-3/2.rule-based-query-rewriting-3.md @@ -0,0 +1,700 @@ +基于规则的查询改写 +============================== + +基于规则的查询改写方式主要包括子查询相关改写、外联接消除、 +简化条件改写和 +非 SPJ(SELECT PROJECT JOIN)的改写等。 + +子查询相关改写 +---------------- + +优化器对于子查询一般使用嵌套执行的方式,也就是父查询每生成一行数据后,都需要执行一次子查询。使用这种方式需要多次执行子查询,执行效率很低。对于子查询的优化方式,一般会将其改写为联接操作,可大大提高执行效率,主要优点如下: + +* 可避免子查询多次执行。 + + + +* 优化器可根据统计信息选择更优的联接顺序和联接方法。 + + + +* 子查询的联接条件、过滤条件改写为父查询的条件后,优化器可以进行进一步优化,比如条件下压等。 + + + + + + +子查询改写的方式主要包括视图合并、子查询展开和将 ANY/ALL 使用 MAX/MIN 改写等。 + +#### **视图合并** + +视图合并是指将代表一个视图的子查询合并到包含该视图的查询中,视图合并后,有助于优化器增加联接顺序的选择、访问路径的选择以及进一步做其他改写操作,从而选择更优的执行计划。 + +OceanBase 数据库支持对 SPJ 视图进行合并。如下示例为 Q1 改写为 Q2: + +```javascript +obclient>CREATE TABLE t1 (c1 INT, c2 INT); +Query OK, 0 rows affected (0.00 sec) + +obclient>CREATE TABLE t2 (c1 INT PRIMARY KEY, c2 INT); +Query OK, 0 rows affected (0.00 sec) + +obclient>CREATE TABLE t3 (c1 INT PRIMARY KEY, c2 INT); +Query OK, 0 rows affected (0.00 sec) + +Q1: +obclient>SELECT t1.c1, v.c1 + FROM t1, (SELECT t2.c1, t3.c2 + FROM t2, t3 + WHERE t2.c1 = t3.c1) v + WHERE t1.c2 = v.c2; +<==> +Q2: +obclient>SELECT t1.c1, t2.c1 + FROM t1, t2, t3 + WHERE t2.c1 = t3.c1 AND t1.c2 = t3.c2; +``` + + + +如果 Q1 不进行改写,则其联接顺序有以下几种: + +* t1, v(t2,t3) + + + +* t1, v(t3,t2) + + + +* v(t2,t3), t1 + + + +* v(t3,t2), t1 + + + + + + +进行视图合并改写后,可选择的联接顺序有: + +* t1, t2, t3 + + + +* t1, t3, t2 + + + +* t2, t1, t3 + + + +* t2, t3, t1 + + + +* t3, t1, t2 + + + +* t3, t2, t1 + + + + + + +可以看出,进行视图合并后,联接顺序可选择空间增加。对于复杂查询,视图合并后,对路径的选择和可改写的空间均会增大,从而使得优化器可生成更优的计划。 + +#### **子查询展开** + +子查询展开是指将 WHERE 条件中子查询提升到父查询中,并作为联接条件与父查询并列进行展开。转换后子查询将不存在,外层父查询中会变成多表联接。 + +这样改写的好处是优化器在进行路径选择、联接方法和联接排序时都会考虑到子查询中的表,从而可以获得更优的执行计划。涉及的子查询表达式一般有 NOT IN、IN、NOT EXIST、EXIST、ANY、ALL。 + +子查询展开的方式如下: + +* 改写条件使生成的联接语句能够返回与原始语句相同的行。 + + + +* 展开为半联接(SEMI JOIN / ANTI JOIN) + + 如下例所示,t2.c2 不具有唯一性,改为 SEMI JOIN,该语句改写后执行计划为: + + ```javascript + obclient>CREATE TABLE t1 (c1 INT, c2 INT); + Query OK, 0 rows affected (0.17 sec) + + obclient>CREATE TABLE t2 (c1 INT PRIMARY KEY, c2 INT); + Query OK, 0 rows affected (0.01 sec) + + obclient>EXPLAIN SELECT * FROM t1 WHERE t1.c1 IN (SELECT t2.c2 FROM t2)\G; + *************************** 1. row *************************** + Query Plan: + ======================================= + |ID|OPERATOR |NAME|EST. ROWS|COST| + --------------------------------------- + |0 |HASH SEMI JOIN| |495 |3931| + |1 | TABLE SCAN |t1 |1000 |499 | + |2 | TABLE SCAN |t2 |1000 |433 | + ======================================= + + Outputs & filters: + ------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + ``` + + + + 将查询前面操作符改为 NOT IN 后,可改写为 ANTI JOIN,具体计划如下例所示: + + ```javascript + obclient>EXPLAIN SELECT * FROM t1 WHERE t1.c1 NOT IN (SELECT t2.c2 FROM t2)\G; + *************************** 1. row *************************** + Query Plan: + ================================================ + |ID|OPERATOR |NAME|EST. ROWS|COST | + ------------------------------------------------ + |0 |NESTED-LOOP ANTI JOIN| |0 |520245| + |1 | TABLE SCAN |t1 |1000 |499 | + |2 | TABLE SCAN |t2 |22 |517 | + ================================================ + + Outputs & filters: + ------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_([t1.c1], [(T_OP_IS, t1.c1, NULL, 0)]) + 1 - output([t1.c1], [t1.c2], [(T_OP_IS, t1.c1, NULL, 0)]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c2]), filter([(T_OP_OR, ? = t2.c2, ?, (T_OP_IS, t2.c2, NULL, 0))]), + access([t2.c2]), partitions(p0) + ``` + + + + + + + + +* 子查询展开为内联接 + + 上面示例的 Q1 中如果将 t2.c2 改为 t2.c1,由于 t2.c1 为主键,子查询输出具有唯一性,此时可以直接转换为内联接,如下例所示: + + ```javascript + Q1: + obclient>SELECT * FROM t1 WHERE t1.c1 IN (SELECT t2.c1 FROM t2)\G; + <==> + Q2: + obclient>SELECT t1.* FROM t1, t2 WHERE t1.c1 = t2.c1; + ``` + + + + Q1 改写后的计划如下例所示: + + ```javascript + obclient>EXPLAIN SELECT * FROM t1 WHERE t1.c1 IN (SELECT t2.c1 FROM t2)\G; + *************************** 1. row *************************** + Query Plan: + ==================================== + |ID|OPERATOR |NAME|EST. ROWS|COST| + ------------------------------------ + |0 |HASH JOIN | |1980 |3725| + |1 | TABLE SCAN|t2 |1000 |411 | + |2 | TABLE SCAN|t1 |1000 |499 | + ==================================== + + Outputs & filters: + ------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + ``` + + + + 对于 NOT IN、IN、NOT EXIST、EXIST、ANY、ALL 子查询表达式都可以对应做类似的改写操作。 + + + + + +#### **ANY/ALL 使用 MAX/MIN 改写** + +对于 ANY/ALL 的子查询,如果子查询中没有 GROUP BY 子句、聚集函数以及 HAVING 时,以下表达式可以使用聚集函数 MIN/MAX 进行等价转换,其中 `col_item` 为单独列且有非 NULL 属性: + +```sql +val > ALL(SELECT col_item ...) <==> val > ALL(SELECT MAX(col_item) ...); +val >= ALL(SELECT col_item ...) <==> val >= ALL(SELECT MAX(col_item) ...); +val < ALL(SELECT col_item ...) <==> val < ALL(SELECT MIN(col_item) ...); +val <= ALL(SELECT col_item ...) <==> val <= ALL(SELECT MIN(col_item) ...); +val > ANY(SELECT col_item ...) <==> val > ANY(SELECT MIN(col_item) ...); +val >= ANY(SELECT col_item ...) <==> val >= ANY(SELECT MIN(col_item) ...); +val < ANY(SELECT col_item ...) <==> val < ANY(SELECT MAX(col_item) ...); +val <= ANY(SELECT col_item ...) <==> val <= ANY(SELECT MAX(col_item) ...); +``` + + + +将子查询更改为含有 MAX/MIN 的子查询后,再结合使用 MAX/MIN 的改写,可减少改写前对内表的多次扫描,如下例所示: + +```javascript +obclient>SELECT c1 FROM t1 WHERE c1 > ANY(SELECT c1 FROM t2); +<==> +obclient>SELECT c1 FROM t1 WHERE c1 > ANY(SELECT MIN(c1) FROM t2); +``` + + + +结合 MAX/MIN 的改写后,可利用 t2.c1 的主键序将 LIMIT 1 直接下压到 TABLE SCAN,将 MIN 值输出,执行计划如下: + +```javascript +obclient>EXPLAIN SELECT c1 FROM t1 WHERE c1 > ANY(SELECT c1 FROM t2)\G; +*************************** 1. row *************************** +Query Plan: + =================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |SUBPLAN FILTER | |1 |73 | +|1 | TABLE SCAN |t1 |1 |37 | +|2 | SCALAR GROUP BY| |1 |37 | +|3 | SUBPLAN SCAN |subquery_table|1 |37 | +|4 | TABLE SCAN |t2 |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter([t1.c1 > ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([T_FUN_MIN(subquery_table.c1)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(subquery_table.c1)]) + 3 - output([subquery_table.c1]), filter(nil), + access([subquery_table.c1]) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0), + limit(1), offset(nil) +``` + + + + + +外联接消除 +-------------- + +外联接操作可分为左外联接、右外联接和全外联接。在联接过程中,由于外联接左右顺序不能变换,优化器对联接顺序的选择会受到限制。外联接消除是指将外联接转换成内联接,从而可以提供更多可选择的联接路径,供优化器考虑。 + +如果进行外联接消除,需要存在"空值拒绝条件",即在 WHERE 条件中存在,当内表生成的值为 NULL 时,输出为 FALSE 的条件。 + +如下例所示: + +```javascript +obclient>SELECT t1.c1, t2.c2 FROM t1 LEFT JOIN t2 ON t1.c2 = t2.c2; +``` + + + +这是一个外联接,在其输出行中 t2.c2 可能为 NULL。如果加上一个条件 ` t2.c2 > 5`,则通过该条件过滤后,t2.c1 输出不可能为 NULL, 从而可以将外联接转换为内联接。 + +```javascript +obclient>SELECT t1.c1, t2.c2 FROM t1 LEFT JOIN t2 ON t1.c2 = t2.c2 WHERE t2.c2 > 5; +<==> +obclient>SELECT t1.c1, t2.c2 FROM t1 LEFT INNER JOIN t2 ON t1.c2 = t2.c2 + WHERE t2.c2 > 5; +``` + + + + + +简化条件改写 +--------------- + +#### HAVING 条件消除 + +如果查询中没有聚集操作及 GROUP BY,则 HAVING 可以合并到 WHERE 条件中,并将 HAVING 条件删除, 从而可以将 HAVING 条件在 WHERE 条件中统一管理,并进行进一步相关优化。 + +```javascript +obclient>SELECT * FROM t1, t2 WHERE t1.c1 = t2.c1 HAVING t1.c2 > 1; +<==> +obclient>SELECT * FROM t1, t2 WHERE t1.c1 = t2.c1 AND t1.c2 > 1; +``` + + + +改写后计划如下例所示, `t1.c2 > 1` 条件被下压到了 TABLE SCAN 层。 + +```javascript +obclient>EXPLAIN SELECT * FROM t1, t2 WHERE t1.c1 = t2.c1 HAVING t1.c2 > 1\G; +*************************** 1. row *************************** +Query Plan: +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |59 | +|1 | TABLE SCAN |t1 |1 |37 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1], [t1.c2]), filter([t1.c2 > 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) +``` + + + +#### **等价关系推导** + +等价关系推导是指利用比较操作符的传递性,推倒出新的条件表达式,从而减少需要处理的行数或者选择到更有效的索引。 + +OceanBase 数据库可对等值联接进行推导,比如 `a = b AND a > 1` 可以推导出 `a = b AND a > 1 AND b > 1`, 如果 b 上有索引,且 `b > 1` 在该索引选择率很低,则可以大大提升访问 b 列所在表的性能。 + +如下例所示,条件 `t1.c1 = t2.c2 AND t1.c1 > 2`,等价推导后为 `t1.c1 = t2.c2 AND t1.c1 > 2 AND t2.c2 > 2`,从计划中可以看到 t2.c2 已下压到 TABLE SCAN,并且使用 t2.c2 对应的索引。 + +```sql +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT); +Query OK, 0 rows affected (0.15 sec) + +obclient>CREATE TABLE t2(c1 INT PRIMARY KEY, c2 INT, c3 INT, KEY IDX_c2(c2)); +Query OK, 0 rows affected (0.10 sec) +/*此命令需运行于 MySQL 模式下*/ + +obclient>EXPLAIN EXTENDED_NOADDR SELECT t1.c1, t2.c2 FROM t1, t2 + WHERE t1.c1 = t2.c2 AND t1.c1 > 2\G; +*************************** 1. row *************************** +Query Plan: +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |MERGE JOIN | |5 |78 | +|1 | TABLE SCAN|t2(IDX_c2)|5 |37 | +|2 | TABLE SCAN|t1 |3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 1 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0), + is_index_back=false, + range_key([t2.c2], [t2.c1]), range(2,MAX ; MAX,MAX), + range_cond([t2.c2 > 2]) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + is_index_back=false, + range_key([t1.c1]), range(2 ; MAX), + range_cond([t1.c1 > 2]) +``` + + + +#### **恒真/假消除** + +对于如下恒真恒假条件可以进行消除: + +* false and expr = 恒 false + + + +* true or expr = 恒 true + + + + + + +如下例所示,对于 `WHERE 0 > 1 AND c1 = 3`,由于 `0 > 1` 使得 AND 恒假, 所以该 SQL 不用执行,可直接返回,从而加快查询的执行。 + +```javascript +obclient>EXPLAIN EXTENDED_NOADDR SELECT * FROM t1 WHERE 0 > 1 AND c1 = 3\G; +*************************** 1. row *************************** +Query Plan: +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |0 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([0], [t1.c1 = 3]), startup_filter([0]), + access([t1.c1], [t1.c2]), partitions(p0), + is_index_back=false, filter_before_indexback[false,false], + range_key([t1.__pk_increment], [t1.__pk_cluster_id], [t1.__pk_partition_id]), + range(MAX,MAX,MAX ; MIN,MIN,MIN)always false +``` + + + + + +非 SPJ 的改写 +------------------ + +#### **冗余排序消除** + +冗余排序消除是指删除 order item 中不需要的项,减少排序开销。以下三种情况可进行排序消除: + +* ORDER BY 表达式列表中有重复列,可进行去重后排序。 + + ```javascript + obclient>SELECT * FROM t1 WHERE c2 = 5 ORDER BY c1, c1, c2, c3 ; + <==> + obclient>SELECT * FROM t1 WHERE c2 = 5 ORDER BY c1, c2, c3; + ``` + + + + + + + + +* ORDER BY 列中存在 where 中有单值条件的列,该列排序可删除。 + + ```javascript + obclient>SELECT * FROM t1 WHERE c2 = 5 ORDER BY c1, c2, c3; + <==> + obclient>SELECT * FROM t1 WHERE c2 = 5 ORDER BY c1, c3; + ``` + + + + + + + + +* 如果本层查询有 ORDER BY 但是没有 LIMIT,且本层查询位于父查询的集合操作中,则 ORDER BY 可消除。因为对两个有序的集合做 UNION 操作,其结果是乱序的。但是如果 ORDER BY 中有 LIMIT,则语义是取最大/最小的 N 个,此时不能消除 ORDER BY,否则有语义错误。 + + ```javascript + obclient>(SELECT c1,c2 FROM t1 ORDER BY c1) UNION (SELECT c3,c4 FROM t2 ORDER BY c3); + <==> + obclient>(SELECT c1,c2 FROM t1) UNION (SELECT c3,c4 FROM t2); + ``` + + + + + + +#### **LIMIT 下压** + +LIMIT 下压改写是指将 LIMIT 下降到子查询中,OceanBase 数据库现在支持在不改变语义的情况下,将 LIMIT 下压到视图(示例 1)及 UNION 对应子查询(示例 2)中。 + +示例 1: + +```sql +obclient>SELECT * FROM (SELECT * FROM t1 ORDER BY c1) a LIMIT 1; +<==> +obclient>SELECT * FROM (SELECT * FROM t1 ORDER BY c1 LIMIT 1) a LIMIT 1; +``` + + + +示例 2: + +```sql +obclient>(SELECT c1,c2 FROM t1) UNION ALL (SELECT c3,c4 FROM t2) LIMIT 5; +<==> +obclient>(SELECT c1,c2 FROM t1 LIMIT 5) UNION ALL (SELECT c3,c4 FROM t2 limit 5) LIMIT 5; +``` + + + +#### **DISTINCT 消除** + +* 如果 select item 中只包含常量,则可以消除 DISTINCT,并加上 LIMIT 1。 + + ```sql + obclient>SELECT DISTINCT 1,2 FROM t1 ; + <==> + obclient>SELECT DISTINCT 1,2 FROM t1 LIMIT 1; + + obclient>CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT); + Query OK, 0 rows affected (0.17 sec) + + obclient>EXPLAIN EXTENDED_NOADDR SELECT DISTINCT 1,2 FROM t1\G; + *************************** 1. row *************************** + Query Plan: + =================================== + |ID|OPERATOR |NAME|EST. ROWS|COST| + ----------------------------------- + |0 |TABLE SCAN|t1 |1 |36 | + =================================== + + Outputs & filters: + ------------------------------------- + 0 - output([1], [2]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil), + is_index_back=false, + range_key([t1.c1]), range(MIN ; MAX)always true + ``` + + + + + + + + +* 如果 select item 中包含确保唯一性约束的列,则 DISTINCT 能够消除,如下示例中 (c1, c2)为主键,可确保 c1、c2 和 c3 唯一性, 从而 DISTINCT 可消除。 + + ```javascript + obclient>CREATE TABLE t2(c1 INT, c2 INT, c3 INT, PRIMARY KEY(c1, c2)); + Query OK, 0 rows affected (0.17 sec) + + obclient>SELECT DISTINCT c1, c2, c3 FROM t2; + <==> + obclient>SELECT c1, c2 c3 FROM t2; + + obclient>EXPLAIN SELECT DISTINCT c1, c2, c3 FROM t2\G; + *************************** 1. row *************************** + Query Plan: + =================================== + |ID|OPERATOR |NAME|EST. ROWS|COST| + ----------------------------------- + |0 |TABLE SCAN|t2 |1000 |455 | + =================================== + + Outputs & filters: + ------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + ``` + + + + + + +#### **MIN/MAX 改写** + +* 当 MIN/MAX 函数中参数为索引前缀列,且不含 GROUP BY 时,可将该 scalar aggregate 转换为走索引扫描 1 行的情况,如下例所示: + + ```javascript + obclient>CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT, c3 INT, KEY IDX_c2_c3(c2,c3)); + Query OK, 0 rows affected (0.17 sec) + + obclient>SELECT MIN(c2) FROM t1; + <==> + obclient>SELECT MIN(c2) FROM (SELECT c2 FROM t2 ORDER BY c2 LIMIT 1) AS t; + + obclient>EXPLAIN SELECT MIN(c2) FROM t1\G; + *************************** 1. row *************************** + Query Plan: + ================================================== + |ID|OPERATOR |NAME |EST. ROWS|COST| + -------------------------------------------------- + |0 |SCALAR GROUP BY| |1 |37 | + |1 | SUBPLAN SCAN |subquery_table|1 |37 | + |2 | TABLE SCAN |t1(idx_c2_c3) |1 |36 | + ================================================== + + Outputs & filters: + ------------------------------------- + 0 - output([T_FUN_MIN(subquery_table.c2)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(subquery_table.c2)]) + 1 - output([subquery_table.c2]), filter(nil), + access([subquery_table.c2]) + 2 - output([t1.c2]), filter([(T_OP_IS_NOT, t1.c2, NULL, 0)]), + access([t1.c2]), partitions(p0), + limit(1), offset(nil) + ``` + + + + + + + + +* 如果 `SELECT MIN/MAX` 的参数为常量,而且包含 GROUP BY,可以将 MIN/MAX 改为常量,从而减少 MIN/MAX 的计算开销。 + + ```javascript + obclient>SELECT MAX(1) FROM t1 GROUP BY c1; + <==> + obclient>SELECT 1 FROM t1 GROUP BY c1; + + obclient>EXPLAIN EXTENDED_NOADDR SELECT MAX(1) FROM t1 GROUP BY c1\G; + *************************** 1. row *************************** + Query Plan: + =================================== + |ID|OPERATOR |NAME|EST. ROWS|COST| + ----------------------------------- + |0 |TABLE SCAN|t1 |1000 |411 | + =================================== + + Outputs & filters: + ------------------------------------- + 0 - output([1]), filter(nil), + access([t1.c1]), partitions(p0), + is_index_back=false, + range_key([t1.c1]), range(MIN ; MAX)always true + ``` + + + + + + + + +* 如果 `SELECT MIN/MAX` 的参数为常量,而且不含 GROUP BY,可以按照如下示例进行改写,从而走索引只需扫描 1 行。 + + ```javascript + obclient>SELECT MAX(1) FROM t1; + <==> + obclient>SELECT MAX(t.a) FROM (SELECT 1 AS a FROM t1 LIMIT 1) t; + + obclient>EXPLAIN EXTENDED_NOADDR SELECT MAX(1) FROM t1\G; + *************************** 1. row *************************** + Query Plan: + ================================================== + |ID|OPERATOR |NAME |EST. ROWS|COST| + -------------------------------------------------- + |0 |SCALAR GROUP BY| |1 |37 | + |1 | SUBPLAN SCAN |subquery_table|1 |37 | + |2 | TABLE SCAN |t1 |1 |36 | + ================================================== + + Outputs & filters: + ------------------------------------- + 0 - output([T_FUN_MAX(subquery_table.subquery_col_alias)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(subquery_table.subquery_col_alias)]) + 1 - output([subquery_table.subquery_col_alias]), filter(nil), + access([subquery_table.subquery_col_alias]) + 2 - output([1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil), + is_index_back=false, + range_key([t1.c1]), range(MIN ; MAX)always true + ``` + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/4.query-rewrite-3/3.cost-based-query-rewriting-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/4.query-rewrite-3/3.cost-based-query-rewriting-3.md new file mode 100644 index 000000000..ac9e52ca4 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/4.query-rewrite-3/3.cost-based-query-rewriting-3.md @@ -0,0 +1,244 @@ +基于代价的查询改写 +============================== + +OceanBase 数据库目前只支持一种基于代价的查询改写------或展开(OR-EXPANSION)。 + +数据库中很多高级的改写规则(例如 complex view merge 和窗口函数改写)都需要基于代价进行改写,OceanBase 数据库后续版本会支持这些复杂的改写规则。 + +或展开(OR-EXPANSION) +-------------------------- + +OR-EXPANSION 是将一个查询改写成若干个用 UNION 组成的子查询,可以为每个子查询提供更优的优化空间,但是也会导致多个子查询的执行,所以这个改写需要基于代价去判断。 + +OR-EXPANSION 的改写主要有如下三个作用: + +* 允许每个分支使用不同的索引来加速查询。 + + 如下例所示,Q1 会被改写成 Q2 的形式,其中 Q2 中的谓词 `LNNVL(t1.a = 1)` 保证了这两个子查询不会生成重复的结果。如果不进行改写,Q1 一般来说会选择主表作为访问路径,对于 Q2 来说,如果 t1 上存在索引(a)和索引(b),那么该改写可能会让 Q2 中的每一个子查询选择索引作为访问路径。 + + ```javascript + Q1: + obclient>SELECT * FROM t1 WHERE t1.a = 1 OR t1.b = 1; + Q2: + obclient>SELECT * FROM t1 WHERE t1.a = 1 UNION ALL SELECT * FROM t1.b = 1 + AND LNNVL(t1.a = 1); + ``` + + + + 完整示例如下: + + ```javascript + obclient>CREATE TABLE t1(a INT, b INT, c INT, d INT, e INT, INDEX IDX_a(a), + INDEX IDX_b(b)); + Query OK, 0 rows affected (0.17 sec) + + /*如果不进行 OR-EXPANSION 的改写,该查询只能使用主表访问路径*/ + obclient> EXPLAIN SELECT/*+NO_REWRITE()*/ * FROM t1 WHERE t1.a = 1 OR t1.b = 1; + +--------------------------------------------------------------+ + | Query Plan | + +--------------------------------------------------------------+ + | =================================== + |ID|OPERATOR |NAME|EST. ROWS|COST| + ----------------------------------- + |0 |TABLE SCAN|t1 |4 |649 | + =================================== + + Outputs & filters: + ------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t1.d], [t1.e]), filter([t1.a = 1 OR t1.b = 1]), + access([t1.a], [t1.b], [t1.c], [t1.d], [t1.e]), partitions(p0) + + /*改写之后,每个子查询能使用不同的索引访问路径*/ + obclient>EXPLAIN SELECT * FROM t1 WHERE t1.a = 1 OR t1.b = 1; + +------------------------------------------------------------------------+ + | Query Plan | + +------------------------------------------------------------------------+ + | ========================================= + |ID|OPERATOR |NAME |EST. ROWS|COST| + ----------------------------------------- + |0 |UNION ALL | |3 |190 | + |1 | TABLE SCAN|t1(idx_a)|2 |94 | + |2 | TABLE SCAN|t1(idx_b)|1 |95 | + ========================================= + + Outputs & filters: + ------------------------------------- + 0 - output([UNION(t1.a, t1.a)], [UNION(t1.b, t1.b)], [UNION(t1.c, t1.c)], [UNION(t1.d, t1.d)], [UNION(t1.e, t1.e)]), filter(nil) + 1 - output([t1.a], [t1.b], [t1.c], [t1.d], [t1.e]), filter(nil), + access([t1.a], [t1.b], [t1.c], [t1.d], [t1.e]), partitions(p0) + 2 - output([t1.a], [t1.b], [t1.c], [t1.d], [t1.e]), filter([lnnvl(t1.a = 1)]), + access([t1.a], [t1.b], [t1.c], [t1.d], [t1.e]), partitions(p02 + ``` + + + + + + + + +* 允许每个分支使用不同的连接算法来加速查询,避免使用笛卡尔联接。 + + 如下例所示,Q1 会被改写成 Q2 的形式。对于 Q1 来说,它的联接方式只能是 NESTED LOOP JOIN (笛卡尔乘积), 但是被改写之后,每个子查询都可以选择 NESTED LOOP JOIN、HASH JOIN 或者 MERGE JOIN,这样会有更多的优化空间。 + + ```javascript + Q1: + obclient>SELECT * FROM t1, t2 WHERE t1.a = t2.a OR t1.b = t2.b; + + Q2: + obclient>SELECT * FROM t1, t2 WHERE t1.a = t2.a UNION ALL + SELECT * FROM t1, t2 WHERE t1.b = t2.b AND LNNVL(t1.a = t2.a); + ``` + + + + 完整示例如下: + + ```javascript + obclient> CREATE TABLE t1(a INT, b INT); + Query OK, 0 rows affected (0.17 sec) + + obclient> CREATE TABLE t2(a INT, b INT); + Query OK, 0 rows affected (0.13 sec) + + /*如果不进行改写,只能使用 NESTED LOOP JOIN*/ + obclient> EXPLAIN SELECT/*+NO_REWRITE()*/ * FROM t1, t2 + WHERE t1.a = t2.a OR t1.b = t2.b; + +--------------------------------------------------------------------------+ + | Query Plan | + +--------------------------------------------------------------------------+ + | =========================================== + |ID|OPERATOR |NAME|EST. ROWS|COST | + ------------------------------------------- + |0 |NESTED-LOOP JOIN| |3957 |585457| + |1 | TABLE SCAN |t1 |1000 |499 | + |2 | TABLE SCAN |t2 |4 |583 | + =========================================== + + Outputs & filters: + ------------------------------------- + 0 - output([t1.a], [t1.b], [t2.a], [t2.b]), filter(nil), + conds(nil), nl_params_([t1.a], [t1.b]) + 1 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0) + 2 - output([t2.a], [t2.b]), filter([? = t2.a OR ? = t2.b]), + access([t2.a], [t2.b]), partitions(p0) + + /*被改写之后,每个子查询都使用了 HASH JOIN*/ + obclient> EXPLAIN SELECT * FROM t1, t2 WHERE t1.a = t2.a OR t1.b = t2.b; + +--------------------------------------------------------------------------+ + | Query Plan | + +--------------------------------------------------------------------------+ + |ID|OPERATOR |NAME|EST. ROWS|COST| + ------------------------------------- + |0 |UNION ALL | |2970 |9105| + |1 | HASH JOIN | |1980 |3997| + |2 | TABLE SCAN|t1 |1000 |499 | + |3 | TABLE SCAN|t2 |1000 |499 | + |4 | HASH JOIN | |990 |3659| + |5 | TABLE SCAN|t1 |1000 |499 | + |6 | TABLE SCAN|t2 |1000 |499 | + ===================================== + + Outputs & filters: + ------------------------------------- + 0 - output([UNION(t1.a, t1.a)], [UNION(t1.b, t1.b)], [UNION(t2.a, t2.a)], [UNION(t2.b, t2.b)]), filter(nil) + 1 - output([t1.a], [t1.b], [t2.a], [t2.b]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 2 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0) + 3 - output([t2.a], [t2.b]), filter(nil), + access([t2.a], [t2.b]), partitions(p0) + 4 - output([t1.a], [t1.b], [t2.a], [t2.b]), filter(nil), + equal_conds([t1.b = t2.b]), other_conds([lnnvl(t1.a = t2.a)]) + 5 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0) + 6 - output([t2.a], [t2.b]), filter(nil), + access([t2.a], [t2.b]), partitions(p0) + ``` + + + + + + + + +* 允许每个分支分别消除排序,更加快速的获取 TOP-K 结果。 + + 如下例所示,Q1 会被改写成 Q2。对于 Q1 来说,执行方式是只能把满足条件的行数找出来,然后进行排序,最终取 TOP-10 结果。对于 Q2 来说,如果存在索引(a,b), 那么 Q2 中的两个子查询都可以使用索引把排序消除,每个子查询取 TOP-10 结果,然后最终对这 20 行数据排序一下取出最终的 TOP-10 行。 + + ```javascript + Q1: + obclient>SELECT * FROM t1 WHERE t1.a = 1 OR t1.a = 2 ORDER BY b LIMIT 10; + + Q2: + obclient>SELECT * FROM + (SELECT * FROM t1 WHERE t1.a = 1 ORDER BY b LIMIT 10 UNION ALL + SELECT * FROM t1 WHERE t1.a = 2 ORDER BY b LIMIT 10) AS TEMP + ORDER BY temp.b LIMIT 10; + ``` + + + + 完整示例如下: + + ```javascript + obclient> CREATE TABLE t1(a INT, b INT, INDEX IDX_a(a, b)); + Query OK, 0 rows affected (0.20 sec) + + /*不改写的话,需要排序最终获取 TOP-K 结果*/ + obclient> EXPLAIN SELECT/*+NO_REWRITE()*/ * FROM t1 WHERE t1.a = 1 OR t1.a = 2 + ORDER BY b LIMIT 10; + +-------------------------------------------------------------------------+ + | Query Plan | + +-------------------------------------------------------------------------+ + | ========================================== + |ID|OPERATOR |NAME |EST. ROWS|COST| + ------------------------------------------ + |0 |LIMIT | |4 |77 | + |1 | TOP-N SORT | |4 |76 | + |2 | TABLE SCAN|t1(idx_a)|4 |73 | + ========================================== + + Outputs & filters: + ------------------------------------- + 0 - output([t1.a], [t1.b]), filter(nil), limit(10), offset(nil) + 1 - output([t1.a], [t1.b]), filter(nil), sort_keys([t1.b, ASC]), topn(10) + 2 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0) + + /* 进行改写的话,排序算子可以被消除,最终获取 TOP-K 结果*/ + obclient>EXPLAIN SELECT * FROM t1 WHERE t1.a = 1 OR t1.a = 2 + ORDER BY b LIMIT 10; + +-------------------------------------------------------------------------+ + | Query Plan | + +-------------------------------------------------------------------------+ + | =========================================== + |ID|OPERATOR |NAME |EST. ROWS|COST| + ------------------------------------------- + |0 |LIMIT | |3 |76 | + |1 | TOP-N SORT | |3 |76 | + |2 | UNION ALL | |3 |74 | + |3 | TABLE SCAN|t1(idx_a)|2 |37 | + |4 | TABLE SCAN|t1(idx_a)|1 |37 | + =========================================== + + Outputs & filters: + ------------------------------------- + 0 - output([UNION(t1.a, t1.a)], [UNION(t1.b, t1.b)]), filter(nil), limit(10), offset(nil) + 1 - output([UNION(t1.a, t1.a)], [UNION(t1.b, t1.b)]), filter(nil), sort_keys([UNION(t1.b, t1.b), ASC]), topn(10) + 2 - output([UNION(t1.a, t1.a)], [UNION(t1.b, t1.b)]), filter(nil) + 3 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0), + limit(10), offset(nil) + 4 - output([t1.a], [t1.b]), filter([lnnvl(t1.a = 1)]), + access([t1.a], [t1.b]), partitions(p0), + limit(10), offset(nil) + ``` + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/1.overview-16.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/1.overview-16.md new file mode 100644 index 000000000..c112921d1 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/1.overview-16.md @@ -0,0 +1,47 @@ +概述 +======================= + +访问路径是指数据库中访问表的方法,即使用哪个索引来访问表。 + +访问路径的分析是单表查询的最重要的问题之一,对于使用主表扫描的访问路径来说,执行时间一般与需要扫描的数据量(范围)成正比。一般来说,可以使用 `EXPLAIN EXTENDED` 命令,将表扫描的范围段展示出来。对于有合适索引的查询,使用索引可以大大减小数据的访问量,因此对于使用主表扫描的查询,要分析没有选中索引扫描的原因,是由于不存在可用的索引,还是索引扫描范围过大以至于代价过高。 + +OceanBase 数据库的路径选择方法融合了基于规则的路径选择方法和基于代价的路径选择方法。OceanBase 数据库首先会使用基于规则的路径选择方法,如果基于规则的路径选择方法之后只有一个可选择的路径,那么就直接使用该路径,否则就再使用基于代价的路径选择方法选择一个代价最小的路径。 + +在 OceanBase 数据库中,用户可以通过 HINT 来指定访问路径。访问路径的 HINT 形式如下: `/+INDEX(table_name index_name)/` + +其中 `table_name` 表示表的名字,`index_name` 表示索引的名字。如果 `index_name` 是 PRIMARY,代表选择主表扫描路径。 + +如下为用 HINT 来指定访问路径的示例: + +```javascript +obclient>CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT, d INT, INDEX k1(b,c)); +Query OK, 0 rows affected (0.10 sec) + +obclient>EXPLAIN SELECT/*+INDEX(t1 PRIMARY)*/ * FROM t1; +| =================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1000 |476 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t1.d]), filter(nil), + access([t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0) + + +obclient>EXPLAIN SELECT/*+INDEX(t1 k1)*/ * FROM t1; +| ===================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------- +|0 |TABLE SCAN|t1(k1)|1000 |5656| +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t1.d]), filter(nil), + access([t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0) +``` + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/2.rule-based-path-selection-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/2.rule-based-path-selection-3.md new file mode 100644 index 000000000..42850af49 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/2.rule-based-path-selection-3.md @@ -0,0 +1,325 @@ +基于规则的路径选择 +============================== + +本文主要介绍 OceanBase 数据库路径选择的规则体系。 + +目前 OceanBase 数据库路径选择的规则体系分为前置规则(正向规则)和 Skyline 剪枝规则(反向规则)。前置规则直接决定了一个查询使用什么样的索引,是一个强匹配的规则体系。 + +Skyline 剪枝规则会比较两个索引,如果一个索引在一些定义的维度上优于(dominate)另外一个索引,那么不优的索引会被剪掉,最后没有被剪掉的索引会进行代价比较,从而选出最优的计划。 + +目前 OceanBase 数据库的优化器会优先使用前置规则选择索引,如果没有匹配的索引,那么 Skyline 剪枝规则会剪掉一些不优的索引,最后代价模型会在没有被剪掉的索引中选择代价最低的路径。 + +如下例所示,OceanBase 数据库的计划展示中会输出相应的路径选择的规则信息。 + +```javascript +obclient>CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT, d INT, e INT, + UNIQUE INDEX k1(b), INDEX k2(b,c), INDEX k3(c,d)); +Query OK, 0 rows affected (0.38 sec) + +obclient> EXPLAIN EXTENDED SELECT * FROM t1 WHERE b = 1; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| ===================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------- +|0 |TABLE SCAN|t1(k1)|2 |94 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a(0x7f3178058bf0)], [t1.b(0x7f3178058860)], [t1.c(0x7f3178058f80)], [t1.d(0x7f3178059310)], [t1.e(0x7f31780596a0)]), filter(nil), + access([t1.b(0x7f3178058860)], [t1.a(0x7f3178058bf0)], [t1.c(0x7f3178058f80)], [t1.d(0x7f3178059310)], [t1.e(0x7f31780596a0)]), partitions(p0), + is_index_back=true, + range_key([t1.b(0x7f3178058860)], [t1.shadow_pk_0(0x7f31780784b8)]), range(1,MIN ; 1,MAX), + range_cond([t1.b(0x7f3178058860) = 1(0x7f31780581d8)]) +Optimization Info: +------------------------------------- +t1:optimization_method=rule_based, heuristic_rule=unique_index_with_indexback + + +obclient> EXPLAIN EXTENDED SELECT * FROM t1 WHERE c < 5 ORDER BY c; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| ==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |SORT | |200 |1054| +|1 | TABLE SCAN|t1 |200 |666 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a(0x7f3178059220)], [t1.b(0x7f31780595b0)], [t1.c(0x7f3178058e90)], [t1.d(0x7f3178059940)], [t1.e(0x7f3178059cd0)]), filter(nil), sort_keys([t1.c(0x7f3178058e90), ASC]) + 1 - output([t1.c(0x7f3178058e90)], [t1.a(0x7f3178059220)], [t1.b(0x7f31780595b0)], [t1.d(0x7f3178059940)], [t1.e(0x7f3178059cd0)]), filter([t1.c(0x7f3178058e90) < 5(0x7f3178058808)]), + access([t1.c(0x7f3178058e90)], [t1.a(0x7f3178059220)], [t1.b(0x7f31780595b0)], [t1.d(0x7f3178059940)], [t1.e(0x7f3178059cd0)]), partitions(p0), + is_index_back=false, filter_before_indexback[false], + range_key([t1.a(0x7f3178059220)]), range(MIN ; MAX)always true +t1:optimization_method=cost_based, avaiable_index_name[t1,k3], pruned_index_name[k1,k2] +``` + + + +其中 optimization_method 展示了具体的规则信息,它有以下两种形式: + +* 如果 `optimization_method=rule_based`, 那么就是命中了前置规则,同时会展示出具体命中的规则名称,unique_index_with_indexback 表示命中了前置规则的第三条规则(唯一性索引全匹配+回表+回表数量少于一定的阈值)。 + + + +* 如果 `optimization_method=cost_based`, 那么就是基于代价选择出来的,同时会展示出来 Skyline 剪枝规则剪掉了那些访问路径(pruned_index_name)以及剩下了那些访问路径(avaiable_index_name)。 + + + + + + +前置规则 +------------- + +目前 OceanBase 数据库的前置规则只用于简单的单表扫描。因为前置规则是一个强匹配的规则体系,一旦命中,就直接选择命中的索引,所以要限制它的使用场景,以防选错计划。 + +目前 OceanBase 数据库根据"查询条件是否能覆盖所有索引键"和"使用该索引是否需要回表"这两个信息,将前置规则按照优先级划分成如下三种匹配类型: + +* 匹配"唯一性索引全匹配+不需要回表(主键被当成唯一性索引来处理)",则选择该索引。如果存在多个这样的索引,选择索引列数最小的一个。 + + + + + + + + +* 匹配"普通索引全匹配+不需要回表",则选择该索引。如果存在多个这样的索引,选择索引列数最小的一个。 + + + +* 匹配"唯一性索引全匹配+回表+回表数量少于一定的阈值",则选择该索引。如果存在多个这样的索引,选择回表数量最小的一个。 + + + + + + +这里需要注意的是,索引全匹配是指在索引键上都存在等值条件(对应于 get 或者 multi-get)。 + +如下示例中,查询 Q1 命中了索引 uk1(唯一性索引全匹配+不需要回表);查询 Q2 命中了索引 uk2(唯一性索引全匹配+回表+回表行数最多 4 行)。 + +```javascript +obclient>CREATE TABLE test(a INT PRIMARY KEY, b INT, c INT, d INT, e INT, + UNIQUE KEY UK1(b,c), UNIQUE KEY UK2(c,d) ); +Query OK, 0 rows affected (0.38 sec) + +Q1: +obclient>SELECT b,c FROM test WHERE (b = 1 OR b = 2) AND (c = 1 OR c =2); + +Q2: +obclient>SELECT * FROM test WHERE (c = 1 OR c =2) OR (d = 1 OR d = 2); +``` + + + +Skyline 剪枝规则 +--------------------- + +Skyline 算子是学术界在 2001 年提出的一个新的数据库算子(它并不是标准的 SQL 算子)。自此之后,学术界对 Skyline 算子有大量的研究(包括语法、语义和执行等)。 + +Skyline 从字面上的理解是指天空中的一些边际点,这些点组成搜索空间中最优解的集合。例如要寻找价格最低并且路途最短的一家旅馆,想象一个二维空间,有两个维度,横轴表示价格,纵轴表示距离,二维空间上的每个点表示一个旅馆。 + +如下图所示,不论最后的选择如何,最优解肯定是在这一条天空的边际线上。假设点 A 不在 Skyline 上,那么肯定能够在 Skyline 上找到在两个维度上都比 A 更优的点 B,在这个场景中就是距离更近,价格更便宜的旅馆,称为点 B dominate A。所以 Skyline 一个重要应用场景就是用户没办法去衡量多个维度的比重,或者多个维度不能综合量化(如果可以综合量化,使用 "SQL 函数+ ORDER BY "就可以解决了)。 + +![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/1248744061/p167291.png "image") + +Skyline 操作是在给定对象集 O 中找出不被别的对象所 dominate 的对象集合。若一个对象 A 在所有维度都不被另一个对象 B 所 dominate,并且 A 至少在一个维度上 dominate B,则称 A dominate B。所以在 Skyline 操作中比较重要的是维度的选择以及在每个维度上的 dominate 的关系定义。假设有 N 个索引的路径 `` 可以供优化器选择,如果对于查询 Q,索引 idx_x 在定义的维度上 dominate 索引 idx_y,那就可以提前把索引 idx_y 剪掉,不让它参与最终代价的运算。 + +维度的定义 +-------------- + +针对 Skyline 剪枝,对每个索引(主键也是一种索引)定义了如下三个维度: + +* 是否回表 + + + +* 是否存在 intersting order + + + +* 索引前缀能否抽取 query range + + + + + + +通过如下示例进行分析: + +```javascript + obclient> CREATE TABLE skyline( + pk INT PRIMARY KEY, a INT, b INT, c INT, + KEY idx_a_b(a, b), + KEY idx_b_c(b, c), + KEY idx_c_a(c, a)); +Query OK, 0 rows affected (0.09 sec) +``` + + + +* 回表:该查询是否需要需要回查主表。 + + ```javascript + /* 走索引 idx_a_b 的话就需要回查主表,因为索引 idx_a_b 没有 c 列*/ + obclient>SELECT /*+INDEX(skyline idx_a_b)*/ * FROM skyline; + ``` + + + + + + + + +* interesting order: 考虑是否有合适的序可以利用。 + + ```javascript + /* 索引 idx_b_c 可以把 ORDER BY 语句消除*/ + obclient>SELECT pk, b FROM skyline ORDER BY b; + ``` + + + + + + + + +* 索引前缀能否抽取 query range。 + + ```javascript + /*可以看到走索引 idx_c_a 就可以快速定位到需要的行的范围,不用全表扫描*/ + obclient>SELECT pk, b FROM skyline WHERE c > 100 AND c < 2000; + ``` + + + + + + +基于这三个维度,定义了索引之间的 dominate 关系,如果索引 A 在三个维度上都不比索引 B 差,并且其中至少有一个维度比 B 好,那么就可以直接把 B 索引剪掉,因为基于索引 B 最后生成的计划肯定不会比索引 A 好。 + +* 如果索引 idx_A 不需要回表,而索引 idx_B 需要回表,那么在这个维度上索引 idx_A dominate idx_B。 + + + +* 如果在索引 idx_A上抽取出来的 intersting order 是向量 `Va`, 在索引 idx_B 上抽出来的interesting order 是向量 `Vb`, 如果 `n > m` , 并且对于`ai = bi (i=1..m`), 那么在这个维度上索引 idx_A dominate idx_B。 + + + +* 如果在索引 idx_A 能用来抽取的 query range 的列集合是 `Sa`,在索引 idx_B 上能用来抽取 query range 的列集合是 `Sb `, 如果 Sa 是 Sb 的 super set, 那么在这个维度上索引 idx_A dominate idx_B。 + + + + + + +#### **回表** + +这个维度初看比较简单,就是查询所需列是否在索引中。其中,一些案例需要特殊考虑,例如当主表和索引表都没有 interesting order 和抽取不了 query range 的情况下,直接走主表不一定是最优解。 + +```javascript +obclient>CREATE TABLE t1( + pk INT PRIMARY KEY, a INT, b INT, c INT, v1 VARCHAR(1000), + v2 VARCHAR(1000), v3 VARCHAR(1000), v4 VARCHAR(1000),INDEX idx_a_b(a, b)); +Query OK, 0 rows affected (0.09 sec) + +obclient>SELECT a, b,c FROM t1 WHERE b = 100; +``` + + + + +| **索引** | **Index Back** | **Interesting Order** | **Query Range** | +|---------|----------------|-----------------------|-----------------| +| primary | no | no | no | +| idx_a_b | yes | no | no | + + + +主表很宽,而索引表很窄,虽然从维度上主表 dominate 索引 idx_a_b,然而,索引扫描加回表的代价不一定会比主表全表扫描来的慢。简单来说,索引表可能只需要读一个宏块,而主表可能需要十个宏块。这种情况下,需要对规则做一些放宽,考虑具体的过滤条件。 + +#### **Interesting Order** + +优化器通过 Interesting Order 利用底层的序,就不需要对底层扫描的行做排序,还可以消除 ORDER BY,进行 MERGE GROUP BY,提高 Pipeline(不需要进行物化)等。 + +```javascript +obclient>CREATE TABLE skyline( + pk INT PRIMARY KEY, v1 INT, v2 INT, v3 INT, v4 INT, v5 INT, + KEY idx_v1_v3_v5(v1, v3, v5), + KEY idx_v3_v4(v3, v4)); +Query OK, 0 rows affected (0.10 sec) + +obclient>CREATE TABLE tmp (c1 INT PRIMARY KEY, c2 INT, c3 INT); +Query OK, 0 rows affected (0.06 sec) + +obclient>(SELECT DISTINCT v1, v3 FROM skyline JOIN tmp WHERE skyline.v1 = tmp.c1 + ORDER BY v1, v3) UNION (SELECT c1, c2 FROM tmp); +``` + + + + + +![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/1248744061/p167292.png "image") + +从执行计划可以看到,ORDER BY 被消除了,同时使用了 MERGE DISTINCT,UNION 也没有做 SORT。可以看到,从底层 TABLE SCAN 吐出来的序,可以被上层的算子使用。换句话说,保留 idx_v1_v3_v5 吐出来的行的顺序,可以让后面的算子在保序的情况下执行更优的操作。优化器在识别这些序的情况下,才能生成更优的执行计划。 + +所以 Skyline 剪枝对 interesting order 的判断,需要充分考虑各个索引能够最大利用的序。例如上述最大的序其实是 `v1,v3` 而不仅仅是 v1,它从 MERGE JOIN 吐出来的序(v1, v3) 可以到 MERGE DISINCT 算子, 再到最后的 UNISON DISTINCT 算子。 + +#### **Query Range** + +Query range 的抽取可以方便底层直接根据抽取出来的 range 定位到具体的宏块,而从减少存储层的 IO。 + +例如 `SELECT * FROM t1 WHERE pk < 100 AND pk > 0 `就可以直接根据一级索引的信息定位到具体的宏块,加速查询,越精确的 query range 能够让数据库扫描更少的行。 + +```javascript +obclient> CREATE TABLE t1 ( + pk INT PRIMARY KEY, a INT, b INT,c INT, + KEY idx_b_c(b, c), + KEY idx_a_b(a, b)); +Query OK, 0 rows affected (0.12 sec) + +obclient>SELECT b FROM t1 WHERE a = 100 AND b > 2000; +``` + + + +对于索引 idx_b_c 它能抽出 query range 的索引前缀是 (b),对于索引 idx_a_b 它能抽出 query range 的索引前缀是 (a, b),所以在这个维度上,索引 idx_a_b dominate idx_b_c。 + +综合举例 +------------- + +```javascript +obclient>CREATE TABLE skyline( + pk INT PRIMARY KEY, v1 INT, v2 INT, v3 INT, v4 INT, v5 INT, + KEY idx_v1_v3_v5(v1, v3, v5), + KEY idx_v3_v4(v3, v4)); +Query OK, 0 rows affected (0.10 sec) + +obclient>CREATE TABLE tmp (c1 INT PRIMARY KEY, c2 INT, c3 INT); +Query OK, 0 rows affected (0.06 sec) + +obclient>SELECT MAX(v5) FROM skyline WHERE v1 = 100 AND v3 > 200 GROUP BY v1; +``` + + + + +| **索引** | **Index Back** | **Interesting order** | **Query range** | +|--------------|----------------|-----------------------|-----------------| +| primary | Not need | No | No | +| idx_v1_v3_v5 | Not need | (v1) | (v1, v3) | +| idx_v3_v4 | Need | No | (v3) | + + + +可以看到索引 idx_v1_v3_v5 在三个维度上都不比主键索引或索引 idx_v3_v4 差。所以在规则系统下,会直接剪掉主键索引和索引 idx_v3_v4。维度的合理定义,决定了 Skyline 剪枝是否合理。错误的维度,将会导致该索引提前被剪掉,从而导致永远生成不了最优的计划。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/3.cost-based-path-selection-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/3.cost-based-path-selection-3.md new file mode 100644 index 000000000..8739470ff --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/3.cost-based-path-selection-3.md @@ -0,0 +1,114 @@ +基于代价的路径选择 +============================== + +在基于规则的路径选择之后,如果存在多个可以选择的路径,那么 OceanBase 数据库会计算每个路径的代价,并从中选择代价最小的路径作为最终选择的路径。 + +OceanBase 数据库的代价模型考虑了 CPU 代价(比如处理一个谓词的 CPU 开销)和 IO 代价(比如顺序、随机读取宏块和微块的代价),CPU 代价和 IO 代价最终相加得到一个总的代价。 + +在 OceanBase 数据库中,每个访问路径的代价会在执行计划中都会展示出来。如下例所示: + +```javascript +obclient>CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT, INDEX k1(b)); +Query OK, 0 rows affected (0.35 sec) + +/*主表路径的代价*/ +obclient>EXPLAIN SELECT/*+INDEX(t1 PRIMARY)*/ * FROM t1 WHERE b < 10; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| =================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |200 |622 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.b < 10]), + access([t1.b], [t1.a], [t1.c]), partitions(p0) + +/* k1 路径的代价*/ +obclient> EXPLAIN SELECT/*+INDEX(t1 k1)*/ * FROM t1 WHERE b < 10; ++--------------------------------------------------------------------+ +| Query Plan | ++--------------------------------------------------------------------+ +| ===================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------- +|0 |TABLE SCAN|t1(k1)|200 |1114| +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.b], [t1.a], [t1.c]), partitions(p0) +``` + + + +对于一个访问路径,它的代价主要由扫描访问路径的代价和回表的代价两部分组成。如果一个访问路径不需要回表,那么就没有回表的代价。 + +在 OceanBase 数据库中,访问路径的代价取决于很多因素,比如扫描的行数、回表的行数、投影的列数和谓词的个数等。但是对于访问路径来说,代价在很大程度上取决于行数,所以在下面的示例分析中,从行数这个维度来介绍这两部分的代价。 + +* 扫描访问路径的代价 + + 扫描访问路径的代价跟扫描的行数成正比,理论上来说扫描的行数越多,执行时间就会越久。对于一个访问路径,query range 决定了需要扫描的范围,从而决定了需要扫描的行数。Query range 的扫描是顺序 IO。 + + +* 回表的代价 + + 回表的代价跟回表的行数也也是正相关的,回表的行数越多(回表的行数是指满足所有能在索引上执行的谓词的行数),执行时间就会越长。回表的扫描是随机 IO,所以回表一行的代价会比 query range 扫描一行的代价高很多。 + + + + + +当分析一个访问路径的性能的时候,可以从上面两个因素入手,获取通过 query range 扫描的行数以及回表的行数。这两个行数通常可以通过执行 SQL 语句来获取。 + +如下例所示,对于查询 `SELECT * FROM t1 WHERE c2 > 20 AND c2 < 800 AND c3 < 200`,索引 k1 的访问路径是,首先通常计划展示来获取用来抽取 query range 的谓词,谓词 `c2 > 20 AND c2 < 800` 用来抽取 query range,谓词 `c3 < 200` 被当成回表前的谓词。那么可以使用如下两个查询来检查 query range 抽取的行数以及回表之后的行数。 + +```javascript +obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT, c3 INT, c4 INT, c5 INT, INDEX k1(c2,c3)); +Query OK, 0 rows affected (0.26 sec) + +obclient>EXPLAIN EXTENDED_NOADDR SELECT/*+INDEX(t1 k1)*/ * FROM t1 WHERE + c2 > 20 AND c2 < 800 AND c3 < 200; ++--------------------------------------------------------------+ +| Query Plan | ++--------------------------------------------------------------+ +| ===================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------- +|0 |TABLE SCAN|t1(k1)|156 |1216| +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter([t1.c3 < 200]), + access([t1.c2], [t1.c3], [t1.c1], [t1.c4], [t1.c5]), partitions(p0), + is_index_back=true, filter_before_indexback[true], + range_key([t1.c2], [t1.c3], [t1.c1]), range(20,MAX,MAX ; 800,MIN,MIN), + range_cond([t1.c2 > 20], [t1.c2 < 800]) + +/*query range 扫描的行数*/ +obclient>SELECT/*+INDEX(t1 k1)*/ COUNT(*) FROM t1 WHERE c2 > 20 AND c2 < 800; ++----------+ +| count(*) | ++----------+ +| 779 | ++----------+ +1 row in set (0.02 sec) + +/* 回表的行数*/ +obclient> SELECT/*+INDEX(t1 k1)*/ COUNT(*) FROM t1 WHERE c2 > 20 AND c2 < 800 + AND c3 < 200; ++----------+ +| count(*) | ++----------+ +| 179 | ++----------+ +1 row in set (0.01 sec) +``` + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/1.overview-17.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/1.overview-17.md new file mode 100644 index 000000000..f7aa5684d --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/1.overview-17.md @@ -0,0 +1,13 @@ +概述 +======================= + + + +数据库中的联接语句用于将数据库中的两个或多个表根据联接条件,把表的属性通过它们的值组合在一起。由"联接"生成的集合,可以被保存为表,或者当成表来使用。 + +不同方式的联接算法为 SQL 调优提供了更多的选择,可以使得 SQL 调优时能够根据表的数据特性选择合适的联接算法,从而让多表联接组合起来变得更加高效。 + +联接语句在数据中由联接算法实现,主要的联接算法有 NESTED LOOP JOIN、HASH JOIN 和 MERGE JOIN。由于三种算法在不同的场景下各有优劣,优化器会自动选择联接算法。关于各算法的原理,请参见 [联接算法](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/2.join-algorithm-6.md)。 + +针对联接顺序及联接算法的选择,OceanBase 数据库也提供了相关 HINT 机制进行控制,以方便用户根据自身的实际需求去选择何种联接顺序及联接算法以进行多表的联接。 + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/2.join-algorithm-6.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/2.join-algorithm-6.md new file mode 100644 index 000000000..24806db99 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/2.join-algorithm-6.md @@ -0,0 +1,446 @@ +联接算法 +========================= + +OceanBase 数据库当前版本支持 NESTED LOOP JOIN、 HASH JOIN 和 MERGE JOIN 三种不同的联接算法。 + +HASH JOIN 和 MERGE JOIN 只适用于等值的联接条件,NESTED LOOP JOIN 可用于任意的联接条件。 + +NESTED LOOP JOIN +------------------------- + +NESTED LOOP JOIN 就是扫描一个表(外表),每读到该表中的一条记录,就去"扫描"另一张表(内表)找到满足条件的数据。 + +这里的"扫描"可以是利用索引快速定位扫描,也可以是全表扫描。通常来说,全表扫描的性能是很差的,所以如果联接条件的列上没有索引,优化器一般就不会选择 NESTED LOOP JOIN。在 OceanBase 数据库中,执行计划中展示了是否能够利用索引快速定位扫描。 + +如下例所示,第一个计划对于内表的扫描是全表扫描,因为联接条件是 `t1.c = t2.c`,而 t2 没有在 c 上面的索引。第二个计划对于内表的扫描能够使用索引快速找到匹配的行,主要原因是联接条件为 `t1.b = t2.b`,而且 t2 选择了创建在 b 列上的索引 k1 作为访问路径,这样对于 t1 中的每一行的每个 b 值,t2 都可以根据索引快速找到满足条件的匹配行。 + +```javascript +obclient>CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT, KEY k1(b)); +Query OK, 0 rows affected (0.24 sec) + +obclient>>CREATE TABLE t2(a INT PRIMARY KEY, b INT, c INT, KEY k1(b)); +Query OK, 0 rows affected (0.29 sec) + +obclient> EXPLAIN EXTENDED_NOADDR SELECT/*+USE_NL(t1 t2)*/ * FROM t1, t2 + WHERE t1.c = t2.c; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| =========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |NESTED-LOOP JOIN| |1980 |623742| +|1 | TABLE SCAN |t1 |1000 |455 | +|2 | TABLE SCAN |t2 |2 |622 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_([t1.c]) + 1 - output([t1.c], [t1.a], [t1.b]), filter(nil), + access([t1.c], [t1.a], [t1.b]), partitions(p0), + is_index_back=false, + range_key([t1.a]), range(MIN ; MAX)always true + 2 - output([t2.c], [t2.a], [t2.b]), filter([? = t2.c]), + access([t2.c], [t2.a], [t2.b]), partitions(p0), + is_index_back=false, filter_before_indexback[false], + range_key([t2.a]), range(MIN ; MAX) + +obclient> EXPLAIN EXTENDED_NOADDR SELECT/*+USE_NL(t1 t2)*/ * FROM t1, t2 + WHERE t1.b = t2.b; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| ============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------- +|0 |NESTED-LOOP JOIN| |1980 |94876| +|1 | TABLE SCAN |t1 |1000 |455 | +|2 | TABLE SCAN |t2(k1)|2 |94 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_([t1.b]) + 1 - output([t1.b], [t1.a], [t1.c]), filter(nil), + access([t1.b], [t1.a], [t1.c]), partitions(p0), + is_index_back=false, + range_key([t1.a]), range(MIN ; MAX)always true + 2 - output([t2.b], [t2.a], [t2.c]), filter(nil), + access([t2.b], [t2.a], [t2.c]), partitions(p0), + is_index_back=true, + range_key([t2.b], [t2.a]), range(MIN ; MAX), + range_cond([? = t2.b]) +``` + + + +NESTED LOOP JOIN 可能会对内表进行多次全表扫描,因为每次扫描都需要从存储层重新迭代一次,这个代价相对是比较高的,所以 OceanBase 数据库支持对内表进行一次扫描并把结果物化在内存中,这样在下一次执行扫描时就可以直接在内存中扫描相关的数据,而不需要从存储层进行多次扫描。但是物化在内存中是有代价的,所以 OceanBase 数据库的优化器基于代价去判断是否需要物化内表。 + +NESTED LOOP JOIN 的一个优化变种是 BLOCKED NESTED LOOP JOIN,它每次从外表中读取一个 block 大小的行,然后再去扫描内表找到满足条件的数据,这样可以减少内表的读取次数。 + +NESTED LOOP JOIN 通常用在内表行数比较少,而且外表在联接条件的列上有索引的场景,因为内表中的每一行都可以快速的使用索引定位到相对应的匹配的数据。 + +同时,OceanBase 数据库也提供了 HINT 机制 `/*+ USE_NL(table_name_list) */` 去控制多表联接的时候选择 NESTED LOOP JOIN。例如下述场景联接算法选择的是 HASH JOIN,而用户希望使用 NESTED LOOP JOIN,就可以使用上述 HINT 进行控制。 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.97 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT); +Query OK, 0 rows affected (0.29 sec) + +obclient>EXPLAIN SELECT * FROM t1,t2 WHERE t1.c1 = t2.c1; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| ======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |HASH JOIN | |98010000 |66774608| +|1 | TABLE SCAN|T1 |100000 |68478 | +|2 | TABLE SCAN|T2 |100000 |68478 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2]), filter(nil), + equal_conds([T1.C1 = T2.C1]), other_conds(nil) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 2 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p0) + +obclient>EXPLAIN SELECT /*+USE_NL(t1, c2)*/* FROM t1, t2 WHERE t1.c1 = t2.c1; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| =============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------- +|0 |NESTED-LOOP JOIN| |98010000 |4595346207| +|1 | TABLE SCAN |T1 |100000 |68478 | +|2 | MATERIAL | |100000 |243044 | +|3 | TABLE SCAN |T2 |100000 |68478 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2]), filter(nil), + conds([T1.C1 = T2.C1]), nl_params_(nil) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 2 - output([T2.C1], [T2.C2]), filter(nil) + 3 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p0) +``` + + + +NESTED LOOP JOIN 还有以下两种实现的算法: + +* 缓存块嵌套循环联接(BLOCKED NESTED LOOP JOIN) + + BLOCKED NESTED LOOP JOIN 在 OceanBase 数据库中的实现方式是 BATCH NESTED LOOP JOIN,通过从外表中批量读取数据行(默认是 1000 行),然后再去扫描内表找到满足条件的数据。这样将批量的数据与内层表的数据进行匹配,减少了内表的读取次数和内层循环的次数。 + + 如下示例中,`batch_join=true` 字段表示本次查询使用了 BATCH NESTED LOOP JOIN。 + + ```javascript + obclient>CREATE TABLE t1(c1 INT PRIMARY KEY); + Query OK, 0 rows affected (0.97 sec) + + obclient>CREATE TABLE t2(c1 INT PRIMARY KEY); + Query OK, 0 rows affected (0.97 sec) + + obclient>EXPLAIN EXTENDED_NOADDR SELECT /*+USE_NL(t1,t2)*/* FROM t1,t2 + WHERE t1.c1=t2.c1\G; + *************************** 1. row *************************** + Query Plan: + ============================================ + |ID|OPERATOR |NAME|EST. ROWS|COST | + -------------------------------------------- + |0 |NESTED-LOOP JOIN| |100001 |3728786| + |1 | TABLE SCAN |t1 |100000 |59654 | + |2 | TABLE GET |t2 |1 |36 | + ============================================ + + Outputs & filters: + ------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]), inner_get=false, self_join=false, batch_join=true + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + is_index_back=false, + range_key([t1.c1]), range(MIN ; MAX)always true + 2 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0), + is_index_back=false, + range_key([t2.c1]), range(MIN ; MAX), + range_cond([? = t2.c1]) + ``` + + + + + + + + +* 索引嵌套循环联接(INDEX NESTED LOOP JOIN) + + INDEX NESTED LOOP JOIN 是基于索引进行联接的算法,通过外层表匹配条件直接与内层表索引进行匹配,避免和内层表的每条记录进行比较,减少了对内层表的匹配次数。 + + 如下示例中存在联接条件 `t1.c1 = t2.c1`,则在 t2 表的 c1 列上有索引或 t1 表的 c1 列上有索引的时候,会使用 INDEX NESTED LOOP JOIN。 + + ```javascript + obclient>CREATE TABLE t1(c1 INT PRIMARY KEY); + Query OK, 0 rows affected (0.97 sec) + + obclient>CREATE TABLE t2(c1 INT ,c2 INT); + Query OK, 0 rows affected (0.97 sec) + + obclient>EXPLAIN SELECT /*+ORDERED USE_NL(t2,t1)*/ * FROM t2, + (SELECT /*+NO_MERGE*/ * FROM t1)t1 + WHERE t1.c1 = t2.c1 AND t2.c2 = 1\G; + *************************** 1. row *************************** + Query Plan: + =========================================== + |ID|OPERATOR |NAME|EST. ROWS|COST | + ------------------------------------------- + |0 |NESTED-LOOP JOIN| |981 |117272| + |1 | TABLE SCAN |t2 |990 |80811 | + |2 | SUBPLAN SCAN |t1 |1 |37 | + |3 | TABLE GET |t1 |1 |36 | + =========================================== + Outputs & filters: + ------------------------------------- + 0 - output([t2.c1], [t2.c2], [t1.c1]), filter(nil), conds(nil), nl_params_([t2.c1]) + 1 - output([t2.c1], [t2.c2]), filter([t2.c2 = 1]), access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1]), filter(nil), access([t1.c1]) + 3 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p0) + ``` + + + + 在 outputs \& filters 的输出结果中 `nl_param` 出现参数 `[t2.c1]`,说明执行了条件下压优化。详细信息请参考 [JOIN](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/2.execution-plan-operator-2/3.JOIN-1-2.md)。 + + 一般地,在进行查询优化时,OceanBase 数据库优化器会优先选择 INDEX NESTED LOOP JOIN,然后检查是否可以使用 BATCH NESTED LOOP JOIN,这两种优化方式可以一起使用,最后才会选择 NESTED LOOP JOIN。 + + + + + +MERGE JOIN +------------------- + +MERGE JOIN 首先会按照联接的字段对两个表进行排序(如果内存空间不够,就需要进行外排),然后开始扫描两张表进行合并。 + +合并的过程会从每个表取一条记录开始匹配,如果符合关联条件,则放入结果集中;否则,将关联字段值较小的记录抛弃,从这条记录对应的表中取下一条记录继续进行匹配,直到整个循环结束。 + +在多对多的两张表上进行合并时,通常需要使用临时空间进行操作。例如 A JOIN B 使用 MERGE JOIN 时,如果对于关联字段的某一组值,在 A 和 B 中都存在多条记录 A1、A2...An 和 B1、B2...Bn,则为 A 中每一条记录 A1、A2...An,都必须对 B 中对所有相等的记录 B1、B2...Bn 进行一次匹配。这样,指针需要多次从 B1 移动到 Bn,每一次都需要读取相应的 B1...Bn 记录。将 B1...Bn 的记录预先读出来放入内存临时表中,比从原数据页或磁盘读取要快。在一些场景中,如果联接字段上有可用的索引,并且排序一致,那么可以直接跳过排序操作。 + +通常来说,MERGE JOIN 比较适合两个输入表已经有序的情况,否则 HASH JOIN 会更加好。如下示例,展示了两个 MERGE JOIN 的计划,其中第一个是需要排序的,第二个是不需要排序的(因为两个表都选择了 k1 这两个索引访问路径,这两个索引本身就是按照 b 排序的)。 + +```javascript +obclient> CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT, KEY k1(b)); +Query OK, 0 rows affected (0.24 sec) + +obclient> CREATE TABLE t2(a INT PRIMARY KEY, b INT, c INT, KEY k1(b)); +Query OK, 0 rows affected (0.29 sec) + +obclient> EXPLAIN SELECT/*+USE_MERGE(t1 t2)*/ * FROM t1, t2 WHERE t1.c = t2.c; +*************************** 1. row *************************** +Query Plan: +| ===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |1980 |6011| +|1 | SORT | |1000 |2198| +|2 | TABLE SCAN|t1 |1000 |455 | +|3 | SORT | |1000 |2198| +|4 | TABLE SCAN|t2 |1000 |455 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + equal_conds([t1.c = t2.c]), other_conds(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.c, ASC]) + 2 - output([t1.c], [t1.a], [t1.b]), filter(nil), + access([t1.c], [t1.a], [t1.b]), partitions(p0) + 3 - output([t2.a], [t2.b], [t2.c]), filter(nil), sort_keys([t2.c, ASC]) + 4 - output([t2.c], [t2.a], [t2.b]), filter(nil), + access([t2.c], [t2.a], [t2.b]), partitions(p0) + + +obclient>EXPLAIN SELECT/*+USE_MERGE(t1 t2),INDEX(t1 k1),INDEX(t2 k1)*/ * + FROM t1, t2 WHERE t1.b = t2.b; +*************************** 1. row *************************** +Query Plan: +| ======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------- +|0 |MERGE JOIN | |1980 |12748| +|1 | TABLE SCAN|t1(k1)|1000 |5566 | +|2 | TABLE SCAN|t2(k1)|1000 |5566 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + equal_conds([t1.b = t2.b]), other_conds(nil) + 1 - output([t1.b], [t1.a], [t1.c]), filter(nil), + access([t1.b], [t1.a], [t1.c]), partitions(p0) + 2 - output([t2.b], [t2.a], [t2.c]), filter(nil), + access([t2.b], [t2.a], [t2.c]), partitions(p0) +``` + + + +同时,OceanBase 数据库也提供了 HINT 机制 `/*+ USE_MERGE(table_name_list) */` 去控制多表联接的时候选择 MERGE JOIN 联接算法。例如下述场景中联接算法选择的是 HASH JOIN,而用户希望使用 MERGE JOIN,则可以使用上述 HINT 进行控制。 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT); +Query OK, 0 rows affected (0.97 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT); +Query OK, 0 rows affected (0.29 sec) + +obclient>EXPLAIN SELECT * FROM t1,t2 WHERE t1.c1 = t2.c1; +*************************** 1. row *************************** +Query Plan: +| ======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |HASH JOIN | |98010000 |66774608| +|1 | TABLE SCAN|T1 |100000 |68478 | +|2 | TABLE SCAN|T2 |100000 |68478 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2]), filter(nil), + equal_conds([T1.C1 = T2.C1]), other_conds(nil) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 2 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p0) + + obclient>EXPLAIN SELECT /*+USE_MERGE(t1,t2)*/* FROM t1, t2 WHERE t1.c1 = t2.c1; +*************************** 1. row *************************** +Query Plan: + | ========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |MERGE JOIN | |98010000 |67488837| +|1 | SORT | |100000 |563680 | +|2 | TABLE SCAN|T1 |100000 |68478 | +|3 | SORT | |100000 |563680 | +|4 | TABLE SCAN|T2 |100000 |68478 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2]), filter(nil), + equal_conds([T1.C1 = T2.C1]), other_conds(nil) + 1 - output([T1.C1], [T1.C2]), filter(nil), sort_keys([T1.C1, ASC]) + 2 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 3 - output([T2.C1], [T2.C2]), filter(nil), sort_keys([T2.C1, ASC]) + 4 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p0) +``` + + + +HASH JOIN +------------------ + +HASH JOIN 就是用两个表中相对较小的表(通常称为 build table)根据联接条件创建 hash table,然后逐行扫描较大的表(通常称为 probe table)并通过探测 hash table 找到匹配的行。 如果 build table 非常大,构建的 hash table 无法在内存中容纳时,Oceanbase 数据库会分别将 build table 和 probe table 按照联接条件切分成多个分区(partition),每个 partition 都包括一个独立的、成对匹配的 build table 和 probe table,这样就将一个大的 HASH JOIN 切分成多个独立、互相不影响的 HASH JOIN,每一个分区的 HASH JOIN 都能够在内存中完成。在绝大多数情况下,HASH JOIN 效率比其他 JOIN 方式效率更高。 + +如下是 HASH JOIN 计划的示例。 + +```javascript +obclient> CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT, KEY k1(b)); +Query OK, 0 rows affected (0.24 sec) + +obclient>CREATE TABLE t2(a INT PRIMARY KEY, b INT, c INT, KEY k1(b)); +Query OK, 0 rows affected (0.29 sec) + +obclient> EXPLAIN SELECT/*+USE_HASH(t1 t2)*/ * FROM t1, t2 WHERE t1.c = t2.c; +*************************** 1. row *************************** +Query Plan: +| ==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |1980 |4093| +|1 | TABLE SCAN|t1 |1000 |455 | +|2 | TABLE SCAN|t2 |1000 |455 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + equal_conds([t1.c = t2.c]), other_conds(nil) + 1 - output([t1.c], [t1.a], [t1.b]), filter(nil), + access([t1.c], [t1.a], [t1.b]), partitions(p0) + 2 - output([t2.c], [t2.a], [t2.b]), filter(nil), + access([t2.c], [t2.a], [t2.b]), partitions(p0) +``` + + + +同时,OcenaBase 数据库也提供了 HINT 机制 `/*+ USE_HASH(table_name_list) */` 去控制多表联接的时候选择 HASH JOIN 联接算法。例如下述场景中联接算法选择的是 MERGE JOIN,而用户希望使用 HASH JOIN,则可以使用上述 HINT 进行控制。 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT, PRIMARY KEY(c1)); +Query OK, 0 rows affected (0.31 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT, PRIMARY KEY(c1)); +Query OK, 0 rows affected (0.33 sec) + +obclient>EXPLAIN SELECT * FROM t1, t2 WHERE t1.c1 = t2.c1; +*************************** 1. row *************************** +Query Plan: +| ====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------- +|0 |MERGE JOIN | |100001 |219005| +|1 | TABLE SCAN|T1 |100000 |61860 | +|2 | TABLE SCAN|T2 |100000 |61860 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2]), filter(nil), + equal_conds([T1.C1 = T2.C1]), other_conds(nil) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 2 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p0) + +obclient>EXPLAIN SELECT /*+USE_HASH(t1, t2)*/ * FROM t1, t2 WHERE t1.c1 = t2.c1; +*************************** 1. row *************************** +Query Plan: + | ====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------- +|0 |HASH JOIN | |100001 |495180| +|1 | TABLE SCAN|T1 |100000 |61860 | +|2 | TABLE SCAN|T2 |100000 |61860 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2]), filter(nil), + equal_conds([T1.C1 = T2.C1]), other_conds(nil) + 1 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 2 - output([T2.C1], [T2.C2]), filter(nil), + access([T2.C1], [T2.C2]), partitions(p0) +``` + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/3.join-order-3.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/3.join-order-3.md new file mode 100644 index 000000000..32c4a42ef --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/3.join-order-3.md @@ -0,0 +1,127 @@ +联接顺序 +========================= + + + +在多表联接的场景中,优化器的一个很重要的任务是决定各个表之间的联接顺序(Join Order),因为不同的联接顺序会影响中间结果集的大小,进而影响到计划整体的执行代价。 + +为了减少执行计划的搜索空间和计划执行的内存占用,OceanBase 数据库优化器在生成联接顺序时主要考虑左深树的联接形式。下图展示了左深树、右深树和多支树的计划形状。 + +![数](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9765994061/p180085.jpg) + +OceanBase 数据库联接顺序的生成采用了 System-R 的动态规划算法,考虑的因素包括每一个表可能的访问路径、Interesting Order、联接算法(NESTED-LOOP、BLOCK-BASED NESTED-LOOP 或者 SORT-MERGE 等)以及不同表之间的联接选择率等。 + +给定 N 个表的联接,OceanBase 数据库生成联接顺序的方法如下: + +1. 为每一个基表生成访问路径,保留代价最小的访问路径以及有所有有 Interesting Order 的路径。一个路径 如果具有 Interesting Order,它的序能够被后续的算子使用。 + + + +2. 生成所有表集合的大小为 `i (1 < i <= N)` 的计划。 OceanBase 数据库一般只考虑左深树,表集合大小为 i 的计划可以由一个表集合大小为 i 的计划和一个基表的计划组成。OceanBase 数据库按照这种策略,考虑了所有的联接算法以及 Interesting Order 的继承等因素把所有表集合大小为 i 的计划生成。这里也只是保留代价最小的计划以及所有具有 Interesting Order 的计划。 + + + + + + +同时,OceanBase 数据库提供了 HINT 机制 `/*+LEADING(table_name_list)*/`去控制多表联接的顺序。 + +如下例所示,开始选择的联接顺序是先做 t1、t2 的 JOIN 联接,然后再和 t3 做 JOIN 联接;如果用户希望先做 t2、t3 的 JOIN 联接,然后再和 t1做 JOIN 联接,则可以使用 HINT `/*+LEADING(t2,t3,t1)*/`去控制;如果用户希望先做 t1、t3 的 JOIN 联接,然后再和 t2 做 JOIN 联接,则可以使用 HINT `/*+LEADING(t1,t3,t2)*/`去控制。 + +```javascript +obclient>CREATE TABLE t1(c1 INT, c2 INT, PRIMARY KEY(c1)); +Query OK, 0 rows affected (0.31 sec) + +obclient>CREATE TABLE t2(c1 INT, c2 INT, PRIMARY KEY(c1)); +Query OK, 0 rows affected (0.33 sec) + +obclient>CREATE TABLE t3(c1 INT, c2 INT, PRIMARY KEY(c1)); +Query OK, 0 rows affected (0.44 sec) + +obclient>EXPLAIN SELECT * FROM t1,t2,t3 WHERE t1.c1 = t2.c2 AND t2.c1 = t3.c2; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| ======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |HASH JOIN | |98010 |926122| +|1 | TABLE SCAN |T3 |100000 |61860 | +|2 | HASH JOIN | |99000 |494503| +|3 | TABLE SCAN|T1 |100000 |61860 | +|4 | TABLE SCAN|T2 |100000 |61860 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2], [T3.C1], [T3.C2]), filter(nil), + equal_conds([T2.C1 = T3.C2]), other_conds(nil) + 1 - output([T3.C2], [T3.C1]), filter(nil), + access([T3.C2], [T3.C1]), partitions(p0) + 2 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2]), filter(nil), + equal_conds([T1.C1 = T2.C2]), other_conds(nil) + 3 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 4 - output([T2.C2], [T2.C1]), filter(nil), + access([T2.C2], [T2.C1]), partitions(p0) + +obclient>EXPLAIN SELECT /*+LEADING(t2,t3,t1)*/* FROM t1,t2,t3 WHERE t1.c1 = t2.c2 + AND t2.c1 = t3.c2; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| ======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |HASH JOIN | |98010 |1096613| +|1 | HASH JOIN | |99000 |494503 | +|2 | TABLE SCAN|T2 |100000 |61860 | +|3 | TABLE SCAN|T3 |100000 |61860 | +|4 | TABLE SCAN |T1 |100000 |61860 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2], [T3.C1], [T3.C2]), filter(nil), + equal_conds([T1.C1 = T2.C2]), other_conds(nil) + 1 - output([T2.C1], [T2.C2], [T3.C1], [T3.C2]), filter(nil), + equal_conds([T2.C1 = T3.C2]), other_conds(nil) + 2 - output([T2.C2], [T2.C1]), filter(nil), + access([T2.C2], [T2.C1]), partitions(p0) + 3 - output([T3.C2], [T3.C1]), filter(nil), + access([T3.C2], [T3.C1]), partitions(p0) + 4 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + +obclient>EXPLAIN SELECT /*+LEADING(t1,t3,t2)*/* FROM t1,t2,t3 WHERE t1.c1 = t2.c2 + AND t2.c1 = t3.c2; ++-----------------------------------------------------------------+ +| Query Plan | ++-----------------------------------------------------------------+ +| ============================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------- +|0 |HASH JOIN | |98010 |53098071243| +|1 | NESTED-LOOP JOIN CARTESIAN| |10000000000|7964490204 | +|2 | TABLE SCAN |T1 |100000 |61860 | +|3 | MATERIAL | |100000 |236426 | +|4 | TABLE SCAN |T3 |100000 |61860 | +|5 | TABLE SCAN |T2 |100000 |61860 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T1.C1], [T1.C2], [T2.C1], [T2.C2], [T3.C1], [T3.C2]), filter(nil), + equal_conds([T1.C1 = T2.C2], [T2.C1 = T3.C2]), other_conds(nil) + 1 - output([T1.C1], [T1.C2], [T3.C1], [T3.C2]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([T1.C1], [T1.C2]), filter(nil), + access([T1.C1], [T1.C2]), partitions(p0) + 3 - output([T3.C1], [T3.C2]), filter(nil) + 4 - output([T3.C2], [T3.C1]), filter(nil), + access([T3.C2], [T3.C1]), partitions(p0) + 5 - output([T2.C2], [T2.C1]), filter(nil), + access([T2.C2], [T2.C1]), partitions(p0) +``` + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/1.optimizer-hint-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/1.optimizer-hint-1.md new file mode 100644 index 000000000..ee9fdcde7 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/1.optimizer-hint-1.md @@ -0,0 +1,461 @@ +Optimizer Hint +=================================== + +HINT 机制可以使优化器生成某种特定的计划。 + +一般情况下,优化器会为用户查询选择最佳的执行计划,不需要用户使用 HINT 指定,但在某些场景下,优化器生成的执行计划可能不满足用户的要求,这时就需要用户使用 HINT 来指定生成某种执行计划。 + +HINT 语法 +---------------- + +HINT 从语法上看是一种特殊的 SQL 注释,所不同的是在注释的左标记后('/\*' 符号)增加了一个"+"。 既然是注释,如果服务器端无法识别 SQL 语句中的 HINT,优化器会选择忽略用户 HINT 而使用默认的计划生成逻辑结构。另外,HINT 只影响优化器生成计划的逻辑结构,而不影响 SQL 语句的语义。 + +```javascript +{DELETE|INSERT|SELECT|UPDATE|REPLACE} /*+ [hint_text] [hin_text]... */ +** +``` + + + + +**注意** + + + +如果使用 MySQL 的 C 客户端执行带 HINT 的 SQL 语句,需要使用 -c 选项登陆,否则 MySQL 客户端会将 HINT 作为注释从用户 SQL 中去除,导致系统无法收到用户 HINT。 + +#### **HINT 参数** + +HINT 相关参数名称、语义和语法如下表: + + +| **名称** | **语法** | **语义** | +|-----------------------------|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| +| NO_REWRITE | NO_REWRITE | 禁止 SQL 改写。 | +| READ_CONSISTENCY | READ_CONSISTENCY (WEAK\[STRONGFROZEN\]) | 读一致性设置(弱/强)。 | +| INDEX_HINT | /\*+ INDEX(table_name index_name) \*/ | 设置表索引。 | +| QUERY_TIMEOUT | QUERY_TIMEOUT(INTNUM) | 设置超时时间。 | +| LOG_LEVEL | LOG_LEVEL(\['\]log_level\['\]) | 设置日志级别,当设置模块级别语句时候,以第一个单引号(')作为开始,第二个单引号(')作为结束;例如'DEBUG'。 | +| LEADING | LEADING(\[qb_name\] TBL_NAME_LIST) | 设置联接顺序。 | +| ORDERED | ORDERED | 设置按照 SQL 中的顺序进行联接。 | +| FULL | FULL(\[qb_name\] TBL_NAME) | 设置表访问路径为主表等价于 INDEX(TBL_NAME PRIMARY)。 | +| USE_PLAN_CACHE | USE_PLAN_CACHE(NONE\[DEFAULT\]) | 设置是否使用计划缓存: * NONE:表示不使用计划缓存 * DEFAULT:表示按照其他变量进行设置 | +| ACTIVATE_BURIED_POINT | ACTIVATE_BURIED_POINT(INTNUM, \[FIX_MOD \| BEFORE_MODE\], INTNUM, \[INTNUM \| -INTNUM\]) | 调试用,触发内部设定的错误点。 | +| USE_MERGE | USE_MERGE(\[qb_name\] TBL_NAME_LIST) | 设置指定表在作为右表的时候使用 MERGE JOIN。 | +| USE_HASH | USE_HASH(\[qb_name\] TBL_NAME_LIST) | 设置指定表在作为右表的时候使用 HASH JOIN。 | +| NO_USE_HASH | NO_USE_HASH(\[qb_name\] TBL_NAME_LIST) | 设置指定表在作为右表的时候不使用 HASH JOIN。 | +| USE_NL | USE_NL(\[qb_name\] TBL_NAME_LIST) | 设置指定表在作为右表的时候使用 NESTED LOOP JOIN。 | +| USE_BNL | USE_BNL(\[qb_name\] TBL_NAME_LIST) | 设置指定表在作为右表的时候使用 NESTED LOOP BLOCK JOIN | +| USE_HASH_AGGREGATION | USE_HASH_AGGREGATION(\[qb_name\]) | 设置 aggregate 方法为使用 HASH AGGREGATE。例如 HASH GROUP BY 或者 HASH DISTINCT。 | +| NO_USE_HASH_AGGREGATION | NO_USE_HASH_AGGREGATION(\[qb_name\]) | 设置 aggregate 方法不使用 HASH AGGREGATE,使用 MERGE GROUP BY 或者MERGE DISTINCT。 | +| USE_LATE_MATERIALIZATION | USE_LATE_MATERIALIZATION | 设置使用晚期物化。 | +| NO_USE_LATE_MATERIALIZATION | NO_USE_LATE_MATERIALIZATION | 设置不使用晚期物化。 | +| TRACE_LOG | TRACE_LOG | 设置收集 trace 记录用于 SHOW TRACE 展示。 | +| QB_NAME | QB_NAME( NAME ) | 设置 query block 的名称。 | +| PARALLEL | PARALLEL(INTNUM) | 设置分布式执行并行度。 | +| TOPK | TOPK(PRECISION MINIMUM_ROWS) | 设置模糊查询的精度和最小行数。其中 PRECSION 为整型,取值范围\[0, 100\],表示模糊查询的行数百分比;MINIMUM_ROWS 为最小返回行数。 | + + +**说明** + + + +* qb_name 语法是: `@NAME` + + + +* TBL_NAME 语法是: `[db_name.]relation_name [qb_name]` + + + + + + +QB_NAME 介绍 +------------------- + +在 DML 语句中,每一个 query_block 都会有一个 QB_NAME(query block name),可以用户指定,也可以系统自动生成。在用户没有用 HINT 指定的 QB_NAME 的时候,系统会按照 SEL$1、SEL$2,UPD$1,DEL$1 方式从左到右(实际也是 Resolver 的解析顺序)依次生成。 + +通过 QB_NAME 可以精确定位每一个 table,也可以在一处地方指定任意 query block 的行为。在 TBL_NAME 中的 QB_NAME 用于定位 table,在 HINT 中最前面的 qb_name 用于定位 HINT 作用于哪一个 query_block。 + +如下例所示,按照默认规则,会为 SEL$1 中的 t 选择 t_c1 路径,为 SEL$2 中的 t 选择 PRIMARY(主表)访问。如果 SQL 通过 HINT 来指定 SEL$1 的 t 走主表,则 SEL$2 的 t 走索引。 + +```javascript +obclient>CREATE TABLE t(c1 INT, c2 INT, KEY t_c1(c1)); +Query OK, 0 rows affected (0.31 sec) + +obclient>EXPLAIN SELECT * FROM t , (SELECT * FROM t WHERE c2 = 1) ta + WHERE t.c1 = 1\G; +*************************** 1. row *************************** +Query Plan: +============================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------ +|0 |NESTED-LOOP INNER JOIN CARTESIAN| |1 |1895| +|1 | TABLE SCAN |t(t_c1)|1 |472 | +|2 | TABLE SCAN |t |1 |1397| +============================================================ +Outputs & filters: +------------------------------------- + 0 - output([t.c1], [t.c2], [t.c1], [t.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t.c1], [t.c2]), filter(nil), + access([t.c1], [t.c2]), partitions(p0) + 2 - output([t.c2], [t.c1]), filter([t.c2 = 1]), + access([t.c2], [t.c1]), partitions(p0) +``` + + +**注意** + + + +因为改写后,SEL$2 被提升到 SEL$1 所以这里不用指定 HINT 作用的 query block。 + + + +```javascript +obclient>EXPLAIN SELECT/*+INDEX(t@SEL$1 PRIMARY) INDEX(t@SEL$2 t_c1)*/ * + FROM t , (SELECT * FROM t WHERE c2 = 1) ta WHERE t.c1 = 1\G; +*************************** 1. row *************************** +Query Plan: +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------------- +|0 |NESTED-LOOP INNER JOIN CARTESIAN| |1 |16166| +|1 | TABLE SCAN |t |1 |1397 | +|2 | TABLE SCAN |t(t_c1)|1 |14743| +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t.c1], [t.c2], [t.c1], [t.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t.c1], [t.c2]), filter([t.c1 = 1]), + access([t.c1], [t.c2]), partitions(p0) + 2 - output([t.c2], [t.c1]), filter([t.c2 = 1]), + access([t.c2], [t.c1]), partitions(p0) +``` + + + +此例中 SQL 也可以写成如下方式: + +```javascript +obclient>SELECT/*+INDEX(t@SEL$1 PRIMARY) INDEX(@SEL$2 t@SEL$2 t_c1)*/ * FROM t , + (SELECT * FROM t WHERE c2 = 1) ta WHERE t.c1 = 1\G; +<==> +obclient>SELECT/*+INDEX(t@SEL$1 PRIMARY)*/ * from t , (SELECT/*+INDEX(t@SEL$2 t_c1)*/ * from t + WHERE c2 = 1) ta WHERE t.c1 = 1\G; +<==> +obclient>SELECT/*+INDEX(@SEL$1 t@SEL$1 PRIMARY) INDEX(@SEL$2 t@SEL$2 t_c1)*/ * from t , + (SELECT * FROM t WHERE c2 = 1) ta WHERE t.c1 = 1\G; +``` + + + +对于 HINT 可以通过 `EXPLAIN EXTENDED` 查看 Outline Data 来学习。 + +```javascript +obclient>EXPLAIN EXTENDED SELECT * +FROM t , (SELECT * +FROM t WHERE c2 = 1) ta + WHERE t.c1 = 1\G; +*************************** 1. row *************************** +Query Plan: +============================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------ +|0 |NESTED-LOOP INNER JOIN CARTESIAN| |1 |1895| +|1 | TABLE SCAN |t(t_c1)|1 |472 | +|2 | TABLE SCAN |t |1 |1397| +============================================================ +Used Hint: +------------------------------------- + /*+ + */ + +Outline Data: +------------------------------------- + /*+ + BEGIN_OUTLINE_DATA + USE_NL(@"SEL$1" "test.t"@"SEL$2") + LEADING(@"SEL$1" "test.t"@"SEL$1" "test.t"@"SEL$2") + INDEX(@"SEL$1" "test.t"@"SEL$1" "t_c1") + FULL(@"SEL$2" "test.t"@"SEL$2") + END_OUTLINE_DATA + */ +``` + + + + + +HINT 一般规则 +------------------ + +* 对于没有指定 query block 的 HINT 代表作用在本 query block。如下例所示,由于 t1 在 query block 2,同时无法改写提升到 query block 1,所以 HINT 无法生效。 + + ```javascript + obclient>CREATE TABLE t1(c1 INT, c2 INT, INDEX t1_c1(c1), INDEX + t1_c2(c2)); + Query OK, 0 rows affected (0.31 sec) + + obclient>EXPLAIN SELECT/*+INDEX(t1 t1_c2)*/ * FROM t, + (SELECT * FROM t1 GROUP BY c1) ta WHERE t.c1 = 1\G; + *************************** 1. row *************************** + Query Plan: + ============================================================ + |ID|OPERATOR |NAME |EST. ROWS|COST| + ------------------------------------------------------------ + |0 |NESTED-LOOP INNER JOIN CARTESIAN| |666 |5906| + |1 | TABLE SCAN |t(t_c1)|1 |472 | + |2 | SUBPLAN SCAN |ta |666 |5120| + |3 | HASH GROUP BY | |666 |4454| + |4 | TABLE SCAN |t1 |1000 |1397| + ============================================================ + Outputs & filters: + ------------------------------------- + 0 - output([t.c1], [t.c2], [ta.c1], [ta.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t.c1], [t.c2]), filter(nil), + access([t.c1], [t.c2]), partitions(p0) + 2 - + output([ta.c1], [ta.c2]), filter(nil), + access([ta.c1], [ta.c2]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + group([t1.c1]), agg_func(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + ``` + + + + 如下例所示,SQL 可以发生改写,t1 提升到 SEL$1,则 HINT 生效。 + + ```javascript + obclient>EXPLAIN SELECT/*+INDEX(t1 t1_c2)*/ * FROM t, + (SELECT * FROM t1) ta WHERE t.c1 = 1\G; + *************************** 1. row *************************** + Query Plan: + =============================================================== + |ID|OPERATOR |NAME |EST. ROWS|COST | + --------------------------------------------------------------- + |0 |NESTED-LOOP INNER JOIN CARTESIAN| |1000 |15674| + |1 | TABLE SCAN |t(t_c1) |1 |472 | + |2 | TABLE SCAN |t1(t1_c2)|1000 |14743| + =============================================================== + Outputs & filters: + ------------------------------------- + 0 - output([t.c1], [t.c2], [t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - + output([t.c1], [t.c2]), filter(nil), + access([t.c1], [t.c2]), partitions(p0) + ``` + + + + + + + + +* 如果指定 table 行为,但在本 query block 中没有找到该 table,或者发生冲突,那么 HINT 无效。 + + 对于没有找到 table 的 case 可以参考规则 1 中的第一个示例。以下示例为同时找到两个冲突的情况: + + + + ```javascript + obclient>EXPLAIN EXTENDED SELECT/*+INDEX(t PRIMARY)*/ * + FROM t , (SELECT * FROM t WHERE c1 = 1) ta + WHERE t.c1 = 1\G; + *************************** 1. row *************************** + Query Plan: + ============================================================ + |ID|OPERATOR |NAME |EST. ROWS|COST| + ------------------------------------------------------------ + |0 |NESTED-LOOP INNER JOIN CARTESIAN| |1 |970 | + |1 | TABLE SCAN |t(t_c1)|1 |472 | + |2 | TABLE SCAN |t(t_c1)|1 |472 | + ============================================================ + Outputs & filters: + ------------------------------------- + 0 - output([t.c1(0x7f7b7cdd3e60)], [t.c2(0x7f7b7cdd40f0)], [t.c1(0x7f7b7cdd2bd0)], [t.c2(0x7f7b7cdd2e60)]), filter(nil), + conds(nil), nl_params_(nil), inner_get=false, self_join=false, batch_join=false + 1 - output([t.c1(0x7f7b7cdd3e60)], [t.c2(0x7f7b7cdd40f0)]), filter(nil), + access([t.c1(0x7f7b7cdd3e60)], [t.c2(0x7f7b7cdd40f0)]), partitions(p0), + is_index_back=true, + range_key([t.c1(0x7f7b7cdd3e60)], [t.__pk_increment(0x7f7b7cde86e0)]), range(1,MIN ; 1,MAX), + range_cond([t.c1(0x7f7b7cdd3e60) = 1(0x7f7b7cdd3800)]) + 2 - + output([t.c1(0x7f7b7cdd2bd0)], [t.c2(0x7f7b7cdd2e60)]), filter(nil), + access([t.c1(0x7f7b7cdd2bd0)], [t.c2(0x7f7b7cdd2e60)]), partitions(p0), + is_index_back=true, + range_key([t.c1(0x7f7b7cdd2bd0)], [t.__pk_increment(0x7f7b7cdf41b0)]), range(1,MIN ; 1,MAX), + range_cond([t.c1(0x7f7b7cdd2bd0) = 1(0x7f7b7cdd2570)]) + + Used Hint: + ------------------------------------- + /*+ + */ + ``` + + + + + + + + +* 联接方法的 HINT 中指定的 table 如果找不到,忽略该 table,其他的指定依然生效;如果优化器不能生成指定的联接方法,就会选择其他方法,HINT 无效。 + + + +* 联接顺序的 HINT 中如果存在 table 无法找到,则该 HINT 完全失效。 + + + + + + +HINT 主要语法 +------------------ + +与其他数据库的行为相比,OceanBase 数据库优化器是动态规划的,已经考虑了所有可能的最优路径,HINT 主要作用是指定优化器的行为,并按照 HINT 执行。 + +#### **INDEX HINT** + +INDEX HINT 的语法同时支持 MySQL 和 Oracle 方式。 + +* INDEX HINT 的 Oracle 语法如下: + + + + + + +```javascript +obclient> SELECT/*+INDEX(table_name index_name) */ * FROM table_name; +``` + + + +* INDEX HINT 的 MySQL 语法如下: + + + + + + +```javascript +tbl_name [[AS] alias] [index_hint_list] + +index_hint_list: +index_hint [, index_hint] ... + +index_hint: +USE {INDEX|KEY} + [FOR {JOIN|ORDER BY|GROUP BY}] ([index_list]) + | IGNORE {INDEX|KEY} + [FOR {JOIN|ORDER BY|GROUP BY}] (index_list) + | FORCE {INDEX|KEY} + [FOR {JOIN|ORDER BY|GROUP BY}] (index_list) + +index_list: +index_name [, index_name] ... +``` + + + +Oracle 语法中一个表只能指定一个 INDEX,MySQL 语法可以指定多个。但是 OceanBase 数据库中 MySQL 语法虽然支持指定多个,但是对于 USE 和 FORCE,只会用第一个 INDEX 生成 PATH,即使 SQL 语句中没有该 INDEX 的 filter 而导致全部扫描同时回表(即 OceanBase 数据库当前设计是认为写 HINT 的人比程序更明白那条路径是更好的)。IGNORE 类型会忽略所有指定的 INDEX。USE、 FORCE 和 Oracle HINT 方式实际是一样的,该方式的 INDEX 不存在或者处于 invalid 状态,则 HINT 无效。对于 IGNORE 方式,如果将包括主表 (primary) 在内的所有 INDEX 忽略,则 HINT 无效。 + +#### **FULL HINT** + +FULL HINT 的语法是用于指定表使用主表扫描,语法如下: + +`/*+ FULL(table_name)*/` + +FULL HINT 用于指定表选择主表扫描等价于 INDEX HINT `/*+ INDEX(table_name PRIMARY)*/`。 + +#### **ORDERED HINT** + +ORDERED HINT 可以指定按照 from 后面的表的顺序作为联接顺序,语法如下: + +`/*+ ORDERED*/` + +如果指定该 HINT 后发生改写,那么就按照改写后的 stmt 中 from items 的顺序联接,因为改写时候 sub_query 会在 from items 中对应位置填放新的 table item。 + +#### **LEADING HINT** + +LEADING HINT 可以指定表的联接顺序,语法如下: + +`/*+ LEADING(table_name_list)*/` + +table_name_list 中 table_name 比较特殊,其他 table_name 语法如下: + +```javascript +db_name . relation_name + +relation_name + +.relation_name +``` + + + +在 table_name_list 中 table_name 语法如下: + +```javascript +db_name . relation_name + +relation_name +``` + + + +table_name_list 语法如下: + +```javascript +table_name +table_name_list table_name +table_name_list, table_name +``` + + + +LEADING HINT 为确保按照用户指定的顺序联接检查比较严格,如果发现 HINT 指定的 table_name 不存在,LEADING HINT 失效;如果发现 HINT 中存在重复 table,LEADING HINT 失效。如果在 optimizer 联接期间,按 table_id 无法在 from items 中找到对应的,即可能发生改写,那么该 table 及后面的 table 指定的 JOIN 序失效,前面的依然有效。 + +#### **Use_merge** + +可以指定表在 JOIN 时候使用 merge-join 算法,语法为:`/*+ USE_MERGE(table_name_list) */` + +使用 merge-join 将 use_merge 指定的表作为右表。 +**注意** + + + +OceanBase 数据库中 merge-join 必须有等值条件的 join-condition,因此无等值条件的两个表联接,use_merge 会无效。 + +关于 merge-join 是否认为 A merge-join B 等效于 B merge-join A 当前并没有最后结论。按照代价模型,merge-join 计算代价时是区分左右表的。同时考虑到区分左右表可以增加 HINT 灵活性,当前 merge-join 区分左右表,即 use_merge 仅对表作为右表的时候生效。 + +#### **Use_nl** + +指定表作为右表在联接的时候使用 NESTED LOOP JOIN 算法,语法如下: + +`/*+ USE_NL(table_name_list) */` + +#### **Use_hash** + +指定表作为右表在联接的时候使用 HASH JOIN 算法,语法如下: + +`/*+ USE_HASH(table_name_list) */` + +#### **Parallel** + +指定语句级别的并发度。当该 HINT 指定时,会忽略系统变量 `ob_stmt_parallel_degree` 的设置。语法如下: + +`/*+ PARALLEL(4) */` diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/2.plan-binding-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/2.plan-binding-1.md new file mode 100644 index 000000000..e8b9b4e8c --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/2.plan-binding-1.md @@ -0,0 +1,352 @@ +计划绑定 +========================= + +在系统上线前,可以直接在 SQL 语句中添加 Hint,控制优化器按 Hint 指定的行为进行计划生成。 + +但对于已上线的业务,如果出现优化器选择的计划不够优化时,则需要在线进行计划绑定,即无需业务进行 SQL 更改,而是通过 DDL 操作将一组 Hint 加入到 SQL 中,从而使优化器根据指定的一组 Hint,对该 SQL 生成更优计划。该组 Hint 称为 Outline,通过对某条 SQL 创建 Outline 可实现计划绑定。 + +Outline 视图-gv$outline +------------------------------ + +Outline 视图为 gv$outline,其参数说明如下: + + +| **字段名称** | **类型** | **描述** | +|-------------------|----------------|-----------------------------------------| +| tenant_id | bigint(20) | 租户 ID。 | +| database_id | bigint(20) | 数据库 ID。 | +| outline_id | bigint(20) | Outline ID。 | +| database_name | varchar(128) | 数据库名称。 | +| outline_name | varchar(128) | Outline 名称。 | +| visible_signature | varchar(32768) | Signature 的反序列化结果,为了便于查看 Signature 的信息。 | +| sql_text | varchar(32768) | 创建 Outline 时,在 `on clause` 中指定的 SQL。 | +| outline_target | varchar(32768) | 创建 Outline 时,在 `to clause` 中指定的 SQL。 | +| outline_sql | varchar(32768) | 具有完整 Outline 信息的 SQL。 | + + + +创建 OUTLINE +------------------- + +OceanBase 数据库支持通过两种方式创建 Outline,一种是通过 SQL_TEXT (用户执行的带参数的原始语句),另一种是通过 SQL_ID 创建。 +**注意** + + + +创建 Outline 需要进入对应的数据库下执行。 + +#### **使用 SQL_TEXT 创建** Outline + +使用 SQL_TEXT 创建 Outline 后,会生成一个 Key-Value 对存储在 Map 中,其中 Key 为绑定的 SQL 参数化后的文本,Value 为绑定的 Hint。具体参数化原则,请参见 **快速参数化的** 约束条件内容。 + +使用 SQL_TEXT 创建 Outline 的语法如下: + +```javascript +obclient>CREATE [OR REPLACE] OUTLINE ON [ TO ]; +``` + + + +说明如下: + +* 指定 `OR REPLACE` 后,可以对已经存在执行计划进行替换。 + + + +* 其中 `stmt` 一般为一个带有 Hint 和原始参数的 DML 语句。 + + + +* 如果不指定 `TO target_stmt`, 则表示如果数据库接受的 SQL 参数化后与 stmt 去掉 Hint 参数化文本相同,则将该 SQL 绑定 `stmt` 中 Hint 生成执行计划。 + + + +* 如果期望对含有 Hint 的语句进行固定计划,则需要 `TO target_stmt` 来指明原始的 SQL。 + + + + + +**注意** + + + +在使用 `target_stmt` 时,严格要求 `stmt` 与 `target_stmt` 在去掉 Hint 后完全匹配。 + +示例如下: + +```javascript +obclient>CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT, c3 INT, INDEX idx_c2(c2)); +Query OK, 0 rows affected (0.12 sec) + +obclient> INSERT INTO t1 VALUES(1, 1, 1), (2, 2, 2), (3, 3, 3); +Query OK, 1 rows affected (0.12 sec) + +obclient> EXPLAIN SELECT * FROM t1 WHERE c2 = 1\G; +*************************** 1. row *************************** +Query Plan: +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |37 | +=================================== +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c2 = 1]), + access([t1.c2], [t1.c1], [t1.c3]), partitions(p0) +``` + + + +优化器选择了走主键扫描,如果数据量增大,如果执行索引 idx_c2,该 SQL 会更优化。此时可以通过创建 Outline 将该 SQL 绑定索引计划并执行。 + +根据如下 SQL 语句,创建 Outline: + +```javascript +obclient>CREATE OUTLINE otl_idx_c2 + ON SELECT/*+ INDEX(t1 idx_c2)*/ * FROM t1 WHERE c2 = 1; +Query OK, 0 rows affected (0.04 sec) +``` + + + +#### **使用 SQL_ID 创建 O** utline + +使用 SQL_ID 创建 Outline 的语法如下: + + + +```unknow +obclient>CREATE OUTLINE outline_name ON sql_id USING HINT hint_text; +``` + + + +说明如下: + +* `sql_id` 为需要绑定的 SQL 对应的 `sql_id`。`sql_id` 可通过以下方式获取: + + + + + + + + + + +使用 `sql_id` 绑定 Outline,如下例所示: + +```javascript +obclient>CREATE OUTLINE otl_idx_c2 ON "ED570339F2C856BA96008A29EDF04C74" +USING HINT /*+ INDEX(t1 idx_c2)*/ ; +``` + + +**注意** + + + +* Hint 格式为` /*+ xxx */`,关于 Hint 说明的详细信息,请参考 [Optimizer Hint。](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/1.optimizer-hint-1.md) + + + +* 使用 SQL_TEXT 方式创建的 Outline 会覆盖 `sql_id` 方式创建的 Outline。SQL_TEXT 方式创建的优先级更高。 + + + +* 如果 `sql_id` 对应的 SQL 语句已经有 Hint,则创建 Outline 指定的 Hint 会覆盖原始语句中所有 Hint。 + + + + + + +Outline Data是优化器为了完全复现某一计划而生成的一组 Hint 信息,以`BEGIN_OUTLINE_DATA`开始,并以 `END_OUTLINE_DATA`结束。 + +Outline Data 可以通过 `EXPLAIN EXTENDED` 命令获得,如下例所示: + +```javascript +obclient>EXPLAIN EXTENDED SELECT/*+ index(t1 idx_c2)*/ * FROM t1 WHERE c2 = 1\G; +*************************** 1. row *************************** +Query Plan: +| ========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t1(idx_c2)|1 |88 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1(0x7ff95ab37448)], [t1.c2(0x7ff95ab33090)], [t1.c3(0x7ff95ab377f0)]), filter(nil), + access([t1.c2(0x7ff95ab33090)], [t1.c1(0x7ff95ab37448)], [t1.c3(0x7ff95ab377f0)]), partitions(p0), + is_index_back=true, + range_key([t1.c2(0x7ff95ab33090)], [t1.c1(0x7ff95ab37448)]), range(1,MIN ; 1,MAX), + range_cond([t1.c2(0x7ff95ab33090) = 1(0x7ff95ab309f0)]) + +Used Hint: +------------------------------------- + /*+ + INDEX(@"SEL$1" "test.t1"@"SEL$1" "idx_c2") + */ + +Outline Data: +------------------------------------- + /*+ + BEGIN_OUTLINE_DATA + INDEX(@"SEL$1" "test.t1"@"SEL$1" "idx_c2") + END_OUTLINE_DATA + */ + +Plan Type: +------------------------------------- +LOCAL + +Optimization Info: +------------------------------------- + +t1:table_rows:3, physical_range_rows:1, logical_range_rows:1, index_back_rows:1, output_rows:1, est_method:local_storage, optimization_method=cost_based, avaiable_index_name[idx_c2], pruned_index_name[t1] +level 0: +*********** + paths(@1101710651081553(ordering([t1.c2], [t1.c1]), cost=87.951827)) +``` + + + +其中 Outline Data 信息如下例所示: + +```javascript + /*+ + BEGIN_OUTLINE_DATA + INDEX(@"SEL$1" "test.t1"@"SEL$1" "idx_c2") + END_OUTLINE_DATA + */ +``` + + + +Outline Data 也是 Hint,因此可以用在计划绑定的过程中,如下例所示: + +```javascript +obclient> CREATE OUTLINE otl_idx_c2 + ON "ED570339F2C856BA96008A29EDF04C74" + USING HINT /*+ + BEGIN_OUTLINE_DATA + INDEX(@"SEL$1" "test.t1"@"SEL$1" "idx_c2") + END_OUTLINE_DATA + */; +Query OK, 0 rows affected (0.01 sec) +``` + + + + + +确定 Outline 创建生效 +------------------------ + +确定创建的 Outline 是否成功且符合预期,需要进行如下三步的验证: + +1. 确定是否创建 Outline 成功。 + + 通过查看 gv$outline 中的表,确认是否成功创建对应的 Outline 名称的 Outline。 + + ```javascript + obclient> SELECT * FROM oceanbase.gv$outline WHERE OUTLINE_NAME = 'otl_idx_c2'\G; + + *************************** 1. row *************************** + tenant_id: 1001 + database_id: 1100611139404776 + outline_id: 1100611139404777 + database_name: test + outline_name: otl_idx_c2 + visible_signature: SELECT * FROM t1 WHERE c2 = ? + sql_text: SELECT/*+ index(t1 idx_c2)*/ * FROM t1 WHERE c2 = 1 + outline_target: + outline_sql: SELECT /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "test.t1"@"SEL$1" "idx_c2") END_OUTLINE_DATA*/* + FROM t1 WHERE c2 = 1 + ``` + + + + + + + + +2. 确定新的 SQL 执行是否通过绑定的 Outline 生成了新计划。 + + 当绑定 Outline 的 SQL 有新的流量查询后,查询 `gv$plan_cache_plan_stat` 表中该 SQL 对应的计划信息中 `outline_id`。如果 `outline_id` 是在 gv$outline 中查到的 `outline_id` 则表示该计划是按绑定的 Outline 生成的执行计划,否则不是。 + + ```javascript + obclient>SELECT SQL_ID, PLAN_ID, STATEMENT, OUTLINE_ID, OUTLINE_DATA + FROM oceanbase.gv$plan_cache_plan_stat + WHERE STATEMENT LIKE '%SELECT * FROM t1 WHERE c2 =%'\G; + *************************** 1. row *************************** + sql_id: ED570339F2C856BA96008A29EDF04C74 + plan_id: 17225 + statement: SELECT * FROM t1 WHERE c2 = ? + outline_id: 1100611139404777 + outline_data: /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "test.t1"@"SEL$1" "idx_c2") END_OUTLINE_DATA*/ + ``` + + + + + + + + +3. 确定生成的执行计划是否符合预期。 + + 确定是通过绑定的 Outline 生成的计划后,需要确定生成的计划是否符合预期,可以通过查询`gv$plan_cache_plan_stat` 表查看 `plan_cache` 中缓存的执行计划形状,具体查看方式可参考 + + [实时执行计划展示](/zh-CN/12.sql-optimization-guide-1/2.sql-execution-plan-3/5.real-time-execution-plan-display-3.md)。 + + ```javascript + obclient>SELECT OPERATOR, NAME FROM oceanbase.gv$plan_cache_plan_explain + WHERE TENANT_ID = 1001 AND IP = '10.101.163.87' + AND PORT = 30474 AND PLAN_ID = 17225; + + +--------------------+------------+ + | OPERATOR | NAME | + +--------------------+------------+ + | PHY_ROOT_TRANSMIT | NULL | + | PHY_TABLE_SCAN | t1(idx_c2) | + +--------------------+------------+ + ``` + + + + + + +删除 Outline +------------------------------- + +删除 Outline 后,对应 SQL 重新生成计划时将不再依据绑定的 Outline 生成。删除 Outline 的语法如下: + +```javascript +DROP OUTLINE outline_name; +``` + + +**注意** + + + +删除 Outline 需要在 `outline_name` 中指定 Database 名,或者在 `USE DATABASE` 命令后执行。 + +计划绑定与执行计划缓存关系 +---------------------- + +* 使用 SQL_TEXT 创建 Outline 后,SQL 请求生成新计划查找 Outline 使用的 Key 与计划缓存使用的 Key 相同,均是 SQL 参数化后的文本串。 + + + +* 当创建和删除 Outline 后,对应 SQL 有新的请求时,会触发执行计划缓存中对应执行计划失效,更新为绑定的 Outline 生成的执行计划。 + + + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/3.sql-execution-plan-management-spm-1.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/3.sql-execution-plan-management-spm-1.md new file mode 100644 index 000000000..784e8bb32 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/3.sql-execution-plan-management-spm-1.md @@ -0,0 +1,192 @@ +执行计划管理 +=========================== + +SQL Plan Management(SPM)是一种稳定执行计划、控制计划演进的机制,确保新生成的计划在经过验证后才能使用,保证计划性能朝好的方向不断更新。 + +SPM 基于 SQL Plan Baseline 实现,SQL Plan Baseline 是执行计划的一个基线,持久化存储已经验证过的执行计划的信息(outline_data 等信息),每个执行计划可对应一个 Plan Baseline,通过该 Plan Baseline 可复现一个执行计划。 + +SPM 包含如下过程: + +1. 计划捕获。 + + 对于新生成的计划,如果 SQL Plan Baseline 为空,则直接加入 SQL Plan Baseline,否则通过演进验证新生成计划比 SQL Plan Baseline 中计划性能更优后加入 SQL Plan Baseline,并删除旧的 Plan Baseline。 + + + + + + + +2. 计划演进。 + + 相同 SQL 新捕获的计划如果和 SQL Plan Baseline 中计划不一样,则通过流量灰度验证新计划性能是否比以前验证过的计划更优。如果更优,则将新计划加入 SQL Plan Baseline,并执行新计划,否则仍使用旧计划。 + + + + + + + +3. 计划选择。 + + 在优化器新生成计划时,会查看 SQL Plan Baseline 是否有已验证的计划,如果有,则优先使用已验证计划,新计划需要通过演进验证后再使用。 + + + + + + + +SPM 的系统变量 +------------------ + +SPM 使用如下系统变量和系统包对执行计划进行管理: + + +| **系统变量** | **取值** | **解释** | +|--------------------------------------|--------|---------------------------------------------------------------------------------------------------------------------------------------| +| optimizer_capture_sql_plan_baselines | true | 对于新生成的计划,如果该 SQL 没有对应的 Plan Baseline,则将该计划加入到 SQL Plan Baseline;如果已有 Plan Baseline 且与新计划不同,则会触发计划演进进行验证,确定是否需要将新计划替换老的 Plan Baseline。 | +| optimizer_capture_sql_plan_baselines | false | 再自动捕获新计划到 Plan Baseline 中。 | +| optimizer_use_sql_plan_baselines | true | 在新生成计划时,优化器会优先使用 Plan Baseline 计划,对于新的不同计划则验证后通过后才使用。 | +| optimizer_use_sql_plan_baselines | false | 在新生成计划时,不在考虑 Plan Baseline 中计划,直接使用优化器新生成计划并执行。 | + + + +设置说明如下: + + +| **optimizer_capture_sql_plan_baselines 的取值** | **optimizer_use_sql_plan_baselines 的取值** | **说明** | +|----------------------------------------------|------------------------------------------|-------------------------------------------------------------------------------------| +| True | True | 计划捕获和演进均打开,优化器会使用 Plan Baseline 计划。 | +| True | False | Plan Baseline 中无计划时会捕获计划到 Plan Baseline,不演进,优化器不考虑 Plan Baseline 计划,使用新生成计划。 | +| False | True | 不捕获计划到 Plan Baseline, 优化器会使用 Plan Baseline 计划,如果 SQL Plan Baseline 没有对应计划,则使用新生成计划。 | +| False | False | 不捕获计划,不演进,优化器不使用 Plan Baseline 计划,使用新生成的计划。 | + + + +DBMS_SPM +----------------- + +DBMS_SPM 是用于操作 SPM 的命令包,可支持加载、更改以及删除 Plan Baseline 信息。 + +#### **LOAD_PLANS_FROM_CURSOR_CACHE** + +LOAD_PLANS_FROM_CURSOR_CACHE 用于将 plan cache 中执行计划对应的 Plan Baseline 信息加载到 _ _all_tenant_plan_baseline 表中。语法如下: +**说明** + + + +_ _all_tenant_plan_baseline 为 OceanBase 数据库内部表。 + +```javascript +DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE ( + sql_id IN VARCHAR2, + plan_hash_value IN NUMBER := NULL, + fixed IN VARCHAR2 := 'NO', + enabled IN VARCHAR2 := 'YES') + RETURN PLS_INTEGER; +``` + + + +参数解释如下: + + +| 参数 | 解释 | +|-----------------|-------------------------------------------------------------| +| sql_id | SQL 的唯一标识。 | +| plan_hash_value | plan 的唯一标识。如果为空,则处理 sql_id 下的所有计划。 | +| fixed | 加入到 SQL Plan Baseline 后是否将该计划固化。固化后以后优化器会直接选择该计划,不再捕获和演进计划。 | +| enabled | 优化器是否可以使用该 Plan Baseline。 | + + + +如下例所示: + +```javascript +DECLARE + v_load_plans number; +BEGIN + v_load_plans := DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE( + sql_id => '529F6E6454EF579C7CC265D1F6131D70', + plan_hash_value => 13388268709115914355); +END; +/ +``` + + + +#### **ALTER_SQL_PLAN_BASELINE** + +ALTER_SQL_PLAN_BASELINE 用于修改 Plan Baseline 中某些属性。语法如下: + +```javascript +DBMS_SPM.ALTER_SQL_PLAN_BASELINE ( + sql_handle IN VARCHAR2 := NULL, + plan_name IN VARCHAR2 := NULL, + attribute_name IN VARCHAR2, + attribute_value IN VARCHAR2) + RETURN PLS_INTEGER; +``` + + + +参数解释如下: + + +| 参数 | 解释 | +|-----------------|------------------------------------------------| +| sql_handle | SQL 的唯一标识。先用 sql_id 代替。 | +| plan_name | plan 的唯一标识。先使用 plan_hash_value 代替。 | +| attribute_name | 需要更改的字段名。OceanBase 数据库支持修改 enabled 和 fixed 字段。 | +| attribute_value | 更改后的值。 | + + + +如下示例所示,将某个 Plan Baseline 固化后该 SQL 仅使用该计划: + +```javascript +DECLARE + v_alter_plans number; +BEGIN + v_alter_plans := DBMS_SPM.ALTER_SQL_PLAN_BASELINE( + sql_handle => '529F6E6454EF579C7CC265D1F6131D70', + plan_name => '3388268709115914355', + attribute_name => 'fixed', + attribute_value => 'YES' ); +END; +/ +``` + + + + + +#### **DROP_SQL_PLAN_BASELINE** + +DROP_SQL_PLAN_BASELINE 用于删掉某个 Plan Baseline。语法如下: + +```javascript +DBMS_SPM.DROP_SQL_PLAN_BASELINE ( + sql_handle IN VARCHAR2 := NULL, + plan_name IN VARCHAR2 := NULL) +RETURN PLS_INTEGER; +``` + + + +示例如下: + +```javascript +DECLARE + v_drop_plans number; +BEGIN + v_drop_plans := DBMS_SPM.DROP_SQL_PLAN_BASELINE( + sql_handle => '529F6E6454EF579C7CC265D1F6131D70', + plan_name => '3388268709115914355' ); +END; +/ +``` + + + diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/5.related-terms.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/5.related-terms.md new file mode 100644 index 000000000..ce04e4233 --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/5.related-terms.md @@ -0,0 +1,52 @@ +相关术语 +========================= + + + +**执行计划** + +优化器为某条 SQL 生成的执行过程,一般使用操作符树来表示。 + +#### **本地计划** + +当执行计划只涉及到单表或分区表的单个分区,且该表或分区在本节点时,该计划为"本地计划"。 + +#### **远程计划** + +当执行计划只涉及到单表或分区表的单个分区,且该表或分区在其他节点时,该计划为"远程计划"。 + +#### **分布式计划** + +当执行计划涉及到多表或多分区时,该计划为分布式计划。 + +#### **访问路径** + +访问某张表时使用的访问方式,包括主表访问和二级索引访问两类。具体参见 [访问路径](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/1.access-path-3/1.overview-16.md)。 + +#### **联接顺序** + +多表联接时各表之间的联接顺序,目前 OceanBase 数据库仅支持左深树的联接顺序。具体参见 [联接顺序](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/5.query-optimization-2/2.join-algorithm-5/3.join-order-3.md)。 + +#### **联接算法** + +执行两表联接时使用的算法,包括 NESTED LOOP JOIN、MERGE JOIN 和 HASH JOIN 三种。 + +#### **查询改写** + +通过对用户查询做等价的改写以便于生成最佳执行计划的过程。 + +#### **执行计划绑定** + +用户通过给定 outline 来指定某条 SQL 的执行计划的过程,具体参见 [计划绑定](/zh-CN/12.sql-optimization-guide-1/4.sql-optimization-1/6.manage-execution-plans-1/2.plan-binding-1.md)。 + +#### **SQL Plan Management(** **SPM)** + +一种计划演进的机制。当优化器生成新的计划时,需要通过演进机制来保证这个计划的性能不会出现回退,如果出现回退,就拒绝使用该计划,否则使用该计划。 + +#### **Adaptive Cursor Sharing(ACS)** + +一种可以让优化器每一个参数化 SQL 存储多个计划,并根据 SQL 语句中谓词的选择率空间选择合适的计划的机制。 + +#### **Data Flow Object(DFO)** + +分布式计划以数据重分布点为边界,切分为可以并行执行的逻辑子计划,每个子计划由一个 DFO 进行封装。 diff --git a/docs/docs/docs-cn/12.sql-optimization-guide-1/6.faq-about-sql-tuning.md b/docs/docs/docs-cn/12.sql-optimization-guide-1/6.faq-about-sql-tuning.md new file mode 100644 index 000000000..d8ac3483f --- /dev/null +++ b/docs/docs/docs-cn/12.sql-optimization-guide-1/6.faq-about-sql-tuning.md @@ -0,0 +1,56 @@ +SQL 调优常见问题 +=============================== + + + +用户 SQL 写法未遵循 OceanBase 数据库开发规范 +--------------------------------------------------- + +用户 SQL 的写法对 SQL 的执行性能有决定性的作用。在使用过程中,用户应尽量遵循 OceanBase 数据库开发规范的要求。 + +代价模型缺陷导致的执行计划选择错误 +-------------------------------------- + +OceanBase 数据库内建的代价模型是服务器的固有逻辑,最佳的执行计划依赖此代价模型。因此,一旦出现由代价模型导致的计划选择错误,用户只能通过执行计划绑定来确保选择"正确"的执行计划。 + +数据统计信息不准确 +------------------------------ + +查询优化过程依赖数据统计信息的准确性,OceanBase 数据库的优化器默认会在数据合并过程中收集一些统计信息,当用对数据进行了大量修改时,可能会导致统计信息落后于真实数据的特征,用户可以通过发起每日合并,主动更新统计信息。 + +除了优化器收集的统计信息以外,优化器还会根据查询条件对存储层进行采样,用以后续的优化选择。OceanBase 数据库目前仅支持对本地存储进行采样,对于数据分区在远程节点上的情况,只能使用默认收集的统计信息进行代价估计,可能会引入代价偏差。 + +数据库物理设计降低查询性能 +---------------------------------- + +查询的性能很大程度上取决于数据库的物理设计,包括所访问对象的 schema 信息等。例如,对于二级索引,如果所需的投影列没有包括在索引列之中,则需要使用回表的机制访问主表,查询的代价会增加很多。此时,可以考虑将用户的投影列加入到索引列中,构成所谓的"覆盖索引",避免回表访问。 + +系统负载影响单条 SQL 的响应时间 +--------------------------------------- + +系统的整体负载除了会影响系统的整体吞吐量,也会引起单条 SQL 的响应时间变化。OceanBase 数据库的 SQL 引擎采用队列模型,针对用户请求,如果可用线程全部被占用,则新的请求需要在请求队列中排队,直到某个线程完成当前请求。请求在队列中的排队时间可以在 (g)v$sql_audit 中看到。 + +客户端路由与服务器之间出现路由反馈逻辑错误 +------------------------------------------ + +OBProxy 的一个主要功能是将 SQL 查询路由到恰当的服务器节点。具体来说,如果用户查询没有指定使用弱一致性读属性,Proxy 需要将其路由到所涉及的表(或具体分区)的主节点上,以避免服务器节点之前的二次转发;否则,Proxy 会根据预先设置好的规则将其转发到恰当的节点。 + +由于 Proxy 与服务器之间采用松耦合的方式,Proxy 上缓存的数据物理分布信息刷新可能不及时,导致错误的路由选择。可能导致路由信息变化的场景有: + +* 网络不稳导致服务器间重新选主 + + + +* 由服务器上下线、轮转合并等导致的重新选主 + + + +* 负载均衡导致重新选主 + + + + + + +当在 SQL audit 或执行计划缓存中发现有大量远程执行时,需要考虑是否与上述场景吻合。客户端与服务器之间有路由反馈逻辑,一旦发生错误,客户端会主动刷新数据物理分布信息,随后路由的选择也将恢复正常。 + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/1.overview-4.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/1.overview-4.md new file mode 100644 index 000000000..a84b522d0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/1.overview-4.md @@ -0,0 +1,109 @@ +概述 +======================= + + + +**内部表定义** + +OceanBase 数据库内部表包含了以下几类: + +* 核心系统表(简称核心表) + + + +* 普通系统表 + + + +* 虚拟表 + + + +* `Information_Schema` 表 + + + + + + +**多租户** + +OceanBase 数据库为多租户架构,租户分为两种类型:普通租户以及 `sys` 租户。OceanBase 数据库系统表都存储在 `sys` 租户,且主键中存储租户号(`tenant_id`),区分每个租户的内容。每个租户内部创建一个该租户数据的只读视图。 + +引入多租户后,系统表格命名如下: + +* 所有以 `__all `开头的表格包含所有租户的数据,所有以` __tenant` 开头的表格仅包含单个租户内部的数据。 + + + +* 虚拟表的前缀分别为 `__all_virtual `以及 `__tenant_virtual`。 + + 例如,`__all_virtual_session_variable` 包含所有租户的 Session 变量信息,且内部实现为虚拟表;而`__tenant_virtual_session_variable` 只包含单个租户的 Session 变量信息,内部实现为虚拟表。 + + + + + +`s``ys` 租户和普通租户包含的系统表说明如下: + +* sys 租户 + + * 核心表 + + 包括 `__all_core_table`、`__all_root_table`、`__all_table`、`__all_column`、`__all_database`、 `__all_tablegroup`、`__all_tenant`、以及 `__all_ddl_operation`。 + + + * 模式及用户权限表 + + 除了 `__all_table`、`__all_column`,还包括` __all_part`、`__all_database`、`__all_tablegroup` 以及 `__all_user`、`__all_table_privilege`、`__all_database_privilege`。 + + + * 分表位置信息表 + + 分为两级,第一级为 `__all_root_table`,不可分区;第二级为 `__all_meta_table`。 + + 所有系统表的位置信息都记录在 `__all_root_table` 中。 + + + * 租户、Resource Pool、Unit 相关的系统表 + + + + * Zone 和服务器等部署相关的系统表 + + + + * 系统配置相关的表:`__all_sys_parameter` + + + + * 系统变量及系统状态相关的表:`__all_sys_variable`、`__all_sys_stat` + + + + * DDL 操作相关的表:` __all_ddl_operation` + + + + * 其它表,例如各种统计信息以及为了实现某个功能而加入的系统表 + + + + + + +* 普通租户 + + * 以 `__tenant` 作为表名前缀的只读视图,表示租户内信息 + + + + * `Information_schema`:SQL 标准定义的 `information_schema` 视图,是其它系统表的视图。 + + + + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/1.mysql-help_topic.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/1.mysql-help_topic.md new file mode 100644 index 000000000..0625b4bf3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/1.mysql-help_topic.md @@ -0,0 +1,44 @@ +mysql.help_topic +===================================== + + + +**功能** +--------------------------- + +与其他三个表 mysql.help_category、mysql.help_relation、mysql.help_keyword 合作生成 help 命令。 + +**相关表/视图** +------------------------------- + +* mysql.help_category + + + +* mysql.help_relation + + + +* mysql.help_keyword + + + + + + +字段说明 +------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|----------------|----------------|--------| +| help_topic_id | bigint(20) | NO | 主题 ID | +| name | varchar(64) | NO | 主题名 | +| help_category_id | bigint(20) | NO | 类目 ID | +| description | varchar(65535) | NO | 描述 | +| example | varchar(65535) | NO | 示例 | +| url | varchar(65535) | NO | url 地址 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/10.mysql-time_zone_transition_type.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/10.mysql-time_zone_transition_type.md new file mode 100644 index 000000000..db4c0f771 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/10.mysql-time_zone_transition_type.md @@ -0,0 +1,30 @@ +mysql.time_zone_transition_type +==================================================== + + + +功能 +----------- + +用于记录时区转换类型(SYSTEM_VIEW)。 + +相关表/视图 +--------------- + +__all_time_zone_transition_type + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|------------|----------------|-----------| +| Time_zone_id | bigint(20) | NO | 时区 ID | +| Transition_type_id | bigint(20) | NO | 时区转换类型 ID | +| Offset | bigint(20) | NO | 时区偏移 | +| Is_DST | bigint(20) | NO | 是否为夏令时 | +| Abbreviation | varchar(8) | NO | 缩写 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/11.mysql-user.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/11.mysql-user.md new file mode 100644 index 000000000..092e81227 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/11.mysql-user.md @@ -0,0 +1,67 @@ +mysql.user +=============================== + + + +功能 +----------- + +用于记录用户级别的权限信息(VIRTUAL_TABLE)。 + +相关表/视图 +--------------- + +无 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|---------------|----------------|---------------------------------------------------| +| host | varchar(128) | NO | 主机名 | +| user | varchar(128) | NO | 用户名 | +| password | varchar(128) | NO | 用户密码 | +| select_priv | varchar(1) | NO | 是否可执行 select 语句 | +| insert_priv | varchar(1) | NO | 是否可执行 insert 语句 | +| update_priv | varchar(1) | NO | 是否可执行 update 语句 | +| delete_priv | varchar(1) | NO | 是否可执行 delete 语句 | +| create_priv | varchar(1) | NO | 是否可执行 create 语句 | +| drop_priv | varchar(1) | NO | 是否可执行 drop 语句 | +| reload_priv | varchar(1) | NO | 是否可执行 flush 语句。目前暂未使用该字段 | +| shutdown_priv | varchar(1) | NO | 是否可执行 shutdown 命令。目前暂未使用该字段 | +| process_priv | varchar(1) | NO | 是否可查询活跃线程信息 | +| file_priv | varchar(1) | NO | 是否具有文件读写权限。目前暂未使用该字段 | +| grant_priv | varchar(1) | NO | 是否可执行授权语句 | +| reference_priv | varchar(1) | NO | 暂未使用 | +| index_priv | varchar(1) | NO | 是否可创建索引 | +| alter_priv | varchar(1) | NO | 是否可执行 alter 语句 | +| show_db_priv | varchar(1) | NO | 是否可执行 `show database `语句 | +| super_priv | varchar(1) | NO | 是否可执行超级用户语句 | +| create_tmp_table_priv | varchar(1) | NO | 是否可创建临时表(未使用) | +| lock_tables_priv | varchar(1) | NO | 是否可执行` lock tables ` 语句。目前暂未使用该字段 | +| execute_priv | varchar(1) | NO | 是否可执行存储过程。目前暂未使用该字段 | +| repl_slave_priv | varchar(1) | NO | 暂未使用 | +| repl_client_priv | varchar(1) | NO | 暂未使用 | +| create_view_priv | varchar(1) | NO | 是否可创建视图 | +| show_view_priv | varchar(1) | NO | 是否可执行 `show create view` 语句 | +| create_routine_priv | varchar(1) | NO | 是否可创建存储过程。目前暂未使用该字段 | +| alter_routine_priv | varchar(1) | NO | 是否可更改存储过程。目前暂未使用该字段 | +| create_user_priv | varchar(1) | NO | 是否可执行` create user` 语句 | +| event_priv | varchar(1) | NO | 是否可创建更改删除 event。目前暂未使用该字段 | +| trigger_priv | varchar(1) | NO | 是否具有操作 trigger 的权限。目前暂未使用该字段 | +| create_tablespace_priv | varchar(1) | NO | 是否可创建 tablespace。目前暂未使用该字段 | +| ssl_type | varchar(10) | NO | 目前暂未使用该字段 | +| ssl_cipher | varchar(1024) | NO | 目前暂未使用该字段 | +| x509_issuer | varchar(1024) | NO | 目前暂未使用该字段 | +| x509_subject | varchar(1024) | NO | 目前暂未使用该字段 | +| max_questions | bigint(20) | NO | 用户每小时可执行的最大查询数(未使用) | +| max_updates | bigint(20) | NO | 用户每小时可执行的最大更新数。目前暂未使用该字段 | +| max_connections | bigint(20) | NO | 用户每小时可接收的最大连接数。目前暂未使用该字段 | +| max_user_connections | bigint(20) | NO | 同时请求的最大连接数。目前暂未使用该字段 | +| plugin | varchar(1024) | NO | 目前暂未使用该字段 | +| authentication_string | varchar(1024) | NO | 目前暂未使用该字段 | +| password_expired | varchar(1) | NO | 用户密码是否过期。目前暂未使用该字段 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/12.information_schema-character_sets.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/12.information_schema-character_sets.md new file mode 100644 index 000000000..db8518780 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/12.information_schema-character_sets.md @@ -0,0 +1,28 @@ +information_schema.CHARACTER_SETS +====================================================== + + + +功能 +----------- + +记录 OceanBase 数据库的字符集信息。 + +相关表/视图 +--------------- + +__all_charset + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|--------------|----------------|---------| +| CHARACTER_SET_NAME | varchar(128) | NO | 字符集名称 | +| DEFAULT_COLLATE_NAME | varchar(128) | NO | 字符集比对方法 | +| DESCRIPTION | varchar(64) | NO | 字符集描述描述 | +| MAXLEN | bigint(20) | NO | 字符集最大长度 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/13.information_schema-collations.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/13.information_schema-collations.md new file mode 100644 index 000000000..9b41ea855 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/13.information_schema-collations.md @@ -0,0 +1,31 @@ +information_schema.COLLATIONS +================================================== + + + +功能 +----------- + +记录每个字符集的比对方法信息。 + +相关表/视图 +--------------- + +__all_collation + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | | +|--------------------|--------------|----------------|---------------------------| +| COLLATION_NAME | varchar(128) | NO | 比对方法名称 | +| CHARACTER_SET_NAME | varchar(128) | NO | 和 collation 关联的字符集名称 | +| ID | bigint(20) | NO | collation 的 ID | +| IS_DEFAULT | varchar(4) | NO | collation 是否是对应字符集的默认比对方法 | +| IS_COMPILED | varchar(4) | NO | 字符集是否被编译到服务器中 | +| SORTLEN | bigint(20) | NO | 排序字符集需要用到的内存大小 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/14.information_schema-collation_character_set_applicability.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/14.information_schema-collation_character_set_applicability.md new file mode 100644 index 000000000..854ca5c75 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/14.information_schema-collation_character_set_applicability.md @@ -0,0 +1,21 @@ +information_schema.COLLATION_CHARACTER_SET_APPLICABILITY +============================================================================= + + + +功能 +----------- + +记录 character 和 collation 之间的对应关系。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|--------------|----------------|--------| +| COLLATION_NAME | varchar(128) | NO | 比对方法名称 | +| CHARACTER_SET_NAME | varchar(128) | NO | 字符集名称 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/15.information_schema-columns.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/15.information_schema-columns.md new file mode 100644 index 000000000..7ac2b7d33 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/15.information_schema-columns.md @@ -0,0 +1,58 @@ +information_schema.COLUMNS +=============================================== + + + +功能 +----------- + +记录列信息。 + +相关表/视图 +--------------- + +* __all_column + + + +* __all_column_statistic + + + +* __all_column_history + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|---------------------|----------------|--------------------------------| +| TABLE_CATALOG | varchar(4096) | NO | 固定值(def) | +| TABLE_SCHEMA | varchar(128) | NO | Column 对应的表所属的库 | +| TABLE_NAME | varchar(128) | NO | Column 对应的表名 | +| COLUMN_NAME | varchar(128) | NO | 列名 | +| ORDINAL_POSITION | bigint(20) unsigned | NO | 列编号 | +| COLUMN_DEFAULT | varchar(262144) | YES | 列默认值 | +| IS_NULLABLE | varchar(4) | NO | 列值是否可以为 NULL | +| DATA_TYPE | varchar(64) | NO | 列中数据类型 | +| CHARACTER_MAXIMUM_LENGTH | bigint(20) unsigned | YES | 列的最大字符数 | +| CHARACTER_OCTET_LENGTH | bigint(20) unsigned | YES | 列的最大字节数 | +| NUMERIC_PRECISION | bigint(20) unsigned | YES | 数字精度 | +| NUMERIC_SCALE | bigint(20) unsigned | YES | 小数位数 | +| DATETIME_PRECISION | bigint(20) unsigned | YES | datetime 类型精度 | +| CHARACTER_SET_NAME | varchar(128) | YES | 列对应字符集名称 | +| COLLATION_NAME | varchar(128) | YES | 字符集比对方法 | +| COLUMN_TYPE | varchar(64) | NO | 字段类型 | +| COLUMN_KEY | varchar(3) | NO | 索引或者主键列 | +| EXTRA | varchar(4096) | NO | 其它信息 | +| PRIVILEGES | varchar(200) | NO | 权限信息 | +| COLUMN_COMMENT | varchar(2048) | NO | 注释 | +| GENERATION_EXPRESSION | varchar(262144) | NO | 对于生成的列,显示用于计算列值的表达式。 对于非生成列为空。 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/16.information_schema-dba_outlines.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/16.information_schema-dba_outlines.md new file mode 100644 index 000000000..c7ad756f4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/16.information_schema-dba_outlines.md @@ -0,0 +1,35 @@ +information_schema.DBA_OUTLINES +==================================================== + + + +功能 +----------- + +记录 outline相关信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|------------------|----------------|-------------| +| NAME | varchar(128) | NO | Outline 名称 | +| OWNER | varchar(32) | NO | 所属用户 | +| DB_NAME | varchar(128) | NO | 数据库名称 | +| CATEGORY | null | NO | 分类 | +| USED | bigint(20) | NO | 是否使用 | +| TIMESTAMP | timestamp(6) | YES | 时间戳 | +| VERSION | varchar(256) | NO | 版本 | +| SQL_TEXT | varchar(65536) | NO | SQL 文本 | +| SIGNATURE | varbinary(65536) | NO | 标识符 | +| COMPATIBLE | bigint(20) | NO | 兼容性 | +| ENABLED | bigint(20) | NO | 是否可用 | +| FORMAT | bigint(20) | NO | 格式 | +| OUTLINE_CONTENT | varchar(65536) | NO | Ooutline 内容 | +| OUTLINE_TARGET | varchar(65536) | NO | 目标 SQL | +| OWNER_ID | bigint(20) | YES | 所属用户 ID | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/17.information_schema-engines.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/17.information_schema-engines.md new file mode 100644 index 000000000..5a4cf9cc5 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/17.information_schema-engines.md @@ -0,0 +1,26 @@ +information_schema.ENGINES +=============================================== + + + +功能 +----------- + +记录存储引擎相关信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|-----------------| +| Engine | varchar(64) | NO | 引擎类型 | +| Support | varchar(4) | NO | 是否支持当前存储引擎 | +| Comment | varchar(2048) | NO | 注释 | +| Transactions | varchar(4) | NO | 事务相关内容 | +| XA | varchar(4) | NO | 分布式事务 XA 相关内容 | +| Savepoints | varchar(4) | NO | Savepoints 相关内容 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/18.information_schema-global_status.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/18.information_schema-global_status.md new file mode 100644 index 000000000..171955b27 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/18.information_schema-global_status.md @@ -0,0 +1,22 @@ +information_schema.GLOBAL_STATUS +===================================================== + + + +功能 +----------- + +记录 OceanBase 数据库的全局状态信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|-------------| +| VARIABLE_NAME | varchar(128) | NO | 全局状态对应的变量名称 | +| VARIABLE_VALUE | varchar(1024) | YES | 全局状态对应的变量内容 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/19.information_schema-global_variables.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/19.information_schema-global_variables.md new file mode 100644 index 000000000..4ebe8103a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/19.information_schema-global_variables.md @@ -0,0 +1,21 @@ +information_schema.GLOBAL_VARIABLES +======================================================== + + + +功能 +----------- + +记录全局变量信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|----------------|----------------|--------| +| VARIABLE_NAME | varchar(128) | NO | 变量名 | +| VARIABLE_VALUE | varchar(65536) | YES | 变量值 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/2.mysql-help_category.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/2.mysql-help_category.md new file mode 100644 index 000000000..94c973b3c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/2.mysql-help_category.md @@ -0,0 +1,42 @@ +mysql.help_category +======================================== + + + +**功能** +--------------------------- + +与其他三个表 mysql.help_relation、mysql.help_topic、mysql.help_keyword 合作生成 help 命令。 + +**相关表/视图** +------------------------------- + +* mysql.help_relation + + + +* mysql.help_topic + + + +* mysql.help_keyword + + + + + + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|----------------|----------------|--------| +| help_category_id | bigint(20) | NO | 类目 ID | +| name | varchar(64) | NO | 类目名 | +| parent_category_id | bigint(20) | YES | 父类目 ID | +| url | varchar(65535) | NO | url 地址 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/20.information_schema-key_column_usage.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/20.information_schema-key_column_usage.md new file mode 100644 index 000000000..1d6d9c215 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/20.information_schema-key_column_usage.md @@ -0,0 +1,46 @@ +information_schema.KEY_COLUMN_USAGE +======================================================== + + + +功能 +----------- + +记录 column 中 key 的约束信息。 + +相关表/视图 +--------------- + +* __all_foreign_key_column + + + +* __all_foreign_key_column_history + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|-------------------------------|--------------|------------|-----------------------------------------------------------------------------------------| +| | | | | +| CONSTRAINT_CATALOG | varchar(3) | NO | 固定值(def) | +| CONSTRAINT_SCHEMA | varchar(128) | NO | 数据库名 | +| CONSTRAINT_NAME | varchar(256) | NO | 约束名,为 PRIMARY 或列名或外键名 | +| TABLE_CATALOG | varchar(3) | NO | 表目录 | +| TABLE_SCHEMA | varchar(128) | NO | 数据库名 | +| TABLE_NAME | varchar(256) | NO | 表名 | +| COLUMN_NAME | varchar(128) | NO | 列名 | +| ORDINAL_POSITION | bigint(20) | NO | 该列在表中的编号 | +| POSITION_IN_UNIQUE_CONSTRAINT | null | NO | 对于唯一和主键约束,POSITION_IN_UNIQUE_CONSTRAINT 的值为 NULL。 对于外键约束,它是所引用表内键中的顺序位置 | +| REFERENCED_TABLE_SCHEMA | null | NO | 参考的数据库 | +| REFERENCED_TABLE_NAME | null | NO | 参考的表 | +| REFERENCED_COLUMN_NAME | null | NO | 参考的列 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/21.information_schema-parameters.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/21.information_schema-parameters.md new file mode 100644 index 000000000..1ba18b38d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/21.information_schema-parameters.md @@ -0,0 +1,35 @@ +information_schema.PARAMETERS +================================================== + + + +功能 +----------- + +提供存储过程参数和返回值相关信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|----------------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SPECIFIC_CATALOG | VARCHAR(4096) | NO | 固定值(def) | +| SPECIFIC_SCHEMA | VARCHAR(128) | NO | 数据库名 | +| SPECIFIC_NAME | VARCHAR(128) | NO | 存储过程名 | +| ORDINAL_POSITION | BIGINT(20) | NO | 参数位置(对于函数的返回值该值是 0) | +| PARAMETER_MODE | VARCHAR(128) | YES | 参数类型: * IN * OUT * INOUT * NULL | +| PARAMETER_NAME | VARCHAR(262144) | YES | 参数名 | +| DATA_TYPE | VARCHAR(128) | NO | 参数数据类型 | +| CHARACTER_MAXIMUM_LENGTH | BIGINT(20) UNSIGNED | YES | 对于 String 类型的参数,记录字符最大长度 | +| CHARACTER_OCTET_LENGTH | BIGINT(20) UNSIGNED | YES | 对于 String 类型的参数,记录字节的最大长度 | +| NUMERIC_PRECISION | BIGINT(20) UNSIGNED | YES | 对于数值类型的参数,记录 Precision | +| NUMERIC_SCALE | BIGINT(20) UNSIGNED | YES | 对于数值类型的参数,记录 Scale | +| DATETIME_PRECISION | BIGINT(20) UNSIGNED | YES | 对于日期类型,记录日期类型的精度 | +| CHARACTER_SET_NAME | VARCHAR(128) | YES | 对于 String 类型的参数,记录字符集 | +| COLLATION_NAME | VARCHAR(128) | YES | 对于 String 类型的参数,记录字符排序规则 | +| DTD_IDENTIFIER | VARCHAR(128) | NO | 字符形式记录数据类型的详细信息 | +| ROUTINE_TYPE | VARCHAR(9) | NO | 存储过程的类型(过程/函数) | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/22.information_schema-partitions.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/22.information_schema-partitions.md new file mode 100644 index 000000000..fb5e94711 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/22.information_schema-partitions.md @@ -0,0 +1,58 @@ +information_schema.PARTITIONS +================================================== + + + +功能 +----------- + +记录 partition 信息。 + +相关表/视图 +--------------- + +* gv$partition + + + +* v$partition + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------------|---------------------|----------------|-------------------------| +| TABLE_CATALOG | varchar(4096) | NO | 固定值(def) | +| TABLE_SCHEMA | varchar(128) | NO | 数据库名 | +| TABLE_NAME | varchar(256) | NO | 表名 | +| PARTITION_NAME | varchar(64) | YES | 分区名 | +| SUBPARTITION_NAME | varchar(64) | YES | 子分区名 | +| PARTITION_ORDINAL_POSITION | bigint(20) unsigned | YES | 当前分区在所有分区中的位置 | +| SUBPARTITION_ORDINAL_POSITION | bigint(20) unsigned | YES | 当前子分区在所有子分区中的位置 | +| PARTITION_METHOD | varchar(18) | YES | 分区类型 | +| SUBPARTITION_METHOD | varchar(18) | YES | 子分区类型 | +| PARTITION_EXPRESSION | varchar(4096) | YES | 分区函数表达式 | +| SUBPARTITION_EXPRESSION | varchar(4096) | YES | 子分区函数表达式 | +| PARTITION_DESCRIPTION | varchar(1024) | YES | 适用于 range 和 list 分区的描述 | +| TABLE_ROWS | bigint(20) unsigned | NO | 目前暂不支持该字段,当前该字段默认为 0 | +| AVG_ROW_LENGTH | bigint(20) unsigned | NO | 目前暂不支持该字段,当前该字段默认为 0 | +| DATA_LENGTH | bigint(20) unsigned | NO | 目前暂不支持该字段,当前该字段默认为 0 | +| MAX_DATA_LENGTH | bigint(20) unsigned | YES | 目前暂不支持该字段,当前该字段默认为 0 | +| INDEX_LENGTH | bigint(20) unsigned | NO | 目前暂不支持该字段,当前该字段默认为 0 | +| DATA_FREE | bigint(20) unsigned | NO | 目前暂不支持该字段,当前该字段默认为 0 | +| CREATE_TIME | timestamp(6) | YES | 目前暂不支持该字段,当前该字段默认为 NULL | +| UPDATE_TIME | timestamp(6) | YES | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHECK_TIME | timestamp(6) | YES | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHECKSUM | bigint(20) | YES | 目前暂不支持该字段,当前该字段默认为 NULL | +| PARTITION_COMMENT | varchar(1024) | NO | 分区注释 | +| NODEGROUP | varchar(12) | NO | 分区所属的 nodegroup | +| TABLESPACE_NAME | varchar(128) | YES | 分区所属的 tablespace 名称 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/23.information_schema-processlist.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/23.information_schema-processlist.md new file mode 100644 index 000000000..7f42cc621 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/23.information_schema-processlist.md @@ -0,0 +1,27 @@ +information_schema.PROCESSLIST +=================================================== + + + +功能 +----------- + +提供运行中的线程信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|---------------------|----------------|--------------| +| ID | bigint(20) unsigned | NO | 连接标识符 | +| USER | varchar(32) | NO | 用户名 | +| HOST | varchar(128) | NO | 客户端主机名称 | +| DB | varchar(128) | YES | 数据库名称 | +| COMMAND | varchar(4096) | NO | 线程执行的命令类型 | +| TIME | bigint(20) | NO | 线程在当前状态的持续时间 | +| STATE | varchar(128) | YES | 表示线程正在做的任务标识 | +| INFO | varchar(262143) | YES | 当前线程正在执行的语句 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/24.information_schema-referential_constraints.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/24.information_schema-referential_constraints.md new file mode 100644 index 000000000..00d66ed38 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/24.information_schema-referential_constraints.md @@ -0,0 +1,31 @@ +information_schema.REFERENTIAL_CONSTRAINTS +=============================================================== + + + +功能 +----------- + +用于展示外键约束的元数据。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|-----------------------------------------|----------------|--------------------------------------------------------------| +| CONSTRAINT_CATALOG | varchar(4096) | NO | 该值始终为 def | +| CONSTRAINT_SCHEMA | varchar(128) | NO | 约束所属库的名称 | +| CONSTRAINT_NAME | varchar(128) | NO | 约束名称 | +| UNIQUE_CONSTRAINT_CATALOG | varchar(4096) | NO | 该值始终为 def | +| UNIQUE_CONSTRAINT_SCHEMA | ``` varchar(128) ``` | NO | 约束引用的唯一约束或主键所在库的名称 | +| UNIQUE_CONSTRAINT_NAME | varchar(128) | YES | 约束引用的唯一约束或主键的名称 | +| MATCH_OPTION | varchar(64) | NO | 约束 MATCH 属性的值。 此时唯一有效的值是 NONE | +| UPDATE_RULE | varchar(64) | NO | 约束 ON UPDATE 属性的值。 可能的值是CASCADE、SET NULL、RESTRICT、NO ACTION | +| DELETE_RULE | varchar(64) | NO | 约束 ON DELETE 属性的值。 可能的值是 CASCADE、SET NULL、RESTRICT、NO ACTION | +| TABLE_NAME | varchar(256) | NO | 约束所在子表的名称 | +| REFERENCED_TABLE_NAME | varchar(256) | NO | 约束所引用父表的名称 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/25.information_schema-routines.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/25.information_schema-routines.md new file mode 100644 index 000000000..1e87f8369 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/25.information_schema-routines.md @@ -0,0 +1,51 @@ +information_schema.ROUTINES +================================================ + + + +功能 +----------- + +提供存储过程相关的信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|------------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------| +| SPECIFIC_NAME | varchar(64) | NO | 存储过程的名称。 | +| ROUTINE_CATALOG | varchar(3) | NO | 存储过程所属的目录的名称。目前该字段暂未使用,当前值为 def。 | +| ROUTINE_SCHEMA | varchar(128) | NO | 存储过程所属的模式的名称。 | +| ROUTINE_NAME | varchar(128) | NO | 存储过程名称,与 SPECIFIC_NAME 相同。 | +| ROUTINE_TYPE | varchar(10) | NO | 过程类型: * PROCEDURE:用于存储过程 * FUNCTION:用于存储函数 | +| DATA_TYPE | varchar(0) | NO | 如果过程是存储函数,则返回值为数据类型;如果过程为存储过程,则该值为空。 目前该字段暂未使用。 | +| CHARACTER_MAXIMUM_LENGTH | null | NO | 存储函数的字符串返回值的最大长度,以字符为单位。 如果过程为存储过程,则该值为 NULL。 目前该字段暂未使用。 | +| CHARACTER_OCTET_LENGTH | null | NO | 存储函数的字符串返回值的最大长度,单位:字节。 如果过程为存储过程,则该值为 NULL 目前该字段暂未使用。 | +| NUMERIC_PRECISION | null | NO | 存储函数的数字返回值的数字精度。 如果过程为存储过程,则该值为 NULL。 目前该字段暂未使用。 | +| NUMERIC_SCALE | null | NO | 存储函数的数字返回值的数字刻度。 如果过程为存储过程,则该值为 NULL。 目前该字段暂未使用。 | +| DATETIME_PRECISION | null | NO | 存储函数的时间返回值的秒精度。 如果过程为存储过程,则该值为 NULL。 目前该字段暂未使用。 | +| CHARACTER_SET_NAME | null | NO | 存储函数的字符串返回值的字符集名称。如果过程为存储过程,则该值为 NULL。 目前该字段暂未使用 | +| COLLATION_NAME | null | NO | 存储函数的字符串返回值的归类名称。 如果例程为存储过程,则该值为 NULL。 目前该字段暂未使用。 | +| DTD_IDENTIFIER | null | NO | 未使用。如果过程是存储函数,则返回值为数据类型。如果过程是存储过程,则此值为空。 `DATA_TYPE` 值仅为类型名称,无其他信息;而 `DTD_IDENTIFIER` 值包含类型名称以及可能的其他信息,例如精度或长度。 | +| ROUTINE_BODY | varchar(3) | NO | 过程定义所使用的语言。此值始终为 SQL。 | +| ROUTINE_DEFINITION | varchar(1048576) | NO | 存储过程定义的文本信息。 | +| EXTERNAL_NAME | null | NO | 此值始终为 NULL。 | +| EXTERNAL_LANGUAGE | null | NO | 存储过程的语言。目前该字段暂未使用。 | +| PARAMETER_STYLE | varchar(3) | NO | 此值始终为 SQL。 | +| IS_DETERMINISTIC | varchar(4) | NO | YES 或 NO,取决于存储过程是否用 `DETERMINISTIC` 特性定义 。目前该字段暂未使用。 | +| SQL_DATA_ACCESS | varchar(32) | NO | 未使用。存储过程的数据访问特征。 | +| SQL_PATH | null | NO | 此值始终为 NULL | +| SECURITY_TYPE | varchar(10) | NO | SQL 安全类型: * DEFINER * INVOKER 目前该字段暂未使用。 | +| CREATED | timestamp(6) | NO | 创建存储过程的日期和时间。 | +| LAST_ALTERED | timestamp(6) | NO | 存储过程的最后修改日期和时间。 如果过程自创建以来尚未修改,则该值与 `CREATED`值相同。 | +| SQL_MODE | varchar(32) | NO | 创建或更改过程时有效的 SQL 模式,在该模式下执行过程。 | +| ROUTINE_COMMENT | varchar(1048576) | NO | 注释文本 | +| DEFINER | varchar(77) | NO | 在 DEFINER 子句中命名的帐户(通常是创建过程的用户)。 | +| CHARACTER_SET_CLIENT | varchar(128) | NO | 创建或更改存储过程时系统变量 `CHARACTER_SET_CLIENT` 的会话值。 | +| COLLATION_CONNECTION | varchar(128) | NO | 创建或更改存储过程时系统变量 `COLLATION_CONNECTION` 的会话值。 | +| DATABASE_COLLATION | varchar(128) | NO | 创建或更改存储过程时系统变量 `DATABASE_COLLATION `的会话值。 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/26.information_schema-schemata.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/26.information_schema-schemata.md new file mode 100644 index 000000000..56c7098d4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/26.information_schema-schemata.md @@ -0,0 +1,24 @@ +information_schema.SCHEMATA +================================================ + + + +功能 +----------- + +记录数据库元信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|--------------|----------------|---------| +| CATALOG_NAME | varchar(3) | NO | 固定值 def | +| SCHEMA_NAME | varchar(128) | NO | 数据库名 | +| DEFAULT_CHARACTER_SET_NAME | varchar(7) | NO | 默认字符集 | +| DEFAULT_COLLATION_NAME | varchar(18) | NO | 默认比对规则 | +| SQL_PATH | null | NO | NULL | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/27.information_schema-schema_privileges.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/27.information_schema-schema_privileges.md new file mode 100644 index 000000000..63bd9a77b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/27.information_schema-schema_privileges.md @@ -0,0 +1,24 @@ +information_schema.SCHEMA_PRIVILEGES +========================================================= + + + +功能 +----------- + +描述数据库权限信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|----------| +| GRANTEE | varchar(81) | NO | 权限描述 | +| TABLE_CATALOG | varchar(4096) | NO | 固定值(def) | +| TABLE_SCHEMA | varchar(128) | NO | 数据库名 | +| PRIVILEGE_TYPE | varchar(64) | NO | 权限类型 | +| IS_GRANTABLE | varchar(3) | NO | 是否授权 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/28.information_schema-session_status.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/28.information_schema-session_status.md new file mode 100644 index 000000000..36f6e6e27 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/28.information_schema-session_status.md @@ -0,0 +1,22 @@ +information_schema.SESSION_STATUS +====================================================== + + + +功能 +----------- + +记录 Session 的状态信息,如当前活跃连接数,数据库活跃时间(Uptime)等。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|-------------| +| VARIABLE_NAME | varchar(128) | NO | Session 状态名 | +| VARIABLE_VALUE | varchar(1024) | YES | Session 状态值 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/29.information_schema-session_variables.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/29.information_schema-session_variables.md new file mode 100644 index 000000000..58e5c4cc8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/29.information_schema-session_variables.md @@ -0,0 +1,24 @@ +information_schema.SESSION_VARIABLES +========================================================= + + + +功能 +----------- + +记录 session 的变量信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|-------------| +| VARIABLE_NAME | varchar(128) | NO | Session 变量名 | +| VARIABLE_VALUE | varchar(1024) | YES | Session 变量值 | + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/3.mysql-help_keyword.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/3.mysql-help_keyword.md new file mode 100644 index 000000000..70e426125 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/3.mysql-help_keyword.md @@ -0,0 +1,39 @@ +mysql.help_keyword +======================================= + + + +**功能** +--------------------------- + +与其他三个表 mysql.help_relation、mysql.help_topic、mysql.help_category 合作生成 help 命令。 + +**相关表/视图** +------------------------------- + +* mysql.help_relation + + + +* mysql.help_topic + + + +* mysql.help_category + + + + + + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|-------------|----------------|--------| +| help_keyword_id | bigint(20) | NO | 关键词 ID | +| name | varchar(64) | NO | 关键词 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/30.information_schema-statistics.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/30.information_schema-statistics.md new file mode 100644 index 000000000..dcfcd1dbc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/30.information_schema-statistics.md @@ -0,0 +1,36 @@ +information_schema.STATISTICS +================================================== + + + +功能 +----------- + +记录表索引信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|---------------|----------------|-----------------------------------------------| +| TABLE_CATALOG | varchar(3) | NO | 固定值(def) | +| TABLE_SCHEMA | varchar(128) | NO | 数据库名 | +| TABLE_NAME | varchar(128) | NO | 表名 | +| NON_UNIQUE | bigint(20) | NO | 是否是唯一索引 | +| INDEX_SCHEMA | varchar(128) | NO | 数据库名 | +| INDEX_NAME | varchar(128) | NO | 索引类型 | +| SEQ_IN_INDEX | bigint(20) | NO | 索引编号 | +| COLUMN_NAME | varchar(128) | NO | 列名 | +| COLLATION | varchar(128) | YES | 比对方法 | +| CARDINALITY | bigint(20) | YES | 索引中唯一值的数目估计值 | +| SUB_PART | varchar(256) | YES | 如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为 NULL | +| PACKED | varchar(256) | YES | 指示关键字如何被压缩 | +| NULLABLE | varchar(128) | NO | 是否可以为 NULL | +| INDEX_TYPE | varchar(128) | NO | 索引使用的数据结构类型 | +| COMMENT | varchar(4096) | YES | 注释 | +| INDEX_COMMENT | varchar(4096) | NO | 索引注释 | +| IS_VISIBLE | varchar(3) | NO | 索引是否可见 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/31.information_schema-tables.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/31.information_schema-tables.md new file mode 100644 index 000000000..edc421ffd --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/31.information_schema-tables.md @@ -0,0 +1,55 @@ +information_schema.TABLES +============================================== + + + +功能 +----------- + +记录表的信息。 + +相关表/视图 +--------------- + +* __all_table + + + +* __all_table_history + + + + + + +字段说明 +------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|-----------------|--------------------|------------|-----------| +| TABLE_CATALOG | varchar(3) | NO | 表目录 | +| TABLE_SCHEMA | varchar(128) | NO | 数据库名称 | +| TABLE_NAME | varchar(256) | NO | 表名 | +| TABLE_TYPE | varchar(12) | NO | 表类型 | +| ENGINE | null | NO | 使用的存储引擎类型 | +| VERSION | null | NO | 版本 | +| ROW_FORMAT | null | NO | 行格式 | +| TABLE_ROWS | decimal(20,0) | NO | 表的行数 | +| AVG_ROW_LENGTH | decimal(24,4) | NO | 平均行长度 | +| DATA_LENGTH | decimal(20,0) | NO | 数据长度 | +| MAX_DATA_LENGTH | null | NO | 最大数据长度 | +| INDEX_LENGTH | null | NO | 索引长度 | +| DATA_FREE | null | NO | 剩余空间大小 | +| AUTO_INCREMENT | null | NO | 当前的自增值 | +| CREATE_TIME | timestamp(6) | NO | 表的创建时间 | +| UPDATE_TIME | timestamp(6) | NO | 表的最近更新时间 | +| CHECK_TIME | null | NO | 表的最近检查时间 | +| TABLE_COLLATION | varchar(128) | NO | 表的字符集比对方法 | +| CHECKSUM | bigint(0) unsigned | NO | 校验和 | +| CREATE_OPTIONS | null | NO | 创建选项 | +| TABLE_COMMENT | varchar(4096) | NO | 表的备注 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/32.information_schema-table_constraints.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/32.information_schema-table_constraints.md new file mode 100644 index 000000000..d22ad1aff --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/32.information_schema-table_constraints.md @@ -0,0 +1,26 @@ +information_schema.TABLE_CONSTRAINTS +========================================================= + + + +功能 +----------- + +描述表约束信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|--------| +| CONSTRAINT_CATALOG | varchar(4096) | NO | 约束目录 | +| CONSTRAINT_SCHEMA | varchar(128) | NO | 数据库名 | +| CONSTRAINT_NAME | varchar(128) | NO | 约束名称 | +| TABLE_SCHEMA | varchar(128) | NO | 数据库名 | +| TABLE_NAME | varchar(256) | NO | 表名 | +| CONSTRAINT_TYPE | varchar(128) | NO | 约束类型 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/33.information_schema-table_privileges.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/33.information_schema-table_privileges.md new file mode 100644 index 000000000..417c7828c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/33.information_schema-table_privileges.md @@ -0,0 +1,39 @@ +information_schema.TABLE_PRIVILEGES +======================================================== + + + +功能 +----------- + +记录表权限信息。 + +相关表/视图 +--------------- + +* __all_table_privilege + + + +* __all_table_privilege_history + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|--------| +| GRANTEE | varchar(81) | NO | 权限描述 | +| TABLE_CATALOG | varchar(4096) | NO | 表目录 | +| TABLE_SCHEMA | varchar(128) | NO | 数据库名 | +| TABLE_NAME | varchar(64) | NO | 表名 | +| PRIVILEGE_TYPE | varchar(64) | NO | 权限类型 | +| IS_GRANTABLE | varchar(3) | NO | 是否授权 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/34.information_schema-user_privileges.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/34.information_schema-user_privileges.md new file mode 100644 index 000000000..b54bc8c57 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/34.information_schema-user_privileges.md @@ -0,0 +1,26 @@ +information_schema.USER_PRIVILEGES +======================================================= + + + +功能 +----------- + +记录用户权限信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|--------| +| GRANTEE | varchar(81) | NO | 权限描述 | +| TABLE_CATALOG | varchar(4096) | NO | 表目录 | +| PRIVILEGE_TYPE | varchar(64) | NO | 权限类型 | +| IS_GRANTABLE | varchar(3) | NO | 是否授权 | + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/35.information_schema-user_recyclebin.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/35.information_schema-user_recyclebin.md new file mode 100644 index 000000000..1cc5d43b9 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/35.information_schema-user_recyclebin.md @@ -0,0 +1,29 @@ +information_schema.USER_RECYCLEBIN +======================================================= + + + +功能 +----------- + +记录回收站信息。 + +相关表/视图 +--------------- + +__all_recyclebin + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|--------------|----------------|------------------| +| OBJECT_NAME | varchar(128) | NO | Object 名称 | +| ORIGINAL_NAME | varchar(256) | NO | Object 对应对象的原始名称 | +| TYPE | varchar(8) | NO | Object 类型 | +| CREATETIME | timestamp(6) | NO | 创建时间 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/36.information_schema-views.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/36.information_schema-views.md new file mode 100644 index 000000000..62256d567 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/36.information_schema-views.md @@ -0,0 +1,29 @@ +information_schema.VIEWS +============================================= + + + +功能 +----------- + +记录视图信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|----------------------|----------------|------------|---------------------------------------------| +| TABLE_CATALOG | varchar(3) | NO | 表目录 | +| TABLE_SCHEMA | varchar(128) | NO | 数据库名称 | +| TABLE_NAME | varchar(256) | NO | 表名称 | +| VIEW_DEFINITION | varchar(65536) | NO | 视图定义 | +| CHECK_OPTION | varchar(4) | NO | 检查选项 | +| IS_UPDATABLE | varchar(3) | NO | 是否可更新 | +| DEFINER | varchar(130) | NO | 创建视图的用户名 | +| SECURITY_TYPE | varchar(4) | NO | 安全类型 | +| CHARACTER_SET_CLIENT | varchar(7) | NO | 视图创建时对应的 Session 变量 character_set_client 的值 | +| COLLATION_CONNECTION | varchar(18) | NO | 视图创建时对应的 session 变量 collation_connection 的值 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/37.oceanbase-cdb_ob_backup_archivelog_summary.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/37.oceanbase-cdb_ob_backup_archivelog_summary.md new file mode 100644 index 000000000..59c1a7437 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/37.oceanbase-cdb_ob_backup_archivelog_summary.md @@ -0,0 +1,31 @@ +oceanbase.CDB_OB_BACKUP_ARCHIVELOG_SUMMARY +=============================================================== + + + +功能 +----------- + +展示日志备份任务信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|---------------|----------------|---------------------------------| +| INCARNATION | bigint(20) | NO | 数据库的分身编号。 | +| LOG_ARCHIVE_ROUND | bigint(20) | NO | 用于标识第几轮完整的 clog 备份数据流 | +| TENANT_ID | bigint(20) | NO | 租户 id | +| STATUS | varchar(64) | NO | 备份任务的状态 | +| MIN_FIRST_TIME | timestamp(6) | NO | 起始的 logts | +| MAX_NEXT_TIME | timestamp(6) | NO | 目前已经备份最大的 log 的时间戳。 | +| INPUT_BYTES | bigint(20) | NO | 读取的数据量 | +| OUTPUT_BYTES | bigint(20) | NO | 输出的数据量 | +| COMPRESSION_RATIO | decimal(23,2) | NO | 压缩率 | +| INPUT_BYTES_DISPLAY | varchar(27) | NO | 带单位的读取数据量,例如:798.01 M 或 5.25 G。 | +| OUTPUT_BYTES_DISPLAY | varchar(27) | NO | 带单位的输出数据量,例如:798.01 M 或 5.25 G。 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/38.oceanbase-cdb_ob_backup_job_details.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/38.oceanbase-cdb_ob_backup_job_details.md new file mode 100644 index 000000000..042b8f3a8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/38.oceanbase-cdb_ob_backup_job_details.md @@ -0,0 +1,40 @@ +oceanbase.CDB_OB_BACKUP_JOB_DETAILS +======================================================== + + + +功能 +----------- + +展示备份任务的详细信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| INCARNATION | bigint(20) | NO | 数据库的分身编号。 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| BS_KEY | bigint(20) | NO | 备份集 ID | +| BACKUP_TYPE | VARCHAR(1) | NO | * D:表示全量备份 * I:表示增量备份 | +| ENCRYPTION_MODE | varchar(64) | NO | * None:表示不加密 * Password:表示只使用密码保护 * Password encryption:表示加密,并且通过密码保护. * Transparent encryption:表示加使用了tde 加密 * Dual mode encryption:表示通过tde加密,并且通过密码保护 当前版本仅支持 None 和 Password | +| START_TIME | timestamp(6) | NO | 起始时间 | +| END_TIME | timestamp(6) | NO | 结束时间 | +| INPUT_BYTES | bigint(20) | NO | 输入字节数 | +| OUTPUT_BYTES | bigint(20) | NO | 输出字节数 | +| OUTPUT_DEVICE_TYPE | varchar(64) | NO | 备份的介质 | +| ELAPSED_SECONDS | decimal(21,0) | NO | 耗时 | +| COMPRESSION_RATIO | decimal(23,2) | NO | 压缩率 | +| INPUT_BYTES_PER_SEC | decimal(34,4) | NO | 每秒输入字节数 | +| OUTPUT_BYTES_PER_SEC | decimal(34,4) | NO | 每秒输出字节数 | +| STATUS | varchar(9) | NO | 备份的状态: * RUNNING * COMPLETED * FAILED | +| INPUT_BYTES_DISPLAY | varchar(27) | NO | 输入字节数 | +| OUTPUT_BYTES_DISPLAY | varchar(27) | NO | 输出字节数 | +| INPUT_BYTES_PER_SEC_DISPLAY | varchar(39) | NO | 每秒输入速度 | +| OUTPUT_BYTES_PER_SEC_DISPLAY | varchar(39) | NO | 每秒输出速度 | +| TIME_TAKEN_DISPLAY | time(6) | NO | 耗时 hh:mm:ss | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/39.oceanbase-cdb_ob_backup_set_details.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/39.oceanbase-cdb_ob_backup_set_details.md new file mode 100644 index 000000000..776fe7780 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/39.oceanbase-cdb_ob_backup_set_details.md @@ -0,0 +1,39 @@ +oceanbase.CDB_OB_BACKUP_SET_DETAILS +======================================================== + + + +功能 +----------- + +展示备份集的详细信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| INCARNATION | bigint(20) | NO | 数据库的分身编号。 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| BS_KEY | bigint(20) | NO | 备份集 ID | +| BACKUP_TYPE | varchar(1) | NO | * D:表示全量备份 * I:表示增量备份 | +| ENCRYPTION_MODE | varchar(64) | NO | * None:表示不加密 * Password:表示只使用密码保护 * Password encryption:表示加密,并且通过密码保护. * Transparent encryption:表示加使用了tde 加密 * Dual mode encryption:表示通过tde加密,并且通过密码保护 当前版本仅支持 None 和 Password | +| START_TIME | timestamp(6) | NO | 起始时间 | +| COMPLETION_TIME | timestamp(6) | NO | 完成时间 | +| ELAPSED_SECONDES | decimal(21,0) | NO | 耗时 | +| KEEP | varchar(2) | NO | * YES:表示永久保留 * NO:表示根据保留时间过期 | +| KEEP_UNTIL | varchar(0) | NO | 保留的时间 | +| DEVICE_TYPE | varchar(64) | NO | 备份介质 | +| COMPRESSED | varchar(2) | NO | 是否压缩: * YES:表示压缩 * NO:表示不压缩 | +| OUTPUT_BYTES | bigint(20) | NO | 输出字节数 | +| OUTPUT_RATE_BYTES | decimal(34,4) | NO | 每秒输出字节数 | +| COMPRESSION_RATIO | decimal(23,2) | NO | 压缩率 | +| OUTPUT_BYTES_DISPLAY | varchar(27) | NO | 带单位的输出数据量,例如:798.01 M 或5.25 G。 | +| OUTPUT_RATE_BYTES_DISPLAY | varchar(39) | NO | 输出速度 | +| TIME_TAKEN_DISPLAY | time(6) | NO | 耗时 hh:mm:ss | +| STATUS | varchar(64) | NO | * COMPELETED:表示 backup_set 备份成功 * FAILED:表示 backup_set 备份失败 * DELETING:表示 backup_set 正在清理 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/4.mysql-help_relation.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/4.mysql-help_relation.md new file mode 100644 index 000000000..74bff16fc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/4.mysql-help_relation.md @@ -0,0 +1,40 @@ +mysql.help_relation +======================================== + + + +功能 +----------- + +与其他三个表 mysql.help_category、mysql.help_topic、mysql.help_keyword 合作生成 help 命令。 + +相关表/视图 +--------------- + +* mysql.help_category + + + +* mysql.help_topic + + + +* mysql.help_keyword + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|------------|----------------|--------| +| help_topic_id | bigint(20) | NO | 主题 ID | +| help_keyword_id | bigint(20) | NO | 关键词 ID | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/40.oceanbase-cdb_ob_backup_progress.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/40.oceanbase-cdb_ob_backup_progress.md new file mode 100644 index 000000000..c8c2c4c29 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/40.oceanbase-cdb_ob_backup_progress.md @@ -0,0 +1,33 @@ +oceanbase.CDB_OB_BACKUP_PROGRESS +===================================================== + + + +功能 +----------- + +展示数据库备份任务的进度。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------| +| INCARNATION | bigint(20) | NO | 数据库的分身编号 | +| BS_KEY | bigint(20) | NO | 备份集的 ID | +| BACKUP_TYPE | VARCHAR(1) | NO | * D:表示全量备份 * I:表示增量备份 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| PARTITION_COUNT | bigint(20) | YES | Partition Group 的个数 | +| MACRO_BLOCK_COUNT | bigint(20) | NO | 宏块的个数 | +| FINISH_PARTITION_COUNT | bigint(20) | YES | 完成的 Partition Group 的个数 | +| FINISH_MACRO_BLOCK_COUNT | bigint(20) | NO | 完成的宏块个数 | +| INPUT_BYTES | bigint(20) | NO | 输入字节数 | +| OUTPUT_BYTES | bigint(20) | NO | 输出字节数 | +| START_TIME | timestamp(6) | NO | 起始时间 | +| COMPLETION_TIME | timestamp(6) | NO | 完成时间 | +| STATUS | varchar(9) | NO | 备份任务的状态 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/41.oceanbase-cdb_ob_backup_set_expired.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/41.oceanbase-cdb_ob_backup_set_expired.md new file mode 100644 index 000000000..cda4eb3b6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/41.oceanbase-cdb_ob_backup_set_expired.md @@ -0,0 +1,38 @@ +oceanbase.CDB_OB_BACKUP_SET_EXPIRED +======================================================== + + + +功能 +----------- + +用于展示哪些备份集的数据已过期。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| INCARNATION | bigint(20) | NO | 数据库的分身编号。 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| BS_KEY | bigint(20) | NO | 备份集 ID | +| BACKUP_TYPE | varchar(1) | NO | * D:表示全量备份 * I:表示增量备份 | +| ENCRYPTION_MODE | varchar(64) | NO | * None:表示不加密 * Password:表示只使用密码保护 * Password encryption:表示加密,并且通过密码保护. * Transparent encryption:表示加使用了tde 加密 * Dual mode encryption:表示通过tde加密,并且通过密码保护 当前版本仅支持 None 和 Password | +| START_TIME | timestamp(6) | NO | 起始时间 | +| COMPLETION_TIME | timestamp(6) | NO | 完成时间 | +| ELAPSED_SECONDES | decimal(21,0) | NO | 耗时 | +| KEEP | varchar(2) | NO | * YES:表示永久保留 * NO:表示根据保留时间过期 | +| KEEP_UNTIL | varchar(0) | NO | 保留的时间 | +| DEVICE_TYPE | varchar(64) | NO | 备份介质 | +| COMPRESSED | varchar(2) | NO | 是否压缩: * YES:表示压缩 * NO:表示不压缩 | +| OUTPUT_BYTES | bigint(20) | NO | 输出字节数 | +| OUTPUT_RATE_BYTES | decimal(34,4) | NO | 每秒输出字节数 | +| COMPRESSION_RATIO | decimal(23,2) | NO | 压缩率 | +| OUTPUT_BYTES_DISPLAY | varchar(27) | NO | 带单位的输出数据量,例如:798.01 M 或5.25 G。 | +| OUTPUT_RATE_BYTES_DISPLAY | varchar(39) | NO | 输出速度 | +| TIME_TAKEN_DISPLAY | timestamp(6) | NO | 耗时 hh:mm:ss | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/42.oceanbase-cdb_ob_backup_archivelog_progress.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/42.oceanbase-cdb_ob_backup_archivelog_progress.md new file mode 100644 index 000000000..7087f96bb --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/42.oceanbase-cdb_ob_backup_archivelog_progress.md @@ -0,0 +1,30 @@ +oceanbase.CDB_OB_BACKUP_ARCHIVELOG_PROGRESS +================================================================ + + + +功能 +----------- + +展示单个 Partition Group 的备份进度信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|--------------|----------------|-----------------------| +| INCARNATION | bigint(20) | NO | 数据库的分身编号。 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| LOG_ARCHIVE_ROUND | bigint(20) | NO | 用于标识第几轮完整的 clog 备份数据流 | +| SVR_IP | varchar(32) | NO | 服务器 IP | +| SVR_PORT | bigint(20) | NO | 服务器端口号 | +| TABLE_ID | bigint(20) | NO | 表 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| MIN_FIRST_TIME | timestamp(6) | NO | 起始的 logts | +| MAX_NEXT_TIME | timestamp(6) | NO | 目前已经备份最大的 logts | +| STATUS | varchar(11) | NO | 备份任务的状态 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/43.oceanbase-cdb_ob_backup_clean_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/43.oceanbase-cdb_ob_backup_clean_history.md new file mode 100644 index 000000000..802b3185d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/43.oceanbase-cdb_ob_backup_clean_history.md @@ -0,0 +1,29 @@ +oceanbase.CDB_OB_BACKUP_CLEAN_HISTORY +========================================================== + + + +功能 +----------- + +租户级别备份数据清理的历史信息表。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|---------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| BS_KEY | bigint(20) | NO | 备份集的 ID | +| START_TIME | timestamp(6) | NO | 开始恢复时间 | +| END_TIME | timestamp(6) | NO | 结束恢复时间 | +| INCARNATION | bigint(20) | NO | 数据库的分身编号。 | +| TYPE | varchar(64) | NO | 表示清理的类型:过期清理或指定 backup_set | +| STATUS | varchar(64) | NO | 备份清理的状态类型: * STOP * PREPARE * DOING | +| PARAMETER | varchar(256) | NO | 根据不同的 Type 表示不同的含义。 如果是过期清理,则 parameters 表示过期的时间;如果是 backup_set 清理,则表示 backup_set_id | +| ERROR_MSG | varchar(512) | NO | 错误信息 | +| COMMENT | varchar(4096) | NO | 记录一些清理相关信息 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/44.oceanbase-cdb_ob_backup_task_clean_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/44.oceanbase-cdb_ob_backup_task_clean_history.md new file mode 100644 index 000000000..f613809c5 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/44.oceanbase-cdb_ob_backup_task_clean_history.md @@ -0,0 +1,33 @@ +oceanbase.CDB_OB_BACKUP_TASK_CLEAN_HISTORY +=============================================================== + + + +功能 +----------- + +用于记录被清理掉的备份信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|--------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| INCARNATION | bigint(20) | NO | 数据库的分身编号。 | +| BS_KEY | bigint(20) | NO | 备份集 ID | +| BACKUP_TYPE | varchar(1) | NO | * D:表示全量备份 * I:表示增量备份 | +| PARTITION_COUNT | bigint(20) | NO | Partition Group 的个数 | +| MACRO_BLOCK_COUNT | bigint(20) | NO | 宏块的个数 | +| FINISH_PARTITION_COUNT | bigint(20) | NO | 完成的 Partition Group 的个数 | +| FINISH_MACRO_BLOCK_COUNT | bigint(20) | NO | 完成的宏块个数 | +| INPUT_BYTES | bigint(20) | NO | 输入字节数 | +| OUTPUT_BYTES | bigint(20) | NO | 输出字节数 | +| START_TIME | timestamp(6) | NO | 起始时间 | +| COMPLETION_TIME | timestamp(6) | NO | 完成时间 | +| STATUS | varchar(64) | NO | 备份清理的状态: * SUCCESS * FAILED | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/45.oceanbase-cdb_ob_restore_progress.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/45.oceanbase-cdb_ob_restore_progress.md new file mode 100644 index 000000000..708449fe0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/45.oceanbase-cdb_ob_restore_progress.md @@ -0,0 +1,38 @@ +oceanbase.CDB_OB_RESTORE_PROGRESS +====================================================== + + + +功能 +----------- + +展示物理恢复任务当前的执行进度。 + +字段说明 +------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|---------------------------|---------------|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| JOB_ID | bigint(20) | NO | 物理恢复任务唯一标识 | +| EXTERNAL_JOB_ID | bigint(20) | NO | 物理恢复任务外部标识,不保证唯一性;在恢复命令中传入,缺省为 -1 | +| TENANT_ID | bigint(20) | NO | 当前恢复的租户 ID,缺省值 -1 | +| TENANT_NAME | varchar(128) | NO | 当前恢复的租户名,缺省值为空 | +| BACKUP_TENANT_ID | bigint(20) | NO | 原备份的租户 ID | +| BACKUP_TENANT_NAME | varchar(128) | NO | 原备份的租户名 | +| BACKUP_CLUSTER_ID | bigint(20) | NO | 原备份的集群 ID | +| BACKUP_CLUSTER_NAME | varchar(128) | NO | 原备份的集群名 | +| STATUS | varchar(64) | NO | 物理恢复所处阶段: * CREATE_TENANT:创建租户阶段 * RESTORE_SYS_REPLICA:租户系统表恢复阶段 * MODIFY_SCHEMA:租户元信息修正阶段 * CREATE_USER_PARTITIONS:租户用户表创建阶段 * RESTORE_USER_REPLICA:租户用户表恢复阶段 * REBUILD_INDEX:索引重建阶段 * POST_CHECK:校验阶段 * RESTORE_SUCCESS:恢复成功 * RESTORE_FAIL:恢复失败 | +| START_TIME | timestamp(6) | YES | 恢复开始时间 | +| COMPLETION_TIME | timestamp(6) | YES | 恢复完成时间 | +| PARTITION_COUNT | bigint(20) | NO | * RESTORE_SYS_REPLICA 阶段:待恢复系统表分区数 * RESTORE_USER_REPLICA 阶段:待恢复用户表分区数 * 其余阶段无意义,缺省值为 0 | +| MACRO_BLOCK_COUNT | bigint(20) | NO | 待恢复宏块个数,暂未实现,该值无意义 | +| FINISH_PARTITION_COUNT | bigint(20) | NO | * RESTORE_SYS_REPLICA 阶段:已完成基线恢复的系统表分区数 * RESTORE_USER_REPLICA 阶段:已完成基线恢复的用户表分区数 * 其余阶段无意义,缺省值为 0 | +| FINISH_MACRO_BLOCK_COUNT | bigint(20) | NO | 已恢复宏块个数,暂未实现,该值无意义,缺省值为 0 | +| RESTORE_START_TIMESTAMP | timestamp(6) | YES | 增量恢复起始位点,由备份数据决定 | +| RESTORE_FINISH_TIMESTAMP | timestamp(6) | YES | 增量恢复结束位点,由恢复命令中指定 | +| RESTORE_CURRENT_TIMESTAMP | timestamp(6) | YES | 当前增量恢复的位点。目前该字段暂未使用,该值无意义 | +| INFO | varchar(4096) | NO | 恢复过程中的运行信息,主要是恢复失败时的失败模块及错误码,缺省值为空 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/46.oceanbase-cdb_ob_restore_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/46.oceanbase-cdb_ob_restore_history.md new file mode 100644 index 000000000..29f5fe3e4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/46.oceanbase-cdb_ob_restore_history.md @@ -0,0 +1,39 @@ +oceanbase.CDB_OB_RESTORE_HISTORY +===================================================== + + + +功能 +----------- + +展示物理恢复任务完成时的状态,是恢复任务结束时,对应任务在 CDB_OB_RESTORE_PROGRESS 对应记录的快照。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|---------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| JOB_ID | bigint(20) | NO | 物理恢复任务唯一标识 | +| EXTERNAL_JOB_ID | bigint(20) | NO | 物理恢复任务外部标识,不保证唯一性;在恢复命令中传入,缺省为 -1 | +| TENANT_ID | bigint(20) | NO | 恢复的租户 ID,缺省值 -1 | +| TENANT_NAME | varchar(128) | NO | 恢复的租户名,缺省值为空 | +| BACKUP_TENANT_ID | bigint(20) | NO | 原备份的租户 ID | +| BACKUP_TENANT_NAME | varchar(128) | NO | 原备份的租户名 | +| BACKUP_CLUSTER_ID | bigint(20) | NO | 原备份的集群 ID | +| BACKUP_CLUSTER_NAME | varchar(128) | NO | 原备份的集群名 | +| STATUS | varchar(64) | NO | 物理恢复所处阶段 * CREATE_TENANT:创建租户阶段 * RESTORE_SYS_REPLICA:租户系统表恢复阶段 * MODIFY_SCHEMA:租户元信息修正阶段 * CREATE_USER_PARTITIONS:租户用户表创建阶段 * RESTORE_USER_REPLICA:租户用户表恢复阶段 * REBUILD_INDEX:索引重建阶段 * POST_CHECK:校验阶段 * RESTORE_SUCCESS:恢复成功 * RESTORE_FAIL:恢复失败 | +| START_TIME | timestamp(6) | YES | 恢复开始时间 | +| COMPLETION_TIME | timestamp(6) | YES | 恢复完成时间 | +| PARTITION_COUNT | bigint(20) | NO | * RESTORE_SYS_REPLICA 阶段:待恢复系统表分区数 * RESTORE_USER_REPLICA 阶段:待恢复用户表分区数 * 其余阶段无意义,缺省值为 0 | +| MACRO_BLOCK_COUNT | bigint(20) | NO | 待恢复宏块个数,暂未实现,该值无意义 | +| FINISH_PARTITION_COUNT | bigint(20) | NO | * RESTORE_SYS_REPLICA 阶段:已完成基线恢复的系统表分区数 * RESTORE_USER_REPLICA 阶段:已完成基线恢复的用户表分区数 * 其余阶段无意义,缺省值为 0 | +| FINISH_MACRO_BLOCK_COUNT | bigint(20) | NO | 已恢复宏块个数,暂未实现,该值无意义,缺省值为 0 | +| RESTORE_START_TIMESTAMP | timestamp(6) | YES | 增量恢复起始位点,由备份数据决定 | +| RESTORE_FINISH_TIMESTAMP | timestamp(6) | YES | 增量恢复结束位点,由恢复命令中指定 | +| RESTORE_CURRENT_TIMESTAMP | timestamp(6) | YES | 当前增量恢复的位点,暂未实现,该值无意义 | +| INFO | varchar(4096) | NO | 恢复过程中的运行信息,主要是恢复失败时的失败模块及错误码,缺省值为空 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/47.oceanbase-cdb_ckpt_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/47.oceanbase-cdb_ckpt_history.md new file mode 100644 index 000000000..39de5dac6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/47.oceanbase-cdb_ckpt_history.md @@ -0,0 +1,27 @@ +oceanbase.CDB_CKPT_HISTORY +=============================================== + + + +功能 +----------- + +oceanbase.CDB_CKPT_HISTORY 用于展示系统中每个租户执行 Checkpoint 的相关信息,包括类型、版本号、集群版本和起止时间。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|----------------------------|--------------|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SVR_IP | varchar(32) | NO | Server 的 IP 地址 | +| SVR_PORT | bigint(20) | NO | Server 的端口号 | +| TENANT_ID | varchar(256) | NO | 租户 ID | +| CHECKPOINT_SNAPSHOT | longtext | NO | 表示写 Checkpoint 的 Snaphost 版本号 | +| CHECKPOINT_TYPE | varchar(256) | NO | CheckPoint 的类型: * META_CKPT:Major Compaction * DATA_CKPT:Mini Compaction | +| CHECKPOINT_CLUSTER_VERSION | varchar(256) | NO | 表示写 Checkpoint 的 OceanBase 集群的版本号 | +| START_TIME | timestamp(6) | NO | 写 Checkpoint 的开始时间 | +| FINISH_TIME | varchar(32) | NO | 写 Checkpoint 的结束时间 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/48.oceanbase-cdb_ob_backup_validation_job.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/48.oceanbase-cdb_ob_backup_validation_job.md new file mode 100644 index 000000000..fc92deb7a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/48.oceanbase-cdb_ob_backup_validation_job.md @@ -0,0 +1,36 @@ +oceanbase.CDB_OB_BACKUP_VALIDATION_JOB +=========================================================== + + + +功能 +----------- + +展示备份校验进度,用于在 OCP 上展示备份校验的情况,只保留正在执行的任务。 + +相关视图 +------------- + +* CDB_OB_BACKUP_VALIDATION_JOB_HISTORY + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------| +| JOB_ID | bigint(20) | NO | Job ID | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TENANT_NAME | varchar(128) | NO | 租户名 | +| INCARNATION | bigint(20) | NO | 与 Oracle 中的 incarnation 含义相关,表示 flashback database 后的第几次分身 | +| BACKUP_SET_ID | bigint(20) | NO | 备份集的 ID | +| PROGRESS_PERCENT | bigint(20) | NO | 备份校验进度 | +| STATUS | varchar(64) | NO | 备份校验的状态类型: * SUCCESS * FAILED | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/49.oceanbase-cdb_ob_backup_validation_job_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/49.oceanbase-cdb_ob_backup_validation_job_history.md new file mode 100644 index 000000000..1cbe8223a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/49.oceanbase-cdb_ob_backup_validation_job_history.md @@ -0,0 +1,27 @@ +oceanbase.CDB_OB_BACKUP_VALIDATION_JOB_HISTORY +=================================================================== + + + +功能 +----------- + +展示备份校验进度,用于在 OCP 上展示备份校验的情况,保留所有历史任务。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------| +| JOB_ID | bigint(20) | NO | 备份校验的 Job ID | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TENANT_NAME | varchar(128) | NO | 租户名,缺省值为空 | +| INCARNATION | bigint(20) | NO | 数据库的分身编号 | +| BACKUP_SET_ID | bigint(20) | NO | 备份集的 ID | +| PROGRESS_PERCENT | bigint(20) | NO | 备份校验进度 | +| STATUS | varchar(64) | NO | 备份校验的状态类型: * SUCCESS * FAILED | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/5.mysql-db.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/5.mysql-db.md new file mode 100644 index 000000000..f1da2174f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/5.mysql-db.md @@ -0,0 +1,47 @@ +mysql.db +============================= + + + +功能 +----------- + +用于展示数据库级别的权限信息(VIRTUAL_TABLE)。 + +相关表/视图 +--------------- + +无 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|--------------|----------------|------------------------------------------------------------------------| +| host | varchar(128) | NO | 主机名 | +| db | varchar(128) | NO | 数据库名 | +| user | varchar(128) | NO | 用户名 | +| select_priv | varchar(1) | NO | 是否可执行 select 语句 | +| insert_priv | varchar(1) | NO | 是否可执行 insert 语句 | +| update_priv | varchar(1) | NO | 是否可执行 update 语句 | +| delete_priv | varchar(1) | NO | 是可可执行 delete 语句 | +| create_priv | varchar(1) | NO | 是否可执行 create 语句 | +| drop_priv | varchar(1) | NO | 是否可执行 drop 语句 | +| grant_priv | varchar(1) | NO | 是否可进行授权操作 | +| reference_priv | varchar(1) | NO | 暂未使用 | +| index_priv | varchar(1) | NO | 是否可创建 index | +| alter_priv | varchar(1) | NO | 是否可执行` alter table` 语句 | +| create_tmp_table_priv | varchar(1) | NO | 是否可创建临时表。目前暂未使用该字段 | +| lock_tables_priv | varchar(1) | NO | 是否可执行` LOCK TABLES 语` 句,用户同时需要有表上的 select 权限。目前暂未使用该字段 | +| create_view_priv | varchar(1) | NO | 是否可执行` create view `语句 | +| show_view_priv | varchar(1) | NO | 是否可执行` show create view `语句 | +| create_routine_priv | varchar(1) | NO | 是否可创建存储过程(暂未使用) | +| alter_routine_priv | varchar(1) | NO | 是否可执行`alter function` 语句(暂未使用) | +| execute_priv | varchar(1) | NO | 是否可执行存储过程(暂未使用) | +| event_priv | varchar(1) | NO | 是否可创建删除或者更改 event(暂未使用) | +| trigger_priv | varchar(1) | NO | 是否可执行` create trigger` 或` drop trigger` 语句。目前暂未使用该字段 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/50.oceanbase-cdb_ob_tenant_backup_validation_task.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/50.oceanbase-cdb_ob_tenant_backup_validation_task.md new file mode 100644 index 000000000..32a925417 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/50.oceanbase-cdb_ob_tenant_backup_validation_task.md @@ -0,0 +1,41 @@ +oceanbase.CDB_OB_TENANT_BACKUP_VALIDATION_TASK +=================================================================== + + + +功能 +----------- + +展示租户级别的备份校验任务。 + +相关视图 +------------- + +CDB_OB_BACKUP_VALIDATION_TASK_HISTORY + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------| +| JOB_ID | bigint(20) | NO | Job ID | +| TASK_ID | bigint(20) | NO | Task ID | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| INCARNATION | bigint(20) | NO | 与 Oracle 中的 incarnation 含义相关,表示 flashback database 后的第几次分身 | +| BACKUP_SET_ID | bigint(20) | NO | 备份集的 ID | +| STATUS | varchar(64) | NO | 备份校验的状态类型: * SUCCESS * FAILED | +| BACKUP_DEST | varchar(2048) | YES | 原备份的位置,即备份校验需要读取数据的位置 | +| START_TIME | timestamp(6) | NO | 起始时间 | +| END_TIME | timestamp(6) | NO | 结束时间 | +| TOTAL_PG_COUNT | bigint(20) | NO | 全部 Partition Group 个数 | +| FINISH_PG_COUNT | bigint(20) | NO | 校验完成的 Partition Group 个数 | +| TOTAL_PARTITION_COUNT | bigint(20) | NO | 全部 Partition 个数 | +| FINISH_PARTITION_COUNT | bigint(20) | NO | 校验完成的 Partition个数 | +| TOTAL_MACRO_BLOCK_COUNT | bigint(20) | NO | 全部宏块个数 | +| FINISH_MACRO_BLOCK_COUNT | bigint(20) | NO | 校验完成宏块个数 | +| LOG_SIZE | bigint(20) | NO | 需要校验的日志大小 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/51.oceanbase-cdb_ob_backup_validation_task_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/51.oceanbase-cdb_ob_backup_validation_task_history.md new file mode 100644 index 000000000..ebb9b8748 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/51.oceanbase-cdb_ob_backup_validation_task_history.md @@ -0,0 +1,46 @@ +oceanbase.CDB_OB_BACKUP_VALIDATION_TASK_HISTORY +==================================================================== + + + +功能 +----------- + +CDB_OB_TENANT_BACKUP_VALIDATION_TASK 的历史表。 + +相关视图 +------------- + +* CDB_OB_TENANT_BACKUP_VALIDATION_TASK + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------| +| JOB_ID | bigint(20) | NO | 备份校验的 Job ID | +| TASK_ID | bigint(20) | NO | Task ID | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| INCARNATION | bigint(20) | NO | 与 Oracle 中的 incarnation 含义相关,表示 flashback database 后的第几次分身 | +| BACKUP_SET_ID | bigint(20) | NO | 备份集的 ID | +| STATUS | varchar(64) | NO | 备份校验的状态类型: * SUCCESS * FAILED | +| BACKUP_DEST | varchar(2048) | YES | 原备份的位置,即备份校验需要读取数据的位置 | +| START_TIME | timestamp(6) | NO | 起始时间 | +| END_TIME | timestamp(6) | NO | 结束时间 | +| TOTAL_PG_COUNT | bigint(20) | NO | 全部 Partition Group 个数 | +| FINISH_PG_COUNT | bigint(20) | NO | 校验完成的 Partition Group 个数 | +| TOTAL_PARTITION_COUNT | bigint(20) | NO | 全部 Partition 个数 | +| FINISH_PARTITION_COUNT | bigint(20) | NO | 校验完成的 Partition 个数 | +| TOTAL_MACRO_BLOCK_COUNT | bigint(20) | NO | 全部宏块个数 | +| FINISH_MACRO_BLOCK_COUNT | bigint(20) | NO | 校验完成宏块个数 | +| LOG_SIZE | bigint(20) | NO | 需要校验的日志大小 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/52.oceanbase-cdb_ob_backup_backup_archivelog_summary.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/52.oceanbase-cdb_ob_backup_backup_archivelog_summary.md new file mode 100644 index 000000000..e81ecd3d2 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/52.oceanbase-cdb_ob_backup_backup_archivelog_summary.md @@ -0,0 +1,31 @@ +oceanbase.CDB_OB_BACKUP_BACKUP_ARCHIVELOG_SUMMARY +====================================================================== + + + +功能 +----------------------- + +展示正在进行的备份备份日志归档任务的信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|----------------------|---------------|------------|----------------------------------------------------------------| +| INCARNATION | bigint(20) | NO | 与 Oracle 数据库中的 incarnation 含义相关,表示 flashback database 后的第几次分身。 | +| LOG_ARCHIVE_ROUND | bigint(20) | NO | 用于标识第几轮完整的 clog 备份数据流 | +| COPY_ID | bigint(20) | NO | 第几份拷贝 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| STATUS | varchar(64) | NO | 备份备份归档的状态 | +| MIN_FIRST_TIME | timestamp(6) | NO | 起始的 logts | +| MAX_NEXT_TIME | timestamp(6) | NO | 目前已经备份最大的 logts | +| INPUT_BYTES | bigint(20) | NO | 读取的数据量 | +| OUTPUT_BYTES | bigint(20) | NO | 输出的数据量 | +| COMPRESSION_RATIO | decimal(23,2) | NO | 压缩比 | +| INPUT_BYTES_DISPLAY | varchar(27) | NO | 读取的数据量的展示值 | +| OUTPUT_BYTES_DISPLAY | varchar(27) | NO | 输出的数据量的展示值 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/53.oceanbase-cdb_ob_backup_backupset_task_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/53.oceanbase-cdb_ob_backup_backupset_task_history.md new file mode 100644 index 000000000..8034b83ca --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/53.oceanbase-cdb_ob_backup_backupset_task_history.md @@ -0,0 +1,40 @@ +oceanbase.CDB_OB_BACKUP_BACKUPSET_TASK_HISTORY +=================================================================== + + + +功能 +----------------------- + +展示已完成的备份备份基线任务的信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|---------------------------|---------------|------------|----------------------------------------------------------------| +| INCARNATION | bigint(20) | NO | 与 Oracle 数据库中的 incarnation 含义相关,表示 flashback database 后的第几次分身。 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| BS_KEY | bigint(20) | NO | 备份集的值 | +| COPY_ID | bigint(20) | NO | 第几份拷贝 | +| BACKUP_TYPE | varchar(1) | NO | 备份类型 | +| ENCRYPTION_MODE | varchar(64) | NO | 加密模式 | +| START_TIME | timestamp(6) | NO | 备份集备份的开始时间 | +| COMPLETION_TIME | timestamp(6) | NO | 备份集备份的结束时间 | +| ELAPSED_SECONDES | decimal(21,0) | NO | 备份集备份的使用时间 | +| KEEP | varchar(2) | NO | 是否保留 | +| KEEP_UNTIL | varchar(0) | NO | 保留时间 | +| SRC_DEVICE_TYPE | varchar(64) | NO | 源端设备类型 | +| DST_DEVICE_TYPE | varchar(64) | NO | 目的端设备类型 | +| COMPRESSED | varchar(2) | NO | 是否压缩 | +| OUTPUT_BYTES | bigint(20) | NO | 输出的数据量 | +| OUTPUT_RATE_BYTES | decimal(34,4) | NO | 输出数据量的字节 | +| COMPRESSION_RATIO | decimal(23,2) | NO | 压缩比 | +| OUTPUT_BYTES_DISPLAY | varchar(27) | NO | 输出的数据量的展示值 | +| OUTPUT_RATE_BYTES_DISPLAY | varchar(39) | NO | 输出数据量的字节展示值 | +| TIME_TAKEN_DISPLAY | time(6) | NO | 所用时间的展示值 | +| STATUS | varchar(9) | NO | 状态 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/54.oceanbase-cdb_ob_backup_backupset_task.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/54.oceanbase-cdb_ob_backup_backupset_task.md new file mode 100644 index 000000000..56fa51275 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/54.oceanbase-cdb_ob_backup_backupset_task.md @@ -0,0 +1,35 @@ +oceanbase.CDB_OB_BACKUP_BACKUPSET_TASK +=========================================================== + + + +功能 +----------------------- + +展示正常进行的备份备份基线任务的信息,按 Job 展示对应的 Task。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|--------------------------|--------------|------------|---------------------------------------------------------------| +| INCARNATION | bigint(20) | NO | 与 Oracle 数据库中的 incarnation 含义相关,表示 flashback database 后的第几次分身 | +| BS_KEY | bigint(20) | NO | 备份集的值 | +| COPY_ID | bigint(20) | NO | 第几份拷贝 | +| BACKUP_TYPE | varchar(1) | NO | 备份类型 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TOTAL_PG_COUNT | bigint(20) | NO | 所有 Partition Group 的个数 | +| FINISH_PG_COUNT | bigint(20) | NO | 完成 Partition Group 的个数 | +| TOTAL_PARTITION_COUNT | bigint(20) | NO | 所有分区的个数 | +| TOTAL_MACRO_BLOCK_COUNT | bigint(20) | NO | 所有宏块的个数 | +| FINISH_PARTITION_COUNT | bigint(20) | NO | 完成分区的个数 | +| FINISH_MACRO_BLOCK_COUNT | bigint(20) | NO | 完成宏块的个数 | +| INPUT_BYTES | bigint(20) | NO | 读取的数据量 | +| OUTPUT_BYTES | bigint(20) | NO | 输出的数据量 | +| START_TIME | timestamp(6) | NO | 开始时间 | +| COMPLETION_TIME | timestamp(6) | NO | 结束时间 | +| STATUS | varchar(9) | NO | 状态 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/55.oceanbase-cdb_ob_backup_backupset_job_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/55.oceanbase-cdb_ob_backup_backupset_job_history.md new file mode 100644 index 000000000..1715e94c6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/55.oceanbase-cdb_ob_backup_backupset_job_history.md @@ -0,0 +1,26 @@ +oceanbase.CDB_OB_BACKUP_BACKUPSET_JOB_HISTORY +================================================================== + + + +功能 +----------------------- + +展示发起过备份备份基线的 Job 的历史信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|---------------|--------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| JOB_ID | bigint(20) | NO | Job ID | +| TENANT_ID | bigint(20) | NO | 租户 ID,系统租户为 1,表示所有备份集 | +| INCARNATION | bigint(20) | NO | 与 Oracle 数据库中的 incarnation 含义相关,表示 flashback database 后的第几次分身 | +| BACKUP_SET_ID | bigint(20) | NO | 备份集的 ID | +| TYPE | varchar(17) | NO | 标记为备份单个备份集还是全部备份集的集合: * S:表示单个备份集 * A:表示全部备份集 | +| TENANT_NAME | varchar(128) | NO | 租户的名称 | +| STATUS | varchar(64) | NO | 备份的状态: * schedule * doing * finished * canceling | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/56.oceanbase-cdb_ob_backup_backupset_job.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/56.oceanbase-cdb_ob_backup_backupset_job.md new file mode 100644 index 000000000..3abfba5c4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/56.oceanbase-cdb_ob_backup_backupset_job.md @@ -0,0 +1,26 @@ +oceanbase.CDB_OB_BACKUP_BACKUPSET_JOB +========================================================== + + + +功能 +----------------------- + +展示备份备份基线任务的信息,一条 SQL 即对应一个 Job。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|---------------|--------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| JOB_ID | bigint(20) | NO | Job ID | +| TENANT_ID | bigint(20) | NO | 租户 ID,系统租户为 1,表示所有备份集 | +| INCARNATION | bigint(20) | NO | 与 Oracle 数据库中的 incarnation 含义相关,表示 flashback database 后的第几次分身 | +| BACKUP_SET_ID | bigint(20) | NO | 备份集的 ID | +| TYPE | varchar(17) | NO | 标记为备份单个备份集还是全部备份集的集合: * S:表示单个备份集 * A:表示全部备份集 | +| TENANT_NAME | varchar(128) | NO | 租户的名称 | +| STATUS | varchar(64) | NO | 备份的状态: * schedule * doing * finished * canceling | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/57.oceanbase-cdb_ob_backup_set_obsolete.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/57.oceanbase-cdb_ob_backup_set_obsolete.md new file mode 100644 index 000000000..9f78f256a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/57.oceanbase-cdb_ob_backup_set_obsolete.md @@ -0,0 +1,40 @@ +oceanbase.CDB_OB_BACKUP_SET_OBSOLETE +========================================================= + + + +功能 +----------------------- + +展示哪些备份集已过期。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|---------------------------|---------------|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| INCARNATION | bigint(20) | NO | 与 Oracle 数据库中的incarnation 的含义相关,表示 Flashback Database 后的第几次分身 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| BS_KEY | bigint(20) | NO | 备份集的 ID | +| COPY_ID | varchar(1) | NO | 备份集的第几份拷贝 | +| BACKUP_TYPE | | NO | * D:表示全量备份 * I:表示增量备份 | +| ENCRYPTION_MODE | varchar(64) | NO | 加密模式: * NONE:表示不加密 * PASSWORD:表示仅使用密码保护 * PASSWORD ENCRYPTION:表示加密,并且通过密码保护 * TRANSPARENT ENCRYPTION:表示使用了 TDE 加密 * DUAL MODE ENCRYPTION:表示通过 TDE 加密,并且通过密码保护 **说明** 当前版本仅支持 NONE 和 PASSWORD。 | +| START_TIME | timestamp(6) | NO | 起始时间 | +| COMPLETION_TIME | timestamp(6) | NO | 完成时间 | +| ELAPSED_SECONDS | decimal(21,0) | NO | 备份耗时 | +| KEEP | varchar(2) | NO | * YES:表示永久保留 * NO:表示根据保留时间过期 目前仅支持 NO | +| KEEP_UNTIL | varchar(0) | NO | 保留的时间 | +| DEVICE_TYPE | varchar(64) | NO | 备份介质 | +| COMPRESSED | varchar(2) | NO | 是否压缩: * YES:表示压缩 * NO:表示不压缩 | +| OUTPUT_BYTES | bigint(20) | NO | 输出字节数 | +| OUTPUT_RATE_BYTES | decimal(34,4) | NO | 每秒输出字节数 | +| COMPRESSION_RATIO | decimal(23,2) | NO | 压缩率 | +| OUTPUT_BYTES_DISPLAY | varchar(27) | NO | 输出数据量 | +| OUTPUT_RATE_BYTES_DISPLAY | varchar(39) | NO | 输出速度 | +| TIME_TAKEN_DISPLAY | time(6) | NO | 耗时 hh:mm:ss | +| STATUS | varchar(9) | NO | 表示备份集的状态属性,目前的状态有: * COMPLETED:表示备份集备份成功 * FAILED:表示备份集备份失败 * DELETING:表示备份集正在清理 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/6.mysql-proc.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/6.mysql-proc.md new file mode 100644 index 000000000..3a1a458a3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/6.mysql-proc.md @@ -0,0 +1,39 @@ +mysql.proc +=============================== + + + +功能 +----------- + +用于展示存储过程的信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|------------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| db | varchar(128) | NO | 数据库名 | +| name | varchar(128) | NO | 存储过程的名称 | +| type | varchar(10) | NO | 存储过程的类型: * PROCEDURE:存储过程 * FUNCTION:存储函数 | +| specific_name | varchar(64) | NO | 同name字段 | +| language | varchar(4) | NO | 未使用,当前为固定值SQL | +| sql_data_access | varchar(32) | NO | 未使用,当前为固定值CONTAINS_SQL | +| is_deterministic | varchar(4) | NO | 未使用,标识存储过程是否使`DETERMINISTIC` 特性定义: * YES * NO | +| security_type | varchar(10) | NO | 未使用,标识 SQL 的访问属性: * DEFINER * INVOKER | +| param_list | varchar(1048576) | NO | 存储过程的参数列表信息 | +| returns | varchar(1048576) | NO | 存储过程的返回值信息 | +| body | varchar(1048576) | NO | 存储过程定义的文本信息 | +| definer | varchar(77) | NO | 创建存储过程的用户 | +| created | timestamp(6) | NO | 创建存储过程的日期和时间 | +| modified | timestamp(6) | NO | 存储过程的最后修改日期和时间 | +| sql_mode | varchar(32) | NO | 创建或更改存储过程时有效的 SQL 模式,在该模式下执行存储过程 | +| comment | varchar(1048576) | NO | 注释文本 | +| character_set_client | varchar(128) | NO | 创建或更改存储过程时 character_set_client 系统变量的会话值 | +| collation_connection | varchar(128) | NO | 创建或更改存储过程时 collation_connection 系统变量的会话值 | +| collation_database | varchar(128) | NO | 创建或更改存储过程时 collation_database 系统变量的会话值 | +| body_utf8 | varchar(1048576) | NO | 过程定义,与 body 字段相同 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/7.mysql-time_zone.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/7.mysql-time_zone.md new file mode 100644 index 000000000..e1fca8cf8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/7.mysql-time_zone.md @@ -0,0 +1,27 @@ +mysql.time_zone +==================================== + + + +功能 +----------- + +用于展示时区相关的信息(SYSTEM_VIEW)。 + +相关表/视图 +--------------- + +__all_time_zone + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|------------|-----------------|--------| +| Time_zone_id | bigint(20) | NO | 时区 ID | +| Use_leap_seconds | varchar(8) | NO | 是否使用闰秒 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/8.mysql-time_zone_name.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/8.mysql-time_zone_name.md new file mode 100644 index 000000000..dda9358e2 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/8.mysql-time_zone_name.md @@ -0,0 +1,29 @@ +mysql.time_zone_name +========================================= + + + + + +功能 +-------------------- + +用于记录 timezone 名称信息(SYSTEM_VIEW)。 + +相关表/视图 +------------------------ + +__all_time_zone_name + +字段说明 +---------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|--------------|-------------|------------|-------| +| Name | varchar(64) | NO | 时区名称 | +| Time_zone_id | bigint(20) | NO | 时区 ID | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/9.mysql-time_zone_transition.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/9.mysql-time_zone_transition.md new file mode 100644 index 000000000..53579360f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/2.dictionary-view/9.mysql-time_zone_transition.md @@ -0,0 +1,27 @@ +mysql.time_zone_transition +=============================================== + + + +功能 +----------- + +mysql.time_zone_transition 是用于记录时区转换信息的系统视图。 + +相关表/视图 +--------------- + +__all_time_zone_transition + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|------------|----------------|-----------| +| Time_zone_id | bigint(20) | NO | 时区 ID | +| Transition_time | bigint(20) | NO | 时区转换时间 | +| Transition_type_id | bigint(20) | NO | 时区转换类型 ID | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/1.gv-plan_cache_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/1.gv-plan_cache_stat.md new file mode 100644 index 000000000..143fbd75c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/1.gv-plan_cache_stat.md @@ -0,0 +1,37 @@ +gv$plan_cache_stat +======================================= + + + +功能 +----------- + +该视图记录当前租户在所有 Server 上的每个计划缓存整体的状态。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_plan_cache_stat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|-------------|----------------|-----------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| svr_ip | varchar(32) | NO | 服务器的 IP 地址 | +| svr_port | bigint(20) | NO | 端口号 | +| sql_num | bigint(20) | NO | plan_cache 涉及 SQL 条数 | +| mem_used | bigint(20) | NO | plan_cache 已经使用的内存 | +| mem_hold | bigint(20) | NO | plan_cache 持有的内存 | +| access_count | bigint(20) | NO | 进行 plan_cache 的次数 | +| hit_count | bigint(20) | NO | 命中 plan_cache 的次数 | +| hit_rate | bigint(20) | NO | plan_cache 的命中率 | +| plan_num | bigint(20) | NO | plan 的个数 | +| mem_limit | bigint(20) | NO | plan_cache 的内存上限 | +| hash_bucket | bigint(20) | NO | plan_cache hash map 中的 Bucket 的个数 | +| stmtkey_num | bigint(20) | NO | plan_cache 中 stmt_key 的个数 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/10.gv-latch.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/10.gv-latch.md new file mode 100644 index 000000000..857681521 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/10.gv-latch.md @@ -0,0 +1,40 @@ +gv$latch +============================= + + + +功能 +----------- + +集群所有 OBServer 的 latch 信息视图。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_latch + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|--------------|----------------|--------------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| ADDR | varchar(256) | NO | 目前为 NULL | +| LATCH# | bigint(20) | NO | latch 所属 class 的下标 | +| LEVEL# | bigint(20) | NO | latch 所属 level 的下标 | +| NAME | varchar(256) | NO | latch 的名称 | +| HASH | bigint(20) | NO | 该值目前为 0 | +| GETS | bigint(20) | NO | lock 成功次数 | +| MISSES | bigint(20) | NO | lock 进入等待的次数 | +| SLEEPS | bigint(20) | NO | 总共 yield 的次数 | +| IMMEDIATE_GETS | bigint(20) | NO | try_lock 成功次数 | +| IMMEDIATE_MISSES | bigint(20) | NO | try_lock 失败次数 | +| SPIN_GETS | bigint(20) | NO | 总共 spin 次数 | +| WAIT_TIME | bigint(20) | NO | 等待 sleep 时间 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/11.gv-memory.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/11.gv-memory.md new file mode 100644 index 000000000..21dfd4e60 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/11.gv-memory.md @@ -0,0 +1,32 @@ +gv$memory +============================== + + + +功能 +----------- + +gv$memory 视图用于展示租户级别的内存统计信息。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_memory_info + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|--------------|----------------|--------------------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| IP | varchar(32) | NO | IP 地址 | +| PORT | bigint(20) | NO | 端口号 | +| CONTEXT | varchar(256) | NO | 内存所属 Mod 名称 | +| COUNT | bigint(20) | NO | 内存分配与释放的差值,即当前该 Mod 使用中的内存单元个数 | +| USED | bigint(20) | NO | 该 Mod 当前使用的内存数值,单位:Byte | +| ALLOC_COUNT | bigint(20) | NO | 该 Mod 申请的内存总个数 | +| FREE_COUNT | bigint(20) | NO | 该 Mod 释放的内存总个数 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/12.gv-memstore.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/12.gv-memstore.md new file mode 100644 index 000000000..4424a7da3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/12.gv-memstore.md @@ -0,0 +1,32 @@ +gv$memstore +================================ + + + +功能 +----------- + +该视图用于展示所有服务器上所有租户的 Memtable 的内存使用状况。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_tenant_memstore_info + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|-------------|----------------|------------------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| IP | varchar(32) | NO | 服务器的 IP | +| PORT | bigint(20) | NO | 服务器端口 | +| ACTIVE | bigint(20) | NO | 当前活跃的 Memtable 的内存占用大小,单位为字节 | +| TOTAL | bigint(20) | NO | 当前所有 Memtable 的内存占用大小,单位为字节 | +| FREEZE_TRIGGER | bigint(20) | NO | 触发 Memtable 冻结的内存大小,单位为字节 | +| MEM_LIMIT | bigint(20) | NO | Memtable 的内存大小限制,单位:字节 | +| FREEZE_CNT | bigint(20) | NO | Memtable 的冻结次数 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/13.gv-memstore_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/13.gv-memstore_info.md new file mode 100644 index 000000000..b0edabffc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/13.gv-memstore_info.md @@ -0,0 +1,37 @@ +gv$memstore_info +===================================== + + + +功能 +----------- + +`gv$memstore_info` 视图用于展示所有服务器上所有租户的所有分区的 Memtable 的详细信息。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_memstore_info + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|---------------------|--------------|------------|----------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| IP | varchar(32) | NO | 服务器的 IP | +| PORT | bigint(20) | NO | 服务器端口 | +| TABLE_ID | bigint(20) | NO | 表 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| VERSION | varchar(128) | NO | 冻结版本号 | +| BASE_VERSION | bigint(20) | NO | 数据的快照版本号的左边界 | +| MULTI_VERSION_START | bigint(20) | NO | 最小的老版本数据的快照版本号 | +| SNAPSHOT_VERSION | bigint(20) | NO | 数据的快照版本号的右边界 | +| IS_ACTIVE | bigint(20) | NO | 是否是活跃的 | +| USED | bigint(20) | NO | 使用的内存大小,单位为字节 | +| HASH_ITEMS | bigint(20) | NO | Hash 索引中记录的行数 | +| BTREE_ITEMS | bigint(20) | NO | Btree 索引中记录的行数 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/14.gv-plan_cache_plan_explain.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/14.gv-plan_cache_plan_explain.md new file mode 100644 index 000000000..cd8a489d8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/14.gv-plan_cache_plan_explain.md @@ -0,0 +1,40 @@ +gv$plan_cache_plan_explain +=============================================== + + + +功能 +----------- + +该视图用于展示缓存在全部的 Server 中的计划缓存中的物理执行计划。 +**说明** + + + +该视图仅支持 get 操作,查询时需要指定 IP、PORT、TENANT_ID、PLAN_ID 字段。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_plan_cache_plan_explain + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|--------------|--------------|------------|------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| IP | varchar(32) | NO | IP 地址 | +| PORT | bigint(20) | NO | 端口号 | +| PLAN_ID | bigint(20) | NO | 计划的 ID | +| PLAN_DEPTH | bigint(20) | NO | Operator 在展示时的深度 | +| PLAN_LINE_ID | bigint(20) | NO | Operator 的编号 | +| OPERATOR | varchar(128) | NO | Operator 的名称 | +| NAME | varchar(128) | NO | 表的名称 | +| ROWS | bigint(20) | NO | 预估的结果行数 | +| COST | bigint(20) | NO | 预估的代价 | +| PROPERTY | varchar(256) | NO | 对应 Operator 的信息 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/15.gv-obrpc_outgoing.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/15.gv-obrpc_outgoing.md new file mode 100644 index 000000000..d9133cc1a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/15.gv-obrpc_outgoing.md @@ -0,0 +1,37 @@ +gv$obrpc_outgoing +====================================== + + + +功能 +----------- + +所有 OBServer 的 RPC 的发送统计信息。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_obrpc_stat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|--------------|----------------|-----------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| IP | varchar(32) | NO | IP 地址 | +| PORT | bigint(20) | NO | 端口号 | +| PCODE | bigint(20) | NO | RPC Packet Code | +| PCODE_NAME | varchar(256) | NO | RPC Packet Code 对应的名称 | +| COUNT | bigint(20) | NO | 使用次数 | +| TOTAL_TIME | bigint(20) | NO | 总共花费时间 | +| TOTAL_SIZE | bigint(20) | NO | 总共发送数据量大小 | +| FAILURE | bigint(20) | NO | 发送失败次数 | +| TIMEOUT | bigint(20) | NO | 发送超时次数 | +| SYNC | bigint(20) | NO | 同步等待 RPC 请求个数 | +| ASYNC | bigint(20) | NO | 异步回调 RPC 请求个数 | +| LAST_TIMESTAMP | timestamp(6) | NO | 最后更新统计信息时间 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/16.gv-obrpc_incoming.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/16.gv-obrpc_incoming.md new file mode 100644 index 000000000..4e8834afa --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/16.gv-obrpc_incoming.md @@ -0,0 +1,36 @@ +gv$obrpc_incoming +====================================== + + + +功能 +----------- + +gv$obrpc_incoming 视图用于展示所有 OBServer 收到 RPC 请求的统计信息。 + +相关表/视图 +--------------- + +v$obrpc_incoming + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|--------------|----------------|-----------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| IP | varchar(32) | NO | IP 地址 | +| PORT | bigint(20) | NO | 端口号 | +| PCODE | bigint(20) | NO | RPC Packet Code | +| PCODE_NAME | varchar(256) | NO | RPC Packet Code 对应的名称 | +| COUNT | bigint(20) | NO | 已接收到的该类型的 RPC 请求的个数 | +| TOTAL_SIZE | bigint(20) | NO | 总共接收数据量 | +| NET_TIME | bigint(20) | NO | 网络时间 | +| WAIT_TIME | bigint(20) | NO | 接收时间到请求被放入队列的时间 | +| QUEUE_TIME | bigint(20) | NO | 在队列中等待的时间 | +| PROCESS_TIME | bigint(20) | NO | 实际处理消耗的时间 | +| LAST_TIMESTAMP | timestamp(6) | NO | 上次更新的时间 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/17.gv-sql.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/17.gv-sql.md new file mode 100644 index 000000000..62381f043 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/17.gv-sql.md @@ -0,0 +1,51 @@ +gv$sql +=========================== + + + +功能 +----------- + +所有热更新的 SQL 相关统计信息,记录每个 Plan 上的统计信息,汇总单个 Plan 多次执行的统计信息;每个 Plan 都会在表中有一行。 + +相关表/视图 +--------------- + +__all_virtual_plan_stat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|---------------------|----------------|--------------------------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| PLAN_ID | bigint(20) | NO | 执行计划的 ID | +| SQL_ID | varchar(32) | NO | SQL 的标识符 | +| TYPE | bigint(20) | NO | SQL 类型,local remote distribute | +| SQL_TEXT | varchar(4096) | NO | SQL 语句文本 | +| PLAN_HASH_VALUE | bigint(20) | NO | 执行计划的 Hash 值 | +| FIRST_LOAD_TIME | timestamp(6) | NO | 第一次执行时间 | +| LAST_ACTIVE_TIME | timestamp(6) | NO | 上一次执行时间 | +| AVG_EXE_USEC | bigint(20) | NO | 平均执行耗时 | +| SLOWEST_EXE_TIME | timestamp(6) | NO | 最慢执行开始时间点 | +| SLOWEST_EXE_USEC | bigint(20) | NO | 最慢执行消耗时间 | +| SLOW_COUNT | bigint(20) | NO | 慢查询次数统计 | +| HIT_COUNT | bigint(20) | NO | 命中 Plan Cache 的统计 | +| PLAN_SIZE | bigint(20) | NO | 物理计划占用的内存 | +| EXECUTIONS | bigint(20) | NO | 执行次数 | +| DISK_READS | bigint(20) | NO | 多盘次数 | +| DIRECT_WRITES | bigint(20) | NO | 写盘次数 | +| BUFFER_GETS | bigint(20) | NO | 逻辑读次数 | +| APPLICATION_WAIT_TIME | bigint(20) unsigned | NO | application 类事件等待时间 | +| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | NO | concurrentcy 类事件等待时间 | +| USER_IO_WAIT_TIME | bigint(20) unsigned | NO | 所有 IO 类事件等待时间 | +| ROWS_PROCESSED | bigint(20) | NO | 所有 Schedule 类事件等待事件 | +| ELAPSED_TIME | bigint(20) unsigned | NO | 接收到处理完成总消耗时间 | +| CPU_TIME | bigint(20) unsigned | NO | 消耗的 CPU 时间 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/18.gv-sql_plan_monitor.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/18.gv-sql_plan_monitor.md new file mode 100644 index 000000000..bea57dddd --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/18.gv-sql_plan_monitor.md @@ -0,0 +1,105 @@ +gv$sql_plan_monitor +======================================== + + + +功能 +----------- + +展示所有 OBServer 慢查询的 Plan 层面的统计,每个慢查询都会有一条统计信息,同时记录该 Plan 的 Trace 信息。 + +相关表/视图 +--------------- + +__all_virtual_sql_plan_monitor + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------|--------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| KEY | null | NO | 外键,用于和 SQL_MONITOR 相关虚拟表做连接查询 | +| STATUS | null | NO | 算子执行状态: * EXECUTING:执行中 * DONE(ERROR):执行出错 * DONE(FIRST N ROWS):执行成功 * DONE(ALL ROWS):执行成功 * DONE: 执行中断 | +| SVR_IP | varchar(32) | NO | 算子所在机器的 IP | +| SVR_PORT | bigint(20) | NO | 算子所在机器的端口号 | +| TRACE_ID | varchar(64) | NO | 算子的 Trace ID | +| FIRST_REFRESH_TIME | timestamp(6) | NO | 算子开始监控时间 | +| LAST_REFRESH_TIME | timestamp(6) | NO | 算子结束监控时间 | +| FIRST_CHANGE_TIME | timestamp(6) | NO | 算子吐出首行数据时间 | +| LAST_CHANGE_TIME | timestamp(6) | NO | 算子吐出最后一行数据时间 | +| REFRESH_COUNT | null | NO | 统计数据刷新次数 | +| SID | null | NO | Session 的 ID | +| PROCESS_NAME | bigint(20) | NO | 执行线程 ID | +| SQL_ID | null | NO | SQL ID | +| SQL_EXEC_START | null | NO | SQL 开始执行时间 | +| SQL_EXEC_ID | null | NO | SQL 执行 ID | +| SQL_PLAN_HASH_VALUE | null | NO | SQL 计划的 HASH 值 | +| SQL_CHILD_ADDRESS | null | NO | 默认为 NULL | +| PLAN_PARENT_ID | null | NO | 父算子 ID | +| PLAN_LINE_ID | bigint(20) | NO | 默认为 NULL | +| PLAN_OPERATION | varchar(128) | NO | 算子名称 | +| PLAN_OPTIONS | null | NO | 默认为 NULL | +| PLAN_OBJECT_OWNER | null | NO | 默认为 NULL | +| PLAN_OBJECT_NAME | null | NO | 默认为 NULL | +| PLAN_OBJECT_TYPE | null | NO | 默认为 NULL | +| PLAN_DEPTH | bigint(20) | NO | 算子在计划树中的深度 | +| PLAN_POSITION | null | NO | 算子是父节点的第几个孩子 | +| PLAN_COST | null | NO | 优化器计算出的算子代价 | +| PLAN_CARDINALITY | null | NO | 优化器计算出的算子输出数据行数 | +| PLAN_BYTES | null | NO | 优化器估算出的算子输出数据字节数 | +| PLAN_TIME | null | NO | 优化器计算出的算子执行时间 | +| PLAN_PARTITION_START | null | NO | 默认为 NULL | +| PLAN_PARTITION_STOP | null | NO | 默认为 NULL | +| PLAN_CPU_COST | null | NO | 优化器估算出的算子 CPU 代价 | +| PLAN_IO_COST | null | NO | 优化器估算出的算子 IO 代价 | +| PLAN_TEMP_SPACE | null | NO | 优化器估算出的算子空间占用大小 | +| STARTS | bigint(20) | NO | 算子被 rescan 的次数 | +| OUTPUT_ROWS | bigint(20) | NO | 算子输出的总行数(所有本算子的执行实例行数累加值) | +| IO_INTERCONNECT_BYTES | null | NO | 算子与储存层之间交换的数据字节数 | +| PHYSICAL_READ_REQUESTS | null | NO | 算子发出的 I/O 读请求次数 | +| PHYSICAL_READ_BYTES | null | NO | 算子发出的 I/O 读请求字节数 | +| PHYSICAL_WRITE_REQUESTS | null | NO | 算子发出的 I/O 写请求次数 | +| PHYSICAL_WRITE_BYTES | null | NO | 算子发出的 I/O 写请求字节数 | +| WORKAREA_MEM | null | NO | 算子占用的 work area 内存量 | +| WORKAREA_MAX_MEM | null | NO | 算子可占用的 work area 内存上限 | +| WORKAREA_TEMPSEG | null | NO | 算子占用的磁盘 dump 空间 | +| WORKAREA_MAX_TEMPSEG | null | NO | 算子可占用的最大磁盘 dump 空间 | +| OTHERSTAT_GROUP_ID | null | NO | 默认为 NULL | +| OTHERSTAT_1_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_1_TYPE | null | NO | 预留 | +| OTHERSTAT_1_VALUE | bigint(20) | NO | 预留 | +| OTHERSTAT_2_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_2_TYPE | null | NO | 预留 | +| OTHERSTAT_2_VALUE | bigint(20) | NO | 预留 | +| OTHERSTAT_3_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_3_TYPE | null | NO | 预留 | +| OTHERSTAT_3_VALUE | bigint(20) | NO | 预留 | +| OTHERSTAT_4_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_4_TYPE | null | NO | 预留 | +| OTHERSTAT_4_VALUE | bigint(20) | NO | 预留 | +| OTHERSTAT_5_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_5_TYPE | null | NO | 预留 | +| OTHERSTAT_5_VALUE | bigint(20) | NO | 预留 | +| OTHERSTAT_6_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_6_TYPE | null | NO | 预留 | +| OTHERSTAT_6_VALUE | bigint(20) | NO | 预留 | +| OTHERSTAT_7_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_7_TYPE | null | NO | 预留 | +| OTHERSTAT_7_VALUE | bigint(20) | NO | 预留 | +| OTHERSTAT_8_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_8_TYPE | null | NO | 预留 | +| OTHERSTAT_8_VALUE | bigint(20) | NO | 预留 | +| OTHERSTAT_9_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_9_TYPE | null | NO | 预留 | +| OTHERSTAT_9_VALUE | bigint(20) | NO | 预留 | +| OTHERSTAT_10_ID | bigint(20) | NO | 预留 | +| OTHERSTAT_10_TYPE | null | NO | 预留 | +| OTHERSTAT_10_VALUE | bigint(20) | NO | 预留 | +| OTHER_XML | null | NO | 其它无法写入预留项中,但需要提供给外部使用的结构化数据。由外部工具负责解析 | +| PLAN_OPERATION_INACTIVE | null | NO | 默认为 NULL | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/19.gv-outline.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/19.gv-outline.md new file mode 100644 index 000000000..cf3fa8a39 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/19.gv-outline.md @@ -0,0 +1,33 @@ +gv$outline +=============================== + + + +功能 +----------- + +展示当前租户的 outline 信息,主要用于 outline 的迁移。 + +相关表/视图 +--------------- + +oceanbase.__tenant_virtual_outline + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|----------------|----------------|---------------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| database_id | bigint(20) | NO | 数据库 ID | +| outline_id | bigint(20) | NO | outline ID | +| database_name | varchar(128) | NO | 数据库名称 | +| outline_name | varchar(128) | NO | outline 名称 | +| visible_signature | varchar(32768) | NO | signature 的反序列化结果,为了便于查看signature 的信息 | +| sql_text | varchar(32768) | NO | 创建 outline 时,在 on clause 中指定的 SQL | +| outline_target | varchar(32768) | NO | 创建 outline 时,在 to clause 中指定的 SQL | +| outline_sql | varchar(32768) | NO | 具有完整 outline 信息的 SQL | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/2.gv-plan_cache_plan_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/2.gv-plan_cache_plan_stat.md new file mode 100644 index 000000000..b6c673ce9 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/2.gv-plan_cache_plan_stat.md @@ -0,0 +1,85 @@ +gv$plan_cache_plan_stat +============================================ + + + +功能 +----------- + +gv$plan_cache_plan_stat 视图记录了当前租户在所有 Server 上的计划缓存中缓存的每一个缓存对象的状态。 +**注意** + + + +该表不仅缓存了 SQL 计划对象,也缓存了 PL 对象(如匿名块、PL Package 以及 PL Function),某些字段只在特定对象下有效。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_plan_stat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|---------------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID。 | +| svr_ip | varchar(32) | NO | 服务器的 IP 地址。 | +| svr_port | bigint(20) | NO | 机器端口号。 | +| plan_id | bigint(20) | NO | 缓存对象的 ID。 | +| sql_id | varchar(32) | NO | 缓存对象对应的 SQL ID,如果是 PL 对象,则该字段为 NULL。 | +| type | bigint(20) | NO | 对于 SQL 计划的缓存,该字段表示计划的类型: * 1:表示 Local Plan * 2:表示 Remote Plan * 3:表示 Distribute Plan 对于 PL 对象缓存,该字段表示 PL 对象的类型: * 1:表示 Procedure * 2:表示 Function * 3:表示 Package * 4:表示 Anonymous Block | +| is_bind_sensitive | bigint(20) | NO | 该计划是否需要打开 ACS。 | +| is_bind_aware | bigint(20) | NO | 该计划已经打开了 ACS。 | +| db_id | bigint(20) unsigned | NO | 数据库 ID。 | +| statement | varchar(4096) | NO | 对于 SQL 计划,该字段为参数化后的 SQL 语句;对于匿名块对象,该字段为参数化后的匿名块语句;其他对象该字段无效。 | +| query_sql | varchar(65536) | NO | 对于 SQL 计划,字段为第一次加载计划时查询的原始 SQL 语句;对于匿名块字段,该字段为参数化后的匿名块语句。 | +| special_params | varchar(4096) | NO | 表示不可参数化的参数值。 | +| param_infos | varchar(65536) | NO | 表示参数化信息。 | +| sys_vars | varchar(4096) | NO | 影响计划的系统变量的值。 | +| plan_hash | bigint(20) unsigned | NO | SQL 计划的 Hash 值。 | +| first_load_time | timestamp(6) | NO | 第一次被加载时间。 | +| schema_version | bigint(20) | NO | Schema 版本号。 | +| merged_version | bigint(20) | NO | 当前缓存的计划对应的合并版本号。 | +| last_active_time | timestamp(6) | NO | 上一次被执行时间。 | +| avg_exe_usec | bigint(20) | NO | 平均执行时间。 | +| slowest_exe_time | timestamp(6) | NO | 最慢执行时间戳。 | +| slowest_exe_usec | bigint(20) | NO | 最慢一次执行的耗时。 | +| slow_count | bigint(20) | NO | 当前 SQL 计划成为慢查询的次数。 | +| hit_count | bigint(20) | NO | 被命中次数。 | +| plan_size | bigint(20) | NO | 缓存对象占用的内存大小。 | +| executions | bigint(20) | NO | 执行次数。 | +| disk_reads | bigint(20) | NO | 所有执行物理读的次数。 | +| direct_writes | bigint(20) | NO | 所有执行物理写的次数。 | +| buffer_gets | bigint(20) | NO | 所有执行逻辑读的次数。 | +| application_wait_time | bigint(20) unsigned | NO | 所有 Application 类事件的总时间。 | +| concurrency_wait_time | bigint(20) unsigned | NO | 所有 Concurrency 类事件的总时间。 | +| user_io_wait_time | bigint(20) unsigned | NO | 所有 user_io 类事件的总时间。 | +| rows_processed | bigint(20) | NO | 所有 Schedule 类事件的时间。 | +| elapsed_time | bigint(20) unsigned | NO | 接收到请求到执行结束所消耗的时间。 | +| cpu_time | bigint(20) unsigned | NO | 所有执行消耗的 CPU 时间。 | +| large_querys | bigint(20) | NO | 被判断为大查询的次数。 | +| delayed_large_querys | bigint(20) | NO | 被判断为大查询且被丢入大查询队列的次数。 | +| delayed_px_querys | bigint(20) | NO | 并行查询被丢回队列重试的次数。 | +| outline_version | bigint(20) | NO | Outline 版本号。 | +| outline_id | bigint(20) | NO | Outline 的 ID,为 -1 表示不是通过绑定 Outline 生成的计划。 | +| outline_data | varchar(65536) | NO | 计划对应的 Outline 信息。 | +| acs_sel_info | varchar(65536) | NO | 当前 ACS 计划对应的选择率空间。 | +| table_scan | tinyint(4) | NO | 表示该查询是否为主键扫描。 | +| evolution | tinyint(4) | NO | 表示该执行计划是否在演进中。 | +| evo_executions | bigint(20) | NO | 演进次数。 | +| evo_cpu_time | bigint(20) unsigned | NO | 演进过程中总的执行 CPU 时间。 | +| timeout_count | bigint(20) | NO | 超时的次数。 | +| ps_stmt_id | bigint(20) | NO | PreparedStatement 的 ID。 | +| sessid | bigint(20) unsigned | NO | 缓存对象所在的 Session ID. | +| temp_tables | varchar(65536) | NO | SQL 计划中包含的临时表表名,如果没有临时表,字段为空. | +| is_use_jit | tinyint(4) | NO | SQL 计划是否开启了表达式编译执行。 | +| object_type | varchar(65536) | NO | 缓存对象的类型: * SQL_PLAN * PROCEDURE * FUNCTION * PACKAGE * ANONYMOUS | +| hints_info | varchar(65536) | NO | SQL 计划的 Hint 信息。 | +| hints_all_worked | tinyint(4) | NO | SQL 计划中的 Hint 是否都已经生效 | +| pl_schema_id | bigint(20) unsigned | NO | 对于非匿名块的 PL 对象,字段为缓存对象的 Schema ID;对于匿名块,字段与 `ps_stmt_id` 相同;对于 SQL 计划,该字段无意义。 | +| is_batched_multi_stmt | tinyint(4) | NO | 表示是否为 Batched Multistmt 优化的计划。 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/20.gv-concurrent_limit_sql.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/20.gv-concurrent_limit_sql.md new file mode 100644 index 000000000..8300dcdd8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/20.gv-concurrent_limit_sql.md @@ -0,0 +1,34 @@ +gv$concurrent_limit_sql +============================================ + + + +功能 +----------- + +展示当前租户的所有限流信息。 + +相关表/视图 +--------------- + +oceanbase.__tenant_virtual_concurrent_limit_sql + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|----------------|----------------|---------------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| database_id | bigint(20) | NO | 数据库 ID | +| outline_id | bigint(20) | NO | 限流对应的 outline ID | +| database_name | varchar(128) | NO | 数据库名称 | +| outline_name | varchar(128) | NO | 限流对应的 outline 名称 | +| outline_content | varchar(65536) | NO | 限流对应的 outline 内容,可以为 empty | +| visible_signature | varchar(65536) | NO | signature 的反序列化结果,为了便于查看signature 的信息 | +| sql_text | varchar(65536) | NO | 创建 outline 时,在 on clause 中指定的 SQL | +| concurrent_num | bigint(20) | NO | 当前 SQL 限制的并发数 | +| limit_target | varchar(65536) | NO | 被限流的 SQL | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/21.gv-sql_plan_statistics.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/21.gv-sql_plan_statistics.md new file mode 100644 index 000000000..b67285809 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/21.gv-sql_plan_statistics.md @@ -0,0 +1,39 @@ +gv$sql_plan_statistics +=========================================== + + + +功能 +----------- + +展示整个集群中物理执行计划的统计信息。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_sql_plan_statistics + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|----------------|----------------|---------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口地址 | +| PLAN_ID | bigint(20) | NO | 物理计划 ID | +| OPERATION_ID | bigint(20) | N | 物理算子 ID | +| EXECUTIONS | bigint(20) | NO | 累计执行次数 | +| OUTPUT_ROWS | bigint(20) | NO | 累计算子输出行数 | +| INPUT_ROWS | bigint(20) | NO | 累计算子输入行数 | +| RESCAN_TIMES | bigint(20) | NO | 累计 Rescan 的次数 | +| BUFFER_GETS | bigint(20) | NO | Buffer 命中次数 | +| DISK_READS | bigint(20) | NO | 累计物理度盘次数 | +| DISK_WRITES | bigint(20) | NO | 累计物理写盘次数 | +| ELAPSED_TIME | bigint(20) | NO | 累计算子消耗时间 | +| EXTEND_INFO1 | varchar(65535) | NO | 暂未使用 | +| EXTEND_INFO2 | varchar(65535) | NO | 暂未使用 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/22.gv-server_memstore.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/22.gv-server_memstore.md new file mode 100644 index 000000000..df2be450c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/22.gv-server_memstore.md @@ -0,0 +1,30 @@ +gv$server_memstore +======================================= + + + +功能 +----------- + +展示集群中每个 Server 中 memstore 的内存使用情况。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_server_memory_info + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|-------------|----------------|--------------------| +| IP | varchar(32) | NO | 服务器的 IP | +| PORT | bigint(20) | NO | 服务器的端口 | +| ACTIVE | bigint(20) | NO | 当前活跃 Memstore 所占内存 | +| TOTAL | bigint(20) | NO | Memstore 一共使用了多少内存 | +| FREEZE_TRIGGER | bigint(20) | NO | 触发冻结的阈值 | +| MEM_LIMIT | bigint(20) | NO | Memstore 的内存限制 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/23.gv-unit_load_balance_event_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/23.gv-unit_load_balance_event_history.md new file mode 100644 index 000000000..f762f9a04 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/23.gv-unit_load_balance_event_history.md @@ -0,0 +1,42 @@ +gv$unit_load_balance_event_history +======================================================= + + + +功能 +----------- + +记录整个集群中副本迁移的结果。 + +相关表/视图 +--------------- + +oceanbase.__all_rootservice_event_history + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|--------------|----------------|-----------------------| +| gmt_create | timestamp(6) | NO | 副本迁移发生的时间 | +| zone | varchar(256) | NO | 发生迁移的 Zone | +| table_id | varchar(256) | NO | 表 ID | +| partition_id | varchar(256) | NO | 分区 ID | +| data_size | varchar(256) | NO | 数据大小 | +| replica_type | varchar(256) | NO | 副本类型 | +| src_ip | varchar(256) | NO | 副本原 OBServer 的IP地址 | +| src_port | varchar(256) | NO | 副本原 OBServer 的端口 | +| dest_unit_id | varchar(256) | NO | 目的单元 ID | +| dest_ip | varchar(256) | NO | 副本目标 OBServer 的 IP 地址 | +| dest_port | varchar(256) | NO | 副本目标 OBServer 的断开 | +| data_src_ip | varchar(256) | NO | 静态数据来源 IP | +| data_src_port | varchar(256) | NO | 静态数据数据来源端口 | +| result_code | varchar(256) | YES | 迁移结果错误码 | +| result_str | varchar(27) | YES | 迁移结果信息 | +| comment | varchar(256) | YES | 备注 | +| rs_svr_ip | varchar(32) | YES | RS 的 IP 地址 | +| rs_svr_port | bigint(20) | YES | RS 的端口 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/24.gv-tenant.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/24.gv-tenant.md new file mode 100644 index 000000000..b4b91a9ae --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/24.gv-tenant.md @@ -0,0 +1,32 @@ +gv$tenant +============================== + + + +功能 +----------- + +展示系统租户整个集群的信息。 + +相关表/视图 +--------------- + +无 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| tenant_name | varchar(128) | NO | 租户的名称 | +| zone_list | varchar(8192) | NO | 租户的 Zone 集合 | +| primary_zone | varchar(128) | YES | 租户的 Primary Zone | +| collation_type | bigint(20) | NO | 租户的 Collation 信息 | +| info | varchar(4096) | NO | 租户的信息 | +| read_only | bigint(20) | NO | 租户是否为只读模式,该值已被废弃 | +| locality | varchar(256) | NO | 租户的副本分布方式 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/25.gv-database.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/25.gv-database.md new file mode 100644 index 000000000..63cbdad14 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/25.gv-database.md @@ -0,0 +1,45 @@ +gv$database +================================ + + + +功能 +----------- + +展示集群中所有数据库的 Meta 信息。 + +相关表/视图 +--------------- + +* oceanbase.__all_database + + + +* oceanbase.__all_tenant + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|---------------|----------------|-----------------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| tenant_name | varchar(128) | NO | 租户名称 | +| database_id | bigint(20) | NO | 数据库的 ID | +| database_name | varchar(128) | NO | 数据库的名称 | +| zone_list | varchar(8192) | NO | 数据库的 Locality 的 Zone 集合 | +| primary_zone | varchar(128) | YES | 数据库的 primary_zone | +| collation_type | bigint(20) | NO | 数据库的 collation 类型 | +| comment | varchar(2048) | NO | 注释 | +| read_only | bigint(20) | NO | 是否为只读模式 | +| default_tablegroup_id | bigint(20) | NO | 数据库缺省的表组 ID,若该值为 -1,则该数据库下不指定表组,建表会使用该值 | +| in_recyclebin | bigint(20) | NO | 表示数据库是否在回收站中 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/26.gv-table.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/26.gv-table.md new file mode 100644 index 000000000..dfc0c8505 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/26.gv-table.md @@ -0,0 +1,68 @@ +gv$table +============================= + + + +功能 +----------- + +展示整个集群中所有表的 Meta 信息。 + +相关表/视图 +--------------- + +* oceanbase.__all_table + + + +* oceanbase.__all_tenant + + + +* oceanbase.__all_database + + + +* oceanbase.__all_tablegroup + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|--------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| tenant_name | varchar(128) | NO | 租户名称 | +| table_id | bigint(20) | NO | 表ID | +| table_name | varchar(128) | NO | 表名 | +| database_id | bigint(20) | NO | 数据库ID | +| database_name | varchar(128) | NO | 数据库名称 | +| tablegroup_id | bigint(20) | NO | 表格组ID | +| tablegroup_name | varchar(128) | NO | 表格组名称 | +| table_type | bigint(20) | NO | 表类型 | +| zone_list | varchar(8192) | NO | 表的 Locality 所涉及的 Zone 集合 | +| primary_zone | varchar(128) | YES | 表的 primary_zone | +| collation_type | bigint(20) | NO | collation 的类型 | +| locality | varchar(256) | NO | 表的副本分布方式 | +| schema_version | bigint(20) | NO | Schema 的版本号 | +| read_only | bigint(20) | NO | 表是否只读 | +| comment | varchar(4096) | NO | 注释 | +| index_status | bigint(20) | NO | 索引状态 | +| index_type | bigint(20) | NO | 索引类型 | +| part_level | bigint(20) | NO | 分区表类型 | +| part_func_type | bigint(20) | NO | 一级分区的类型 | +| part_func_expr | varchar(4096) | NO | 一级分区的表达式 | +| part_num | bigint(20) | NO | 一级分区的个数 | +| sub_part_func_type | bigint(20) | NO | 二级分区的类型 | +| sub_part_func_expr | varchar(4096) | NO | 二级分区的表达式 | +| sub_part_num | bigint(20) | NO | 二级分区的个数 | +| dop | bigint(20) | NO | 查询的并行度 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/27.gv-unit.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/27.gv-unit.md new file mode 100644 index 000000000..99baf46ad --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/27.gv-unit.md @@ -0,0 +1,62 @@ +gv$unit +============================ + + + +功能 +----------- + +gv$unit 视图用于展示集群中所有 Unit 的 Meta 信息。 + +相关表/视图 +--------------- + +* oceanbase.__all_unit + + + +* oceanbase.__all_unit_config + + + +* oceanbase.__all_resource_pool + + + +* oceanbase.__all_tenant + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|--------------|----------------|------------------------| +| unit_id | bigint(20) | NO | 单元 ID | +| unit_config_id | bigint(20) | NO | 单元规格 ID | +| unit_config_name | varchar(128) | NO | 单元规格名 | +| resource_pool_id | bigint(20) | NO | 资源池 ID | +| resource_pool_name | varchar(128) | NO | 资源池名 | +| zone | varchar(128) | NO | 所属 zone | +| tenant_id | bigint(20) | NO | 租户 ID | +| tenant_name | varchar(128) | NO | 租户名称 | +| svr_ip | varchar(32) | NO | IP 地址 | +| svr_port | bigint(20) | NO | 端口 | +| migrate_from_svr_ip | varchar(32) | NO | Unit 的迁移来源 Server 的 IP | +| migrate_from_svr_port | bigint(20) | NO | Unit 的迁移来源 Server 的端口号 | +| max_cpu | double | NO | 最大虚拟 CPU 个数 | +| min_cpu | double | NO | 最小虚拟 CPU 个数 | +| max_memory | bigint(20) | NO | 最大内存使用量 | +| min_memory | bigint(20) | NO | 最小内存使用量 | +| max_iops | bigint(20) | NO | 最大 IOPS | +| min_iops | bigint(20) | NO | 最小 IOPS | +| max_disk_size | bigint(20) | NO | 最大磁盘使用量 | +| max_session_num | bigint(20) | NO | 最大 Session 个数 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/28.gv-partition.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/28.gv-partition.md new file mode 100644 index 000000000..844a5db6e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/28.gv-partition.md @@ -0,0 +1,58 @@ +gv$partition +================================= + + + +功能 +----------- + +展示集群中所有的 partition meta 信息。 + +相关表/视图 +--------------- + +* oceanbase.__all_virtual_partition_table + + + +* oceanbase.gv$table + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| table_id | bigint(20) | NO | 表 ID | +| tablegroup_id | bigint(20) | NO | 表组 ID | +| partition_id | bigint(20) | NO | 分区 ID | +| svr_ip | varchar(32) | NO | OBServer 的IP 地址 | +| svr_port | bigint(20) | NO | OBServer 的端口 | +| sql_port | bigint(20) | NO | OBServer SQL 端口 | +| unit_id | bigint(20) | NO | 单元 ID | +| partition_cnt | bigint(20) | NO | 分区个数,该值已被废弃,无意义 | +| zone | varchar(128) | NO | 副本所在的 Zone | +| role | bigint(20) | NO | 副本角色 * 1 :leader * 2:follower | +| member_list | varchar(3520) | NO | Paxos 组中的成员列表 | +| row_count | bigint(20) | NO | 行数 | +| data_size | bigint(20) | NO | 数据大小 | +| data_version | bigint(20) | NO | 数据版本号 | +| partition_checksum | bigint(20) | NO | 分区校验码 | +| data_checksum | bigint(20) | NO | 数据校验码 | +| row_checksum | bigint(20) | NO | 行校验码 | +| column_checksum | varchar(8192) | NO | 列校验码 | +| rebuild | bigint(20) | NO | 是否处于 rebuild 状态 | +| replica_type | bigint(20) | NO | 副本类型 | +| required_size | bigint(20) | NO | 迁移所需的 size | +| status | varchar(64) | NO | 副本状态 | +| is_restore | bigint(20) | NO | 区分是否为正在逻辑/物理恢复的副本 | +| quorum | bigint(20) | NO | 仅` role=1` 的行的该值有效,表示 Paxos 组应有的成员数,用于计算多数派。 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/29.gv-lock_wait_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/29.gv-lock_wait_stat.md new file mode 100644 index 000000000..4039a3611 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/29.gv-lock_wait_stat.md @@ -0,0 +1,37 @@ +gv$lock_wait_stat +====================================== + + + +功能 +----------- + +整个集群中行锁的状态。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_lock_wait_stat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|--------------|----------------|--------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TABLE_ID | bigint(20) | NO | 表 ID | +| TABLE_NAME | varchar(128) | NO | 表名 | +| ROWKEY | varchar(512) | NO | 主键 | +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| SESSION_ID | bigint(20) | NO | 会话 ID | +| NEED_WAIT | tinyint(4) | NO | 是否需要等锁 | +| RECV_TS | bigint(20) | NO | 收到请求时间戳 | +| LOCK_TS | bigint(20) | NO | 最近一次上锁的时间戳 | +| ABS_TIMEOUT | bigint(20) | NO | 请求超时时刻 | +| TRY_LOCK_TIMES | bigint(20) | NO | 尝试上锁的次数 | +| TIME_AFTER_RECV | bigint(20) | NO | 收到请求到当前的时间间隔 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/3.gv-session_event.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/3.gv-session_event.md new file mode 100644 index 000000000..87524b217 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/3.gv-session_event.md @@ -0,0 +1,40 @@ +gv$session_event +===================================== + + + +功能 +----------- + +gv$session_event 视图用于展示集群内所有 OBServer 的 Session 级别等待事件。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_session_event + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|-------------|----------------|----------------------| +| SID | bigint(20) | NO | Session 的 ID | +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| EVENT_ID | bigint(20) | NO | 等待事件的 ID | +| EVENT | varchar(64) | NO | 等待事件的描述 | +| WAIT_CLASS_ID | bigint(20) | NO | 等待事件所属类型的 ID | +| WAIT_CLASS# | bigint(20) | NO | 等待事件所属类型的下标 | +| WAIT_CLASS | varchar(64) | NO | 等待事件所属类型的名称 | +| TOTAL_WAITS | bigint(20) | NO | 等待事件的总等待次数 | +| TOTAL_TIMEOUTS | bigint(20) | NO | 等待事件的总等待超时次数 | +| TIME_WAITED | double | NO | 等待事件的总等待时间,单位为百分之一秒 | +| MAX_WAIT | double | NO | 等待事件的最长等待时间,单位为百分之一秒 | +| AVERAGE_WAIT | double | NO | 等待事件的平均等待时间,单位为百分之一秒 | +| TIME_WAITED_MICRO | bigint(20) | NO | 等待事件的总等待时间(微秒) | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/30.gv-session_longops.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/30.gv-session_longops.md new file mode 100644 index 000000000..afba60a39 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/30.gv-session_longops.md @@ -0,0 +1,34 @@ +gv$session_longops +======================================= + + + +功能 +----------- + +展示集群索引构建的进度。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_long_ops_status + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|---------------|----------------|-----------| +| SID | bigint(20) | NO | 会话 ID | +| OPNAME | varchar(128) | NO | 操作名称 | +| TARGET | varchar(128) | NO | 操作对象 | +| SVR_IP | varchar(32) | NO | 操作所在机器 IP | +| SVR_PORT | bigint(20) | NO | 操作所在机器端口号 | +| START_TIME | bigint(20) | NO | 开始时间 | +| ELAPSED_SECONDS | decimal(24,4) | NO | 已经消耗时间 | +| TIME_REMAINING | bigint(20) | NO | 预估剩余需要时间 | +| LAST_UPDATE_TIME | bigint(20) | NO | 统计信息更新时间 | +| MESSAGE | varchar(500) | NO | 备注信息 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/31.gv-tenant_memstore_allocator_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/31.gv-tenant_memstore_allocator_info.md new file mode 100644 index 000000000..4f3474677 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/31.gv-tenant_memstore_allocator_info.md @@ -0,0 +1,29 @@ +gv$tenant_memstore_allocator_info +====================================================== + + + +功能 +----------- + +该视图展示了所连接 OBServer 上的 Memtable 的若干信息,主要用于排查租户 Memstore 内存长时间未释放的问题。每行记录对应单个 Memtable 的信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|-------------|----------------|-------------------------------------------| +| SVR_IP | varchar(32) | NO | OBServer 的 IP 地址 | +| SVR_PORT | bigint(20) | NO | OBServer 的端口 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TABLE_ID | bigint(20) | NO | 表 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| MT_BASE_VERSION | bigint(20) | NO | 该 Memtable 对应的起始事务版本 | +| RETIRE_CLOCK | bigint(20) | NO | 该 Memtable 所属的租户当前 Memstore 已分配内存总量 | +| MT_IS_FROZEN | bigint(20) | NO | 该 Memtable 是否已经冻结 | +| MT_PROTECTION_CLOCK | bigint(20) | NO | 该 Memtable 第一次分配内存时,所属租户 Memstore 已分配内存量。 | +| MT_SNAPSHOT_VERSION | bigint(20) | NO | 该 Memtable 的快照版本 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/32.gv-minor_merge_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/32.gv-minor_merge_info.md new file mode 100644 index 000000000..5829c9491 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/32.gv-minor_merge_info.md @@ -0,0 +1,25 @@ +gv$minor_merge_info +======================================== + + + +功能 +----------- + +展示集群内部每个 Server 中不同租户级的转储起始时间 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|--------------|----------------|-----------| +| SVR_IP | varchar(32) | NO | 服务器 IP 地址 | +| SVR_PORT | bigint(20) | NO | 服务器端口号 | +| TENANT_ID | varchar(256) | NO | 租户 ID | +| FREEZE_SNAPSHOT | longtext | NO | 转储冻结时间戳 | +| START_TIME | timestamp(6) | NO | 转储开始时间 | +| FINISH_TIME | timestamp(6) | NO | 转储结束时间 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/33.gv-tenant_px_worker_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/33.gv-tenant_px_worker_stat.md new file mode 100644 index 000000000..7c4406c3b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/33.gv-tenant_px_worker_stat.md @@ -0,0 +1,30 @@ +gv$tenant_px_worker_stat +============================================= + + + +功能 +----------- + +在并行执行场景中,查看每个线程的执行信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|--------------|----------------|--------------------| +| session_id | bigint(20) | NO | Session 的 ID | +| tenant_id | bigint(20) | NO | 租户 ID | +| svr_ip | varchar(32) | NO | OBServer 的机器 IP | +| svr_port | bigint(20) | NO | OBServe 机器 IP 下的端口 | +| trace_id | varchar(128) | NO | SQL 的 trace_id | +| qc_id | bigint(20) | NO | px 中的 qc_id | +| sqc_id | bigint(20) | NO | px 中的 sqc_id | +| worker_id | bigint(20) | NO | 线程 ID | +| dfo_id | bigint(20) | NO | px 中的 dfo_id | +| start_time | timestamp(6) | NO | 线程开始运行的时间 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/34.gv-partition_audit.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/34.gv-partition_audit.md new file mode 100644 index 000000000..37024c183 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/34.gv-partition_audit.md @@ -0,0 +1,44 @@ +gv$partition_audit +======================================= + + + +功能 +----------- + +提供分区级别的统计信息,用于分区的性能统计。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|-------------|----------------|-------------------------------| +| svr_ip | varchar(32) | NO | 服务器 IP。 | +| svr_port | bigint(20) | NO | 服务器端口。 | +| tenant_id | bigint(20) | NO | 租户 ID。 | +| table_id | bigint(20) | NO | 表 ID。 | +| partition_id | bigint(20) | NO | 分区 ID。 | +| partition_status | bigint(20) | NO | 分区状态。 | +| base_row_count | bigint(20) | NO | 基线数据行数,暂不可用。 | +| insert_row_count | bigint(20) | NO | 在表或分区上插入的行数。 | +| delete_row_count | bigint(20) | NO | 在表或分区上删除的行数。 | +| update_row_count | bigint(20) | NO | 在表或分区上更新的行数。 | +| query_row_count | bigint(20) | NO | 在表或分区上查询的行数,暂不可用。 | +| insert_sql_count | bigint(20) | NO | 在表或分区上执行的 SQL 插入操作的次数。 | +| delete_sql_count | bigint(20) | NO | 在表或分区上执行的 SQL 删除操作的次数。 | +| update_sql_count | bigint(20) | NO | 在表或分区上执行的 SQL 更新操作的次数。 | +| query_sql_count | bigint(20) | NO | 在表或分区上执行的 SQL 查询操作的次数,暂不可用。 | +| trans_count | bigint(20) | NO | 在表或分区上执行的事务操作的次数。 | +| sql_count | bigint(20) | NO | 在表或分区上执行的所有 SQL 操作的次数。 | +| rollback_insert_row_count | bigint(20) | NO | 在表或分区上执行的插入回滚的行数,暂不可用。 | +| rollback_delete_row_count | bigint(20) | NO | 在表或分区上执行的删除回滚的行数,暂不可用。 | +| rollback_update_row_count | bigint(20) | NO | 在表或分区上执行的更新回滚的行数,暂不可用。 | +| rollback_insert_sql_count | bigint(20) | NO | 在表或分区上执行的回滚 SQL 插入操作的次数,暂不可用。 | +| rollback_delete_sql_count | bigint(20) | NO | 在表或分区上执行的回滚 SQL 删除操作的次数,暂不可用。 | +| rollback_update_sql_count | bigint(20) | NO | 在表或分区上执行的回滚 SQL 更新操作的次数,暂不可用。 | +| rollback_trans_count | bigint(20) | NO | 在表或分区上执行的回滚事务操作的次数,暂不可用。 | +| rollback_sql_count | bigint(20) | NO | 在表或分区上执行的所有回滚 SQL 操作的次数,暂不可用。 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/35.gv-ps_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/35.gv-ps_stat.md new file mode 100644 index 000000000..430c81889 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/35.gv-ps_stat.md @@ -0,0 +1,26 @@ +gv$ps_stat +=============================== + + + +功能 +----------- + +监控 PS Cache 的整体状态,包括命中率、内存占用、缓存的 item 数目。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|-------------|----------------|---------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| svr_ip | varchar(32) | NO | 机器 IP | +| svr_port | bigint(20) | NO | 机器端口号 | +| stmt_count | bigint(20) | NO | PS Cache 中目前缓存了多少语句 | +| hit_count | bigint(20) | NO | PS Cache 总的命中次数 | +| access_count | bigint(20) | NO | 访问 PS Cache 的总次数 | +| mem_hold | bigint(20) | NO | PS Cache 占用了多少内存 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/36.gv-ps_item_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/36.gv-ps_item_info.md new file mode 100644 index 000000000..2ac25d5b9 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/36.gv-ps_item_info.md @@ -0,0 +1,32 @@ +gv$ps_item_info +==================================== + + + +功能 +----------- + +用于给 prepared statement 提供监控功能,包含 PS Cache 中所有 prepare statement 的基本信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|----------------|----------------|----------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| svr_ip | varchar(32) | NO | 机器 IP | +| svr_port | bigint(20) | NO | 机器端口号 | +| stmt_id | bigint(20) | NO | PS Cache 中对应语句的 stmt_id 信息 | +| db_id | bigint(20) | NO | prepare 语句涉及到的数据库 ID | +| ps_sql | varchar(65536) | NO | prepare 的 SQL 信息 | +| param_count | bigint(20) | NO | prepare 的参数个数信息 | +| stmt_item_ref_count | bigint(20) | NO | stmt_item 的引用计数信息 | +| stmt_info_ref_count | bigint(20) | NO | stmt_info 的引用计数信息 | +| mem_hold | bigint(20) | NO | 该 prepare stmt 占用的内存大小 | +| stmt_type | bigint(20) | NO | 该 prepare stmt 的类型信息 | +| checksum | bigint(20) | NO | 该 prepare stmt 的 checksum | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/37.gv-sql_workarea.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/37.gv-sql_workarea.md new file mode 100644 index 000000000..945eeb2a4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/37.gv-sql_workarea.md @@ -0,0 +1,41 @@ +gv$sql_workarea +==================================== + + + +功能 +----------- + +之前受 SQL 自动内存管理负责执行的所有 Operator 的 workarea 统计信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------| +| address | varbinary(8) | NO | SQL 对应的 Handle 地址,目前未指定值 | +| hash_value | bigint(0) | NO | 语句的 Hash Value 的值 | +| sql_id | varchar(32) | NO | SQL 语句的 SQL 唯一标示 | +| child_number | bigint(0) | NO | 该 cursor 的数量 | +| workarea_address | varbinary(8) | NO | workarea 地址 | +| operation_type | varchar(40) | NO | workarea 操作符类型,例如 Sort、Hash Join、Group by 等 | +| operation_id | bigint(20) | NO | 计划树中识别操作符的唯一标示 | +| policy | varchar(10) | NO | workarea 的策略: * MANUAL * AUTO | +| estimated_optimal_size | bigint(20) | NO | 在最优情况下执行操作符的估算内存大小,单位:bytes | +| estimated_onepass_size | bigint(20) | NO | 在 one pass 场景下,执行操作符估算内存大小,单位:bytes | +| last_memory_used | bigint(20) | NO | 游标在上次执行使用的内存大小,单位:bytes | +| last_execution | varchar(10) | NO | 上次执行时 workarea 选择的是 optimal、one pass 还是 multi passes | +| last_degree | bigint(20) | NO | 上次执行并行度 | +| total_executions | bigint(20) | NO | 总共执行使用 workarea 的次数 | +| optimal_executions | bigint(20) | NO | 最优场景下执行的次数 | +| onepass_executions | bigint(20) | NO | One Pass 场景执行的次数 | +| multipasses_executions | bigint(20) | NO | Multi Passes 场景执行的次数 | +| active_time | bigint(20) | NO | workarea 活跃时的平均时间,单位:s | +| max_tempseg_size | bigint(20) | NO | workarea 使用时最大的临时磁盘空间,单位:bytes;如果是 NULL,则表示未使用临时空间 | +| last_tempseg_size | bigint(20) | NO | workarea 上次执行时使用的临时磁盘空间;如果是 NULL,表示未使用临时空间 | +| con_id | bigint(20) | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/38.gv-sql_workarea_histogram.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/38.gv-sql_workarea_histogram.md new file mode 100644 index 000000000..dedc6f1a0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/38.gv-sql_workarea_histogram.md @@ -0,0 +1,27 @@ +gv$sql_workarea_histogram +============================================== + + + +功能 +----------- + +展示之前所有 workarea执行的统计信息,如在区间 1 M~2 M 之间全 in-memory 处理的次数、one-pass 次数等。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|------------|----------------|------------------------------------------| +| low_optimal_size | bigint(20) | NO | workarea 在 optimal 模式下的最低内存量 | +| high_optimal_size | bigint(20) | NO | workarea 在 optimal 模式下的最高内存量 | +| optimal_executions | bigint(20) | NO | workarea 在最低和最高区间的最优模式下执行的次数 | +| onepass_executions | bigint(20) | NO | workarea 在最低和最高区间的 one pass 模式下执行的次数 | +| multipasses_executions | bigint(20) | NO | workarea 在最低和最高区间的 multi passes 模式下执行的次数 | +| total_executions | bigint(20) | NO | workarea 总共执行的次数 | +| con_id | bigint(20) | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/39.gv-ob_sql_workarea_memory_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/39.gv-ob_sql_workarea_memory_info.md new file mode 100644 index 000000000..81dffae7d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/39.gv-ob_sql_workarea_memory_info.md @@ -0,0 +1,27 @@ +gv$ob_sql_workarea_memory_info +=================================================== + + + +功能 +----------- + +用于查询 SQL workarea 总体的一些信息,如最大可用内存、当前使用内存、当前 hold 内存等。通过该视图可以知道当前租户下,workarea 的使用情况,包括内存利用率等。 + +**字段说明** + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|------------|----------------|------------------------------------------------------------------------------------------------------------------------| +| max_workarea_size | bigint(20) | NO | 最大 workarea 内存,由参数决定可以使用多少内存 | +| workarea_hold_size | bigint(20) | NO | workarea 当前 hold 内存大小。 **说明** 由于具体的使用量无法从内存管理模块获取到,故只能获取 hold 值。 | +| max_auto_workarea_size | bigint(20) | NO | auto 时,预计最大可用内存大小可以简单认为最大可用内存会根据公式`max_work_area_size - hold + total_mem_used` 进行计算得到,表示当前 workarea 情况下,auto 管理的最大内存大小 | +| mem_target | bigint(20) | NO | 当前 workarea 可用内存的目标大小。与 max_auto_work_area 的区别在于该值是 max_auto_work_area 值的一定比例 | +| total_mem_used | bigint(20) | NO | 当前 auto 内存使用大小,这里是由 SQL 自动内存管理模块统计的大小,不是真正使用大小 | +| global_mem_bound | bigint(20) | NO | auto 模式下,全局最大可用内存大小 | +| drift_size | bigint(20) | NO | 当前需求内存变化大小,主要用来当波动一定范围,会自动触发重新计算 global bound size | +| workarea_count | bigint(20) | NO | 注册的 operator profile 个数 | +| manual_calc_count | bigint(20) | NO | 非定时触发的计算 global bound size 次数 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/4.gv-session_wait.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/4.gv-session_wait.md new file mode 100644 index 000000000..4903ad9e1 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/4.gv-session_wait.md @@ -0,0 +1,42 @@ +gv$session_wait +==================================== + + + +功能 +----------- + +该视图用于展示所有服务器上所有 Session 的当前或者上一次等待事件的一些信息,包括等待事件名称、等待耗时等。 + +相关表/视图 +--------------- + +__all_virtual_session_event + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|---------------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SID | bigint(20) | NO | Session ID | +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | 服务器的 IP | +| SVR_PORT | bigint(20) | NO | 服务器端口 | +| EVENT | varchar(64) | NO | 等待事件名称 | +| P1TEXT | varchar(64) | NO | 等待事件的第一个参数的描述 | +| P1 | bigint(20) unsigned | NO | 等待事件的第一个参数的值 | +| P2TEXT | varchar(64) | NO | 等待事件的第二个参数的描述 | +| P2 | bigint(20) unsigned | NO | 等待事件的第二个参数的值 | +| P3TEXT | varchar(64) | NO | 等待事件的第三个参数的描述 | +| P3 | bigint(20) unsigned | NO | 等待事件的第三个参数的值 | +| WAIT_CLASS_ID | bigint(20) | NO | 等待事件的类别 ID | +| WAIT_CLASS# | bigint(20) | NOT NULL | 等待事件的类别序号 | +| WAIT_CLASS | varchar(64) | NO | 等待事件的类别名称 | +| STATE | varchar(19) | NO | 当前等待事件的状态,包含四种状态: * Waiting:Session 正等待这个事件。 * Waited unknown time:由于设置了 timed_statistics 值为 false,导致不能得到时间信息。表示发生了等待,但时间很短。 * Wait short time:表示发生了等待,但由于时间非常短不超过一个时间单位,所以没有记录。 * Waited knnow time:如果 Session 等待然后得到了所需资源,那么将从 waiting 进入本状态。 | +| WAIT_TIME_MICRO | bigint(20) | NO | 等待时间,单位为微秒。如果当前正在等待,表示已经等待的时长;如果当前没有等待,表示最后一次等待的总等待时长。 | +| TIME_REMAINING_MICRO | bigint(20) | NO | * 值\> 0:最后一次等待时间(单位:毫秒),当前未在等待状态。 * 值为 0:Session 正在等待当前的事件。 * 值为 -1:最后一次等待时间小于 1 个统计单位,当前未在等待状态。 * 值为 -2:时间统计状态未置为可用,当前未在等待状态。 | +| TIME_SINCE_LAST_WAIT_MICRO | bigint(20) | NO | 上一次等待结束到现在的时间,单位为毫秒,如果当前正在等待,其值为 0。 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/40.gv-server_schema_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/40.gv-server_schema_info.md new file mode 100644 index 000000000..d00b3e95c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/40.gv-server_schema_info.md @@ -0,0 +1,28 @@ +gv$server_schema_info +========================================== + + + +功能 +----------- + +展示所有 Server 上的 Schema 信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|-------------|----------------|---------------------------------| +| SVR_IP | varchar(32) | NO | Server 的 IP 地址 | +| SVR_PORT | int | NO | Server 的端口号 | +| TENANT_ID | int | NO | 租户 ID | +| REFRESHED_SCHEMA_VERSION | int | NO | 租户已刷新的 Schema 版本 | +| RECEIVED_SCHEMA_VERSION | int | NO | 租户应该要刷新的 Schema 版本 | +| SCHEMA_COUNT | int | NO | 租户的 Schema 数量 | +| SCHEMA_SIZE | int | NO | 租户的 Schema 大小 | +| MIN_SSTABLE_SCHEMA_VERSION | int | NO | 租户 Sstable 上记录的最小schema_version | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/41.gv-merge_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/41.gv-merge_info.md new file mode 100644 index 000000000..60e0ba05f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/41.gv-merge_info.md @@ -0,0 +1,33 @@ +gv$merge_info +================================== + + + +功能 +----------- + +展示 OceanBase 集群已经完成的合并或转储相关的统计信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|---------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| svr_ip | varchar(32) | NO | 服务器 IP 地址 | +| svr_port | bigint(20) | NO | 服务器端口号 | +| tenant_id | bigint(20) | NO | 租户 ID | +| table_id | bigint(20) | NO | 表 ID | +| partition_id | bigint(20) | NO | 分区 ID | +| type | varchar(5) | NO | 合并或转储类型: * minor * major | +| action | varchar(64) | NO | 合并或转储具体动作: * mini * mini minor * buffer minor * minor | +| version | varchar(64) | NO | 合并或转储版本号 | +| start_time | timestamp(6) | NO | 合并或转储开始时间 | +| end_time | timestamp | NO | 合并或转储结束时间 | +| macro_block_count | bigint(20) | NO | 合并或转储宏块总数 | +| reuse_pct | decimal(26,2) | NO | 合并或转储宏块重用率 | +| parallel_degree | bigint(20) | NO | 合并或转储并行度 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/42.gv-lock.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/42.gv-lock.md new file mode 100644 index 000000000..f4276e2f3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/42.gv-lock.md @@ -0,0 +1,31 @@ +gv$lock +============================ + + + +功能 +----------- + +展示 OceanBase 数据库的行锁信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|---------------------|----------------|-------------------| +| SVR_IP | varchar(32) | NO | 服务器 IP | +| SVR_PORT | bigint(20) | NO | 服务器端口号 | +| TABLE_ID | bigint(20) | NO | 表 ID | +| ADDR | varchar(512) | NO | 被锁对象的地址 | +| KADDR | bigint(20) unsigned | NO | 锁地址 | +| SID | bigint(20) | NO | 会话持有的 ID | +| TYPE | bigint(20) | NO | 0(行锁) | +| LMODE | bigint(20) | NO | 0(写锁) | +| REQUEST | bigint(0) | YES | NULL | +| CTIME | bigint(21) | NO | 加锁耗时 | +| BLOCK | bigint(20) | NO | 最早被阻塞的 session_id | +| CON_ID | bigint(20) unsigned | NO | 租户ID | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/43.gv-sstable.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/43.gv-sstable.md new file mode 100644 index 000000000..fc020d362 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/43.gv-sstable.md @@ -0,0 +1,43 @@ +gv$sstable +=============================== + + + +功能 +----------------------- + +gv$sstable 视图用于展示租户的 SSTable 信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|--------------------------------|---------------------|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SVR_IP | varchar(46) | NO | 服务器的 IP 地址 | +| SVR_PORT | bigint(20) | NO | 服务器的端口号 | +| TABLE_TYPE | bigint(20) | NO | 表的类型 | +| TABLE_ID | bigint(20) | NO | 表 ID | +| TABLE_NAME | varchar(256) | NO | 表名 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| INDEX_ID | bigint(20) | NO | 主表或索引表的 ID | +| BASE_VERSION | bigint(20) | NO | 该表中存储数据的 `trans_version` 范围的最小值 | +| MULTI_VERSION_START | bigint(20) | NO | 该表中多版本数据的起始 `trans_version` | +| SNAPSHOT_VERSION | bigint(20) | NO | 该表中存储数据的 `trans_version` 范围的最大值 | +| START_LOG_TS | bigint(20) unsigned | NO | 该表中数据的日志时间戳范围的左边界 | +| END_LOG_TS | bigint(20) unsigned | NO | 该表中数据的日志时间戳范围的右边界 | +| MAX_LOG_TS | bigint(20) unsigned | NO | 该表中数据的日志时间戳范围的最大值 | +| VERSION | bigint(20) | NO | 该表的版本 | +| LOGICAL_DATA_VERSION | bigint(20) | NO | 该表的逻辑数据版本 | +| SIZE | bigint(20) | NO | 该表的大小 | +| IS_ACTIVE | bigint(20) | NO | 该表是否处于活跃状态 | +| REF | bigint(20) | NO | 该表引用的计数 | +| WRITE_REF | bigint(20) | NO | 该表写引用的计数 | +| TRX_COUNT | bigint(20) | NO | 该表上活跃事务的数量 | +| PENDING_LOG_PERSISTING_ROW_CNT | bigint(20) | NO | 持久化 Redo Log 的回收数量 | +| UPPER_TRANS_VERSION | bigint(20) | NO | 该表中存储数据的 `trans_version` 的上限 | +| CONTAIN_UNCOMMITTED_ROW | tinyint(4) | NO | 该表中是否包含未提交的事务行: * 0:表示该表中不包含未提交的事务行 * 1:表示该表中包含未提交的事务行 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/44.gv-ob_trans_table_status.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/44.gv-ob_trans_table_status.md new file mode 100644 index 000000000..39aefd87a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/44.gv-ob_trans_table_status.md @@ -0,0 +1,28 @@ +gv$ob_trans_table_status +============================================= + + + +功能 +----------------------- + +从 OceanBase 数据库 V3.0.0 版本开始,系统开始支持转储未提交的事务,而未提交事务中的数据可能会转储到 SSTable 中,故将这些未提交的事务称为脏事务,一般比较大的事务容易成为脏事务。 + +`gv$ob_trans_table_status` 视图用于展示每次冻结后产生的脏事务的详细信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|--------------|-------------|------------|---------------| +| SVR_IP | varchar(46) | NO | 对应服务器的 IP 地址 | +| SVR_PORT | bigint(20) | NO | 对应服务器的端口号 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TABLE_ID | bigint(20) | NO | 表 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| END_LOG_ID | bigint(20) | NO | 已持久化的事务日志的 ID | +| TRANS_CNT | bigint(20) | NO | 脏事务的数量 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/45.v-statname.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/45.v-statname.md new file mode 100644 index 000000000..2135e7201 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/45.v-statname.md @@ -0,0 +1,30 @@ +v$statname +=============================== + + + +功能 +----------- + +用于展示所有统计事件的相关定义。 + +相关表/视图 +--------------- + +__tenant_virtual_staname + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|-------------|----------------|-------------| +| CON_ID | bigint(20) | NO | 租户的 ID | +| STAT_ID | bigint(20) | NO | 统计事件的 ID | +| STATISTICS# | bigint(20) | NO | 统计事件的下标 | +| NAME | varchar(64) | NO | 统计事件的名称 | +| DISPLAY_NAME | varchar(64) | NO | 统计事件的别名 | +| CLASS | bigint(20) | NO | 统计事件所属类型别名称 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/46.v-event_name.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/46.v-event_name.md new file mode 100644 index 000000000..d32354091 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/46.v-event_name.md @@ -0,0 +1,35 @@ +v$event_name +================================= + + + +功能 +----------- + +当前 OBServer 上所有统计事件的相关定义。 + +相关表/视图 +--------------- + +__tenant_virtual_event_name + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|-------------|----------------|--------------| +| CON_ID | bigint(20) | NO | 租户的 ID | +| EVENT_ID | bigint(20) | NO | 等待事件的 ID | +| EVENT# | bigint(20) | NO | 等待事件的下标 | +| NAME | varchar(64) | NO | 等待事件的名称 | +| DISPLAY_NAME | varchar(64) | NO | 等待事件的别名 | +| PARAMETER1 | varchar(64) | NO | 等待事件的参数 1 | +| PARAMETER2 | varchar(64) | NO | 等待事件的参数 2 | +| PARAMETER3 | varchar(64) | NO | 等待事件的参数 3 | +| WAIT_CLASS_ID | bigint(20) | NO | 等待事件所属类型的 ID | +| WAIT_CALSS# | bigint(20) | NO | 等待事件所属类型的下标 | +| WAIT_CLASS | varchar(64) | NO | 等待事件所属类型的名称 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/47.v-session_event.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/47.v-session_event.md new file mode 100644 index 000000000..c924fcc4b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/47.v-session_event.md @@ -0,0 +1,37 @@ +v$session_event +==================================== + + + +功能 +----------- + +统计每一个 Session 发生的等待事件。 + +相关表/视图 +--------------- + +gv$session_event + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|-------------|----------------|---------------------| +| SID | bigint(20) | NO | Session 的 ID | +| CON_ID | bigint(20) | NO | 租户的 ID | +| EVENT_ID | bigint(20) | NO | 等待事件的 ID | +| EVENT | varchar(64) | NO | 等待事件的描述 | +| WAIT_CLASS_ID | bigint(20) | NO | 等待事件所属类型的 ID | +| WAIT_CLASS# | bigint(20) | NO | 等待事件所属类型的下标 | +| WAIT_CLASS | varchar(64) | NO | 等待事件所属类型的名称 | +| TOTAL_WAITS | bigint(20) | NO | 等待事件的总等待次数 | +| TOTAL_TIMEOUTS | bigint(20) | NO | 等待事件的总等待超时次数 | +| TIME_WAITED | double | NO | 等待事件的总等待时间,单位 10ms | +| MAX_WAIT | double | NO | 等待事件的最长等待时间,单位 10ms | +| AVERAGE_WAIT | double | NO | 等待事件的平均等待时间,单位 10ms | +| TIME_WAITED_MICRO | bigint(20) | NO | 等待事件的总等待时间(微秒) | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/48.v-session_wait.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/48.v-session_wait.md new file mode 100644 index 000000000..c574c023d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/48.v-session_wait.md @@ -0,0 +1,40 @@ +v$session_wait +=================================== + + + +功能 +----------- + +每个 Session 当前等待事件明细,按照约定,每个等待事件会有三个参数,各自会记录对应的值。 + +相关表/视图 +--------------- + +gv$session_wait + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|----------------------------|---------------------|------------|------------------------| +| SID | bigint(20) | NO | Session 的 ID | +| CON_ID | bigint(20) | NO | 租户的 ID | +| EVENT | varchar(64) | NO | 等待事件的描述 | +| P1TEXT | varchar(64) | NO | 等待事件的参数 1 的名称 | +| P1 | bigint(20) unsigned | NO | 等待事件参数 1 的值 | +| P2TEXT | varchar(64) | NO | 等待事件的参数 2 的名称 | +| P2 | bigint(20) unsigned | NO | 等待事件参数 2 的值 | +| P3TEXT | varchar(64) | NO | 等待事件的参数 3 的名称 | +| P3 | bigint(20) unsigned | NO | 等待事件参数 3 的值 | +| WAIT_CLASS_ID | bigint(20) | NO | 等待事件所属类型的 ID | +| WAIT_CLASS# | bigint(20) | NO | 等待事件所属类型的下标 | +| WAIT_CLASS | varchar(64) | NO | 等待事件所属类型的名称 | +| STATE | varchar(19) | NO | 该等待事件的状态 | +| WAIT_TIME_MICRO | bigint(20) | NO | 该等待事件等待时间(微秒) | +| TIME_REMAINING_MICRO | bigint(20) | NO | 该等待事件统计该事件点距离超时的时间(微秒) | +| TIME_SINCE_LAST_WAIT_MICRO | bigint(20) | NO | 该等待事件距离上次等待的时间(微秒) | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/49.v-session_wait_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/49.v-session_wait_history.md new file mode 100644 index 000000000..5f5223496 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/49.v-session_wait_history.md @@ -0,0 +1,39 @@ +v$session_wait_history +=========================================== + + + +功能 +----------- + +每个 Session 当前等待事件明细,最近 10 次等待事件。 + +相关表/视图 +--------------- + +gv$session_wait_history + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|---------------------|----------------|--------------------| +| SID | bigint(20) | NO | Session ID | +| CON_ID | bigint(20) | NO | 租户 ID | +| SEQ# | bigint(20) | NO | 等待事件序列号 | +| EVENT# | bigint(20) | NO | 等待事件编号 | +| EVENT | varchar(64) | NO | 等待事件的描述 | +| P1TEXT | varchar(64) | NO | 等待事件的参数 1 的名称 | +| P1 | bigint(20) unsigned | NO | 等待事件参数 1 的值 | +| P2TEXT | varchar(64) | NO | 等待事件的参数 2 的名称 | +| P2 | bigint(20) unsigned | NO | 等待事件参数 2 的值 | +| P3TEXT | varchar(64) | NO | 等待事件的参数 3 的名称 | +| P3 | bigint(20) unsigned | NO | 等待事件参数 3 的值 | +| WAIT_TIME_MICRO | bigint(20) | NO | 该等待事件等待时间(微秒) | +| TIME_SINCE_LAST_WAIT_MICRO | bigint(20) | NO | 该等待事件距离上次等待的时间(微秒) | +| WAIT_TIME | double | NO | 等待事件的等待时间,单位为百分之一秒 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/5.gv-session_wait_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/5.gv-session_wait_history.md new file mode 100644 index 000000000..e6e321dc6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/5.gv-session_wait_history.md @@ -0,0 +1,41 @@ +gv$session_wait_history +============================================ + + + +功能 +----------- + +gv$session_wait_history 视图用于展示所有服务器上所有 Session 的最近 10 次等待事件的信息。 + +相关表/视图 +--------------- + +__all_virtual_session_wait_history + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|---------------------|----------------|-------------------------| +| SID | bigint(20) | NO | Session ID。 | +| CON_ID | bigint(20) | NO | 租户 ID。 | +| SVR_IP | varchar(32) | NO | 服务器的 IP 地址。 | +| SVR_PORT | bigint(20) | NO | 服务器端口。 | +| SEQ# | varchar(64) | NO | 等待事件序列号。 | +| EVENT# | varchar(64) | NO | 等待事件编号。 | +| EVENT | varchar(64) | NO | 等待事件名称。 | +| P1TEXT | varchar(64) | NO | 等待事件的参数 1 的描述。 | +| P1 | bigint(20) unsigned | NO | 等待事件的参数 1 的值。 | +| P2TEXT | varchar(64) | NO | 等待事件的参数 2 的描述。 | +| P2 | bigint(20) unsigned | NO | 等待事件的参数 2 的值。 | +| P3TEXT | varchar(64) | NO | 等待事件的参数 3 的描述。 | +| P3 | bigint(20) unsigned | NO | 等待事件的参数 3 的值。 | +| WAIT_TIME_MICRO | bigint(20) | NO | 等待事件的等待时间,单位为微秒。 | +| TIME_SINCE_LAST_WAIT_MICRO | bigint(20) | NO | 自上一次等待结束到当前等待的时间,单位为微秒。 | +| WAIT_TIME | double | NO | 等待事件的等待时间,单位为百分之一秒。 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/50.v-sesstat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/50.v-sesstat.md new file mode 100644 index 000000000..6e1713816 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/50.v-sesstat.md @@ -0,0 +1,28 @@ +v$sesstat +============================== + + + +功能 +----------- + +展示 Session 级别的统计事件概况。 + +相关表/视图 +--------------- + +gv$sesstat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|------------|----------------|----------------| +| SID | bigint(20) | NO | 该 Session 的 ID | +| CON_ID | bigint(20) | NO | 租户的 ID | +| STATISTICS# | bigint(20) | NO | 统计事件的下标 | +| VALUE | bigint(20) | NO | 统计事件发生的次数 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/51.v-sysstat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/51.v-sysstat.md new file mode 100644 index 000000000..845e57934 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/51.v-sysstat.md @@ -0,0 +1,30 @@ +v$sysstat +============================== + + + +功能 +----------- + +租户级别的统计事件概况。 + +相关表/视图 +--------------- + +gv$sysstat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|-------------|----------------|-------------| +| CON_ID | bigint(20) | NO | 租户的 ID | +| STATISTICS# | bigint(20) | NO | 统计事件的下标 | +| VALUE | bigint(20) | NO | 统计事件对应的结果数值 | +| STAT_ID | bigint(20) | NO | 统计事件的 ID | +| NAME | varchar(64) | NO | 统计事件的名称 | +| CLASS | bigint(20) | NO | 统计事件所属的类型 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/52.v-system_event.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/52.v-system_event.md new file mode 100644 index 000000000..ba0d06496 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/52.v-system_event.md @@ -0,0 +1,35 @@ +v$system_event +=================================== + + + +功能 +----------- + +租户级别的等待事件统计。 + +相关表/视图 +--------------- + +gv$system_event + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-------------|----------------|----------------------| +| CON_ID | bigint(20) | NO | 租户的 ID | +| EVENT_ID | bigint(20) | NO | 等待事件的 ID | +| EVENT | varchar(64) | NO | 等待事件的描述 | +| WAIT_CLASS_ID | bigint(20) | NO | 等待事件的所属 Class ID | +| WAIT_CLASS | bigint(20) | NO | 等待事件的所属的 Class 下标 | +| WAIT_CLASS | varchar(64) | NO | 等待事件所属的 Class | +| TOTAL_WAITS | bigint(20) | NO | 该等待事件的总等待次数 | +| TOTAL_TIMEOUTS | bigint(20) | NO | 该等待事件的总超时次数 | +| TOTAL_WAITED | double | NO | 该等待事件的总等待时间,单位:10ms | +| AVERAGE_WAIT | double | NO | 该等待事件的平均等待事件,单位:10ms | +| TOTAL_WAITED_MICRO | bigint(20) | NO | 该等待事件的总等待时间(微秒) | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/53.v-memory.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/53.v-memory.md new file mode 100644 index 000000000..bc9f02cbe --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/53.v-memory.md @@ -0,0 +1,30 @@ +v$memory +============================= + + + +功能 +----------- + +v$memory 视图用于展示租户级别的内存统计信息。 + +相关表/视图 +--------------- + +gv$memory + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|-------------|---------------|------------|--------------------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| CONTEXT | varchar(256) | NO | 内存所属 Mod 的名称 | +| COUNT | decimal(20,0) | NO | 内存分配与释放的差值,即当前该 Mod 使用中的内存单元个数 | +| USED | decimal(20,0) | NO | 该 Mod 当前使用的内存数值,单位:Byte | +| ALLOC_COUNT | decimal(20,0) | NO | 该 Mod 申请的内存总个数 | +| FREE_COUNT | decimal(20,0) | NO | 该 Mod 释放的内存总个数 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/54.v-memstore.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/54.v-memstore.md new file mode 100644 index 000000000..47bc6043c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/54.v-memstore.md @@ -0,0 +1,30 @@ +v$memstore +=============================== + + + +功能 +----------- + +租户级别的 Memstore 统计信息。 + +相关表/视图 +--------------- + +gv$memstore + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|------------|----------------|----------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| ACTIVE | bigint(20) | NO | 当前租户活跃的 Memstore | +| TOTAL | bigint(20) | NO | 当前租户 Memstore 总和 | +| FREEZE_TRIGGER | bigint(20) | NO | 触发 major freeze 的值大小 | +| MEM_LIMIT | bigint(20) | NO | 租户总的内存上限大小 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/55.v-memstore_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/55.v-memstore_info.md new file mode 100644 index 000000000..24241c58c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/55.v-memstore_info.md @@ -0,0 +1,37 @@ +v$memstore_info +==================================== + + + +功能 +----------- + +该视图用于展示所有服务器上所有租户的所有分区的 Memtable 的一些明细信息。 + +相关表/视图 +--------------- + +gv$memstore_info + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|--------------|----------------|----------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| IP | varchar(32) | NO | 服务器的 IP | +| PORT | bigint(20) | NO | 服务器端口 | +| TABLE_ID | bigint(20) | NO | 表 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| VERSION | varchar(128) | NO | 冻结版本号 | +| BASE_VERSION | bigint(20) | NO | 数据的快照版本号的左边界 | +| MULTI_VERSION_START | bigint(20) | NO | 最小的老版本数据的快照版本号 | +| SNAPSHOT_VERSION | bigint(20) | NO | 数据的快照版本号的右边界 | +| IS_ACTIVE | bigint(20) | NO | 是否是活跃的 | +| USED | bigint(20) | NO | 使用的内存大小,单位为字节 | +| HASH_ITEMS | bigint(20) | NO | Hash 索引中记录的行数 | +| BTREE_ITEMS | bigint(20) | NO | Btree 索引中记录的行数 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/56.v-plan_cache_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/56.v-plan_cache_stat.md new file mode 100644 index 000000000..8df07cef0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/56.v-plan_cache_stat.md @@ -0,0 +1,38 @@ +v$plan_cache_stat +====================================== + + + +功能 +----------- + +该视图记录当前租户在所有 Server 上的每个计划缓存整体的状态。 + +相关表/视图 +--------------- + +gv$plan_cache_stat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|-------------|----------------|-----------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| svr_ip | varchar(32) | NO | IP 地址 | +| svr_port | bigint(20) | NO | 端口号 | +| sql_num | bigint(20) | NO | plan_cache 涉及的 SQL 条数 | +| mem_used | bigint(20) | NO | plan_cache 已经使用的内存 | +| mem_hold | bigint(20) | NO | plan_cache 持有的内存 | +| access_count | bigint(20) | NO | 进行 plan_cache 的次数 | +| hit_count | bigint(20) | NO | 命中 plan_cache 的次数 | +| hit_rate | bigint(20) | NO | plan_cache 的命中率 | +| plan_num | bigint(20) | NO | Plan 的个数 | +| mem_limit | bigint(20) | NO | plan_cache 的内存上限 | +| hash_bucket | bigint(20) | NO | plan_cache hash map 中的 Bucket 的个数 | +| stmtkey_num | bigint(20) | NO | plan_cache 中 stmt_key 的个数 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/57.v-plan_cache_plan_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/57.v-plan_cache_plan_stat.md new file mode 100644 index 000000000..46afeef66 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/57.v-plan_cache_plan_stat.md @@ -0,0 +1,86 @@ +v$plan_cache_plan_stat +=========================================== + + + +功能 +----------- + +v$plan_cache_plan_stat 视图记录了当前租户在当前 Server 上的计划缓存中缓存的每一个缓存对象的状态。 +**注意** + + + +该表不仅缓存了 SQL 计划对象,也缓存了 PL 对象(例如匿名块、PL Package 以及 PL Function),某些字段只在特定对象下有效。 + +相关表/视图 +--------------- + +gv$plan_cache_plan_stat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|---------------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID。 | +| svr_ip | varchar(32) | NO | 机器 IP。 | +| svr_port | bigint(20) | NO | 机器端口号。 | +| plan_id | bigint(20) | NO | 该计划的 ID。 | +| sql_id | varchar(32) | NO | 缓存对象对应的 SQL ID,如果是 PL 对象,该字段为 NULL。 | +| type | bigint(20) | NO | 对于 SQL 计划缓存,字段表示计划的类型: * 1:表示本地计划 * 2:表示远程计划 * 3:表示分配计划 对于 PL 对象缓存,字段表示 PL 对象的类型: * 1:表示程序 * 2:表示函数 * 3:表示包 * 4:表示匿名块 | +| is_bind_sensitive | bigint(20) | NO | 该计划是否需要打开 ACS。 | +| is_bind_aware | bigint(20) | NO | 该计划已经打开了 ACS。 | +| db_id | bigint(20) unsigned | NO | 数据库的 ID。 | +| statement | varchar(65536) | NO | 对于 SQL 计划,该字段为参数化后的 SQL 语句;对于匿名块对象,该字段为参数化后的匿名块语句;其他对象该字段无效。 | +| query_sql | varchar(65536) | NO | 对于 SQL 计划,该字段为参数化后的 SQL 语句;对于匿名块对象,该字段为参数化后的匿名块语句;其他对象该字段无效。 | +| special_params | varchar(4096) | NO | 表示不可参数化的参数值。 | +| param_infos | varchar(65536) | NO | 表示参数化信息。 | +| sys_vars | varchar(4096) | NO | 影响缓存对象的系统变量的值。 | +| plan_hash | bigint(20) | NO | SQL 计划的 Hash 值。 | +| first_load_time | timestamp(6) | NO | 第一次被加载时间。 | +| schema_version | bigint(20) | NO | Schema 版本号。 | +| merged_version | bigint(20) | NO | 当前缓存的计划对应的合并版本号。 | +| last_active_time | timestamp(6) | NO | 上一次被执行时间。 | +| avg_exe_usec | bigint(20) | NO | 平均执行时间。 | +| slowest_exe_time | timestamp(6) | NO | 最慢执行时间戳。 | +| slowest_exe_usec | bigint(20) | NO | 最慢一次执行耗时。 | +| slow_count | bigint(20) | NO | 当前 SQL 计划成为慢查询的次数。 | +| hit_count | bigint(20) | NO | 被命中次数。 | +| plan_size | bigint(20) | NO | 缓存对象占用的内存大小。 | +| executions | bigint(20) | NO | 执行次数。 | +| disk_reads | bigint(20) | NO | 所有执行物理读次数。 | +| direct_writes | bigint(20) | NO | 所有执行物理写次数。 | +| buffer_gets | bigint(20) | NO | 所有执行逻辑读次数。 | +| application_wait_time | bigint(20) unsigned | NO | 所有 Application 类事件的总时间。 | +| concurrency_wait_time | bigint(20) unsigned | NO | 所有 Concurrency 类事件的总时间。 | +| user_io_wait_time | bigint(20) unsigned | NO | 所有 user_io 类事件的总时间。 | +| rows_processed | bigint(20) | NO | 所有 Schedule 类事件的时间。 | +| elapsed_time | bigint(20) unsigned | NO | 所有执行接收到请求到执行结束所消耗的时间。 | +| cpu_time | bigint(20) unsigned | NO | 所有执行消耗的 CPU 时间。 | +| large_querys | bigint(20) | NO | 被判断为大查询的次数。 | +| delayed_large_querys | bigint(20) | NO | 被判断为大查询且被丢入大查询队列的次数。 | +| delayed_px_querys | bigint(20) | NO | 并行查询被丢回队列重试的次数。 | +| outline_version | bigint(20) | NO | Outline 版本号。 | +| outline_id | bigint(20) | NO | Outline 的 ID,为` -1` 表示不是通过绑定 Outline 生成的计划。 | +| outline_data | varchar(65536) | NO | 计划对应的 Outline 信息。 | +| acs_sel_info | varchar(65536) | NO | 当前 ACS 计划对应的选择率空间。 | +| table_scan | tinyint(4) | NO | 表示该查询是否为主键扫描。 | +| evolution | tinyint(4) | NO | 表示该执行计划是否在演进中。 | +| evo_executions | bigint(20) | NO | 演进次数。 | +| evo_cpu_time | bigint(20) unsigned | NO | 演进过程中总的执行 CPU 时间。 | +| timeout_count | bigint(20) | NO | 超时次数。 | +| ps_stmt_id | bigint(20) | NO | PreparedStatement ID。 | +| sessid | bigint(20) unsigned | NO | 缓存对象所在的 Session ID。 | +| temp_tables | varchar(65536) | NO | SQL 计划中包含的临时表表名,如果没有临时表,字段为空。 | +| is_use_jit | tinyint(4) | NO | SQL 计划是否开启了表达式编译执行。 | +| object_type | varchar(65536) | NO | 缓存对象的类型: * SQL_PLAN * PROCEDURE * FUNCTION * PACKAGE * ANONYMOUS | +| hints_info | varchar(65536) | NO | SQL 计划的 Hint 信息。 | +| hints_all_worked | tinyint(4) | NO | SQL 计划中的 Hint 是否都已经生效。 | +| pl_schema_id | bigint(20) unsigned | NO | 对于非匿名块的 PL 对象,字段为缓存对象的 Schema ID;对于匿名块,字段为 PreparedStatement ID;对于 SQL 计划,该字段无意义。 | +| is_batched_multi_stmt | tinyint(4) | NO | 表示是否为 Batched Multistmt 优化的计划。 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/58.v-plan_cache_plan_explain.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/58.v-plan_cache_plan_explain.md new file mode 100644 index 000000000..4fd58e6df --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/58.v-plan_cache_plan_explain.md @@ -0,0 +1,40 @@ +v$plan_cache_plan_explain +============================================== + + + +功能 +----------- + +该视图用于展示缓存在当前 Server 的计划缓存中的物理执行计划。 +**说明** + + + +该视图仅支持 Get 操作,查询时需要指定 `TENANT_ID`、`PLAN_ID` 字段。 + +相关表/视图 +--------------- + +gv$plan_cache_plan_explain + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| IP | varchar(32) | NO | IP 地址 | +| PORT | bigint(20) | NO | 端口号 | +| PLAN_ID | bigint(20) | NO | 计划的 ID | +| PLAN_DEPTH | bigint(20) | NO | Operator 在展示时的深度 | +| PLAN_LINE_ID | bigint(20) | NO | Operator 的编号 | +| OPERATOR | varchar(128) | NO | Operator 的名称 | +| NAME | varchar(256) | NO | 表的名称 | +| ROWS | bigint(20) | NO | 预估的结果行数 | +| COST | bigint(20) | NO | 预估的代价 | +| PROPERTY | varchar(4096) | NO | 对应 Operator 的信息 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/59.v-sql_audit.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/59.v-sql_audit.md new file mode 100644 index 000000000..7254ee033 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/59.v-sql_audit.md @@ -0,0 +1,106 @@ +v$sql_audit +================================ + + + +功能 +----------- + +该视图用于展示当前 Server 的每一次 SQL 请求的来源、执行状态等统计信息。该视图是按照租户拆分的,除了系统租户,其他租户不能跨租户查询。 + +相关表/视图 +--------------- + +gv$sql_audit + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------|---------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| REQUEST_ID | bigint(20) | NO | 请求的 ID 号 | +| TRACE_ID | varchar(128) | NO | 本次执行的 ID | +| SID | bigint(20) unsigned | NO | Session 连接 ID | +| CLIENT_IP | varchar(32) | NO | 发送请求的客户端 IP | +| CLIENT_PORT | bigint(20) | NO | 发送请求的客户端端口号 | +| TENANT_ID | bigint(20) | NO | 发送请求的租户 ID | +| TENANT_NAME | varchar(64) | NO | 发送请求的租户名称 | +| EFFECTIVE_TENANT_ID | bigint(20) | NO | 租户 ID | +| USER_ID | bigint(20) | NO | 发送请求的用户 ID | +| USER_NAME | varchar(64) | NO | 发送请求的用户名称 | +| USER_CLIENT_IP | varchar(32) | NO | 发送请求的客户端 IP | +| DB_ID | bigint(20) unsigned | DB_ID | 数据库 ID | +| DB_NAME | varchar(128) | DB_NAME | 数据库名称 | +| SQL_ID | varchar(32) | NO | 该 SQL 的 ID | +| QUERY_SQL | varchar(65536) | NO | 实际的 SQL 语句 | +| PLAN_ID | bigint(20) | NO | 执行计划 ID | +| AFFECTED_ROWS | bigint(20) | NO | 影响行数 | +| RETURN_ROWS | bigint(20) | NO | 返回行数 | +| PARTITION_CNT | bigint(20) | NO | 该请求涉及的分区数 | +| RET_CODE | bigint(20) | NO | 执行结果返回码 | +| QC_ID | bigint(20) unsigned | NO | 并行执行场景下,调度器 ID | +| DFO_ID | bigint(20) | NO | 并行执行场景下,当前执行的子计划 ID | +| SQC_ID | bigint(20) | NO | 并行执行场景下,本地协调器 ID | +| WORKER_ID | bigint(20) | NO | 并行执行场景下,工作线程 ID | +| EVENT | varchar(64) | NO | 最长等待事件名称 | +| P1TEXT | varchar(64) | NO | 等待事件参数 1 | +| P1 | bigint(20) unsigned | NO | 等待事件参数 1 的值 | +| P2TEXT | varchar(64) | NO | 等待事件参数 2 | +| P2 | bigint(20) unsigned | NO | 等待事件参数 2 的值 | +| P3TEXT | varchar(64) | NO | 等待事件参数 3 | +| P3 | bigint(20) unsigned | NO | 等待事件参数 3 的值 | +| LEVEL | bigint(20) | NO | 等待事件的级别 | +| WAIT_CLASS_ID | bigint(20) | NO | 等待事件所属的 Class ID | +| WAIT_CLASS# | bigint(20) | NO | 等待事件所属的 Class 的下标 | +| WAIT_CLASS | varchar(64) | NO | 等待事件所属的 Class 名称 | +| STATE | varchar(19) | NO | 等待事件的状态 | +| WAIT_TIME_MICRO | bigint(20) | NO | 该等待事件所等待的时间,单位:微秒 | +| TOTAL_WAIT_TIME_MICRO | bigint(20) | NO | 执行过程所有等待的总时间,单位:微秒 | +| TOTAL_WAITS | bigint(20) | NO | 执行过程中总等待的次数 | +| RPC_COUNT | bigint(20) | NO | 发送的 RPC 个数 | +| PLAN_TYPE | bigint(20) | NO | 执行计划的类型: * local * remote * distribute | +| IS_INNER_SQL | tinyint(4) | NO | 是否为内部 SQL 请求 | +| IS_EXECUTOR_RPC | tinyint(4) | NO | 当前请求是否为 RPC 请求 | +| IS_HIT_PLAN | tinyint(4) | NO | 是否命中 plan_cache | +| REQUEST_TIME | bigint(20) | NO | 开始执行的时间点 | +| ELAPSED_TIME | bigint(20) | NO | 接收到请求到执行结束所消耗的总时间 | +| NET_TIME | bigint(20) | NO | 发送 RPC 到接收到请求的时间 | +| NET_WAIT_TIME | bigint(20) | NO | 接收到请求到进入队列的时间 | +| QUEUE_TIME | bigint(20) | NO | 请求在队列的等待事件 | +| DECODE_TIME | bigint(20) | NO | 出队列后 Decode 的时间 | +| GET_PLAN_TIME | bigint(20) | NO | 开始 Process 到获得计划的时间 | +| EXECUTE_TIME | bigint(20) | NO | 计划执行所消耗的时间 | +| APPLICATION_WAIT_TIME | bigint(20) unsigned | NO | 所有 application 类事件的总时间 | +| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | NO | 所有 concurrency 类事件的总时间 | +| USER_IO_WAIT_TIME | bigint(20) unsigned | NO | 所有 user_io 类事件的总时间 | +| SCHEDULE_TIME | bigint(20) unsigned | NO | 所有 Schedule 类事件的时间 | +| ROW_CACHE_HIT | bigint(20) | NO | 行缓存命中次数 | +| BLOOM_FILTER_CACHE_HIT | bigint(20) | NO | Bloom Filter 缓存命中次数 | +| BLOCK_CACHE_HIT | bigint(20) | NO | 块缓存命中次数 | +| BLOCK_INDEX_CACHE_HIT | bigint(20) | NO | 块索引缓存命中次数 | +| DISK_READS | bigint(20) | NO | 物理读次数 | +| RETRY_CNT | bigint(20) | NO | 重试次数 | +| TABLE_SCAN | tinyint(4) | NO | 判断该请求是否含全表扫描 | +| CONSISTENCY_LEVEL | bigint(20) | NO | 一致性级别 | +| MEMSTORE_READ_ROW_COUNT | bigint(20) | NO | Memstore 中的读行数 | +| SSSTORE_READ_ROW_COUNT | bigint(20) | NO | Ssstore 中连读的行数 | +| REQUEST_MEMORY_USED | bigint(20) | NO | 该请求消耗的内存 | +| EXPECTED_WORKER_COUNT | bigint(20) | NO | 请求期望的工作线程数 | +| USED_WORKER_COUNT | bigint(20) | NO | 请求实际使用的工作线程数 | +| SCHED_INFO | varchar(16384) | NO | 请求的调度信息 | +| FUSE_ROW_CACHE_HIT | bigint(20) | NO | 暂不支持该字段,字段默认为 NUL | +| PS_STMT_ID | bigint(20) | NO | 请求对应的 Prepare ID | +| TRANSACTION_HASH | bigint(20) unsigned | NO | 请求对应的事务的 Hash 值 | +| REQUEST_TYPE | bigint(20) | NO | 请求对应的类型: * 0:表示非法 * 1:表示是一个内部请求 * 2:表示是一个本地请求,例如,Local 计划 * 3:表示远程请求 * 4:表示分布式请求 * 5:表示 SQL 的 prepare 请求 * 6:表示 SQL 得到 execute stmt 请求 | +| IS_BATCHED_MULTI_STMT | tinyint(4) | NO | 是否进行 batch multi stmt 的优化 | +| OB_TRACE_INFO | varchar(4096) | NO | 用户设置的 Trace 信息 | +| PLAN_HASH | bigint(20) unsigned | NO | 执行计划的 Hash 值 | +| LOCK_FOR_READ_TIME | bigint(20) | NO | 读取数据时等待锁的耗时,单位:微秒 | +| WAIT_TRX_MIGRATE_TIME | bigint(20) | NO | 写入数据时,等待事务因为内部合并机制而需要冻结,冻结过程中位完成的事务需要搬迁出来的耗时,单位:微秒 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/6.gv-system_event.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/6.gv-system_event.md new file mode 100644 index 000000000..a6cebca7f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/6.gv-system_event.md @@ -0,0 +1,37 @@ +gv$system_event +==================================== + + + +功能 +----------- + +展示集群所有租户级别的等待事件。 + +相关表/视图 +--------------- + +__all_virtual_system_event + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-------------|----------------|----------------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | 信息所在 Server 的 IP | +| SVR_PORT | bigint(20) | NO | 信息所在 Server 的端口号 | +| EVENT_ID | bigint(20) | NO | 等待事件的 ID | +| EVENT | varchar(64) | NO | 等待事件的描述 | +| WAIT_CLASS_ID | bigint(20) | NO | 等待事件的所属 Class ID | +| WAIT_CLASS# | bigint(20) | NO | 等待事件的所属的 Class下标 | +| WAIT_CLASS | varchar(64) | NO | 等待事件所属的 Class | +| TOTAL_WAITS | bigint(20) | NO | 该等待事件的总等待次数 | +| TOTAL_TIMEOUTS | bigint(20) | NO | 该等待事件的总超时次数 | +| TOTAL_WAITED | double | NO | 该等待事件的总等待时间,单位 10ms | +| AVERAGE_WAIT | double | NO | 该等待事件的平均等待事件,单位 10ms | +| TOTAL_WAITED_MICRO | bigint(20) | NO | 该等待事件的总等待时间(微秒) | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/60.v-obrpc_outgoing.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/60.v-obrpc_outgoing.md new file mode 100644 index 000000000..40a5d4034 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/60.v-obrpc_outgoing.md @@ -0,0 +1,37 @@ +v$obrpc_outgoing +===================================== + + + +功能 +----------- + +统计 OBServer 上不同租户所有不同 rpc packet code 的 RPC 数据发送情况。 + +相关表/视图 +--------------- + +gv$obrpc_outgoing + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|--------------|----------------|-----------------------| +| TENANT_ID | bigint(20) | NO | 租户 | +| IP | varchar(32) | NO | IP 地址 | +| PORT | bigint(20) | NO | 端口号 | +| PCODE | bigint(20) | NO | rpc packet code | +| PCODE_NAME | varchar(256) | NO | rpc packet code 对应的名称 | +| COUNT | bigint(20) | NO | 使用次数 | +| TOTAL_TIME | bigint(20) | NO | 总共花费时间 | +| TOTAL_SIZE | bigint(20) | NO | 总共发送数据量大小 | +| FAILURE | bigint(20) | NO | 发送失败次数 | +| TIMEOUT | bigint(20) | NO | 发送超时次数 | +| SYNC | bigint(20) | NO | 同步等待 RPC 请求个数 | +| ASYNC | bigint(20) | NO | 异步回调 RPC 请求个数 | +| LAST_TIMESTAMP | timestamp(6) | NO | 最后更新统计信息时间 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/61.v-obrpc_incoming.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/61.v-obrpc_incoming.md new file mode 100644 index 000000000..c347810ab --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/61.v-obrpc_incoming.md @@ -0,0 +1,36 @@ +v$obrpc_incoming +===================================== + + + +功能 +----------- + +v$obrpc_incoming 视图用于统计 OBServer 上不同租户所有的不同 RPC Packet Code 的 RPC 数据接收情况。 + +相关表/视图 +--------------- + +gv$obrpc_incoming + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|--------------|----------------|-----------------------| +| TENANT_ID | bigint(20) | NO | 租户 | +| IP | varchar(32) | NO | IP 地址 | +| PORT | bigint(20) | NO | 端口号 | +| PCODE | bigint(20) | NO | RPC Packet Code | +| PCODE_NAME | varchar(256) | NO | RPC Packet Code 对应的名称 | +| COUNT | bigint(20) | NO | 已接收到的该类型的 RPC 请求的个数 | +| TOTAL_SIZE | bigint(20) | NO | 总共接收数据量 | +| NET_TIME | bigint(20) | NO | 网络时间 | +| WAIT_TIME | bigint(20) | NO | 接收时间到请求被放入队列的时间 | +| QUEUE_TIME | bigint(20) | NO | 在队列中等待的时间 | +| PROCESS_TIME | bigint(20) | NO | 实际处理消耗的时间 | +| LAST_TIMESTAMP | timestamp(6) | NO | 上次更新的时间 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/62.v-sql.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/62.v-sql.md new file mode 100644 index 000000000..be4315116 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/62.v-sql.md @@ -0,0 +1,50 @@ +v$sql +========================== + + + +功能 +----------- + +热更新的 SQL 相关统计信息;记录每个 Plan 上统计信息,汇总单个 Plan 多次执行的统计信息;每个 Plan 都会在表中有一行。 + +相关表/视图 +--------------- + +gv$sql + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|---------------------|----------------|------------------------------------------------------------------------------------------------------------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | 服务器的 IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| PLAN_ID | bigint(20) | NO | 执行计划的 ID | +| SQL_ID | varchar(32) | NO | SQL 的标识符 | +| TYPE | bigint(20) | NO | SQL 类型,local remote distribute | +| SQL_TEXT | varchar(4096) | NO | SQL 语句文本 | +| PLAN_HASH_VALUE | bigint(20) | NO | 执行计划的 Hash 值 | +| FIRST_LOAD_TIME | timestamp(6) | NO | 第一次执行时间 | +| LAST_ACTIVE_TIME | timestamp(6) | NO | 上一次执行时间 | +| AVG_EXE_USEC | bigint(20) | NO | 平均执行耗时 | +| SLOWEST_EXE_TIME | timestamp(6) | NO | 最慢执行开始时间点 | +| SLOWEST_EXE_USEC | bigint(20) | NO | 最慢执行消耗时间 | +| SLOW_COUNT | bigint(20) | NO | 慢查询次数统计 | +| HIT_COUNT | bigint(20) | NO | 命中 plan cache 统计 | +| PLAN_SIZE | bigint(20) | NO | 单个 OBServer 上唯一确定 plan_cache 中的一个 plan,它是一个递增的值,由 plan_cache 模块进行管理,每次新加入一个 Plan 到 Plan Cache 中时,都会为其分配一个PLAN_ID | +| EXECUTIONS | bigint(20) | NO | 执行次数 | +| DISK_READS | bigint(20) | NO | 多盘次数 | +| DIRECT_WRITES | bigint(20) | NO | 写盘次数 | +| BUFFER_GETS | bigint(20) | NO | 逻辑读次数 | +| APPLICATION_WAIT_TIME | bigint(20) unsigned | NO | application 类事件等待时间 | +| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | NO | concurrentcy 类事件等待时间 | +| USER_IO_WAIT_TIME | bigint(20) unsigned | NO | 所有 IO 类事件等待时间 | +| ROWS_PROCESSED | bigint(20) | NO | 所有 Schedule 类事件等待事件 | +| ELAPSED_TIME | bigint(20) unsigned | NO | 接收到处理完成总消耗时间 | +| CPU_TIME | bigint(20) unsigned | NO | 消耗的 CPU 时间 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/63.v-sql_monitor.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/63.v-sql_monitor.md new file mode 100644 index 000000000..92efb714b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/63.v-sql_monitor.md @@ -0,0 +1,37 @@ +v$sql_monitor +================================== + + + +功能 +----------- + +慢查询的 Plan 层面的统计,每个慢查询都会有一条统计信息,同时记录该 Plan 的 Trace 信息。 + +相关表/视图 +--------------- + +gv$sql_monitor + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|----------------|----------------|---------------------------------------------------------------------------------------------------------------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| SQL_EXEC_ID | bigint(20) | NO | 唯一确定一个查询语句,他是由查询语句经过快速参数化后得到的字符串的 MD5 值 | +| JOB_ID | bigint(20) | NO | 执行器里面用来区分某个物理执行计划的一个片段。在单台 OBServer 上是全局递增的 | +| TASK_ID | bigint(20) | NO | 分布式执行计划中,用来区分某个 JOB_ID 对应的执行计划片段的一次执行过程。 | +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| SQL_EXEC_START | timestamp(6) | NO | 执行开始时刻 | +| PLAN_ID | bigint(20) | NO | 单个 OBServer 上唯一确定 plan_cache 中的一个 Plan,它是一个递增的值,由 plan_cache 模块进行管理,每次新加入一个 Plan 到 Plan Cache 中的时候,都会为其分配一个 PLAN_ID | +| SCHEDULER_IP | varchar(32) | NO | 调度执行 SQL 的 OBServer 的 IP 地址 | +| SCHEDULER_PORT | bigint(20) | NO | 调度执行 SQL 的 OBServer 的端口号 | +| MONITOR_INFO | varchar(65535) | NO | 相关信息,包括最长等待事件,接收时间等信息 | +| EXTEND_INFO | varchar(65535) | NO | 扩展信息,SQL 执行流程全部 Trace 信息 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/64.v-sql_plan_monitor.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/64.v-sql_plan_monitor.md new file mode 100644 index 000000000..f60f078d0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/64.v-sql_plan_monitor.md @@ -0,0 +1,104 @@ +v$sql_plan_monitor +======================================= + + + +功能 +----------- + +慢查询的 Operation 层面的统计,每个 Operation 会有一条统计信息。 + +相关表/视图 +--------------- + +gv$sql_plan_monitor + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------|--------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| KEY | null | NO | 外键,用于和 SQL_MONITOR 相关虚拟表做连接查询 | +| STATUS | null | NO | 算子执行状态: * EXECUTING:执行中 * DONE(ERROR):执行出错 * DONE(FIRST N ROWS):执行成功 * DONE(ALL ROWS):执行成功 * DONE: 执行中断 | +| SVR_IP | varchar(32) | NO | 算子所在机器的 IP | +| SVR_PORT | bigint(20) | NO | 算子所在机器的端口号 | +| TRACE_ID | varchar(64) | NO | 算子的 Trace ID | +| FIRST_REFRESH_TIME | timestamp(6) | NO | 算子开始监控时间 | +| LAST_REFRESH_TIME | timestamp(6) | NO | 算子结束监控时间 | +| FIRST_CHANGE_TIME | timestamp(6) | NO | 算子吐出首行数据时间 | +| LAST_CHANGE_TIME | timestamp(6) | NO | 算子吐出最后一行数据时间 | +| REFRESH_COUNT | null | NO | 统计数据刷新次数 | +| SID | null | NO | Session 的 ID | +| PROCESS_NAME | bigint(20) | NO | 执行线程 ID | +| SQL_ID | null | NO | SQL ID | +| SQL_EXEC_START | null | NO | SQL 执行开始时间 | +| SQL_EXEC_ID | null | NO | SQL 执行 ID | +| SQL_PLAN_HASH_VALUE | null | NO | SQL 计划的 Hash 值 | +| SQL_CHILD_ADDRESS | null | NO | 默认为 NULL | +| PLAN_PARENT_ID | null | NO | 默认为 NULL | +| PLAN_LINE_ID | bigint(20) | NO | 默认为 NULL | +| PLAN_OPERATION | varchar(128) | NO | 执行计划中对应 Operator | +| PLAN_OPTIONS | null | NO | 默认为 NULL | +| PLAN_OBJECT_OWNER | null | NO | 默认为 NULL | +| PLAN_OBJECT_NAME | null | NO | 默认为 NULL | +| PLAN_OBJECT_TYPE | null | NO | 默认为 NULL | +| PLAN_DEPTH | bigint(20) | NO | 算子在计划树中的深度 | +| PLAN_POSITION | null | NO | 算子是父节点的第几个孩子 | +| PLAN_COST | null | NO | 优化器计算出的算子代价 | +| PLAN_CARDINALITY | null | NO | 优化器计算出的算子输出数据行数 | +| PLAN_BYTES | null | NO | 优化器估算出的算子输出数据字节数 | +| PLAN_TIME | null | NO | 优化器计算出的算子执行时间 | +| PLAN_PARTITION_START | null | NO | 默认为 NULL | +| PLAN_PARTITION_STOP | null | NO | 默认为 NULL | +| PLAN_CPU_COST | null | NO | 优化器估算出的算子 CPU 代价 | +| PLAN_IO_COST | null | NO | 优化器估算出的算子 IO 代价 | +| PLAN_TEMP_SPACE | null | NO | 优化器估算出的算子空间占用大小 | +| STARTS | bigint(20) | NO | 算子被 rescan 的次数 | +| OUTPUT_ROWS | bigint(20) | NO | 算子输出的总行数(所有本算子的执行实例行数累加值) | +| IO_INTERCONNECT_BYTES | null | NO | 算子与储存层之间交换的数据字节数 | +| PHYSICAL_READ_REQUESTS | null | NO | 算子发出的 I/O 读请求次数 | +| PHYSICAL_READ_BYTES | null | NO | 算子发出的 I/O 读请求字节数 | +| PHYSICAL_WRITE_REQUESTS | null | NO | 算子发出的 I/O 写请求次数 | +| PHYSICAL_WRITE_BYTES | null | NO | 算子发出的 I/O 写请求字节数 | +| WORKAREA_MEM | null | NO | 算子占用的 workarea 内存量 | +| WORKAREA_MAX_MEM | null | NO | 算子可占用的 workarea 内存上限 | +| WORKAREA_TEMPSEG | null | NO | 算子占用的磁盘 Dump 空间 | +| WORKAREA_MAX_TEMPSEG | null | NO | 算子可占用的最大磁盘 Dump 空间 | +| OTHERSTAT_GROUP_ID | null | NO | 默认为 NULL | +| OTHERSTAT_1_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_1_TYPE | null | NO | 预留字段 | +| OTHERSTAT_1_VALUE | bigint(20) | NO | 预留字段 | +| OTHERSTAT_2_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_2_TYPE | null | NO | 预留字段 | +| OTHERSTAT_2_VALUE | bigint(20) | NO | 预留字段 | +| OTHERSTAT_3_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_3_TYPE | null | NO | 预留字段 | +| OTHERSTAT_3_VALUE | bigint(20) | NO | 预留字段 | +| OTHERSTAT_4_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_4_TYPE | null | NO | 预留字段 | +| OTHERSTAT_4_VALUE | bigint(20) | NO | 预留字段 | +| OTHERSTAT_5_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_5_TYPE | null | NO | 预留字段 | +| OTHERSTAT_5_VALUE | bigint(20) | NO | 预留字段 | +| OTHERSTAT_6_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_6_TYPE | null | NO | 预留字段 | +| OTHERSTAT_6_VALUE | bigint(20) | NO | 预留字段 | +| OTHERSTAT_7_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_7_TYPE | null | NO | 预留字段 | +| OTHERSTAT_7_VALUE | bigint(20) | NO | 预留字段 | +| OTHERSTAT_8_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_8_TYPE | null | NO | 预留字段 | +| OTHERSTAT_8_VALUE | bigint(20) | NO | 预留字段 | +| OTHERSTAT_9_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_9_TYPE | null | NO | 预留字段 | +| OTHERSTAT_9_VALUE | bigint(20) | NO | 预留字段 | +| OTHERSTAT_10_ID | bigint(20) | NO | 预留字段 | +| OTHERSTAT_10_TYPE | null | NO | 预留字段 | +| OTHERSTAT_10_VALUE | bigint(20) | NO | 预留字段 | +| OTHER_XML | null | NO | 其它无法写入预留项中,但需要提供给外部使用的结构化数据。由外部工具负责解析 | +| PLAN_OPERATION_INACTIVE | null | NO | 默认为 NULL | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/65.v-sql_plan_statistics.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/65.v-sql_plan_statistics.md new file mode 100644 index 000000000..c583d853f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/65.v-sql_plan_statistics.md @@ -0,0 +1,40 @@ +v$sql_plan_statistics +========================================== + + + +功能 +----------- + +展示当前 OBServer 的物理执行计划统计信息。 + +相关表/视图 +--------------- + +gv$sql_plan_statistics + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|----------------|----------------|---------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口地址 | +| PLAN_ID | bigint(20) | NO | 物理计划 ID | +| OPERATION_ID | bigint(20) | NO | 物理算子 ID | +| EXECUTIONS | bigint(20) | NO | 累计执行次数 | +| OUTPUT_ROWS | bigint(20) | NO | 累计算子输出行数 | +| INPUT_ROWS | bigint(20) | NO | 累计算子输入行数 | +| RESCAN_TIMES | bigint(20) | NO | 累计 Rescan 的次数 | +| BUFFER_GETS | bigint(20) | NO | Buffer 命中次数 | +| DISK_READS | bigint(20) | NO | 累计物理度盘次数 | +| DISK_WRITES | bigint(20) | NO | 累计物理写盘次数 | +| ELAPSED_TIME | bigint(20) | NO | 累计算子消耗时间 | +| EXTEND_INFO1 | varchar(65535) | NO | 暂未使用 | +| EXTEND_INFO2 | varchar(65535) | NO | 暂未使用 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/66.v-unit.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/66.v-unit.md new file mode 100644 index 000000000..f29ef2364 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/66.v-unit.md @@ -0,0 +1,44 @@ +v$unit +=========================== + + + +功能 +----------- + +展示当前机器 Unit 的 Meta 信息。 + +相关表/视图 +--------------- + +gv$unit + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|--------------|----------------|---------------------------| +| unit_id | bigint(20) | NO | 单元 ID | +| unit_config_id | bigint(20) | NO | 单元规格 ID | +| unit_config_name | varchar(128) | NO | 单元规格名 | +| resource_pool_id | bigint(20) | NO | 资源池 ID | +| resource_pool_name | varchar(128) | NO | 资源池名 | +| zone | varchar(128) | NO | 所属 Zone | +| tenant_id | bigint(20) | NO | 租户 ID | +| tenant_name | varchar(128) | NO | 租户名称 | +| svr_ip | varchar(32) | NO | IP 地址 | +| svr_port | bigint(20) | NO | 端口 | +| migrate_from_svr_ip | varchar(32) | NO | Unit 的迁移来源 Server 的 IP 地址 | +| migrate_from_svr_port | bigint(20) | NO | Unit 的迁移来源 Server 的端口 | +| max_cpu | double | NO | 最大虚拟 CPU 个数 | +| min_cpu | double | NO | 最小虚拟 CPU 个数 | +| max_memory | bigint(20) | NO | 最大内存使用量 | +| min_memory | bigint(20) | NO | 最小内存使用量 | +| max_iops | bigint(20) | NO | 最大 IOPS | +| min_iops | bigint(20) | NO | 最小 IOPS | +| max_disk_size | bigint(20) | NO | 最大磁盘使用量 | +| max_session_num | bigint(20) | NO | 最大 Session 个数 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/67.v-partition.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/67.v-partition.md new file mode 100644 index 000000000..589ffe33e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/67.v-partition.md @@ -0,0 +1,50 @@ +v$partition +================================ + + + +功能 +----------- + +当前机器 Partition 的 Meta 信息。 + +相关表/视图 +--------------- + +gv$partition + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| table_id | bigint(20) | NO | 表 ID | +| tablegroup_id | bigint(20) | NO | 表组 ID | +| partition_id | bigint(20) | NO | 分区 ID | +| svr_ip | varchar(32) | NO | OBServer IP 地址 | +| svr_port | bigint(20) | NO | OBServer 端口 | +| sql_port | bigint(20) | NO | OBServer SQL 端口 | +| unit_id | bigint(20) | NO | 单元 ID | +| partition_cnt | bigint(20) | NO | 分区个数,该值已不再使用,无意义 | +| zone | varchar(128) | NO | 副本所在 Zone | +| role | bigint(20) | NO | 副本角色 * 1:leader * 2:follower | +| member_list | varchar(3520) | NO | Paxos Group 中的成员列表 | +| row_count | bigint(20) | NO | 行数 | +| data_size | bigint(20) | NO | 数据大小 | +| data_version | bigint(20) | NO | 数据版本号 | +| partition_checksum | bigint(20) | NO | 分区校验码 | +| data_checksum | bigint(20) | NO | 数据校验码 | +| row_checksum | bigint(20) | NO | 行校验码 | +| column_checksum | varchar(8192) | NO | 列校验码 | +| rebuild | bigint(20) | NO | 是否处于 Rebuild 状态 | +| replica_type | bigint(20) | NO | 副本类型 | +| required_size | bigint(20) | NO | 迁移需要的 Size | +| status | varchar(64) | NO | 副本状态 | +| is_restore | bigint(20) | NO | 区分是否为正在逻辑/物理恢复的副本 | +| quorum | bigint(20) | NO | 仅 `role=1`的行的该值有效,表示 Paxos 组应有的成员数,用于计算多数派。 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/68.v-lock_wait_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/68.v-lock_wait_stat.md new file mode 100644 index 000000000..599708946 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/68.v-lock_wait_stat.md @@ -0,0 +1,38 @@ +v$lock_wait_stat +===================================== + + + +功能 +----------- + +当前 OBServer 上行锁的状态。 + +相关表/视图 +--------------- + +gv$lock_wait_stat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|--------------|----------------|--------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TABLE_ID | bigint(20) | NO | 表 ID | +| TABLE_NAME | varchar(256) | NO | 表名 | +| ROWKEY | varchar(512) | NO | 主键 | +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| SESSION_ID | bigint(20) | NO | 会话 ID | +| NEED_WAIT | tinyint(4) | NO | 是否需要等锁 | +| RECV_TS | bigint(20) | NO | 收到请求时间戳 | +| LOCK_TS | bigint(20) | NO | 最近一次上锁的时间戳 | +| ABS_TIMEOUT | bigint(20) | NO | 请求超时时刻 | +| TRY_LOCK_TIMES | bigint(20) | NO | 尝试上锁的次数 | +| TIME_AFTER_RECV | bigint(20) | NO | 收到请求到当前的时间间隔 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/69.v-session_longops.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/69.v-session_longops.md new file mode 100644 index 000000000..b76eb0fa6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/69.v-session_longops.md @@ -0,0 +1,34 @@ +v$session_longops +====================================== + + + +功能 +----------- + +展示当前 OBServer 上索引构建的进度。 + +相关表/视图 +--------------- + +gv$session_longops + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|---------------|----------------|-----------| +| SID | bigint(20) | NO | 会话 ID | +| OPNAME | varchar(128) | NO | 操作名称 | +| TARGET | varchar(128) | NO | 操作对象 | +| SVR_IP | varchar(32) | NO | 操作所在机器 IP | +| SVR_PORT | bigint(20) | NO | 操作所在机器端口号 | +| START_TIME | bigint(20) | NO | 开始时间 | +| ELAPSED_SECONDS | decimal(24,4) | NO | 已经消耗时间 | +| TIME_REMAINING | bigint(20) | NO | 预估剩余需要时间 | +| LAST_UPDATE_TIME | bigint(20) | NO | 统计信息更新时间 | +| MESSAGE | varchar(500) | NO | 备注信息 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/7.gv-sesstat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/7.gv-sesstat.md new file mode 100644 index 000000000..dfa881c6f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/7.gv-sesstat.md @@ -0,0 +1,31 @@ +gv$sesstat +=============================== + + + +功能 +----------- + +所有 OBServer 的 Session 级别的统计事件信息。 + +相关表/视图 +--------------- + +__all_virtual_sesstat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|-------------|----------------|------------------| +| SID | bigint(20) | NO | Session的 ID | +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | 信息所在 Server 的 IP | +| SVR_PORT | bigint(20) | NO | 信息所在 Server 的端口号 | +| STATISTICS# | bigint(20) | NO | 统计事件的下标 | +| VALUE | bigint(20) | NO | 统计事件发生的次数 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/70.v-latch.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/70.v-latch.md new file mode 100644 index 000000000..8d35fd7a1 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/70.v-latch.md @@ -0,0 +1,39 @@ +v$latch +============================ + + + +功能 +----------- + +集群中所有 OBServer 的 latch 信息视图。 + +相关表/视图 +--------------- + +oceanbase.__all_virtual_latch + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|--------------|----------------|--------------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| ADDR | varchar(256) | NO | 目前为 NULL | +| LATCH# | bigint(20) | NO | Latch 所属 Class 的下标 | +| LEVEL# | bigint(20) | NO | Latch 所属 Level 的下标 | +| NAME | varchar(256) | NO | Latch 的名称 | +| HASH | bigint(20) | NO | 该值目前为 0 | +| GETS | bigint(20) | NO | Lock 成功次数 | +| MISSES | bigint(20) | NO | Lock 进入等待的次数 | +| SLEEPS | bigint(20) | NO | 总共 yield 的次数 | +| IMMEDIATE_GETS | bigint(20) | NO | try_lock 成功次数 | +| IMMEDIATE_MISSES | bigint(20) | NO | try_lock 失败次数 | +| SPIN_GETS | bigint(20) | NO | 总共 Spin 次数 | +| WAIT_TIME | bigint(20) | NO | 等待的 Sleep 时间 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/71.v-tenant_memstore_allocator_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/71.v-tenant_memstore_allocator_info.md new file mode 100644 index 000000000..052ca0e2a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/71.v-tenant_memstore_allocator_info.md @@ -0,0 +1,30 @@ +v$tenant_memstore_allocator_info +===================================================== + + + +功能 +----------- + +该视图展示了所连接 OBServer 上的 Memtable 的若干信息,主要用于排查租户 Memstore 内存长时间未释放的问题。每行记录对应单个 Memtable 的信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|-------------|----------------|------------------------------------------| +| SVR_IP | varchar(32) | NO | OBServer 的 IP 地址 | +| SVR_PORT | bigint(20) | NO | OBServer 的端口 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TABLE_ID | bigint(20) | NO | 表 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| MT_BASE_VERSION | bigint(20) | NO | 该 Memtable 对应的起始事务版本 | +| RETIRE_CLOCK | bigint(20) | NO | 该 Memtable 所属的租户当前 Memstore已分配内存总量 | +| MT_IS_FROZEN | bigint(20) | NO | 该 Memtable 是否已经冻结 | +| MT_PROTECTION_CLOCK | bigint(20) | NO | 该 Memtable 第一次分配内存时,所属租户 Memstore 已分配内存量 | +| MT_SNAPSHOT_VERSION | bigint(20) | NO | 该 Memtable 的快照版本 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/72.v-tenant_px_worker_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/72.v-tenant_px_worker_stat.md new file mode 100644 index 000000000..32af42f95 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/72.v-tenant_px_worker_stat.md @@ -0,0 +1,32 @@ +v$tenant_px_worker_stat +============================================ + + + +功能 +----------- + +在并行执行场景中,查看每个线程的执行信息。 + +与 gv$tenant_px_worker_stat 相比,该视图仅能看到当前租户本机的线程。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|--------------|----------------|--------------| +| session_id | bigint(20) | NO | Session ID | +| tenant_id | bigint(20) | NO | 租户 ID | +| svr_ip | varchar(32) | NO | 机器 IP | +| svr_port | bigint(20) | NO | 机器端口号 | +| trace_id | varchar(128) | NO | Trace ID | +| qc_id | bigint(20) | NO | px 中的 qc_id | +| sqc_id | bigint(20) | NO | px 中的 sqc_id | +| worker_id | bigint(20) | NO | 线程 ID | +| dfo_id | bigint(20) | NO | px 中的 dfo_id | +| start_time | timestamp(6) | NO | 线程开始运行的时间 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/73.v-partition_audit.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/73.v-partition_audit.md new file mode 100644 index 000000000..d98853017 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/73.v-partition_audit.md @@ -0,0 +1,45 @@ +v$partition_audit +====================================== + + + +功能 +----------- + +提供分区级别的统计信息,用于分区的性能统计。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|-------------|----------------|-----------------| +| svr_ip | varchar(32) | NO | 机器的 IP | +| svr_port | bigint(20) | NO | 机器的端口号 | +| tenant_id | bigint(20) | NO | 租户 ID | +| table_id | bigint(20) | NO | 表 ID | +| partition_id | bigint(20) | NO | 分区 ID | +| partition_status | bigint(20) | NO | 分区状态 | +| base_row_count | bigint(20) | NO | 基线数据行数,暂不可用 | +| insert_row_count | bigint(20) | NO | 插入行的数量 | +| delete_row_count | bigint(20) | NO | 删除行的数量 | +| update_row_count | bigint(20) | NO | 更新行的数量 | +| query_row_count | bigint(20) | NO | 查询行的数量,暂不可用 | +| insert_sql_count | bigint(20) | NO | 插入语句的数量 | +| delete_sql_count | bigint(20) | NO | 删除语句的数量 | +| update_sql_count | bigint(20) | NO | 更新语句的数量 | +| query_sql_count | bigint(20) | NO | 查询语句的数量,暂不可用 | +| trans_count | bigint(20) | NO | 事务数量 | +| sql_count | bigint(20) | NO | 所有语句的数量 | +| rollback_insert_row_count | bigint(20) | NO | 回滚的插入行的数量,暂不可用 | +| rollback_delete_row_count | bigint(20) | NO | 回滚的删除行的数量,暂不可用 | +| rollback_update_row_count | bigint(20) | NO | 回滚的更新行的数量,暂不可用 | +| rollback_insert_sql_count | bigint(20) | NO | 回滚的插入语句的数量,暂不可用 | +| rollback_delete_sql_count | bigint(20) | NO | 回滚的删除语句的数量,暂不可用 | +| rollback_update_sql_count | bigint(20) | NO | 回滚的更新语句的数量,暂不可用 | +| rollback_trans_count | bigint(20) | NO | 回滚的事务数量,暂不可用 | +| rollback_sql_count | bigint(20) | NO | 回滚的所有语句的数量,暂不可用 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/74.v-ob_cluster.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/74.v-ob_cluster.md new file mode 100644 index 000000000..560553063 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/74.v-ob_cluster.md @@ -0,0 +1,34 @@ +v$ob_cluster +================================= + + + +功能 +----------- + +v$ob_cluster 用于展示当前集群的基本信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| cluster_id | bigint(20) | NO | 集群唯一 ID。 | +| cluster_name | varchar(4096) | NO | 集群名。 | +| created | timestamp(6) | NO | 集群创建时间。 | +| cluster_role | varchar(4096) | NO | 集群角色: * PRIMARY:表示主集群 * PHYSICAL STANDBY:表示备集群 | +| cluster_status | varchar(4096) | NO | 当前集群状态: * VALID:表示有效状态 * DISABLED:表示禁止同步数据状态 默认是`VALID`状态,用户可以在主库上禁止某一个备集群同步。在 Failover 过程中,新主集群会自动设置其他备集群库为`DISABLED`状态,默认禁止其他备集群与新主集群同步数。 | +| switchover# | bigint(20) | NO | 一次 Switchover 或 Failover 操作的唯一标识。 | +| switchover_status | varchar(4096) | NO | Switchover 状态: * NOT ALLOWED: * 主集群上显示`NOT ALLOWED`表示当前集群不能 Switchover 成备集群。 * 备集群上显示`NOT ALLOWED`表示当前集群不能 Switchover 成主集群。 * TO PRIMARY:只在备集群上显示,表示当前集群可以切换成主集群。 * TO STANDBY:只在主集群上显示,表示当前集群可以切换成备集群。 * SWITCHOVER SWITCHING:主集群 Switchover 成备集群的中间状态。处于该状态的集群不能提供写服务,内部停写日志。 * FAILOVER FLASHBACK:备集群 Failover 成主集群的中间状态,集群正在回滚数据到一致状态。处于该状态的集群不能提供写服务,用户可以持续重试 Failover 命令,直到成功 Failover 成主集群。 * FAILOVER CLEANUP:备集群Failover 成主集群的中间状态,集群正在做最后的清理工作,包括清理无效的 Freeze info、删除无效的 Schema 等。处于该状态的集群提供写服务,但是不能执行 DDL 操作。 | +| switchover_info | varchar(4096) | NO | 展示 Switchover 相关信息,SWITCHOVER_STATUS 的详细说明如下: * NOT ALLOWED:表示为何不允许切换。 * TO STANDBY:表示有哪些备集群可以切为主集群。 * 其他状态时,该列值为空。 具体取值示例: * `CHECK PRIMARY CLUSTER SERVER STATUS`:表示需要校验主集群的 Server 状态,可能存在 Server 不在线的情况。 * `CHECK STADNBY CLUSTER SERVER STATUS`:表示需要校验备集群的 Server 状态,可能存在 Server 不在线的情况。 * `CHECK PRIMARY CLUSTER REBALANCE TASK STATUS`:表示需要校验主集群的负载均衡任务是否完成。 * `CHECK STANDBY CLUSTER REBALANCE TASK STATUS`:表示需要校验备集群的负载均衡任务是否完成。 * `CHECK MERGE STATUS`:表示检查合并状态是否出现 ERROR。 * `NONE SYNCED STANDBY CLUSTER`:没有同步的备集群存在,主集群不能切换为备集群。 * `SYNCED STANDBY CLUSTERS: cluster1, cluster2` :表示处于同步状态的备集群列表。 * `CHECK SYS SCHEMA SYNC STATUS` :表示需要校验备集群中系统租户的 Schema 是否同步完成。 * `CHECK USER SCHEMA SYNC STATUS`:表示需要校验备集群中普通租户的 Schema 是否同步完成。 * `CHECK FREEZE INFO SYNC STATUS`:表示需要校验备集群冻结信息是否同步完成。 * `CHECK ENOUG REPLICA`:表示需要检查备集群的副本个数是否齐全。 * `CHECK REDO LOG SYNC STATUS`:表示需要校验备集群的 REDO 日志是否同步完成。 * `CAN NOT ACCESS CLUSTERS: cluster1, cluster2`:表示某些集群不能访问,需要校验这些备集群的状态。 * `NO CLUSTER IN SWITCHING`:表示没有集群处于`SWITCHING`状态,不能执行`switchover to primary`。该信息是备集群处于`NOT ALLOW`状态时可能展示的信息。 * `INNER ERROR`:表示发生内部错误,需要查看集群日志排查问题,日志关键字为`SWITCHOVER_STATUS`。 * `PRIMARY CLUSTER NOT IN SYNC MODE`:最大保护和最大可用模式下,要求主集群的日志传输参数配置为强同步(`SYNC`)模式,同时,执行 Switchover 后,保护模式不变,并且原主集群变为强同步的备集群。用户可以在主集群上修改自己的日志传输参数为`SYNC`来解决该问题。 * `STANDBY CLUSTER NOT IN SYNC MODE`:最大保护和最大可用模式下,只能选择强同步(`SYNC`)模式的备集群切换为主集群。当备集群没有配置为`SYNC`模式,不允许切换为主集群。 * `PRIMARY CLUSTER HAS REPLICA IN RESTORE` :表示当前主集群有部分副本没有创建完成,不允许执行角色切换。需要用户主动删除这部分副本之后才能继续进行角色切换。 * `STANDBY CLUSTER HAS REPLICA IN RESTORE`:表示当前备集群有部分副本没有创建完成,不允许执行角色切换。需要等副本创建完成才能继续进行角色切换。 * `PRIMARY CLUSTER DOING BACKUP`:表示主集群正在执行备份,不允许执行角色切换,因为切换为备集群后不再支持备份,要求用户先停止备份任务。 * `CHECK OTHER PRIMARY CLUSTE`:表示存在其他主集群,不允许执行角色切换,防止集群出现双主 | +| current_scn | bigint(20) | NO | 当前集群连续已回放的最大快照版本 | +| standby_became_primary_scn | bigint(20) | NO | 备集群强制切换为主集群的快照版本 **注意** 执行 Switchover 不会影响该值,该值在所有正常接入的主集群和备集群上均可查询到,并且主备集群保持一致。 | +| primary_cluster_id | bigint(20) | YES | * 对于备集群,该字段表示它认为的主集群的唯一 ID;如果没有主集群,则该值为 NULL * 对于主集群,该字段为 NULL **注意** 此处与 Oracle 数据库不兼容,Oracle 数据库中,如果主集群之前曾经是备集群,则该字段为上一个主集群的信息;如果主集群没有成为过备集群,则该字段为 NULL。 | +| protection_mode | varchar(4096) | NO | 保护模式: * MAXIMUM PROTECTION:最大保护模式 * MAXIMUM AVAILABILITY:最大可用模式 * MAXIMUM PERFORMANCE:最大性能模式 | +| protection_level | varchar(4096) | NO | 当前集群的保护级别: * MAXIMUM PROTECTION:最大保护级别 * MAXIMUM AVAILABILITY:最大可用级别 * RESYNCHRONIZATION:追赶数据级别 * MAXIMUM PERFORMANCE:最大性能级别 | +| redo_transport_options | varchar(4096) | NO | 当前集群接收日志的传输模式,支持的参数如下: * SYNC/ASYNC * NET_TIMEOUT | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/75.v-ob_standby_status.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/75.v-ob_standby_status.md new file mode 100644 index 000000000..33a856c38 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/75.v-ob_standby_status.md @@ -0,0 +1,28 @@ +v$ob_standby_status +======================================== + + + +功能 +----------- + +如果是主集群,则 v$ob_standby_status 显示所有备集群的状态和配置信息;如果是备信息,则显示为空。 + +字段说明 +------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|---------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| cluster_id | bigint(20) | NO | 集群唯一 ID | +| cluster_name | varchar(4096) | NO | 集群名 | +| cluster_role | varchar(4096) | NO | 集群角色: * PRIMARY:表示主集群 * PHYSICAL STANDBY:表示备集群 | +| cluster_status | varchar(4096) | NO | 当前集群状态: * VALID:表示有效状态 * DISABLED :表示禁止同步数据状态 | +| current_scn | bigint(20) | NO | 当前集群连续已回放的最大快照版本 | +| rootservice_list | varchar(4096) | NO | 本集群 RootServer 列表 | +| redo_transport_options | varchar(4096) | NO | 当前备库的日志传输模式,支持的参数包括: * SYNC * ASYNC * NET_TIMEOUT | +| protection_level | varchar(4096) | NO | 当前集群的保护级别: * MAXIMUM PROTECTION :最大保护级别 * MAXIMUM AVAILABILITY: 最大可用级别 * RESYNCHRONIZATION:追赶数据级别 * MAXIMUM PERFORMANCE:最大性能级别 | +| synchronization_status | varchar(4096) | NO | 当前备集群的同步状态以及不同步的原因,支持的取值如下: * OK:表示与主集群保持同步 * NOT AVAILABLE:表示不能确定同步状态 * CLUSTER VERSION NOT MATCH:表示与主集群的版本不匹配 * SYS SCHEMA NOT SYNC:表示系统租户的 Schema 不同步 * PARTITION LOG NOT SYNC:表示部分分区日志的同步落后 * REPLICA NOT ENOUGH:表示部分分区没有足够的副本数量,达不到多数派要求 * FAILOVER INFO NOT LATEST:表示 FAILOVER INFO 不同步 * ALL CLUSTER INFO NOT SYNC:表示集群信息不同步 * REPLICA IN RESTORE:表示有刚刚创建、正在恢复状态的副本 * CHECK USER SCHEMA SYNC STATUS:表示普通租户的 Schma 数据不同步 * CHECK FREEZE INFO SYNC STATUS:表示冻结信息不同步 * CHECK MERGE STATUS:表示每日合并状态出错 * CHECK ALL SCHEMA EFFECTIVE:表示备集群同步到的 Schema 没有全部生效 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/76.v-ob_cluster_stats.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/76.v-ob_cluster_stats.md new file mode 100644 index 000000000..bfe695994 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/76.v-ob_cluster_stats.md @@ -0,0 +1,25 @@ +v$ob_cluster_stats +======================================= + + + +功能 +----------- + +展示本集群所有租户的统计项。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|------------|----------------|--------------------| +| tenant_id | bigint(20) | NO | 租户名 | +| refreshed_schema_version | bigint(20) | NO | 本地刷新的最大的 Schema 版本 | +| ddl_lag | bigint(20) | NO | 本地待回放的 DDL 语句数 | +| min_sys_table_scn | bigint(20) | NO | 系统表最小的快照点 | +| min_user_table_scn | bigint(20) | NO | 用户表最小的快照点 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/77.v-ob_cluster_event_history.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/77.v-ob_cluster_event_history.md new file mode 100644 index 000000000..13c69203b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/77.v-ob_cluster_event_history.md @@ -0,0 +1,24 @@ +v$ob_cluster_event_history +=============================================== + + + +功能 +----------- + +v$ob_cluster_event_history 用于显示本集群主备库相关的事件历史,用于跟踪主备库运维、切换流程详细信息,报错日志等,方便诊断问题。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|--------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| facility | varchar(64) | NO | 产生事件的模块名: * add cluster :添加集群 * remove cluster :删除集群 * enable cluster synchronization :开启集群同步 * disable cluster synchronization:禁止集群同步 * switchover to physical standby:无损切换到备集群角色 * switchover to primary:无损切换到主集群角色 * failover to primary:有损切换到主集群角色 * convert to physical standby:转换成备集群角色 * set cluster protection mode:设置保护模式 * update protection level in maximum availability mode:最大可用模式下,保护级别的变化 * update sync standby protection level:备集群从`RESYNCHRONIZATION`级别进入`MAXIMIZE AVAILABLE`或者`MAXIMIZE PROTECTION`事件 * amend primary protection level:当主集群的保护级别和保护模式不匹配时,需要推进保护级别或者回滚保护模式 * amend standby protection level:当备集群的保护级别和主集群的保护模式不匹配时,需要调整备集群的保护级别 | +| severity | varchar(256) | YES | 事件的级别: * CONTROL:预期内的状态变更事件,例如,一个操作的开始或者完成,包括 Switchover、Failover、Add cluster、Remove cluster 等。 * INFO:普通消息事件 * WARN:警告消息事件 * ERROR:错误消息事件 | +| error_code | varchar(256) | YES | 错误码,`0 `表示正常 | +| timestamp | timestamp(6) | NO | 日期 | +| message | varchar(256) | YES | 消息内容 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/78.v-ps_stat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/78.v-ps_stat.md new file mode 100644 index 000000000..e5c535d61 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/78.v-ps_stat.md @@ -0,0 +1,26 @@ +v$ps_stat +============================== + + + +功能 +----------- + +监控 PS Cache 的整体状态,包括命中率、内存占用、缓存的 item 数目。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|-------------|----------------|---------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| svr_ip | varchar(32) | NO | 机器 IP | +| svr_port | bigint(20) | NO | 机器端口号 | +| stmt_count | bigint(20) | NO | PS Cache 中目前缓存了多少语句 | +| hit_count | bigint(20) | NO | PS Cache 总的命中次数 | +| access_count | bigint(20) | NO | 访问 PS Cache 的总次数 | +| mem_hold | bigint(20) | NO | PS Cache 占用了多少内存 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/79.v-ps_item_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/79.v-ps_item_info.md new file mode 100644 index 000000000..4a0290312 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/79.v-ps_item_info.md @@ -0,0 +1,32 @@ +v$ps_item_info +=================================== + + + +功能 +----------- + +用于给 prepared statement 提供监控功能,包含 PS Cache 中所有 prepare statement 的基本信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|----------------|----------------|----------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| svr_ip | varchar(32) | NO | 机器 IP | +| svr_port | bigint(20) | NO | 机器端口号 | +| stmt_id | bigint(20) | NO | PS Cache 中对应语句的 stmt_id 信息 | +| db_id | bigint(20) | NO | prepare 语句涉及到的数据库 ID | +| ps_sql | varchar(65536) | NO | prepare 的 SQL 信息 | +| param_count | bigint(20) | NO | prepare 的参数个数信息 | +| stmt_item_ref_count | bigint(20) | NO | stmt_item 的引用计数信息 | +| stmt_info_ref_count | bigint(20) | NO | stmt_info 的引用计数信息 | +| mem_hold | bigint(20) | NO | 该 prepare stmt 占用的内存大小 | +| stmt_type | bigint(20) | NO | 该 prepare stmt 的类型信息 | +| checksum | bigint(20) | NO | 该 prepare stmt 的 checksum | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/8.gv-sysstat.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/8.gv-sysstat.md new file mode 100644 index 000000000..34883ff86 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/8.gv-sysstat.md @@ -0,0 +1,32 @@ +gv$sysstat +=============================== + + + +功能 +----------- + +展示所有 OBServer 的租户级别的统计事件信息。 + +相关表/视图 +--------------- + +__all_virtual_sysstat + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|-------------|----------------|------------------| +| CON_ID | bigint(20) | NO | 租户 ID | +| SVR_IP | varchar(32) | NO | 信息所在 Server 的 IP | +| SVR_PORT | bigint(20) | NO | 信息所在 Server 的端口号 | +| STATISTIC# | bigint(20) | NO | 统计事件的下标 | +| VALUE | bigint(20) | NO | 统计事件对应的结果数值 | +| STAT_ID | bigint(20) | NO | 统计事件的 ID | +| NAME | varchar(64) | NO | 统计事件的名称 | +| CLASS | bigint(20) | NO | 统计事件所属的类型 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/80.v-sql_workarea.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/80.v-sql_workarea.md new file mode 100644 index 000000000..b67acc6c1 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/80.v-sql_workarea.md @@ -0,0 +1,41 @@ +v$sql_workarea +=================================== + + + +功能 +----------- + +之前受 SQL 自动内存管理负责执行的所有 Operator 的 workarea 统计信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------| +| address | varbinary(8) | NO | SQL 对应的 Handle 地址,目前未指定值 | +| hash_value | bigint(0) | NO | 语句的 Hash value 的值 | +| sql_id | varchar(32) | NO | SQL 语句的 SQL 唯一标示 | +| child_number | bigint(0) | NO | 该 cursor 的数量 | +| workarea_address | varbinary(8) | NO | workarea 地址 | +| operation_type | varchar(40) | NO | workarea 操作符类型,例如 Sort、Hash Join、Group by等 | +| operation_id | bigint(20) | NO | 计划树中识别操作符的唯一标示 | +| policy | varchar(10) | NO | workarea 的策略: * MANUAL * AUTO | +| estimated_optimal_size | bigint(20) | NO | 在最优情况下执行操作符的估算内存大小,单位:bytes | +| estimated_onepass_size | bigint(20) | NO | 在 Onepass 场景下,执行操作符估算内存大小(bytes) | +| last_memory_used | bigint(20) | NO | 游标在上次执行使用的内存大小,单位:bytes | +| last_execution | varchar(10) | NO | 上次执行时 workarea 选择的是 optimal、one pass 还是 multi passes | +| last_degree | bigint(20) | NO | 上次执行并行度 | +| total_executions | bigint(20) | NO | 总共执行使用 workarea 的次数 | +| optimal_executions | bigint(20) | NO | 最优场景下执行的次数 | +| onepass_executions | bigint(20) | NO | one pass 场景执行的次数 | +| multipasses_executions | bigint(20) | NO | multi passes 场景执行的次数 | +| active_time | bigint(20) | NO | workarea 活跃时的平均时间(s) | +| max_tempseg_size | bigint(20) | NO | workarea 使用时最大的临时磁盘空间,单位:bytes;如果是 NULL,则表示未使用临时空间 | +| last_tempseg_size | bigint(20) | NO | workarea 上次执行时使用的临时磁盘空间;如果是 NULL,则表示未使用临时空间 | +| con_id | bigint(20) | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/81.v-sql_workarea_active.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/81.v-sql_workarea_active.md new file mode 100644 index 000000000..8790da18f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/81.v-sql_workarea_active.md @@ -0,0 +1,41 @@ +v$sql_workarea_active +========================================== + + + +功能 +----------- + +`v$sql_workarea_active` 视图展示当前活跃 Operator 的 Workarea 信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|--------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| sql_hash_value | bigint(0) | NO | 被执行语句的 Hash 值,当前该值为 NULL。 | +| sql_id | varchar(32) | NO | SQL 语句的 SQL 唯一标示。 | +| sql_exec_start | date | NO | SQL 开始执行时间。 | +| sql_exec_id | bigint(20) | NO | SQL 执行唯一标示。 | +| workarea_address | varbinary(8) | NO | Workarea 的地址。 | +| operation_type | varchar(40) | NO | Workarea 的操作符类型,例如 Sort、Hash Join、Group by 等。 | +| operation_id | bigint(20) | NO | 计划树中识别操作符的唯一标示。 | +| policy | varchar(6) | NO | Workarea 的策略: * MANUAL * AUTO | +| sid | bigint(20) | NO | Session 的唯一标示。 | +| qcinst_id | bigint(0) | NO | 查询协调者的实例 ID。 | +| qcsid | bigint(0) | NO | 查询协调者 Session 标示 ID。 | +| active_time | bigint(20) | NO | Workarea 活跃时平均时间,单位:ms。 | +| work_area_size | bigint(20) | NO | 操作符使用 Workarea 的最大值,单位:bytes。 | +| expect_size | bigint(20) | NO | Workarea 期望的大小,单位:bytes。 | +| actual_mem_used | bigint(20) | NO | 申请 workarea 的内存量,单位:bytes。 | +| max_mem_used | bigint(20) | NO | 使用 Workarea 的最大内存使用量,单位:bytes。 | +| number_passes | bigint(20) | NO | Workarea 在哪个模式下运行: * 0:表示 optimal 模式 * 1:表示 one pass 模式 * ≥2:表示 multi pass 模式 | +| tempseg_size | bigint(20) | NO | Workarea 使用的临时空间大小,单位:bytes;如果为 NULL,表示没有发生写临时文件。 | +| tablespace | varchar(20) | NO | 写临时文件的表命名空间;如果为 NULL,表示没有发生写临时文件。 | +| segrfno# | bigint(0) | NO | 写临时文件相关的文件数量;NULL 表示没有发生写临时文件。 | +| segblk# | bigint(0) | NO | Workarea 创建临时文件的 Block 数量;NULL 表示没有发生写临时文件。 | +| con_id | bigint(20) | NO | 租户 ID。 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/82.v-sql_workarea_histogram.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/82.v-sql_workarea_histogram.md new file mode 100644 index 000000000..55d84b9c0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/82.v-sql_workarea_histogram.md @@ -0,0 +1,27 @@ +v$sql_workarea_histogram +============================================= + + + +功能 +----------- + +展示之前所有 workarea 执行的统计信息,如在区间1M~2M之间全 in-memory 处理的次数、one-pass 次数等。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|------------|----------------|------------------------------------------| +| low_optimal_size | bigint(20) | NO | workarea 在 optimal 模式下最低内存量 | +| high_optimal_size | bigint(20) | NO | workarea 在 optimal 模式下最高内存量 | +| optimal_executions | bigint(20) | NO | workarea 在最低和最高区间的最优模式下执行的次数 | +| onepass_executions | bigint(20) | NO | workarea 在最低和最高区间的 one pass 模式下执行的次数 | +| multipasses_executions | bigint(20) | NO | workarea 在最低和最高区间的 multi passes 模式下执行的次数 | +| total_executions | bigint(20) | NO | workarea 总共执行的次数 | +| con_id | bigint(20) | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/83.v-ob_sql_workarea_memory_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/83.v-ob_sql_workarea_memory_info.md new file mode 100644 index 000000000..791ac3a85 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/83.v-ob_sql_workarea_memory_info.md @@ -0,0 +1,26 @@ +v$ob_sql_workarea_memory_info +================================================== + + + +**功能** + +用于查询 SQL workarea 总体的一些信息,包括最大可用内存、当前使用内存、当前 hold 内存等。通过该视图可以知道当前租户下 workarea 的使用情况,例如内存利用率等。 + +**字段说明** + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|------------|----------------|--------------------------------------------------------------------------------------------------------------------------| +| max_workarea_size | bigint(20) | NO | 最大 workarea 内存,由参数决定可以使用多少内存 | +| workarea_hold_size | bigint(20) | NO | workarea 当前 hold 内存大小 **说明** 由于具体的使用量无法从内存管理模块获取到,故只能获取 hold 值。 | +| max_auto_workarea_size | bigint(20) | NO | auto 时,预计最大可用内存大小可以简单认为最大可用内存会根据公式 `max_work_area_size - hold + total_mem_used ` 进行计算得到,表示当前 workarea 情况下,auto 管理的最大内存大小 | +| mem_target | bigint(20) | NO | 当前 workarea 可用内存的目标大小,与 max_auto_work_area 的区别在于该值是 max_auto_work_area 的一定比例 | +| total_mem_used | bigint(20) | NO | 当前 auto 内存使用大小,这里是由 SQL 自动内存管理模块统计的大小,不是真正使用大小 | +| global_mem_bound | bigint(20) | NO | auto 模式下,全局最大可用内存大小 | +| drift_size | bigint(20) | NO | 当前需求内存变化大小,主要用来当波动一定范围,会自动触发重新计算 global bound size | +| workarea_count | bigint(20) | NO | 注册的 operator profile 个数 | +| manual_calc_count | bigint(20) | NO | 非定时触发的计算 global bound size 次数 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/84.v-ob_timestamp_service.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/84.v-ob_timestamp_service.md new file mode 100644 index 000000000..9fd293e0e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/84.v-ob_timestamp_service.md @@ -0,0 +1,23 @@ +v$ob_timestamp_service +=========================================== + + + +功能 +----------- + +展示系统中各租户使用的时钟源和对应的值。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------|------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| tenant_id | bigint(20) | NO | 租户 ID | +| ts_type | varchar(9) | NO | 时钟源类型: * LOCAL * GLOBAL * HA GLOBAL | +| ts_value | bigint(20) | NO | 时钟值 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/85.v-server_schema_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/85.v-server_schema_info.md new file mode 100644 index 000000000..ff6a820de --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/85.v-server_schema_info.md @@ -0,0 +1,26 @@ +v$server_schema_info +========================================= + + + +功能 +----------- + +展示本机的 Schema 信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|------------|----------------|----------------------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| REFRESHED_SCHEMA_VERSION | bigint(20) | NO | 租户已刷新的 Schema 版本 | +| RECEIVED_SCHEMA_VERSION | bigint(20) | NO | 租户应该要刷新的 Schema 版本 | +| SCHEMA_COUNT | bigint(20) | NO | 租户的 Schema 数量 | +| SCHEMA_SIZE | bigint(20) | NO | 租户的 Schema 大小 | +| MIN_SSTABLE_SCHEMA_VERSION | bigint(20) | NO | 租户 Sstable 上记录的最小 schema_version | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/86.v-merge_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/86.v-merge_info.md new file mode 100644 index 000000000..5df713822 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/86.v-merge_info.md @@ -0,0 +1,33 @@ +v$merge_info +================================= + + + +功能 +----------- + +展示 OceanBase 集群已经完成的合并或转储相关的统计信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|-------------------|---------------|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SVR_IP | varchar(32) | NO | 服务器 IP 地址 | +| SVR_PORT | bigint(20) | NO | 服务器端口号 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TABLE_ID | bigint(20) | NO | 表 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| TYPE | varchar(5) | NO | 合并或转储类型: * minor * major | +| ACTION | varchar(64) | NO | 合并或转储具体动作: * mini * mini minor * buffer minor * minor | +| VERSION | varchar(64) | NO | 合并或转储版本号 | +| START_TIME | timestamp(6) | NO | 合并或转储开始时间 | +| END_TIME | timestamp(6) | NO | 合并或转储结束时间 | +| MACRO_BLOCK_COUNT | bigint(20) | NO | 合并或转储宏块总数 | +| REUSE_PCT | decimal(26,2) | NO | 合并或转储宏块重用率 | +| PARALLEL_DEGREE | bigint(20) | NO | 合并或转储并行度 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/87.v-lock.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/87.v-lock.md new file mode 100644 index 000000000..32717e0af --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/87.v-lock.md @@ -0,0 +1,29 @@ +v$lock +=========================== + + + +功能 +----------- + +展示 OceanBase 数据库的行锁信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|---------------------|----------------|-------------------| +| TABLE_ID | bigint(20) | NO | 表 ID | +| ADDR | varchar(512) | NO | 被锁对象的地址 | +| KADDR | bigint(20) unsigned | NO | 锁地址 | +| SID | bigint(20) | NO | 会话持有的 ID | +| TYPE | bigint(20) | NO | 0(行锁) | +| LMODE | bigint(20) | NO | 0(写锁) | +| REQUEST | bigint(0) | YES | NULL | +| CTIME | bigint(21) | NO | 加锁耗时 | +| BLOCK | bigint(20) | NO | 最早被阻塞的 session_id | +| CON_ID | bigint(20) unsigned | NO | 租户 ID | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/88.v-sql_monitor_statname.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/88.v-sql_monitor_statname.md new file mode 100644 index 000000000..088545805 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/88.v-sql_monitor_statname.md @@ -0,0 +1,32 @@ +v$sql_monitor_statname +=========================================== + + + +功能 +----------- + +本表用于解释 GV$SQL_PLAN_MONITOR 的 OTHERSTAT_X_ID 字段中数字的含义。 + +相关视图/表 +--------------- + +无 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|--------------|----------------|---------------------------| +| CON_ID | null | NO | 租户 ID | +| ID | bigint(20) | NO | 字段 ID | +| GROUP_ID | bigint(20) | NO | 字段分类 ID 。同一类算子,会共享一个分类 ID | +| NAME | varchar(40) | NO | 字段名称 | +| DESCRIPTION | varchar(200) | NO | 字段详细描述 | +| TYPE | bigint(1) | NO | 保留字段 | +| FLAGS | bigint(1) | NO | 保留字段 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/89.v-restore_point.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/89.v-restore_point.md new file mode 100644 index 000000000..28409f2e5 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/89.v-restore_point.md @@ -0,0 +1,24 @@ +v$restore_point +==================================== + + + +功能 +----------- + +显示有关还原点的信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------|--------------|----------------|----------------| +| TENANT_ID | bigint(20) | YES | 租户 ID | +| SNAPSHOT | bigint(20) | NO | 创建还原点时的数据库 SCN | +| TIME | timestamp(6) | NO | 创建还原点时的时间 | +| NAME | varchar(512) | YES | 还原点名称 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/9.gv-sql_audit.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/9.gv-sql_audit.md new file mode 100644 index 000000000..8dcd21586 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/9.gv-sql_audit.md @@ -0,0 +1,106 @@ +gv$sql_audit +================================= + + + +功能 +----------- + +该视图用于展示所有 Server 上每一次 SQL 请求的来源、执行状态等统计信息。该视图是按照租户拆分的,除了系统租户,其他租户不能跨租户查询。 + +相关表/视图 +--------------- + +__all_virtual_sql_audit + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------|---------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SVR_IP | varchar(32) | NO | IP 地址 | +| SVR_PORT | bigint(20) | NO | 端口号 | +| REQUEST_ID | bigint(20) | NO | 请求的 ID 号 | +| TRACE_ID | varchar(128) | NO | 该语句的 trace_id | +| SID | bigint(20) unsigned | NO | Session 连接 ID | +| CLIENT_IP | varchar(32) | NO | 发送请求的客户端 IP | +| CLIENT_PORT | bigint(20) | NO | 发送请求的客户端端口号 | +| TENANT_ID | bigint(20) | NO | 发送请求的租户 ID | +| TENANT_NAME | varchar(64) | NO | 发送请求的租户名称 | +| EFFECTIVE_TENANT_ID | bigint(20) | NO | 租户 ID | +| USER_ID | bigint(20) | NO | 发送请求的用户 ID | +| USER_NAME | varchar(64) | NO | 发送请求的用户名称 | +| USER_CLIENT_IP | varchar(32) | NO | 发送请求的客户端 IP | +| DB_ID | bigint(20) unsigned | DB_ID | 数据库 ID | +| DB_NAME | varchar(128) | DB_NAME | 数据库名称 | +| SQL_ID | varchar(32) | NO | 该 SQL 的 ID | +| QUERY_SQL | varchar(65536) | NO | 实际的 SQL 语句 | +| PLAN_ID | bigint(20) | NO | 执行计划的 ID | +| AFFECTED_ROWS | bigint(20) | NO | 影响行数 | +| RETURN_ROWS | bigint(20) | NO | 返回行数 | +| PARTITION_CNT | bigint(20) | NO | 该请求涉及的分区数 | +| RET_CODE | bigint(20) | NO | 执行结果返回码 | +| QC_ID | bigint(20) unsigned | NO | 并行执行场景下,调度器 ID | +| DFO_ID | bigint(20) | NO | 并行执行场景下,当前执行的子计划 ID | +| SQC_ID | bigint(20) | NO | 并行执行场景下,本地协调器 ID | +| WORKER_ID | bigint(20) | NO | 并行执行场景下,工作线程 ID | +| EVENT | varchar(64) | NO | 最长等待事件名称 | +| P1TEXT | varchar(64) | NO | 等待事件参数 1 | +| P1 | bigint(20) unsigned | NO | 等待事件参数 1 的值 | +| P2TEXT | varchar(64) | NO | 等待事件参数 2 | +| P2 | bigint(20) unsigned | NO | 等待事件参数 2 的值 | +| P3TEXT | varchar(64) | NO | 等待事件参数 3 | +| P3 | bigint(20) unsigned | NO | 等待事件参数 3 的值 | +| LEVEL | bigint(20) | NO | 等待事件的级别 | +| WAIT_CLASS_ID | bigint(20) | NO | 等待事件所属的 Class ID | +| WAIT_CLASS# | bigint(20) | NO | 等待事件所属的 Class 的下标 | +| WAIT_CLASS | varchar(64) | NO | 等待事件所属的 Class 名称 | +| STATE | varchar(19) | NO | 等待事件的状态 | +| WAIT_TIME_MICRO | bigint(20) | NO | 该等待事件所等待的时间,单位:微秒 | +| TOTAL_WAIT_TIME_MICRO | bigint(20) | NO | 执行过程所有等待的总时间,单位:微秒 | +| TOTAL_WAITS | bigint(20) | NO | 执行过程总等待的次数 | +| RPC_COUNT | bigint(20) | NO | 发送的 RPC 个数 | +| PLAN_TYPE | bigint(20) | NO | 执行计划类型: * local * remote * distribute | +| IS_INNER_SQL | tinyint(4) | NO | 是否为内部 SQL 请求 | +| IS_EXECUTOR_RPC | tinyint(4) | NO | 当前请求是否为 RPC 请求 | +| IS_HIT_PLAN | tinyint(4) | NO | 是否命中 plan_cache | +| REQUEST_TIME | bigint(20) | NO | 开始执行时间点 | +| ELAPSED_TIME | bigint(20) | NO | 接收到请求到执行结束所消耗的总时间 | +| NET_TIME | bigint(20) | NO | 发送 RPC 到接收到请求的时间 | +| NET_WAIT_TIME | bigint(20) | NO | 接收到请求到进入队列的时间 | +| QUEUE_TIME | bigint(20) | NO | 请求在队列的等待时间 | +| DECODE_TIME | bigint(20) | NO | 出队列后 decode 的时间 | +| GET_PLAN_TIME | bigint(20) | NO | 开始 process 到获得计划的时间 | +| EXECUTE_TIME | bigint(20) | NO | 计划执行所消耗的时间 | +| APPLICATION_WAIT_TIME | bigint(20) unsigned | NO | 所有 application 类事件的总时间 | +| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | NO | 所有 concurrency 类事件的总时间 | +| USER_IO_WAIT_TIME | bigint(20) unsigned | NO | 所有 user_io 类事件的总时间 | +| SCHEDULE_TIME | bigint(20) unsigned | NO | 所有 Schedule 类事件的时间 | +| ROW_CACHE_HIT | bigint(20) | NO | 行缓存命中次数 | +| BLOOM_FILTER_CACHE_HIT | bigint(20) | NO | bloom filter 缓存命中次数 | +| BLOCK_CACHE_HIT | bigint(20) | NO | 块缓存命中次数 | +| BLOCK_INDEX_CACHE_HIT | bigint(20) | NO | 块索引缓存命中次数 | +| DISK_READS | bigint(20) | NO | 物理读次数 | +| RETRY_CNT | bigint(20) | NO | 重试次数 | +| TABLE_SCAN | tinyint(4) | NO | 判断该请求是否含全表扫描 | +| CONSISTENCY_LEVEL | bigint(20) | NO | 一致性级别 | +| MEMSTORE_READ_ROW_COUNT | bigint(20) | NO | MEMSTORE 中的读行数 | +| SSSTORE_READ_ROW_COUNT | bigint(20) | NO | SSSTORE 中连读的行数 | +| REQUEST_MEMORY_USED | bigint(20) | NO | 该请求消耗的内存 | +| EXPECTED_WORKER_COUNT | bigint(20) | NO | 请求期望的工作线程数 | +| USED_WORKER_COUNT | bigint(20) | NO | 请求实际使用的工作线程数 | +| SCHED_INFO | varchar(16384) | NO | 请求的调度信息 | +| FUSE_ROW_CACHE_HIT | bigint(20) | NO | 暂不支持该字段,字段默认为 NULL | +| PS_STMT_ID | bigint(20) | NO | 请求对应的 prepare id | +| TRANSACTION_HASH | bigint(20) unsigned | NO | 请求对应的事务的 Hash 值 | +| REQUEST_TYPE | bigint(20) | NO | 请求对应的类型: * 0:表示非法 * 1:表示是一个内部请求 * 2:表示是一个本地请求,例如,Local 计划 * 3:表示远程请求 * 4:表示分布式请求 * 5:表示 SQL 的 prepare 请求 * 6:表示 SQL 得到 execute stmt 请求 | +| IS_BATCHED_MULTI_STMT | tinyint(4) | NO | 是否进行 batch multi stmt 的优化 | +| OB_TRACE_INFO | varchar(4096) | NO | 用户设置的 Trace 信息 | +| PLAN_HASH | bigint(20) unsigned | NO | 执行计划的 Hash 值 | +| LOCK_FOR_READ_TIME | bigint(20) | NO | 读取数据时等待锁的耗时,单位:微秒 | +| WAIT_TRX_MIGRATE_TIME | bigint(20) | NO | 写入数据时,等待事务因为内部合并机制而需要冻结,冻结过程中位完成的事务需要搬迁出来的耗时,单位:微秒 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/90.v-ob_cluster_failover_info.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/90.v-ob_cluster_failover_info.md new file mode 100644 index 000000000..9713f2a22 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/90.v-ob_cluster_failover_info.md @@ -0,0 +1,25 @@ +v$ob_cluster_failover_info +=============================================== + + + +功能 +----------------------- + +v$ob_cluster_failover_info 用于展示每一次每个租户的 Failover 信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|----------------|------------|------------|---------------------| +| failover# | bigint(20) | NO | Failover 操作的唯一标识 ID | +| tenant_id | bigint(20) | NO | 租户 ID | +| sys_table_scn | bigint(20) | NO | 系统表的快照点 | +| user_table_scn | bigint(20) | NO | 用户表的快照点 | +| schema_version | bigint(20) | NO | Schema 版本 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/91.v-encrypted_tables.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/91.v-encrypted_tables.md new file mode 100644 index 000000000..bc4ff0a21 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/91.v-encrypted_tables.md @@ -0,0 +1,30 @@ +v$encrypted_tables +======================================= + + + +功能 +----------------------- + +v$encrypted_tables 用于展示开启加密功能的表的加密状态。 + +字段说明 +------------------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|------------------|---------------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TABLE_ID | bigint(20) | NO | 表 ID | +| TABLE_NAME | varchar(256) | NO | 表名称 | +| TABLESPACE_ID | bigint(20) | NO | 表空间 ID | +| ENCRYPTIONALG | varchar(30) | NO | 加密算法名: * AES-128 * AES-192 * AES-256 * SM4 | +| ENCRYPTED | varchar(3) | NO | 是否完成加密: * YES * NO | +| ENCRYPTEDKEY | varchar(33) | NO | 经过主密钥加密后的加密密钥 | +| MASTERKEYID | bigint(20) unsigned | NO | 主密钥版本 | +| BLOCKS_ENCRYPTED | decimal(20,0) | NO | 加密宏块的数量 | +| BLOCKS_DECRYPTED | decimal(21,0) | NO | 未加密宏块的数量 | +| STATUS | varchar(10) | | 加密状态: * NORMAL:正常状态 * ENCRYPTING:加密中 * DECRYPTING:解密中 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/92.v-encrypted_tablespaces.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/92.v-encrypted_tablespaces.md new file mode 100644 index 000000000..bba46ecf1 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/92.v-encrypted_tablespaces.md @@ -0,0 +1,28 @@ +v$encrypted_tablespaces +============================================ + + + +功能 +----------------------- + +v$encrypted_tablespaces 用于展示开启加密功能的表空间的加密状态。 + +字段说明 +------------------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|------------------|---------------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TENANT_ID | bigint(20) | NO | 租户 ID | +| TABLESPACE_ID | bigint(20) | NO | 表空间 ID | +| ENCRYPTIONALG | varchar(30) | NO | 加密算法名: * AES-128 * AES-192 * AES-256 * SM4 | +| ENCRYPTED | varchar(3) | NO | 是否完成加密: * YES * NO | +| ENCRYPTEDKEY | varchar(33) | NO | 经过主密钥加密后的加密密钥 | +| MASTERKEYID | bigint(20) unsigned | NO | 主密钥版本 | +| BLOCKS_ENCRYPTED | decimal(20,0) | NO | 加密宏块的数量 | +| BLOCKS_DECRYPTED | decimal(21,0) | NO | 未加密宏块的数量 | +| STATUS | varchar(10) | NO | 加密状态: * NORMAL:正常状态 * ENCRYPTING:加密中 * DECRYPTING:解密中 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/93.v-sstable.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/93.v-sstable.md new file mode 100644 index 000000000..9f66f7a47 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/93.v-sstable.md @@ -0,0 +1,41 @@ +v$sstable +============================== + + + +功能 +----------------------- + +`v$sstable` 视图用于展示租户的 SSTable 信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|--------------------------------|---------------------|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TABLE_TYPE | bigint(20) | NO | 表的类型 | +| TABLE_ID | bigint(20) | NO | 表 ID | +| TABLE_NAME | varchar(256) | NO | 表名 | +| TENANT_ID | bigint(20) | NO | 租户 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| INDEX_ID | bigint(20) | NO | 主表或索引表的 ID | +| BASE_VERSION | bigint(20) | NO | 该表中存储数据的 `trans_version` 范围的最小值 | +| MULTI_VERSION_START | bigint(20) | NO | 该表中多版本数据的起始 `trans_version` | +| SNAPSHOT_VERSION | bigint(20) | NO | 该表中存储数据的 `trans_version` 范围的最大值 | +| START_LOG_TS | bigint(20) unsigned | NO | 该表中数据的日志时间戳范围的左边界 | +| END_LOG_TS | bigint(20) unsigned | NO | 该表中数据的日志时间戳范围的右边界 | +| MAX_LOG_TS | bigint(20) unsigned | NO | 该表中数据的日志时间戳范围的最大值 | +| VERSION | bigint(20) | NO | 该表的版本 | +| LOGICAL_DATA_VERSION | bigint(20) | NO | 该表的逻辑数据版本 | +| SIZE | bigint(20) | NO | 该表的大小 | +| IS_ACTIVE | bigint(20) | NO | 该表是否处于活跃状态 | +| REF | bigint(20) | NO | 该表引用的计数 | +| WRITE_REF | bigint(20) | NO | 该表写引用的计数 | +| TRX_COUNT | bigint(20) | NO | 该表上活跃事务的数量 | +| PENDING_LOG_PERSISTING_ROW_CNT | bigint(20) | NO | 持久化 Redo Log 的回收数量 | +| UPPER_TRANS_VERSION | bigint(20) | NO | 该表中存储数据的 `trans_version` 的上限 | +| CONTAIN_UNCOMMITTED_ROW | tinyint(4) | NO | 该表中是否包含未提交的事务行: * 0:表示该表中不包含未提交的事务行 * 1:表示该表中包含未提交的事务行 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/94.v-ob_trans_table_status.md b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/94.v-ob_trans_table_status.md new file mode 100644 index 000000000..f9a1e95ba --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/1.system-view/3.performance-view/94.v-ob_trans_table_status.md @@ -0,0 +1,25 @@ +v$ob_trans_table_status +============================================ + + + +功能 +----------------------- + +从 OceanBase 数据库 V3.0.0 版本开始,系统开始支持转储未提交的事务,而未提交事务中的数据可能会转储到 SSTable 中,故将这些未提交的事务称为脏事务,一般比较大的事务容易成为脏事务。 + +`v$ob_trans_table_status` 视图用于展示当前租户每次冻结后产生的脏事务的详细信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|--------------|------------|------------|---------------| +| TABLE_ID | bigint(20) | NO | 表 ID | +| PARTITION_ID | bigint(20) | NO | 分区 ID | +| END_LOG_ID | bigint(20) | NO | 已持久化的事务日志的 ID | +| TRANS_CNT | bigint(20) | NO | 脏事务的数量 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/1.overview-of-system-variables.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/1.overview-of-system-variables.md new file mode 100644 index 000000000..0120fa04f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/1.overview-of-system-variables.md @@ -0,0 +1,35 @@ +系统变量概述 +=========================== + + + +OceanBase 数据库的系统变量主要分为全局变量和 Session 变量: + +* 全局变量:表示 Global 级别的修改,数据库同一租户内的不同用户共享全局变量。全局变量的修改不会随会话的退出而失效。此外,全局变量修改后,对当前已打开的 Session 不生效,需要重新建立 Session 才能生效。 + + + +* Session 变量:表示 Session 级别的修改。当客户端连接到数据库后,数据库会复制全局变量来自动生成 Session 变量。Session 变量的修改仅对当前 Session 生效。 + + + + + + +与系统配置项对比 +----------------------------- + + + +| 对比项 | 系统配置项 | 系统变量 | +|------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 生效范围 | 分为集群、Zone、机器和租户。 | 分为租户的 Global 或 Session 级别。 | +| 生效方式 | * 动态生效:`edit_level` 为`dynamic_effective`。 * 重启生效:`edit_level` 为 `static_effective` 。 | * 设置 Session 级别的变量仅对当前 Session 有效,对其他 Session 无效。 * 设置 Global 级别的变量对当前 Session 无效,需要重新登录建立新的 Session 才会生效。 | +| 修改方式 | * 支持通过 SQL 语句修改,示例如下: ```sql obclient> Alter SYSTEM SET schema_history_expire_time='1h' ``` * 支持通过启动参数修改,示例如下: ```sql cd /home/admin && ./bin/observer -o "schema_history_expire_time='1h'" ``` | 仅支持通过 SQL 语句修改,示例如下: * MySQL 模式 ```sql obclient> SET ob_query_timeout = 20000000; obclient> SET GLOBAL ob_query_timeout = 20000000; ``` * Oracle 模式 ```sql obclient> SET ob_query_timeout = 20000000; obclient> ALTER SYSTEM SET ob_query_timeout = 20000000; ``` | +| 持久化 | 持久化到内部表与配置文件,可以在 `/home/admin/oceanbase/etc/observer.config.bin` 与 `/home/admin/oceanbase/etc/observer.config.bin.history` 文件中查询该配置项。 | 仅 GLOBAL 级别的变量会持久化,SESSION 级别的变量不会进行持久化。 | +| 生命周期 | 长,从进程启动到退出。 | 短,需要租户的 Schema 创建成功以后才生效。 | +| 查询方式 | 可以使用 `SHOW PARAMETERS` 语句查询。 | 可以使用 `SHOW [GLOBAL] VARIABLES` 语句查询。 | + + + +本章主要介绍 OceanBase 数据库中的所有系统变量及其缺省值说明(包括参数含义、取值范围和使用说明等)。系统变量的查看和设置相关操作,请参见 [租户管理变量](t1940574.html#topic-1940574)章节。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/10.character_set_system.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/10.character_set_system.md new file mode 100644 index 000000000..376bcb466 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/10.character_set_system.md @@ -0,0 +1,15 @@ +character_set_system +========================================= + +character_set_system 设置服务器使用的字符集。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | utf8mb4 | +| 生效范围 | * GLOBAL * SESSION | +| 是否可以修改 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/100.parallel_servers_target.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/100.parallel_servers_target.md new file mode 100644 index 000000000..e202a2493 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/100.parallel_servers_target.md @@ -0,0 +1,14 @@ +parallel_servers_target +============================================ + +parallel_servers_target 用于设置每个 Server 上的大查询排队条件。当并行执行(Parallel eXecution,PX)线程池中有指定的空闲线程数时才调度新查询。 + + +| **属性** | **描述** | +|--------|----------------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 9223372036854775807\] | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/101.ob_trx_idle_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/101.ob_trx_idle_timeout.md new file mode 100644 index 000000000..5887fedf3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/101.ob_trx_idle_timeout.md @@ -0,0 +1,16 @@ +ob_trx_idle_timeout +======================================== + +ob_trx_idle_timeout 用于设置事务空闲超时时间,即事务中两条语句之间的执行间隔超过该值时超时,单位为微秒。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 120s | +| 取值范围 | \[100s,+∞) | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/102.block_encryption_mode.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/102.block_encryption_mode.md new file mode 100644 index 000000000..9f22a9d02 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/102.block_encryption_mode.md @@ -0,0 +1,16 @@ +block_encryption_mode +========================================== + +block_encryption_mode 用于指定在函数 aes_encrypt 和 aes_decrypt 中使用的加密算法。 + + +| **属性** | **描述** | +|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | aes-128-ecb | +| 取值范围 | * aes-128-ecb * aes-192-ecb * aes-256-ecb * aes-128-cbc * aes-192-cbc * aes-256-cbc * aes-128-cfb1 * aes-192-cfb1 * aes-256-cfb1 * aes-128-cfb8 * aes-192-cfb8 * aes-256-cfb8 * aes-128-cfb128 * aes-192-cfb128 * aes-256-cfb128 * aes-128-ofb * aes-192-ofb * aes-256-ofb | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/103.ob_reserved_meta_memory_percentage.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/103.ob_reserved_meta_memory_percentage.md new file mode 100644 index 000000000..3fda67f04 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/103.ob_reserved_meta_memory_percentage.md @@ -0,0 +1,15 @@ +ob_reserved_meta_memory_percentage +======================================================= + +ob_reserved_meta_memory_percentage 用于设置租户预留内存的比例,主要存储 Meta 相关的结构信息。 + + +| **属性** | **描述** | +|---------|----------| +| 参数类型 | int | +| 默认值 | 10 | +| 取值范围 | \[1,100) | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/104.ob_check_sys_variable.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/104.ob_check_sys_variable.md new file mode 100644 index 000000000..aa49058f7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/104.ob_check_sys_variable.md @@ -0,0 +1,21 @@ +ob_check_sys_variable +========================================== + + +**说明** + + + +该变量暂未使用。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0 * 1 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/105.tracefile_identifier.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/105.tracefile_identifier.md new file mode 100644 index 000000000..56c383e0e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/105.tracefile_identifier.md @@ -0,0 +1,17 @@ +tracefile_identifier +========================================= + +tracefile_identifier 用于在日志中增加指定内容,便于筛选行迭代跟踪日志。 + + +| **属性** | **描述** | +|---------|---------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | NULL | +| 生效范围 | SESSION | +| 是否参与序列化 | 是 | + + + +使用 TRACING、STAT 两个 HINT 能够指示执行器在算子执行过程中打印每一行内容,为了让这些内容易于搜索识别,可以使用 tracefile_identifier 指定一个字符串,例如 `XXXYYYZZZ` 、 `MY_TRACE` 等和行内容一起输出到日志中,易于搜索。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/106.transaction_isolation.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/106.transaction_isolation.md new file mode 100644 index 000000000..d5d9be484 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/106.transaction_isolation.md @@ -0,0 +1,15 @@ +transaction_isolation +========================================== + +transaction_isolation 用于设置事务的隔离级别。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | READ-COMMITTED | +| 取值范围 | * READ-UNCOMMITTED * READ-COMMITTED * REPEATABLE-READ * SERIALIZABLE | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/107.ob_trx_lock_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/107.ob_trx_lock_timeout.md new file mode 100644 index 000000000..3e82ea3c3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/107.ob_trx_lock_timeout.md @@ -0,0 +1,15 @@ +ob_trx_lock_timeout +======================================== + +ob_trx_lock_timeout 用于设置事务的等锁超时时长,单位为微秒。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | -1 | +| 取值范围 | 有效取值范围:\[0,+∞) | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/108.validate_password_check_user_name.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/108.validate_password_check_user_name.md new file mode 100644 index 000000000..395e6cbdf --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/108.validate_password_check_user_name.md @@ -0,0 +1,15 @@ +validate_password_check_user_name +====================================================== + +validate_password_check_user_name 用于设置用户密码是否可以和用户名相同。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | on | +| 取值范围 | * on:表示用户密码可以和用户名相同 * off:表示用户密码不可以和用户名相同 | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/109.validate_password_length.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/109.validate_password_length.md new file mode 100644 index 000000000..05bf341e8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/109.validate_password_length.md @@ -0,0 +1,15 @@ +validate_password_length +============================================= + +validate_password_length 设置用户密码最小长度。 + + +| **属性** | **描述** | +|---------|------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0,2147483647\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/11.collation_connection.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/11.collation_connection.md new file mode 100644 index 000000000..828e60b5e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/11.collation_connection.md @@ -0,0 +1,18 @@ +collation_connection +========================================= + +collation_connection 用于设置连接使用的字符集和字符序。 + + +| **属性** | **描述** | +|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4_general_ci | +| 取值范围 | * utf8mb4_general_ci * utf8mb4_bin * utf8mb4_unicode_ci * gbk_bin * gbk_chinese_ci * gb18030_bin * gb18030_chinese_ci * utf16_general_ci * utf16_bin * utf16_unicode_ci * binary | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | +| 是否可以为空 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/110.validate_password_mixed_case_count.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/110.validate_password_mixed_case_count.md new file mode 100644 index 000000000..6aab8c88a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/110.validate_password_mixed_case_count.md @@ -0,0 +1,16 @@ +validate_password_mixed_case_count +======================================================= + +validate_password_mixed_case_count 用于设置用户密码至少包含的大写字母个数以及至少包含的小写字母个数。 + + +| **属性** | **描述** | +|---------|------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0,2147483647\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/111.validate_password_number_count.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/111.validate_password_number_count.md new file mode 100644 index 000000000..93f52ab3f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/111.validate_password_number_count.md @@ -0,0 +1,15 @@ +validate_password_number_count +=================================================== + +validate_password_number_count 用于设置用户密码至少包含的数字个数。 + + +| **属性** | **描述** | +|---------|------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0,2147483647\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/112.validate_password_policy.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/112.validate_password_policy.md new file mode 100644 index 000000000..a4cab8122 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/112.validate_password_policy.md @@ -0,0 +1,15 @@ +validate_password_policy +============================================= + +validate_password_policy 用于设置密码检查策略。 + + +| **属性** | **描述** | +|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | LOW | +| 取值范围 | * LOW:表示仅包含密码常见的检测 * MEDIUM:表示包括密码长度检测、大写字母个数检测、小写字母个数检测、数字个数检测、特殊字符个数检测、用户名密码相同检测 | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/113.validate_password_special_char_count.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/113.validate_password_special_char_count.md new file mode 100644 index 000000000..cea5d10ce --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/113.validate_password_special_char_count.md @@ -0,0 +1,15 @@ +validate_password_special_char_count +========================================================= + +validate_password_special_char_count 用于设置用户密码至少包含的特殊字符个数。 + + +| **属性** | **描述** | +|---------|------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0,2147483647\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/114.default_password_lifetime.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/114.default_password_lifetime.md new file mode 100644 index 000000000..4ff78a487 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/114.default_password_lifetime.md @@ -0,0 +1,15 @@ +default_password_lifetime +============================================== + +default_password_lifetime 用于设置密码的过期时间。 + + +| **属性** | **描述** | +|---------|-------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0,65535\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/115.ob_trace_info.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/115.ob_trace_info.md new file mode 100644 index 000000000..08339e179 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/115.ob_trace_info.md @@ -0,0 +1,15 @@ +ob_trace_info +================================== + +ob_trace_info 用于透传 trace 信息,该信息最终可透持久化到 REDO 日志中。 + + +| **属性** | **描述** | +|--------|-------------------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | 字符串长度为\[0, 4096\] | +| 生效范围 | SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/116.secure_file_priv.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/116.secure_file_priv.md new file mode 100644 index 000000000..1e5168218 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/116.secure_file_priv.md @@ -0,0 +1,35 @@ +secure_file_priv +===================================== + +secure_file_priv 控制导入或导出到文件时可以访问的路径。仅 DBA 可以设置该变量,其他人无法设置。 + + +| **属性** | **描述** | +|-----------|---------| +| 参数类型 | varchar | +| 默认值 | NULL | +| 取值范围 | ALL | +| 生效范围 | GLOBAL | +| 是否影响计划的生成 | 是 | +| 是否可为空 | 是 | + + + +对于该变量的值: + +* 如果设置为空串,则表示没有限制,任意路径均可以访问。 + + + +* 如果设置为路径名,则仅该路径下的文件可以被导入或导出。 + + + +* 如果设置为 `NULL`,则表示导入、导出被禁用。 + + + + + + +新建租户时,默认值将被设为 `NULL`,即导入、导出被禁用。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/117.ob_pl_block_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/117.ob_pl_block_timeout.md new file mode 100644 index 000000000..a4f1445ce --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/117.ob_pl_block_timeout.md @@ -0,0 +1,15 @@ +ob_pl_block_timeout +======================================== + +ob_pl_block_timeout 用于设置 PL 的最大超时时间,单位 us。 + + +| 属性 | 描述 | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 3216672000000000 | +| 取值范围 | \[0, 9223372036854775807\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/118.performance_schema.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/118.performance_schema.md new file mode 100644 index 000000000..f783416bc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/118.performance_schema.md @@ -0,0 +1,15 @@ +performance_schema +======================================= + +performance_schema 用于向客户端声明是否支持 performance 信息的查询。 + + +| 属性 | 描述 | +|--------|-----------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | OFF | +| 取值范围 | * ON:支持 * OFF:不支持 | +| 生效范围 | GLOBAL | +| 是否重启生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/119.transaction_read_only.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/119.transaction_read_only.md new file mode 100644 index 000000000..b8c65696f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/119.transaction_read_only.md @@ -0,0 +1,23 @@ +transaction_read_only +========================================== + +transaction_read_only 配置项用于控制是否只允许开启只读事务。 +**注意** + + + +当前该变量暂未启用,即设置后不会生效。 + + +| 属性 | 描述 | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | False | +| 取值范围 | * True * False | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是,即远程执行、分布式执行场景下,变量会参与序列化 | +| 是否重启生效 | 否 | + + + +当 transaction_read_only 设置为 `True` 时,不允许执行 DML 语句。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/12.collation_database.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/12.collation_database.md new file mode 100644 index 000000000..896b93e2c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/12.collation_database.md @@ -0,0 +1,16 @@ +collation_database +======================================= + +collation_database 设置创建数据库默认字符集和字符序。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4_general_ci | +| 取值范围 | * utf8mb4_general_ci * utf8mb4_bin * utf8mb4_unicode_ci * gbk_bin * gbk_chinese_ci * gb18030_bin * gb18030_chinese_ci * utf16_general_ci * utf16_bin * utf16_unicode_ci * binary | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否可以为空 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/120.resource_manager_plan.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/120.resource_manager_plan.md new file mode 100644 index 000000000..a6c64aafa --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/120.resource_manager_plan.md @@ -0,0 +1,17 @@ +resource_manager_plan +========================================== + +`resource_manager_plan` 用于激活资源管理计划,以适当的参数限制不同负载使用 CPU 的额度。 + + +| 属性 | 描述 | +|--------|---------------| +| 参数类型 | varchar | +| 默认值 | "" | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否重启生效 | 否,设置后 10s 内生效 | + + + +租户内的普通线程和并行执行线程会相互抢占 CPU 资源,通过为租户指定资源隔离计划,可以控制资源抢占策略,限制资源的使用量。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/13.collation_server.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/13.collation_server.md new file mode 100644 index 000000000..5b2575988 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/13.collation_server.md @@ -0,0 +1,16 @@ +collation_server +===================================== + +collation_server 用于设置服务器默认字符集和字符序。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4_general_ci | +| 取值范围 | * utf8mb4_general_ci * utf8mb4_bin * utf8mb4_unicode_ci * gbk_bin * gbk_chinese_ci * gb18030_bin * gb18030_chinese_ci * utf16_general_ci * utf16_bin * utf16_unicode_ci * binary | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否可以为空 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/14.interactive_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/14.interactive_timeout.md new file mode 100644 index 000000000..7026fb806 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/14.interactive_timeout.md @@ -0,0 +1,14 @@ +interactive_timeout +======================================== + +interactive_timeout 用于设置服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在 mysql_real_connect() 中使用 CLIENT_INTERACTIVE 选项的客户端。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 28800 | +| 取值范围 | \[1, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/15.last_insert_id.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/15.last_insert_id.md new file mode 100644 index 000000000..49e5caf01 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/15.last_insert_id.md @@ -0,0 +1,14 @@ +last_insert_id +=================================== + +last_insert_id 用于返回本 Session 最后一次插入的自增字段值。 + + +| **属性** | **描述** | +|--------|-----------------------------| +| 参数类型 | unit | +| 默认值 | 0 | +| 取值范围 | \[0, 18446744073709551615\] | +| 生效范围 | SESSION | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/16.max_allowed_packet.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/16.max_allowed_packet.md new file mode 100644 index 000000000..4c39d7e6c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/16.max_allowed_packet.md @@ -0,0 +1,23 @@ +max_allowed_packet +======================================= + +max_allowed_packet 用于设置最大网络包大小,单位是 Byte。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 4194304 | +| 取值范围 | \[1024,1073741824\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + + +**说明** + + + +该变量不能通过 `ALTER SESSION SET xxx = yyy; `语句的方式使其仅在当前 Session 生效,只能通过 `SET GLOBAL xxx = yyy` 语句这种全局生效的修改方式。 使用时一般客户端与 Server 端均需要调整。 + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/17.sql_mode.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/17.sql_mode.md new file mode 100644 index 000000000..f6583d061 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/17.sql_mode.md @@ -0,0 +1,14 @@ +sql_mode +============================= + +sql_mode 用于设置 SQL 模式,不同的 SQL 模式对于插入等行为有很大影响。 + + +| **属性** | **描述** | +|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | STRICT_ALL_TABLES | +| 取值范围 | * STRICT_ALL_TABLES * STRICT_TRANS_TABLES * ONLY_FULL_GROUP_BY * PAD_CHAR_TO_FULL_LENGTH | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/18.time_zone.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/18.time_zone.md new file mode 100644 index 000000000..401b26265 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/18.time_zone.md @@ -0,0 +1,15 @@ +time_zone +============================== + +time_zone 用于设置当前租户会话使用的时区,支持 `'+08:00' `的 offset 形式和 `Asia/Shanghai `的地域形式取值。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | +8:00 | +| 取值范围 | -12:59 \~ +13:00 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/19.tx_isolation.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/19.tx_isolation.md new file mode 100644 index 000000000..be72aefe6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/19.tx_isolation.md @@ -0,0 +1,16 @@ +tx_isolation +================================= + +tx_isolation 用于设置事务隔离级别。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | READ-COMMITTED | +| 取值范围 | * READ-UNCOMMITTED * READ-COMMITTED * REPEATABLE-READ * SERIALIZABLE | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/2.auto_increment_increment-1.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/2.auto_increment_increment-1.md new file mode 100644 index 000000000..35abfa223 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/2.auto_increment_increment-1.md @@ -0,0 +1,16 @@ +auto_increment_increment +============================================= + +auto_increment_increment 用于设置自增步长,仅用于 MySQL 客户端登录。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | uint | +| 默认值 | 1 | +| 取值范围 | \[1, 65535\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/20.version_comment.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/20.version_comment.md new file mode 100644 index 000000000..eb6204219 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/20.version_comment.md @@ -0,0 +1,16 @@ +version_comment +==================================== + +version_comment 用于设置 OBServer 的版本信息。 + + +| **属性** | **描述** | +|--------|-----------------| +| 参数类型 | varchar | +| 默认值 | OceanBase 1.0.0 | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/21.wait_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/21.wait_timeout.md new file mode 100644 index 000000000..fb3413d91 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/21.wait_timeout.md @@ -0,0 +1,16 @@ +wait_timeout +================================= + +wait_timeout 用于设置服务器关闭非交互连接之前等待活动的秒数。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 28800 | +| 取值范围 | \[1, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + + +在会话启动时,会根据全局 wait_timeout 的值或全局 interactive_timeout 的值来初始化会话 wait_timeout 的值,具体根据全局 wait_timeout 的值还是全局 interactive_timeout 的值取决于客户端类型。客户端类型由 `mysql_real_connect()` 的连接选项 CLIENT_INTERACTIVE 定义。 interactive_timeout 变量相关信息请参见 **[](gi9a68)** [interactive_timeout](/zh-CN/14.reference-guide-oracle-mode/2.system-variable-1/13.interactive_timeout-1.md)。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/22.binlog_row_image.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/22.binlog_row_image.md new file mode 100644 index 000000000..6d6b69b81 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/22.binlog_row_image.md @@ -0,0 +1,25 @@ +binlog_row_image +===================================== + +binlog_row_image 用于控制是否记录全列日志。 + +全列日志与非全列日志的定义如下: + +对于 update/delete 的 DML 语句,如果 OBServer 同时记录了所有列的新值和旧值,则称之为全列日志;如果 OBServer 只记录了新值而没有旧值,则为非全列日志。 + + +| **属性** | **描述** | +|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | FULL | +| 取值范围 | * FULL:表示记录所有列 * MINIMAL:表示只记录 DML 操作中修改的列,提升主从复制吞吐量,减少 binlog 大小、网络资源和服务器内存占用 * NOBLOB:目前暂不支持 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与消息序列化 | 是 | +| 是否影响 SQL 执行计划生成 | 是 | + + +**说明** + + + +通过 `SET GLOBAL binlog_row_image= 'xxx' `命令修改变量后,不会影响已连接的 Session,包括发起修改的 Session。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/23.character_set_filesystem.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/23.character_set_filesystem.md new file mode 100644 index 000000000..41342b809 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/23.character_set_filesystem.md @@ -0,0 +1,15 @@ +character_set_filesystem +============================================= + +character_set_filesystem 用于设置文件系统字符集类型。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | BINARY | +| 取值范围 | BINARY | +| 生效范围 | * GLOBAL * SESSION | +| 是否可以为空 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/24.connect_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/24.connect_timeout.md new file mode 100644 index 000000000..8a1f54b06 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/24.connect_timeout.md @@ -0,0 +1,14 @@ +connect_timeout +==================================== + +connect_timeout 用于设置连接超时时间,单位为微妙。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 10 | +| 取值范围 | \[2, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/25.datadir.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/25.datadir.md new file mode 100644 index 000000000..e59f9c1bb --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/25.datadir.md @@ -0,0 +1,20 @@ +datadir +============================ + +datadir 用于设置数据存储的本地磁盘路径。 +**说明** + + + +该变量仅用于兼容,OceanBase 数据库当前暂未实现该变量的功能。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | /usr/local/mysql/data/ | +| 取值范围 | N/A | +| 生效范围 | * GLOBAL * SESSION | +| 是否可修改 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/26.debug_sync.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/26.debug_sync.md new file mode 100644 index 000000000..59ee95e64 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/26.debug_sync.md @@ -0,0 +1,21 @@ +debug_sync +=============================== + +debug_sync 用于在 debug 时设置同步点,与 MySQL 兼容。 +**说明** + + + +只有 debug_sync_timeout 配置项的值不为 0 时,该变量的设置才有效。 + + +| **属性** | **描述** | +|--------|------------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | 无 | +| 生效范围 | SESSION | +| 是否可见 | 否,所有租户均不可见 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/27.div_precision_increment.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/27.div_precision_increment.md new file mode 100644 index 000000000..404cdab52 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/27.div_precision_increment.md @@ -0,0 +1,17 @@ +div_precision_increment +============================================ + +div_precision_increment 用于设置除法结果精度在被除数精度基础上的增量,是 MySQL 兼容功能。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 4 | +| 取值范围 | \[0, 30\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/28.explicit_defaults_for_timestamp.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/28.explicit_defaults_for_timestamp.md new file mode 100644 index 000000000..dec5d6a14 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/28.explicit_defaults_for_timestamp.md @@ -0,0 +1,17 @@ +explicit_defaults_for_timestamp +==================================================== + +explicit_defaults_for_timestamp 用于指定 timestamp 数据类型在处理默认值和空值时是否启用非标准行为。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | ON | +| 取值范围 | * OFF:不启用 * ON:启用 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/29.group_concat_max_len.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/29.group_concat_max_len.md new file mode 100644 index 000000000..da9aac0a7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/29.group_concat_max_len.md @@ -0,0 +1,15 @@ +group_concat_max_len +========================================= + +group_concat_max_len 用于设置允许的 GROUP_CONCAT() 函数结果的最大长度,单位为字节。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | uint | +| 默认值 | 1024 | +| 取值范围 | \[4, 18446744073709551615\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/3.auto_increment_offset.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/3.auto_increment_offset.md new file mode 100644 index 000000000..408714a20 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/3.auto_increment_offset.md @@ -0,0 +1,15 @@ +auto_increment_offset +========================================== + +auto_increment_offset 用于确定 AUTO_INCREMENT 列值的起点。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | uint | +| 默认值 | 1 | +| 取值范围 | \[1, 65535\] | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/30.identity.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/30.identity.md new file mode 100644 index 000000000..c38800d96 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/30.identity.md @@ -0,0 +1,15 @@ +identity +============================= + +identity 和变量 last_insert_id 是同义词,可以通过 `select @@identity` 查询。 + + +| **属性** | **描述** | +|--------|-----------------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0, 18446744073709551615\] | +| 生效范围 | SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/31.lower_case_table_names.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/31.lower_case_table_names.md new file mode 100644 index 000000000..66f3aeac1 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/31.lower_case_table_names.md @@ -0,0 +1,21 @@ +lower_case_table_names +=========================================== + +lower_case_table_names 用于设置是否对大小写敏感。 + + +| **属性** | **描述** | +|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 1 | +| 取值范围 | * 0:表示表名将按指定存储,并且比较区分大小写 * 1:表示表名以小写形式存储在磁盘上,并且比较不区分大小写 * 2:表示表名按指定存储,但以小写形式进行比较 | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | +| 是否可修改 | 否,仅在 OBServer 启动的命令行上指定,启动后不能再通过 SQL 语句修改。 | + + +**说明** + + + +该变量仅在 MySQL 模式下对 DataBase 和 Table 对象名生效。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/32.net_read_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/32.net_read_timeout.md new file mode 100644 index 000000000..05c768e12 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/32.net_read_timeout.md @@ -0,0 +1,32 @@ +net_read_timeout +===================================== + +net_read_timeout 用于中断读之前等待连接的其它数据的秒数。 +**说明** + + + +该变量仅用于兼容,OceanBase 数据库当前暂未实现该变量的功能。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 30 | +| 取值范围 | \[1, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + + +其中: + +* 当服务器从客户端读数时,net_read_timeout 指控制何时中断的超时值。 + + + +* 当服务器向客户端写时,net_write_timeout 指控制何时中断的超时值。 + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/33.net_write_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/33.net_write_timeout.md new file mode 100644 index 000000000..7d96ee1d0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/33.net_write_timeout.md @@ -0,0 +1,32 @@ +net_write_timeout +====================================== + +net_write_timeout 用于设置中断写之前等待块写入连接的秒数。 +**说明** + + + +该变量仅用于兼容,OceanBase 数据库当前暂未实现该变量的功能。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 60 | +| 取值范围 | \[1, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + + +其中: + +* 当服务器从客户端读数时,net_read_timeout 指控制何时中断的超时值。 + + + +* 当服务器向客户端写时,net_write_timeout 指控制何时中断的超时值。 + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/34.read_only.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/34.read_only.md new file mode 100644 index 000000000..312eefb09 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/34.read_only.md @@ -0,0 +1,19 @@ +read_only +============================== + +read_only 用于设置租户是否为只读模式。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 1:租户为只读模式 * 0:租户为读写模式 | +| 生效范围 | GLOBAL | + + +**说明** + + + +设置后,会影响该租户下的所有普通用户,不影响 root 权限用户。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/35.sql_auto_is_null.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/35.sql_auto_is_null.md new file mode 100644 index 000000000..f63fd6bbc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/35.sql_auto_is_null.md @@ -0,0 +1,28 @@ +sql_auto_is_null +===================================== + +sql_auto_is_null 会被一些特殊的驱动程序,例如 ODBC 使用,用于获取最后插入行的自增列值。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | OFF | +| 取值范围 | * OFF * ON | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + +当 sql_auto_is_null 为 `ON` 时,与下面两条语句等价: + +```sql +// CREATE TABLE t1 (auto_inc_column auto_increment, j int); +obclient> SELECT * FROM t1 WHERE auto_inc_column is null; + +obclient> SELECT * FROM t1 WHERE auto_inc_column = last_insert_id(); +``` + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/36.sql_select_limit.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/36.sql_select_limit.md new file mode 100644 index 000000000..941771c26 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/36.sql_select_limit.md @@ -0,0 +1,16 @@ +sql_select_limit +===================================== + +sql_select_limit 用于设置一个 select 查询允许返回的最大行数。如果一个 select 中包含了 limit 语句,那么 limit 的值比 sql_select_limit 的优先级高,默认不限制 select 返回的行数。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 9223372036854775807 | +| 取值范围 | \[0, 9223372036854775807\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/37.timestamp.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/37.timestamp.md new file mode 100644 index 000000000..5178c843f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/37.timestamp.md @@ -0,0 +1,15 @@ +timestamp +============================== + +TIMESTAMP 是时间戳,单位为秒,该变量影响 `select now(6) `的结果。 + + +| **属性** | **描述** | +|--------|--------------------| +| 参数类型 | numeric | +| 默认值 | 0 | +| 取值范围 | \[0, 253402272000) | +| 生效范围 | SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/38.tx_read_only.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/38.tx_read_only.md new file mode 100644 index 000000000..1ef72cb2d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/38.tx_read_only.md @@ -0,0 +1,20 @@ +tx_read_only +================================= + +tx_read_only 用于设置是否为只读事务。 + + +| **属性** | **描述** | +|---------|-------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | * 1:只读事务 * 0:不是只读事务 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + +**说明** + + + +设置后,仅影响该用户,不影响其他用户。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/39.version.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/39.version.md new file mode 100644 index 000000000..65e715b47 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/39.version.md @@ -0,0 +1,16 @@ +version +============================ + +version 用于设置服务器的版本号。 + + +| **属性** | **描述** | +|--------|---------| +| 参数类型 | varchar | +| 默认值 | 5.6.25 | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/4.autocommit.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/4.autocommit.md new file mode 100644 index 000000000..52a5be13e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/4.autocommit.md @@ -0,0 +1,16 @@ +autocommit +=============================== + +autocommit 用于设置是否自动提交事务。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 1:自动提交 * 0:不自动提交 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/40.sql_warnings.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/40.sql_warnings.md new file mode 100644 index 000000000..f46123253 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/40.sql_warnings.md @@ -0,0 +1,15 @@ +sql_warnings +================================= + +sql_warnings 用于在出现告警时控制单行 INSERT 语句是否生成信息字符串。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | OFF | +| 取值范围 | * ON:生成一个信息字符串 * OFF:不生成信息字符串 | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/41.max_user_connections.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/41.max_user_connections.md new file mode 100644 index 000000000..40ac4b7f0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/41.max_user_connections.md @@ -0,0 +1,19 @@ +max_user_connections +========================================= + +max_user_connections 用于指定单个用户可以向 OBServer 建立的连接数,设置为 0 时表示不限制连接数。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0, 4294967295\] | +| 生效范围 | * GLOBAL * SESSION | + + +**说明** + + + +该变量不能通过 `alter session set xxx = yyy; `语句的方式使其仅在当前 Session 生效,只能通过 `set global xxx = yyy` 语句的方式使全局生效。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/42.init_connect.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/42.init_connect.md new file mode 100644 index 000000000..d666b2c5e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/42.init_connect.md @@ -0,0 +1,14 @@ +init_connect +================================= + +init_connect 用于设置服务器为每个连接的客户端执行的字符串,该字符串由一条或多条 SQL 语句组成,用分号分隔。 + + +| **属性** | **描述** | +|--------|---------| +| 参数类型 | varchar | +| 默认值 | N/A | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/43.license.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/43.license.md new file mode 100644 index 000000000..ebefcc82b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/43.license.md @@ -0,0 +1,16 @@ +license +============================ + +license 用于设置 license 的类型。 + + +| **属性** | **描述** | +|--------|---------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/44.net_buffer_length.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/44.net_buffer_length.md new file mode 100644 index 000000000..b2200aa2c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/44.net_buffer_length.md @@ -0,0 +1,19 @@ +net_buffer_length +====================================== + +net_buffer_length 用于设置 OBServer 能接受的 SQL Query 的大小。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 16384 | +| 取值范围 | \[1024, 1048576\] | +| 生效范围 | * GLOBAL * SESSION | + + +**说明** + + + +该变量不能通过 `alter session set xxx = yyy; `语句的方式使其仅在当前 Session 生效,只能通过 `set global xxx = yyy` 语句的方式使全局生效。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/45.system_time_zone.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/45.system_time_zone.md new file mode 100644 index 000000000..91cd4f6d3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/45.system_time_zone.md @@ -0,0 +1,17 @@ +system_time_zone +===================================== + +system_time_zone 用于设置服务器机器系统时区。 + + +| **属性** | **描述** | +|---------|-------------------------------------------| +| 参数类型 | varchar | +| 默认值 | CST | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否可修改 | 否,仅在 OBServer 启动的命令行上指定,启动后不能再通过 SQL 语句修改 | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/46.query_cache_size.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/46.query_cache_size.md new file mode 100644 index 000000000..694129dbf --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/46.query_cache_size.md @@ -0,0 +1,15 @@ +query_cache_size +===================================== + +query_cache_size 用于设置分配给存储历史查询结果的内存,即尚未使用的内存,单位为 Byte。 + + +| **属性** | **描述** | +|--------|-----------------------------| +| 参数类型 | uint | +| 默认值 | 1048576 | +| 取值范围 | \[0, 18446744073709551615\] | +| 生效范围 | GLOBAL | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/47.query_cache_type.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/47.query_cache_type.md new file mode 100644 index 000000000..e099f15de --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/47.query_cache_type.md @@ -0,0 +1,15 @@ +query_cache_type +===================================== + +query_cache_type 用于查询缓存类型。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | OFF | +| 取值范围 | * OFF:不缓存或检索结果。 * ON:缓存除了 `SELECT SQL_NO_CACHE ...`查询的所有结果。 * DEMAND:只缓存 `SELECT SQL_CACHE ... `查询的结果。 | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/48.sql_quote_show_create.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/48.sql_quote_show_create.md new file mode 100644 index 000000000..6fd327afe --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/48.sql_quote_show_create.md @@ -0,0 +1,14 @@ +sql_quote_show_create +========================================== + +sql_quote_show_create 用于设置是否为 `SHOW CREATE TABLE` 和 `SHOW CREATE DATABASE` 语句启动引用标识符。 + + +| **属性** | **描述** | +|--------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | true | +| 取值范围 | * true:启用 * false:不启用 | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/49.max_sp_recursion_depth.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/49.max_sp_recursion_depth.md new file mode 100644 index 000000000..c5733675b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/49.max_sp_recursion_depth.md @@ -0,0 +1,15 @@ +max_sp_recursion_depth +=========================================== + +max_sp_recursion_depth 用于设置可以递归调用任一指定存储过程的最大层次。默认值为 0 ,表示当前存储过程不可递归调用。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 255\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/5.character_set_client.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/5.character_set_client.md new file mode 100644 index 000000000..2e6b8f576 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/5.character_set_client.md @@ -0,0 +1,17 @@ +character_set_client +========================================= + +character_set_client 用于设置客户端发送语句的字符集。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | * utf8mb4 * binary * gbk | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否可以为空 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/50.sql_safe_updates.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/50.sql_safe_updates.md new file mode 100644 index 000000000..1a7295d72 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/50.sql_safe_updates.md @@ -0,0 +1,21 @@ +sql_safe_updates +===================================== + +sql_safe_updates 用于设置是否启用 MySQL 的 SQL 安全模式,默认为关闭。 +**说明** + + + +该变量仅用于兼容,OceanBase 数据库当前暂未实现该变量的功能。 + + +| **属性** | **描述** | +|---------|--------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:表示 FALSE,即关闭 * 1:表示 TRUE,即开启 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/51.ob_proxy_partition_hit.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/51.ob_proxy_partition_hit.md new file mode 100644 index 000000000..6202c17a2 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/51.ob_proxy_partition_hit.md @@ -0,0 +1,17 @@ +ob_proxy_partition_hit +=========================================== + +ob_proxy_partition_hit 用于设置 OBProxy 是否将 SQL 语句请求的数据发送到这些数据主 Partition 所在的 OBServer 上。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 1:是 * 0:否 | +| 生效范围 | SESSION | +| 是否可修改 | 否 | +| 是否可见 | 否,所有租户均不可见 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/52.ob_log_level.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/52.ob_log_level.md new file mode 100644 index 000000000..c422db784 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/52.ob_log_level.md @@ -0,0 +1,15 @@ +ob_log_level +================================= + +ob_log_level 用于设置 Session 级的日志级别,如果不指定则使用系统中的日志级别。 + + +| **属性** | **描述** | +|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | disabled | +| 取值范围 | * trace * info * warn * error | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/53.ob_max_parallel_degree.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/53.ob_max_parallel_degree.md new file mode 100644 index 000000000..a8ec77e74 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/53.ob_max_parallel_degree.md @@ -0,0 +1,15 @@ +ob_max_parallel_degree +=========================================== + +ob_max_parallel_degree 用于设置每次请求最大的并发数。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 16 | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/54.ob_query_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/54.ob_query_timeout.md new file mode 100644 index 000000000..f46f5e0ad --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/54.ob_query_timeout.md @@ -0,0 +1,16 @@ +ob_query_timeout +===================================== + +ob_query_timeout 用于设置查询超时时间,单位是微秒。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 10000000 | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/55.ob_read_consistency.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/55.ob_read_consistency.md new file mode 100644 index 000000000..c5f6cbcd3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/55.ob_read_consistency.md @@ -0,0 +1,17 @@ +ob_read_consistency +======================================== + +ob_read_consistency 用于设置读一致性级别。 + + +| **属性** | **描述** | +|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | 3 | +| 取值范围 | * 0:空字符串 * 1:FROZEN * 2:WEAK * 3:STRONG | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/56.ob_enable_transformation.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/56.ob_enable_transformation.md new file mode 100644 index 000000000..ebd72673c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/56.ob_enable_transformation.md @@ -0,0 +1,17 @@ +ob_enable_transformation +============================================= + +ob_enable_transformation 用于设置是否开启 SQL 优化器的改写功能。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不开启 * 1:开启 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/57.ob_trx_timeout.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/57.ob_trx_timeout.md new file mode 100644 index 000000000..beeb5641f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/57.ob_trx_timeout.md @@ -0,0 +1,16 @@ +ob_trx_timeout +=================================== + +ob_trx_timeout 用于设置事务超时时间,单位为微秒。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 100000000 | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/58.ob_enable_plan_cache.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/58.ob_enable_plan_cache.md new file mode 100644 index 000000000..a4b2a8eef --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/58.ob_enable_plan_cache.md @@ -0,0 +1,16 @@ +ob_enable_plan_cache +========================================= + +ob_enable_plan_cache 用于设置是否打开 Plan Cache。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:关闭 * 1:打开 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/59.ob_enable_index_direct_select.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/59.ob_enable_index_direct_select.md new file mode 100644 index 000000000..5f75ca1c4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/59.ob_enable_index_direct_select.md @@ -0,0 +1,17 @@ +ob_enable_index_direct_select +================================================== + +ob_enable_index_direct_select 用于设置是否允许用户直接查询索引表。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不允许 * 1:允许 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/6.character_set_connection.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/6.character_set_connection.md new file mode 100644 index 000000000..6749765c0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/6.character_set_connection.md @@ -0,0 +1,17 @@ +character_set_connection +============================================= + +character_set_connection 用于设置收到语句后应转换的字符集。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | * utf8mb4 * binary * gbk | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否可以为空 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/60.ob_proxy_set_trx_executed.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/60.ob_proxy_set_trx_executed.md new file mode 100644 index 000000000..d6b46da94 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/60.ob_proxy_set_trx_executed.md @@ -0,0 +1,17 @@ +ob_proxy_set_trx_executed +============================================== + +ob_proxy_set_trx_executed 用于设置用户是否通过 OBProxy 发送 `START TRANSACTION Syntax` 给 OBServer。 + + +| **属性** | **描述** | +|--------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不发送 * 1:发送 | +| 生效范围 | SESSION | +| 是否可修改 | 否 | +| 是否可见 | 否,所有租户均不可见 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/61.ob_enable_aggregation_pushdown.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/61.ob_enable_aggregation_pushdown.md new file mode 100644 index 000000000..eac829e7f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/61.ob_enable_aggregation_pushdown.md @@ -0,0 +1,16 @@ +ob_enable_aggregation_pushdown +=================================================== + +ob_enable_aggregation_pushdown 用于设置是否允许聚合操作下压。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不允许 * 1:允许 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/62.ob_last_schema_version.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/62.ob_last_schema_version.md new file mode 100644 index 000000000..129c4f8d4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/62.ob_last_schema_version.md @@ -0,0 +1,16 @@ +ob_last_schema_version +=========================================== + +ob_last_schema_version 用于设置该 Session 中最新使用的 Schema 版本号。 + +当 Proxy 的同一个连接对应到多个 Server 时,需要使用该系统变量进行 Schema 同步,故该变量只在 Session 级别生效。 + + +| **属性** | **描述** | +|--------|----------------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 9223372036854775807\] | +| 生效范围 | SESSION | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/63.ob_global_debug_sync.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/63.ob_global_debug_sync.md new file mode 100644 index 000000000..e03ea533a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/63.ob_global_debug_sync.md @@ -0,0 +1,15 @@ +ob_global_debug_sync +========================================= + +ob_global_debug_sync 用于 debug 时设置同步点,与 debug_sync 不同,设置此变量会影响所有 Session。只有 debug_sync_timeout 配置项的值不为 0 时,该设置才有效。 + + +| **属性** | **描述** | +|--------|------------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | 无 | +| 生效范围 | SESSION | +| 是否可见 | 否,所有租户均不可见 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/64.ob_proxy_global_variables_version.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/64.ob_proxy_global_variables_version.md new file mode 100644 index 000000000..8d3e6561b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/64.ob_proxy_global_variables_version.md @@ -0,0 +1,18 @@ +ob_proxy_global_variables_version +====================================================== + +ob_proxy_global_variables_version 用于设置 OBServer 返回给 OBproxy 所需的全局变量的最新版本信息。 + + +| **属性** | **描述** | +|--------|-----------------| +| 参数类型 | int | +| 默认值 | 5 | +| 取值范围 | \[0, INT64_MAX) | +| 生效范围 | SESSION | +| 是否可修改 | 否 | +| 是否可见 | 否,所有租户均不可见 | + + + +执行 `select @@ob_proxy_global_variables_version` 语句时将返回当前全局变量的最新版本号。默认值为 0,用户不可修改。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/65.ob_enable_trace_log.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/65.ob_enable_trace_log.md new file mode 100644 index 000000000..13727d894 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/65.ob_enable_trace_log.md @@ -0,0 +1,16 @@ +ob_enable_trace_log +======================================== + +ob_enable_trace_log 用于设置是否使用 trace 日志。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不使用 * 1:使用 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/66.ob_enable_hash_group_by.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/66.ob_enable_hash_group_by.md new file mode 100644 index 000000000..3ac93e381 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/66.ob_enable_hash_group_by.md @@ -0,0 +1,17 @@ +ob_enable_hash_group_by +============================================ + +ob_enable_hash_group_by 用于设置是否打开 Hash Group by 的路径。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不允许 * 1:允许 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/67.ob_enable_blk_nestedloop_join.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/67.ob_enable_blk_nestedloop_join.md new file mode 100644 index 000000000..512e67c65 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/67.ob_enable_blk_nestedloop_join.md @@ -0,0 +1,17 @@ +ob_enable_blk_nestedloop_join +================================================== + +ob_enable_blk_nestedloop_join 用于设置是否允许打开 block nested loop join。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不允许 * 1:允许 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/68.ob_bnl_join_cache_size.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/68.ob_bnl_join_cache_size.md new file mode 100644 index 000000000..65bd8c90e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/68.ob_bnl_join_cache_size.md @@ -0,0 +1,16 @@ +ob_bnl_join_cache_size +=========================================== + +ob_bnl_join_cache_size 用于设置 batch nest loop join 一次 cache 多少数据做一次 batch。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 10485760 | +| 取值范围 | \[1, 9223372036854775807\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/69.ob_org_cluster_id.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/69.ob_org_cluster_id.md new file mode 100644 index 000000000..7e700e857 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/69.ob_org_cluster_id.md @@ -0,0 +1,18 @@ +ob_org_cluster_id +====================================== + +ob_org_cluster_id 用于设置 OceanBase 集群的 CLUSTER_ID。 + +通常情况下不需要设置 ob_org_cluster_id 变量,OceanBase 数据库生成日志(clog)时会使用缺省值(即每一个 OceanBase 集群的 CLUSTER_ID)。DRC 在复制数据写入目标集群时,需要在 Session 中将该变量设置为日志中所带的 CLUSTER_ID,以免数据被循环复制。 + + +| **属性** | **描述** | +|---------|-------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 4294967295\] | +| 生效范围 | SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/7.character_set_database.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/7.character_set_database.md new file mode 100644 index 000000000..1b8648337 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/7.character_set_database.md @@ -0,0 +1,15 @@ +character_set_database +=========================================== + +character_set_database 用于设置默认数据库的字符集。 + + +| **属性** | **描述** | +|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | * utf8mb4 * binary * gbk * gb18030 * utf16 | +| 生效范围 | * GLOBAL * SESSION | +| 是否可以为空 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/70.ob_plan_cache_percentage.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/70.ob_plan_cache_percentage.md new file mode 100644 index 000000000..5ffa012b3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/70.ob_plan_cache_percentage.md @@ -0,0 +1,15 @@ +ob_plan_cache_percentage +============================================= + +ob_plan_cache_percentage 用于设置计划缓存可以使用的租户内存资源的百分比。 + + +| **属性** | **描述** | +|---------|------------| +| 参数类型 | int | +| 默认值 | 5 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/71.ob_plan_cache_evict_high_percentage.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/71.ob_plan_cache_evict_high_percentage.md new file mode 100644 index 000000000..95be9ac06 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/71.ob_plan_cache_evict_high_percentage.md @@ -0,0 +1,16 @@ +ob_plan_cache_evict_high_percentage +======================================================== + +ob_plan_cache_evict_high_percentage 用于设置触发计划缓存逐出的计划缓存限制的内存使用百分比。 + + +| **属性** | **描述** | +|---------|------------| +| 参数类型 | int | +| 默认值 | 90 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/72.ob_plan_cache_evict_low_percentage.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/72.ob_plan_cache_evict_low_percentage.md new file mode 100644 index 000000000..6bed8d75c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/72.ob_plan_cache_evict_low_percentage.md @@ -0,0 +1,15 @@ +ob_plan_cache_evict_low_percentage +======================================================= + +ob_plan_cache_evict_low_percentage 用于设置停止计划缓存逐出的计划缓存限制的内存使用百分比。 + + +| **属性** | **描述** | +|---------|------------| +| 参数类型 | int | +| 默认值 | 50 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/73.recyclebin.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/73.recyclebin.md new file mode 100644 index 000000000..f8b24190f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/73.recyclebin.md @@ -0,0 +1,16 @@ +recyclebin +=============================== + +recyclebin 用于设置是否开启回收站功能。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不开启 * 1:开启 | +| 生效范围 | * GLOBAL * SESSION | + + + +启用回收站后,删除的表及其依赖对象将放置在回收站中;当禁用回收站时,删除的表及其依赖对象不会放置在回收站中,会直接删除。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/74.ob_capability_flag.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/74.ob_capability_flag.md new file mode 100644 index 000000000..8199ccc37 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/74.ob_capability_flag.md @@ -0,0 +1,17 @@ +ob_capability_flag +======================================= + +ob_capability_flag 是 OBServer 能够提供的能力,用于和 Proxy 连接时进行能力协商,告知 Proxy 当前 OBServer 支持哪些功能,不支持哪些功能。 + + +| **属性** | **描述** | +|--------|----------------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0,18446744073709551615\] | +| 生效范围 | SESSION | +| 是否可修改 | 否 | +| 是否可见 | 否,对所有租户均不可见 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/75.ob_stmt_parallel_degree.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/75.ob_stmt_parallel_degree.md new file mode 100644 index 000000000..407805e1f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/75.ob_stmt_parallel_degree.md @@ -0,0 +1,22 @@ +ob_stmt_parallel_degree +============================================ + +ob_stmt_parallel_degree 用于设置查询的并行度,即可以并行运行的任务数。 +**说明** + + + +该变量已不再使用。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 1 | +| 取值范围 | \[1, 10240\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/76.is_result_accurate.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/76.is_result_accurate.md new file mode 100644 index 000000000..4a9cc53f7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/76.is_result_accurate.md @@ -0,0 +1,16 @@ +is_result_accurate +======================================= + +当查询带有 topk 提示时,is_result_accurate 表示结果是否正确。 + + +| **属性** | **描述** | +|---------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不正确 * 1:正确 | +| 生效范围 | SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/77.error_on_overlap_time.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/77.error_on_overlap_time.md new file mode 100644 index 000000000..981dcad35 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/77.error_on_overlap_time.md @@ -0,0 +1,16 @@ +error_on_overlap_time +========================================== + +error_on_overlap_time 是动态参数,用于设置夏令时重叠区时间发生歧义时是否作报错处理。 + + +| **属性** | **描述** | +|---------|-------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | OFF | +| 取值范围 | * ON:进行报错处理 * OFF:不进行报错处理 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/78.ob_compatibility_mode.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/78.ob_compatibility_mode.md new file mode 100644 index 000000000..92739c65d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/78.ob_compatibility_mode.md @@ -0,0 +1,17 @@ +ob_compatibility_mode +========================================== + +ob_compatibility_mode 用于指定租户的兼容模式。该系统变量只能在创建租户时指定,租户创建好之后则无法修改。 + + +| **属性** | **描述** | +|---------|---------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | MYSQL | +| 取值范围 | * MYSQL:表示兼容 MYSQL * ORACLE:表示兼容 ORACLE | +| 生效范围 | * GLOBAL * SESSION | +| 是否可修改 | 否 | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/79.ob_create_table_strict_mode.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/79.ob_create_table_strict_mode.md new file mode 100644 index 000000000..7c4f5dc27 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/79.ob_create_table_strict_mode.md @@ -0,0 +1,14 @@ +ob_create_table_strict_mode +================================================ + +`ob_create_table_strict_mode` 是动态变量,用于设置建表的严格模式。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 1:表示会严格按照 Locality 建立副本,任何副本建立失败,则建表失败。 * 0:表示全类型副本至少有 1 个,Paxos 成员组副本达到多数,则建表成功。 | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/8.character_set_results.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/8.character_set_results.md new file mode 100644 index 000000000..a82715aa8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/8.character_set_results.md @@ -0,0 +1,16 @@ +character_set_results +========================================== + +character_set_results 用于设置服务器在将结果集或错误消息发送回客户端之前应转换为的字符集。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | * utf8mb4 * binary * gbk | +| 生效范围 | * GLOBAL * SESSION | +| 是否可以为空 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/80.ob_sql_work_area_percentage.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/80.ob_sql_work_area_percentage.md new file mode 100644 index 000000000..5f06a240e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/80.ob_sql_work_area_percentage.md @@ -0,0 +1,14 @@ +ob_sql_work_area_percentage +================================================ + +ob_sql_work_area_percentage 用于 SQL 执行的租户内存百分比限制。 + + +| **属性** | **描述** | +|--------|------------| +| 参数类型 | int | +| 默认值 | 5 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/81.ob_route_policy.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/81.ob_route_policy.md new file mode 100644 index 000000000..7664cca2d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/81.ob_route_policy.md @@ -0,0 +1,16 @@ +ob_route_policy +==================================== + +ob_route_policy 用于设置 OBProxy 或 Java 客户端与 OBServer 内部重试的路由策略。 + + +| **属性** | **描述** | +|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | 1 | +| 取值范围 | * 1:READONLY_ZONE_FIRST * 2:ONLY_READONLY_ZONE * 3:UNMERGE_ZONE_FIRST * 4:UNMERGE_FOLLOWER_FIRST | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/82.ob_enable_transmission_checksum.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/82.ob_enable_transmission_checksum.md new file mode 100644 index 000000000..62a27b7b3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/82.ob_enable_transmission_checksum.md @@ -0,0 +1,16 @@ +ob_enable_transmission_checksum +==================================================== + +ob_enable_transmission_checksum 用于设置 Proxy 和 Server 之间是否进行数据包校验和,设置后实时生效。 + + +| **属性** | **描述** | +|---------|--------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不进行校验和 * 1:进行校验和 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/83.foreign_key_checks.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/83.foreign_key_checks.md new file mode 100644 index 000000000..8000b7556 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/83.foreign_key_checks.md @@ -0,0 +1,17 @@ +foreign_key_checks +================== + +foreign_key_checks 用于设置是否在 DML 中检查外建约束。 + +| **属性** | **描述** | +|---------|------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不检查外键约束 * 1:检查外键约束 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + +**说明** + +说明:该变量设置后,仅对 DML 操作有效,DDL 操作不受影响。 + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/84.ob_enable_truncate_flashback.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/84.ob_enable_truncate_flashback.md new file mode 100644 index 000000000..54dcc1c8c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/84.ob_enable_truncate_flashback.md @@ -0,0 +1,15 @@ +ob_enable_truncate_flashback +================================================= + +ob_enable_truncate_flashback 用于设置是否启用表截断的闪回。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不启用 * 1:启用 | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/85.ob_tcp_invited_nodes.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/85.ob_tcp_invited_nodes.md new file mode 100644 index 000000000..d0ad7eda5 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/85.ob_tcp_invited_nodes.md @@ -0,0 +1,14 @@ +ob_tcp_invited_nodes +========================================= + +`ob_tcp_invited_nodes` 用于设置租户的 IP 白名单,支持百分号(%) 、短横线(_) 和 IP(多个 IP 之间用逗号分隔),支持 IP 列表匹配、掩码匹配和模糊匹配。 + + +| **属性** | **描述** | +|--------|---------------| +| 参数类型 | varchar | +| 默认值 | 127.0.0.1,::1 | +| 取值范围 | 字符串长度小于 1024 | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/86.sql_throttle_current_priority.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/86.sql_throttle_current_priority.md new file mode 100644 index 000000000..29e18e2cf --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/86.sql_throttle_current_priority.md @@ -0,0 +1,15 @@ +sql_throttle_current_priority +================================================== + +sql_throttle_current_priority 用于设置限流优先级,只有 sql_throttle_current_priority 小于 sql_throttle_priority 的那些 Session 上的请求才会被限流。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 100 | +| 取值范围 | 无取值范围,推荐值100 | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/87.sql_throttle_priority.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/87.sql_throttle_priority.md new file mode 100644 index 000000000..3c372cc7f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/87.sql_throttle_priority.md @@ -0,0 +1,20 @@ +sql_throttle_priority +========================================== + +sql_throttle_priority 用于设置限流优先级。只有 sql_throttle_current_priority 小于 sql_throttle_priority 的那些 Session 上的请求才会被限流。 + + +| **属性** | **描述** | +|--------|---------------------------------------------------| +| 参数类型 | int | +| 默认值 | -1 | +| 取值范围 | 无取值范围,实际使用时与 sql_throttle_current_priority 的取值相关 | +| 生效范围 | GLOBAL | + + +**说明** + + + +如果查询的优先级小于此值,则可能不允许执行查询。 + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/88.sql_throttle_rt.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/88.sql_throttle_rt.md new file mode 100644 index 000000000..d0b2a89fe --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/88.sql_throttle_rt.md @@ -0,0 +1,15 @@ +sql_throttle_rt +==================================== + +sql_throttle_rt 用于指定 RT 值,单位为微秒。如果查询的 RT 值不小于该值,则不允许执行该查询。 + + +| **属性** | **描述** | +|--------|-----------------| +| 参数类型 | numeric | +| 默认值 | -1 | +| 取值范围 | 无取值范围,与实际业务负载相关 | +| 生效范围 | GLOBAL | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/89.sql_throttle_network.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/89.sql_throttle_network.md new file mode 100644 index 000000000..7fc734b2b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/89.sql_throttle_network.md @@ -0,0 +1,14 @@ +sql_throttle_network +========================================= + +sql_throttle_network 用于指定请求排队时间,如果请求排队时间大于或等于该值,则不允许执行查询。 + + +| **属性** | **描述** | +|--------|---------------| +| 参数类型 | numeric | +| 默认值 | -1 | +| 取值范围 | 与系统负载相关,单位 us | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/9.character_set_server.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/9.character_set_server.md new file mode 100644 index 000000000..262c56957 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/9.character_set_server.md @@ -0,0 +1,15 @@ +character_set_server +========================================= + +character_set_server 用于设置服务器字符集。 + + +| **属性** | **描述** | +|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | * utf8mb4 * binary * gbk * gb18030 * utf16 | +| 生效范围 | * GLOBAL * SESSION | +| 是否可以为空 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/90.auto_increment_cache_size.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/90.auto_increment_cache_size.md new file mode 100644 index 000000000..ce6fb7475 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/90.auto_increment_cache_size.md @@ -0,0 +1,16 @@ +auto_increment_cache_size +============================================== + +auto_increment_cache_size 用于设置缓存的自增值个数。 + + +| **属性** | **描述** | +|---------|------------------| +| 参数类型 | int | +| 默认值 | 1000000 | +| 取值范围 | \[1, 100000000\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/91.ob_enable_jit.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/91.ob_enable_jit.md new file mode 100644 index 000000000..711f388dc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/91.ob_enable_jit.md @@ -0,0 +1,17 @@ +ob_enable_jit +================================== + +ob_enable_jit 用于设置 JIT 执行引擎模式。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | OFF | +| 取值范围 | * OFF:当前 Session 不开启表达式编译执行。 * AUTO:当前 Session 表达式编译执行只有在 SQL 执行平均 RT 大于 1s 时才开启。 * FORCE:当前 Session 强制开启表达式编译执行功能。 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/92.ob_timestamp_service.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/92.ob_timestamp_service.md new file mode 100644 index 000000000..44e74cfad --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/92.ob_timestamp_service.md @@ -0,0 +1,15 @@ +ob_timestamp_service +========================================= + +ob_timestamp_service 用于指定使用何种时间戳服务。 + + +| **属性** | **描述** | +|---------|-------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | GTS | +| 取值范围 | * LTS * GTS * HA_GTS | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/93.plugin_dir.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/93.plugin_dir.md new file mode 100644 index 000000000..3e2105e8e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/93.plugin_dir.md @@ -0,0 +1,14 @@ +plugin_dir +=============================== + +plugin_dir 用于设置存放插件 DLL 的路径。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | ./plugin_dir/ | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/94.undo_retention.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/94.undo_retention.md new file mode 100644 index 000000000..f8552efe4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/94.undo_retention.md @@ -0,0 +1,39 @@ +undo_retention +=================================== + +`undo_retention` 表示系统应保留的多版本数据范围,单位为秒,在转储时控制多版本数据的回收。 + + +| **属性** | **描述** | +|--------|-------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 2^32^) | +| 生效范围 | GLOBAL | + + + +OceanBase 数据库转储的数据会保留多个版本的历史数据行,您可以通过 `undo_retention `来控制转储中保留的多版本数据范围。 + +其中: + +* 当 `undo_retention` 的值为 `0` 时,表示未开启多版本转储,即转储文件仅保留当前最新版本的行数据。 + + + + + + + + +* 当 `undo_retention` 的值大于 `0` 时,表示开启多版本转储,并且转储文件保留这段时间(多少秒)以内的多版本行数据。 + + + + + +**注意** + + + +租户开启多版本转储后,大版本合并会保留对应的增量转储文件,但 Major SSTable 中不会存放多版本数据。建议该参数不要设置过大,防止因参数过大而导致保留的 SSTable 数量超限。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/95.ob_sql_audit_percentage.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/95.ob_sql_audit_percentage.md new file mode 100644 index 000000000..99d400b05 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/95.ob_sql_audit_percentage.md @@ -0,0 +1,15 @@ +ob_sql_audit_percentage +============================================ + +ob_sql_audit_percentage 用于设置 SQL Audit 内存上限占当前租户内存的百分比。 + + +| **属性** | **描述** | +|---------|------------| +| 参数类型 | int | +| 默认值 | 10 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/96.ob_enable_sql_audit.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/96.ob_enable_sql_audit.md new file mode 100644 index 000000000..0cdd4f11e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/96.ob_enable_sql_audit.md @@ -0,0 +1,17 @@ +ob_enable_sql_audit +======================================== + +ob_enable_sql_audit 用于控制当前租户是否开启 SQL Audit 功能。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | true | +| 取值范围 | * true:表示开启 * false:表示关闭 | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + + +enable_sql_audit 为 false 时,全部的租户均不会开启 sql audit 功能。 diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/97.optimizer_use_sql_plan_baselines.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/97.optimizer_use_sql_plan_baselines.md new file mode 100644 index 000000000..210b522d7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/97.optimizer_use_sql_plan_baselines.md @@ -0,0 +1,15 @@ +optimizer_use_sql_plan_baselines +===================================================== + +`optimizer_use_sql_plan_baselines` 用于控制优化器是否会使用 Plan Baseline 计划。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:表示在新生成计划时,不再考虑 Plan Baseline 中的计划,直接使用优化器生成新计划并执行。 * 1: 表示在新生成计划时,优化器会优先使用Plan Baseline 计划,对于新的不同计划则验证通过后才使用。 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/98.optimizer_capture_sql_plan_baselines.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/98.optimizer_capture_sql_plan_baselines.md new file mode 100644 index 000000000..fe45e4f0c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/98.optimizer_capture_sql_plan_baselines.md @@ -0,0 +1,15 @@ +optimizer_capture_sql_plan_baselines +========================================================= + +`optimizer_capture_sql_plan_baselines` 用于控制是否自动捕获新计划到 Plan Baseline。 + + +| **属性** | **描述** | +|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:表示不自动捕获新计划到 plan baseline中。 * 1:表示对于新生成的计划,如果该 SQL 没有对应的 Plan Baseline,则将该计划加入到 SQL Plan Baseline, 已有 Plan Baseline 且与新计划不同, 则会触发计划演进进行验证,确定是否需要将新计划替换老的 Plan Baseline。 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/2.system-variable/99.parallel_max_servers.md b/docs/docs/docs-cn/13.reference-guide/2.system-variable/99.parallel_max_servers.md new file mode 100644 index 000000000..6bbcb43d6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/2.system-variable/99.parallel_max_servers.md @@ -0,0 +1,16 @@ +parallel_max_servers +========================================= + +parallel_max_servers 用于设置每个 Server 上并行执行(Parallel eXecution,PX)线程池的大小。 + + +| **属性** | **描述** | +|---------|-------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 1800\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/1.system-configuration-items-overview-1_2894363.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/1.system-configuration-items-overview-1_2894363.md new file mode 100644 index 000000000..dfbb974e3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/1.system-configuration-items-overview-1_2894363.md @@ -0,0 +1,71 @@ +系统配置项概述 +============================ + +OceanBase 数据库的配置项对应 OceanBase 数据库的集群参数,通过配置项可以控制集群的负载均衡、合并时间、合并方式、资源分配和模块开关等。 + +生效方式 +------------------------- + +配置项一般分为动态生效和重启生效两种方式,大部分配置项为动态生效方式,即不需要重启 OBServer 即可生效。 + +参数级别 +------------------------- + +OceanBase 数据库的配置项分为集群级别和租户级别。 + +查询某个配置项为集群级别还是租户级别的方法如下: + +```sql +obclient> SHOW PARAMETERS LIKE 'max_syslog_file_count'; ++-------+----------+----------------+----------+-----------------------+-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +| zone | svr_type | svr_ip | svr_port | name | data_type | value | info + | section | scope | source | edit_level | ++-------+----------+----------------+----------+-----------------------+-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +| zone2 | observer | +xx.xx.xx.xx + | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +| zone2 | observer | xx.xx.xx.xx | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +| zone3 | observer | xx.xx.xx.xx | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +| zone1 | observer | xx.xx.xx.xx | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +| zone1 | observer | xx.xx.xx.xx | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | ++-------+----------+----------------+----------+-----------------------+-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +5 rows in set (0.02 sec) +``` + + + +其中,`scope` 列对应的值为 `CLUSTER` 表示该配置项为集群级别;如果 `scope` 列对应的值为 `TENANT`,则表示该配置项为租户级别。 + +管理权限 +------------------------- + +配置项的管理遵循以下管理规则: + +* 系统租户可以查看和设置所有其他租户(包括系统租户)的配置项。 + + + +* 普通租户只能查看和设置本租户的配置项。 + + + + + + +当 OBServer 启动后,如果未指定配置项,则系统会使用指定配置项的默认值。更多配置项的查看和设置操作请参见 [集群参数管理](/zh-CN/6.administrator-guide/3.basic-database-management/1.oceanbase-cluster-management/7.cluster-parameter-management/1.overview-of-cluster-parameter-management.md) 章节。 + +与系统变量对比 +---------------------------- + + + +| 对比项 | 系统配置项 | 系统变量 | +|------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 生效范围 | 分为集群、Zone、机器和租户。 | 分为租户的 Global 或 Session 级别。 | +| 生效方式 | * 动态生效:`edit_level` 为`dynamic_effective`。 * 重启生效:`edit_level` 为 `static_effective` 。 | * 设置 Session 级别的变量仅对当前 Session 有效,对其他 Session 无效。 * 设置 Global 级别的变量对当前 Session 无效,需要重新登录建立新的 Session 才会生效。 | +| 修改方式 | * 支持通过 SQL 语句修改,示例如下: ```sql obclient> Alter SYSTEM SET schema_history_expire_time='1h' ``` * 支持通过启动参数修改,示例如下: ```sql cd /home/admin && ./bin/observer -o "schema_history_expire_time='1h'" ``` | 仅支持通过 SQL 语句修改,示例如下: * MySQL 模式 ```sql obclient> SET ob_query_timeout = 20000000; obclient> SET GLOBAL ob_query_timeout = 20000000; ``` * Oracle 模式 ```sql obclient> SET ob_query_timeout = 20000000; obclient> ALTER SYSTEM SET ob_query_timeout = 20000000; ``` | +| 持久化 | 持久化到内部表与配置文件,可以在 `/home/admin/oceanbase/etc/observer.config.bin` 与 `/home/admin/oceanbase/etc/observer.config.bin.history` 文件中查询该配置项。 | 仅 GLOBAL 级别的变量会持久化,SESSION 级别的变量不会进行持久化。 | +| 生命周期 | 长,从进程启动到退出。 | 短,需要租户的 Schema 创建成功以后才生效。 | +| 查询方式 | 可以使用 `SHOW PARAMETERS` 语句查询。 | 可以使用 `SHOW [GLOBAL] VARIABLES` 语句查询。 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/10.balancer_task_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/10.balancer_task_timeout.md new file mode 100644 index 000000000..b1f91723f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/10.balancer_task_timeout.md @@ -0,0 +1,14 @@ +balancer_task_timeout +========================================== + +balancer_task_timeout 用于设置负载均衡等后台任务的超时时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 20m,表示 20 分钟 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/100.internal_sql_execute_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/100.internal_sql_execute_timeout.md new file mode 100644 index 000000000..297a7eb21 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/100.internal_sql_execute_timeout.md @@ -0,0 +1,14 @@ +internal_sql_execute_timeout +================================================= + +internal_sql_execute_timeout 用于设置系统内部 DML 请求的时间间隔。 + + +| **属性** | **描述** | +|------------------|-------------------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[1000us, 10min\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/101.large_query_worker_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/101.large_query_worker_percentage.md new file mode 100644 index 000000000..1f467551a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/101.large_query_worker_percentage.md @@ -0,0 +1,15 @@ +large_query_worker_percentage +================================================== + +large_query_worker_percentage 用于设置预留给处理大查询的工作线程百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 30 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/102.large_query_threshold.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/102.large_query_threshold.md new file mode 100644 index 000000000..93cd07ad4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/102.large_query_threshold.md @@ -0,0 +1,15 @@ +large_query_threshold +========================================== + +large_query_threshold 用于设置查询执行时间的阈值。超过时间的请求可能被暂停,暂停后自动被判断为大查询,执行大查询调度策略。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 5s | +| 取值范围 | \[1ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/103.leak_mod_to_check.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/103.leak_mod_to_check.md new file mode 100644 index 000000000..713e9b9c4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/103.leak_mod_to_check.md @@ -0,0 +1,15 @@ +leak_mod_to_check +====================================== + +leak_mod_to_check 用于内存泄露检查,是属于内部调试的功能。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | none | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/104.lease_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/104.lease_time.md new file mode 100644 index 000000000..f97f0f66a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/104.lease_time.md @@ -0,0 +1,16 @@ +lease_time +=============================== + +lease_time 用于设置心跳租约时长。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 10s | +| 取值范围 | \[1s, 5min\] | +| 是否重启 OBServer 生效 | 否 | + + + +RootService 在心跳租约时长内未收到 OBServer 的心跳信息,则认为 OBServer 为脱机状态。 一般不建议修改该配置项。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/105.location_cache_cpu_quota.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/105.location_cache_cpu_quota.md new file mode 100644 index 000000000..2d800884d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/105.location_cache_cpu_quota.md @@ -0,0 +1,14 @@ +location_cache_cpu_quota +============================================= + +location_cache_cpu_quota 用于设置位置缓存模块使用的 CPU 配额。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 5 | +| 取值范围 | \[0, 10\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/106.location_cache_expire_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/106.location_cache_expire_time.md new file mode 100644 index 000000000..98bff25e6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/106.location_cache_expire_time.md @@ -0,0 +1,15 @@ +location_cache_expire_time +=============================================== + +location_cache_expire_time 用于设置分区位置缓存中分区位置信息的过期时长。不建议修改。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 600s | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/107.location_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/107.location_cache_priority.md new file mode 100644 index 000000000..ec415af95 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/107.location_cache_priority.md @@ -0,0 +1,15 @@ +location_cache_priority +============================================ + +location_cache_priority 用于设置位置缓存在系统缓存服务中的优先级。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 1000 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/108.location_cache_refresh_min_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/108.location_cache_refresh_min_interval.md new file mode 100644 index 000000000..63ab8d15c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/108.location_cache_refresh_min_interval.md @@ -0,0 +1,15 @@ +location_cache_refresh_min_interval +======================================================== + +location_cache_refresh_min_interval 用于设置位置缓存刷新请求的最小间隔,防止产生过多刷新请求造成系统压力过大。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[0s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/109.location_fetch_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/109.location_fetch_concurrency.md new file mode 100644 index 000000000..16401c614 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/109.location_fetch_concurrency.md @@ -0,0 +1,14 @@ +location_fetch_concurrency +=============================================== + +location_fetch_concurrency 用于设置单机 location_cache 刷新的最大并发数。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 20 | +| 取值范围 | \[1, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/11.balancer_tolerance_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/11.balancer_tolerance_percentage.md new file mode 100644 index 000000000..511b10ff0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/11.balancer_tolerance_percentage.md @@ -0,0 +1,14 @@ +balancer_tolerance_percentage +================================================== + +balancer_tolerance_percentage 用于设置负载均衡策略中,租户内多个 UNIT 间磁盘不均衡程度的宽容度,如果在均值 + 或 - 宽容度范围之内,不会触发执行均衡动作。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/110.location_refresh_thread_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/110.location_refresh_thread_count.md new file mode 100644 index 000000000..8a60091fe --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/110.location_refresh_thread_count.md @@ -0,0 +1,15 @@ +location_refresh_thread_count +================================================== + +location_refresh_thread_count 用于设置 OBServer 从 RootService 中获取分区位置信息的线程数量。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 4 | +| 取值范围 | \[2, 64\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/111.log_archive_checkpoint_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/111.log_archive_checkpoint_interval.md new file mode 100644 index 000000000..0f6faf054 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/111.log_archive_checkpoint_interval.md @@ -0,0 +1,14 @@ +log_archive_checkpoint_interval +==================================================== + +log_archive_checkpoint_interval 用于设置冷数据的日志归档检查点的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[5s, 1h\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/112.log_archive_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/112.log_archive_concurrency.md new file mode 100644 index 000000000..3524cd692 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/112.log_archive_concurrency.md @@ -0,0 +1,14 @@ +log_archive_concurrency +============================================ + +log_archive_concurrency 用于设置日志归档的并发度。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/113.log_restore_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/113.log_restore_concurrency.md new file mode 100644 index 000000000..c157c8673 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/113.log_restore_concurrency.md @@ -0,0 +1,14 @@ +log_restore_concurrency +============================================ + +log_restore_concurrency 用于设置恢复日志的并发度。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/114.major_freeze_duty_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/114.major_freeze_duty_time.md new file mode 100644 index 000000000..3cba8505c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/114.major_freeze_duty_time.md @@ -0,0 +1,15 @@ +major_freeze_duty_time +=========================================== + +major_freeze_duty_time 用于设置每日定时冻结和合并的触发时刻。 + + +| **属性** | **描述** | +|------------------|------------------| +| 参数类型 | 时刻 | +| 默认值 | 02:00 | +| 取值范围 | \[00:00, 23:59\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/115.max_kept_major_version_number.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/115.max_kept_major_version_number.md new file mode 100644 index 000000000..2c69ae0ab --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/115.max_kept_major_version_number.md @@ -0,0 +1,15 @@ +max_kept_major_version_number +================================================== + +max_kept_major_version_number 用于设置数据保留的冻结版本数量。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[1, 16\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/116.max_string_print_length.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/116.max_string_print_length.md new file mode 100644 index 000000000..1d760670b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/116.max_string_print_length.md @@ -0,0 +1,15 @@ +max_string_print_length +============================================ + +max_string_print_length 用于设置打印系统日志时,单行日志最大长度。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 500 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/117.max_syslog_file_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/117.max_syslog_file_count.md new file mode 100644 index 000000000..ea70390f6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/117.max_syslog_file_count.md @@ -0,0 +1,16 @@ +max_syslog_file_count +========================================== + +max_syslog_file_count 用于设置在回收日志文件之前可以容纳的日志文件数量。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +每个日志文件最多可以占用 256 MB 的磁盘空间。 当该配置项的值为 0 时,不会删除任何日志文件。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/118.merge_stat_sampling_ratio.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/118.merge_stat_sampling_ratio.md new file mode 100644 index 000000000..ae79ad3c0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/118.merge_stat_sampling_ratio.md @@ -0,0 +1,14 @@ +merge_stat_sampling_ratio +============================================== + +merge_stat_sampling_ratio 用于设置合并时候数据列统计信息的采样率。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/119.major_compact_trigger.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/119.major_compact_trigger.md new file mode 100644 index 000000000..82ca308b8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/119.major_compact_trigger.md @@ -0,0 +1,16 @@ +major_compact_trigger +========================================== + +major_compact_trigger 用于设置多少次小合并触发一次全局合并。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 5 | +| 取值范围 | \[0, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 major_compact_trigger 配置项的取值为 0 时,表示关闭小合并。该配置项与配置项 minor_freeze_times 的功能相同。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/12.balancer_emergency_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/12.balancer_emergency_percentage.md new file mode 100644 index 000000000..33b88539f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/12.balancer_emergency_percentage.md @@ -0,0 +1,15 @@ +balancer_emergency_percentage +================================================== + +balancer_emergency_percentage 用于设置 UNIT 负载阈值,即当 UNIT 负载超过该阈值时,允许开启副本向外迁移,即使在合并期间也执行负载均衡。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/120.memory_chunk_cache_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/120.memory_chunk_cache_size.md new file mode 100644 index 000000000..56d8f1d35 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/120.memory_chunk_cache_size.md @@ -0,0 +1,16 @@ +memory_chunk_cache_size +============================================ + +memory_chunk_cache_size 用于设置内存分配器缓存的内存块容量。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 0M | +| 取值范围 | \[0M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +当 memory_chunk_cache_size 配置项的值为 0 时,表示系统自适应。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/121.memory_limit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/121.memory_limit.md new file mode 100644 index 000000000..0cb45a9c7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/121.memory_limit.md @@ -0,0 +1,48 @@ +memory_limit +================================= + +memory_limit 表示可用的总内存大小。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 0 | +| 取值范围 | \[0M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +memory_limit 的默认值为 0。如果该值不为 0,则系统会忽略 memory_limit_percentage 的设置而优先使用 memory_limit 配置的值。例如,一台物理机的内存为 100 G,memory_limit_percentage 设置为 80,表示使用 80% 的内存,而 memory_limit 参数设置为 90G,则实际物理机上 OceanBase 数据库可分配的内存使用 memory_limit 的配置,即 90 G。 + +使用注意事项: + +* memory_limit 的默认单位为 MB。 + + 例如,`memory_limit='40G' `表示设置 OceanBase 数据库进程的使用内存上限是40 GB。由于默认单位为 MB,则 `memory_limit=40960 `与 `memory_limit='40G' `设置的值相同。 + + +* memory_limit 的值目前无上限。如果设置的内存最大上限超过了实际的物理内存总和,则会导致系统中其他按总内存计算的值偏大。 + + + +* 如果希望限制运行中的 OceanBase 数据库的内存大小,可以直接修改 memory_limit 的值,使其达到预期。设置后,后台参数 Reload 线程会使其动态生效,无需重启。但是在设置时,需要保证 memory_limit 的值小于系统总 hold 值。 + + + **注意** + + + + `memory_limit `的值必须大于 OBServer 实际已使用的内存。 + + 查询当前已使用的内存数(单位:GB)的方法如下: + + ```sql + obclient> SELECT value/1024/1024/1024 used_gb FROM v$sysstat WHERE name LIKE '%observer memory%' AND con_id = 1 AND stat_id=140008 AND name='observer memory used size'; + ``` + + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/122.memory_limit_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/122.memory_limit_percentage.md new file mode 100644 index 000000000..69168b64c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/122.memory_limit_percentage.md @@ -0,0 +1,15 @@ +memory_limit_percentage +============================================ + +memory_limit_percentage 用于设置系统总可用内存大小占总内存大小的百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[10, 90\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/123.memory_reserved.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/123.memory_reserved.md new file mode 100644 index 000000000..520b243dd --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/123.memory_reserved.md @@ -0,0 +1,15 @@ +memory_reserved +==================================== + +memory_reserved 用于设置系统预留内存的大小。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 容量单位 | +| 默认值 | 500M | +| 取值范围 | \[10M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/124.merge_thread_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/124.merge_thread_count.md new file mode 100644 index 000000000..69965508f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/124.merge_thread_count.md @@ -0,0 +1,16 @@ +merge_thread_count +======================================= + +`merge_thread_count` 用于设置每日合并工作的线程数。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 256\] | +| 是否重启 OBServer 生效 | 否 | + + + +该配置项的值为 `0` 时,合并的工作进程数的计算方式为 `min{10,cpu_cnt*0.3}`,其中 `cpu_cnt` 为系统 CPU 的数量。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/125.merger_check_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/125.merger_check_interval.md new file mode 100644 index 000000000..0db8acc3b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/125.merger_check_interval.md @@ -0,0 +1,15 @@ +merger_check_interval +========================================== + +merger_check_interval 用于设置合并状态检查线程的调度间隔。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 10m,表示 10 分钟 | +| 取值范围 | \[10s, 60m\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/126.merger_completion_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/126.merger_completion_percentage.md new file mode 100644 index 000000000..df43011cf --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/126.merger_completion_percentage.md @@ -0,0 +1,15 @@ +merger_completion_percentage +================================================= + +merger_completion_percentage 用于设置合并完成副本数的百分比阈值,达到该阈值则认为本轮合并完成调度。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[5, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/127.merger_switch_leader_duration_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/127.merger_switch_leader_duration_time.md new file mode 100644 index 000000000..9c8e996f6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/127.merger_switch_leader_duration_time.md @@ -0,0 +1,15 @@ +merger_switch_leader_duration_time +======================================================= + +merger_switch_leader_duration_time 用于设置每日合并时批量切主的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 3m,表示 3 分钟 | +| 取值范围 | \[0s, 30\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/128.merger_warm_up_duration_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/128.merger_warm_up_duration_time.md new file mode 100644 index 000000000..fc5160917 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/128.merger_warm_up_duration_time.md @@ -0,0 +1,15 @@ +merger_warm_up_duration_time +================================================= + +merger_warm_up_duration_time 用于设置合并时,新版基线数据的预热时间。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s, 60m\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/129.max_px_worker_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/129.max_px_worker_count.md new file mode 100644 index 000000000..79fe90bf9 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/129.max_px_worker_count.md @@ -0,0 +1,15 @@ +max_px_worker_count +======================================== + +max_px_worker_count 用于设置 SQL 并行查询引擎使用的最大线程数。 + + +| **属** **性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 64 | +| 取值范围 | \[0, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/13.balance_blacklist_failure_threshold.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/13.balance_blacklist_failure_threshold.md new file mode 100644 index 000000000..8e953d73e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/13.balance_blacklist_failure_threshold.md @@ -0,0 +1,14 @@ +balance_blacklist_failure_threshold +======================================================== + +balance_blacklist_failure_threshold 用于设置副本迁移等后台任务连续失败次数的阈值。副本迁移等后台任务连续失败次数超过该阈值后,将被放入黑名单。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 5 | +| 取值范围 | \[0, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/130.migration_disable_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/130.migration_disable_time.md new file mode 100644 index 000000000..b3eb26810 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/130.migration_disable_time.md @@ -0,0 +1,15 @@ +migration_disable_time +=========================================== + +migration_disable_time 用于设置因磁盘满等原因导致某个节点数据迁入失败时的暂停迁入时长。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 3600s | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/131.min_observer_version.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/131.min_observer_version.md new file mode 100644 index 000000000..1c94be0ed --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/131.min_observer_version.md @@ -0,0 +1,15 @@ +min_observer_version +========================================= + +`min_observer_version` 用于设置本集群最低的 OBServer 应用程序版本号。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | 3.1.0 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/132.minor_deferred_gc_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/132.minor_deferred_gc_time.md new file mode 100644 index 000000000..966dcf0f6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/132.minor_deferred_gc_time.md @@ -0,0 +1,15 @@ +minor_deferred_gc_time +=========================================== + +minor_deferred_gc_time 用于设置合并之后 SSTable 延迟回收的时间间隔。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s, 24h\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/133.minor_freeze_times.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/133.minor_freeze_times.md new file mode 100644 index 000000000..512d341ff --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/133.minor_freeze_times.md @@ -0,0 +1,19 @@ +minor_freeze_times +======================================= + +minor_freeze_times 用于设置多少次小合并触发一次全局合并。值为 0 时,表示关闭小合并。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 5 | +| 取值范围 | \[0, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +minor_freeze_times 配置项与 major_compact_trigger 配置项具有相同功能。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/134.minor_warm_up_duration_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/134.minor_warm_up_duration_time.md new file mode 100644 index 000000000..267ecdd4c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/134.minor_warm_up_duration_time.md @@ -0,0 +1,16 @@ +minor_warm_up_duration_time +================================================ + +minor_warm_up_duration_time 用于设置小合并产生新转储文件的预热时间。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[0s, 60m\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 minor_warm_up_duration_time 配置项的值为 0s 时,表示不进行预热。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/135.mysql_port.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/135.mysql_port.md new file mode 100644 index 000000000..b9a7d5346 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/135.mysql_port.md @@ -0,0 +1,15 @@ +mysql_port +=============================== + +mysql_port 用于设置 SQL 服务协议端口号。 + + +| **属性** | **描述** | +|------------------|-----------------| +| 参数类型 | 整型 | +| 默认值 | 2880 | +| 取值范围 | \[1025, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/136.minor_merge_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/136.minor_merge_concurrency.md new file mode 100644 index 000000000..4cf41f71c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/136.minor_merge_concurrency.md @@ -0,0 +1,14 @@ +minor_merge_concurrency +============================================ + +minor_merge_concurrency 用于设置小合并时的并发线程数。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 64\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/137.multiblock_read_gap_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/137.multiblock_read_gap_size.md new file mode 100644 index 000000000..c00f22438 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/137.multiblock_read_gap_size.md @@ -0,0 +1,14 @@ +multiblock_read_gap_size +============================================= + +multiblock_read_gap_size 用于设置一次 IO 聚合读取块缓存的最大容量。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 容量单位 | +| 默认值 | 0K | +| 取值范围 | \[0k, 2M\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/138.multiblock_read_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/138.multiblock_read_size.md new file mode 100644 index 000000000..eb2d0f9f2 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/138.multiblock_read_size.md @@ -0,0 +1,15 @@ +multiblock_read_size +========================================= + +multiblock_read_size 用于设置读取数据时 IO 聚合大小。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 容量单位 | +| 默认值 | 128k | +| 取值范围 | \[0K, 2M\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/139.micro_block_merge_verify_level.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/139.micro_block_merge_verify_level.md new file mode 100644 index 000000000..859ae6602 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/139.micro_block_merge_verify_level.md @@ -0,0 +1,14 @@ +micro_block_merge_verify_level +=================================================== + +micro_block_merge_verify_level 用于设置合并时宏块的校验级别。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | * 0:表示不做校验 * 1:表示验证编码算法,将读取编码后的微块以确保数据正确 * 2:表示验证编码和压缩算法,除编码验证外,还将对压缩块进行解压缩以确保数据正确 * 3:表示验证编码,压缩算法和丢失写保护 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/14.balance_blacklist_retry_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/14.balance_blacklist_retry_interval.md new file mode 100644 index 000000000..c0fdbee49 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/14.balance_blacklist_retry_interval.md @@ -0,0 +1,15 @@ +balance_blacklist_retry_interval +===================================================== + +balance_blacklist_retry_interval 用于设置副本迁移等后台任务被放入黑名单后的重试时间间隔。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 30m,表示 30 分钟 | +| 取值范围 | \[0s, 180m\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/140.migrate_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/140.migrate_concurrency.md new file mode 100644 index 000000000..ed2291ef5 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/140.migrate_concurrency.md @@ -0,0 +1,14 @@ +migrate_concurrency +======================================== + +migrate_concurrency 用于控制控制内部数据迁移的并发度。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[0, 64\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/141.minor_compact_trigger.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/141.minor_compact_trigger.md new file mode 100644 index 000000000..7b09cfec9 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/141.minor_compact_trigger.md @@ -0,0 +1,16 @@ +minor_compact_trigger +========================================== + +minor_compact_trigger 用于控制分层转储触发向下一层下压的阈值。当该层的 Mini SSTable 总数达到设定的阈值时,所有 SSTable 都会被下压到下一层,组成新的 Minor SSTable。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[0, 16\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 minor_compact_trigger 的值为 0 时,OceanBase 数据库仍会进行分层转储,即此时 MemTable 仍然会 Dump 为 Mini SSTable,但后续会立即调度下压合并生成新的 Minor SSTable,替代原有的 Minor SSTable。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/142.memstore_limit_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/142.memstore_limit_percentage.md new file mode 100644 index 000000000..876ee244b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/142.memstore_limit_percentage.md @@ -0,0 +1,20 @@ +memstore_limit_percentage +============================================== + +memstore_limit_percentage 用于设置租户使用 memstore 的内存占其总可用内存的百分比。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 50 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + + +memstore_limit_percentage 配置项用于计算 Memstore_limit 的值: + +memstore_limit_percentage = memstore_limit / min_memory + +其中,min_memory 为创建租户时指定的值。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/143.net_thread_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/143.net_thread_count.md new file mode 100644 index 000000000..4c27f58d7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/143.net_thread_count.md @@ -0,0 +1,16 @@ +net_thread_count +===================================== + +net_thread_count 用于设置网络 I/O 线程数。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 12 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 net_thread_count 配置项值为 8 时,表示 RPC 和 MySQL 的 libeasy 的 I/O 线程各为 8 个线程。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/144.obconfig_url.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/144.obconfig_url.md new file mode 100644 index 000000000..794a606dd --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/144.obconfig_url.md @@ -0,0 +1,15 @@ +obconfig_url +================================= + +obconfig_url 用于设置 OBConfig 服务的 URL 地址。OBServer 从指定 URL 获取 RootService 的地址。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/145.ob_enable_batched_multi_statement.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/145.ob_enable_batched_multi_statement.md new file mode 100644 index 000000000..00ea52931 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/145.ob_enable_batched_multi_statement.md @@ -0,0 +1,14 @@ +ob_enable_batched_multi_statement +====================================================== + +ob_enable_batched_multi_statement 用于设置是否启用批处理多条语句的功能。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False:不启用 * True:启用 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/146.partition_table_check_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/146.partition_table_check_interval.md new file mode 100644 index 000000000..709ce7b0e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/146.partition_table_check_interval.md @@ -0,0 +1,15 @@ +partition_table_check_interval +=================================================== + +partition_table_check_interval 用于设置 OBServer 从分区表中删除不存在的副本的时间间隔。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 30m,表示 30 分钟 | +| 取值范围 | \[1m, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/147.partition_table_scan_batch_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/147.partition_table_scan_batch_count.md new file mode 100644 index 000000000..3191bd294 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/147.partition_table_scan_batch_count.md @@ -0,0 +1,15 @@ +partition_table_scan_batch_count +===================================================== + +partition_table_scan_batch_count 用于设置批量读取分区表信息的数量。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 999 | +| 取值范围 | \[1, 65536\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/148.plan_cache_evict_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/148.plan_cache_evict_interval.md new file mode 100644 index 000000000..58952d0f7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/148.plan_cache_evict_interval.md @@ -0,0 +1,15 @@ +plan_cache_evict_interval +============================================== + +plan_cache_evict_interval 用于设置执行计划缓存的淘汰时间间隔。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[0s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/149.px_task_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/149.px_task_size.md new file mode 100644 index 000000000..737452cbc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/149.px_task_size.md @@ -0,0 +1,15 @@ +px_task_size +================================= + +px_task_size 用于设置 SQL 并行查询引擎每个任务处理的数据量大小。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 2M | +| 取值范围 | \[2M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/15.backup_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/15.backup_concurrency.md new file mode 100644 index 000000000..31c5f3233 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/15.backup_concurrency.md @@ -0,0 +1,15 @@ +backup_concurrency +======================================= + +backup_concurrency 用于设置备份时写文件系统的并发数量。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/150.px_workers_per_cpu_quota.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/150.px_workers_per_cpu_quota.md new file mode 100644 index 000000000..f37ddc478 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/150.px_workers_per_cpu_quota.md @@ -0,0 +1,14 @@ +px_workers_per_cpu_quota +============================================= + +px_workers_per_cpu_quota 用于设置并行执行工作线程数的比例。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[0, 20\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/151.replica_safe_remove_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/151.replica_safe_remove_time.md new file mode 100644 index 000000000..d21577a75 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/151.replica_safe_remove_time.md @@ -0,0 +1,15 @@ +replica_safe_remove_time +============================================= + +replica_safe_remove_time 用于设置已删除副本可以被清理的安全保留时间。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 2h | +| 取值范围 | \[1m, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/152.resource_hard_limit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/152.resource_hard_limit.md new file mode 100644 index 000000000..54686e811 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/152.resource_hard_limit.md @@ -0,0 +1,30 @@ +resource_hard_limit +======================================== + +resource_hard_limit 用于分配 unit 。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[1, 10000\] | +| 是否重启 OBServer 生效 | 否 | + + + +resource_hard_limit 与 resource_soft_limit 配置项一起配合使用。 + +* 如果 Server 的资源占用比少于 resource_soft_limit,则按 best_fit 来分配 Unit; + + + +* 如果 Server 的资源占用比大于 resource_soft_limit,则按照 leaset_load 来分配 Unit。 + + + + + + +在分配 CPU 和内存等资源时,资源总量是实际数量乘以该百分比的值。最终 Server 资源占比不能超过 resource_hard_limit。 + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/153.resource_soft_limit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/153.resource_soft_limit.md new file mode 100644 index 000000000..da9624b90 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/153.resource_soft_limit.md @@ -0,0 +1,16 @@ +resource_soft_limit +======================================== + +resource_soft_limit 用于设置是否开启 Unit 均衡。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 50 | +| 取值范围 | \[1, 10000\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 resource_soft_limit 配置项取值小于 100 时, 表示 Unit 均衡开关打开;当时 resource_soft_limit 配置项取值大于等于 100 时,表示 Unit 均衡开关关闭。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/154.rootservice_async_task_queue_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/154.rootservice_async_task_queue_size.md new file mode 100644 index 000000000..15cb38db8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/154.rootservice_async_task_queue_size.md @@ -0,0 +1,15 @@ +rootservice_async_task_queue_size +====================================================== + +rootservice_async_task_queue_size 用于设置 RootService 内部异步任务队列的大小。 + + +| **属性** | **描述** | +|------------------|---------------| +| 参数类型 | 整型 | +| 默认值 | 16384 | +| 取值范围 | \[8, 131072\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/155.rootservice_async_task_thread_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/155.rootservice_async_task_thread_count.md new file mode 100644 index 000000000..092f4dd11 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/155.rootservice_async_task_thread_count.md @@ -0,0 +1,15 @@ +rootservice_async_task_thread_count +======================================================== + +rootservice_async_task_thread_count 用于设置 RootService 内部异步任务使用的线程池大小。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 4 | +| 取值范围 | \[1, 10\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/156.rootservice_list.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/156.rootservice_list.md new file mode 100644 index 000000000..5a8ddff94 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/156.rootservice_list.md @@ -0,0 +1,15 @@ +rootservice_list +===================================== + +rootservice_list 用于显示 RootService 及其副本所在的机器列表。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/157.rootservice_ready_check_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/157.rootservice_ready_check_interval.md new file mode 100644 index 000000000..34331a145 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/157.rootservice_ready_check_interval.md @@ -0,0 +1,15 @@ +rootservice_ready_check_interval +===================================================== + +rootservice_ready_check_interval 用于设置 RootService 启动后等待和检查集群状态的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------------| +| 参数类型 | 时间类型 | +| 默认值 | 3s | +| 取值范围 | \[100000us, 1m\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/158.row_compaction_update_limit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/158.row_compaction_update_limit.md new file mode 100644 index 000000000..7c78c40da --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/158.row_compaction_update_limit.md @@ -0,0 +1,15 @@ +row_compaction_update_limit +================================================ + +row_compaction_update_limit 用于设置触发内存中行内数据合并的修改次数。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 6 | +| 取值范围 | \[1, 6400\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/159.row_purge_thread_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/159.row_purge_thread_count.md new file mode 100644 index 000000000..ab333bb25 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/159.row_purge_thread_count.md @@ -0,0 +1,15 @@ +row_purge_thread_count +=========================================== + +row_purge_thread_count 用于设置执行内存中行内数据合并的最大工作线程数。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 4 | +| 取值范围 | \[1, 64\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/16.backup_dest.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/16.backup_dest.md new file mode 100644 index 000000000..0e7963013 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/16.backup_dest.md @@ -0,0 +1,19 @@ +backup_dest +================================ + +backup_dest 用于设置基线备份和日志归档的路径。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + +**注意** + + + +备份进行过程中不可修改 backup_dest 配置项。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/160.rpc_port.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/160.rpc_port.md new file mode 100644 index 000000000..1f4c3c2e0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/160.rpc_port.md @@ -0,0 +1,14 @@ +rpc_port +============================= + +rpc_port 用于设置远程访问的协议端口号。 + + +| **属性** | **描述** | +|------------------|-----------------| +| 参数类型 | 整型 | +| 默认值 | 2500 | +| 取值范围 | \[1025, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/161.rpc_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/161.rpc_timeout.md new file mode 100644 index 000000000..f1b83fb0c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/161.rpc_timeout.md @@ -0,0 +1,15 @@ +rpc_timeout +================================ + +rpc_timeout 用于设置集群内部请求的超时时间。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 时间类型 | +| 默认值 | 2s | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/162.restore_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/162.restore_concurrency.md new file mode 100644 index 000000000..bc37b4303 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/162.restore_concurrency.md @@ -0,0 +1,15 @@ +restore_concurrency +======================================== + +restore_concurrency 用于设置从备份恢复租户数据时的最大并发度。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 512\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/163.rootservice_memory_limit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/163.rootservice_memory_limit.md new file mode 100644 index 000000000..0ca6a8cbf --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/163.rootservice_memory_limit.md @@ -0,0 +1,15 @@ +rootservice_memory_limit +============================================= + +rootservice_memory_limit 用于设置 RootService 的最大内存容量限制。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 2G | +| 取值范围 | \[2G, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/164.rebuild_replica_data_lag_threshold.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/164.rebuild_replica_data_lag_threshold.md new file mode 100644 index 000000000..2b7135082 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/164.rebuild_replica_data_lag_threshold.md @@ -0,0 +1,17 @@ +rebuild_replica_data_lag_threshold +======================================================= + +rebuild_replica_data_lag_threshold 用于设置备副本的事务日志和主副本差距的阈值,当超过该阈值时,会触发副本重建。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 容量单位 | +| 默认值 | 50GB | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +rebuild_replica_data_lag_threshold 配置项的值为 0 时,表示不触发副本重建。 + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/165.schema_history_expire_time-1.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/165.schema_history_expire_time-1.md new file mode 100644 index 000000000..aedd0c8d0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/165.schema_history_expire_time-1.md @@ -0,0 +1,14 @@ +schema_history_expire_time +=============================================== + +schema_history_expire_time 用于设置元数据历史数据过期时间。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 7d,d 表示天 | +| 取值范围 | \[1h, 30d\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/166.ssl_client_authentication.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/166.ssl_client_authentication.md new file mode 100644 index 000000000..57c270888 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/166.ssl_client_authentication.md @@ -0,0 +1,19 @@ +ssl_client_authentication +============================================== + +ssl_client_authentication 用于设置是否开启 SSL 连接功能。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False:不开启 * True:开启 | +| 是否重启 OBServer 生效 | 是 | + + +**注意** + + + +ssl_client_authentication 配置后,仅在服务器重新启动所有 ca、cert、key 等文件后才生效。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/167.server_check_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/167.server_check_interval.md new file mode 100644 index 000000000..550cf3001 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/167.server_check_interval.md @@ -0,0 +1,15 @@ +server_check_interval +========================================== + +server_check_interval 用于设置 Server 表一致性检查的时间间隔。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/168.server_data_copy_in_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/168.server_data_copy_in_concurrency.md new file mode 100644 index 000000000..75c1eb948 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/168.server_data_copy_in_concurrency.md @@ -0,0 +1,15 @@ +server_data_copy_in_concurrency +==================================================== + +server_data_copy_in_concurrency 用于设置单个节点迁入数据的最大并发数。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[1, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/169.server_data_copy_out_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/169.server_data_copy_out_concurrency.md new file mode 100644 index 000000000..5f7ada349 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/169.server_data_copy_out_concurrency.md @@ -0,0 +1,15 @@ +server_data_copy_out_concurrency +===================================================== + +server_data_copy_out_concurrency 用于设置单个节点迁出数据的最大并发数。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[1, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/17.backup_net_limit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/17.backup_net_limit.md new file mode 100644 index 000000000..09d944a74 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/17.backup_net_limit.md @@ -0,0 +1,15 @@ +backup_net_limit +===================================== + +backup_net_limit 用于设置集群备份的总带宽。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 0M | +| 取值范围 | \[0M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/170.server_permanent_offline_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/170.server_permanent_offline_time.md new file mode 100644 index 000000000..2fb33f5d9 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/170.server_permanent_offline_time.md @@ -0,0 +1,38 @@ +server_permanent_offline_time +================================================== + +server_permanent_offline_time 用于设置节点心跳中断的时间阈值,即节点心跳中断多久后认为其被永久下线,永久下线的节点上的数据副本需要被自动补足。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 3600s | +| 取值范围 | \[20s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +通过设置该配置项,可以避免不必要的副本复制,仅当副本丢失超出该时长后系统才启动永久下线节点上数据副本的复制。 + +该配置项的适用场景及建议值如下: + +* OceanBase 数据库版本升级场景:建议将该配置项的值设置为 `72h` + + **说明** + + + + 在使用 OCP V2.3.5 及以上版本对 OceanBase 数据库 V2.1.2 及以上版本进行升级时,系统会自动将该配置项的值设置为 `72h`。 + + +* OBServer 硬件更换场景:建议将该配置项的值设置为 `4h` + + + +* OBServer 清空上线场景:建议将该配置项的值设置为 `10m`,使集群快速上线 + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/171.stack_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/171.stack_size.md new file mode 100644 index 000000000..72359f755 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/171.stack_size.md @@ -0,0 +1,15 @@ +stack_size +=============================== + +stack_size 用于设置程序函数调用栈的大小。 + + +| **属性** | **描述** | +|------------------|---------------| +| 参数类型 | 容量单位 | +| 默认值 | 1M | +| 取值范围 | \[512K, 20M\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/172.server_balance_critical_disk_waterlevel.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/172.server_balance_critical_disk_waterlevel.md new file mode 100644 index 000000000..dec0aa5f8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/172.server_balance_critical_disk_waterlevel.md @@ -0,0 +1,15 @@ +server_balance_critical_disk_waterlevel +============================================================ + +server_balance_critical_disk_waterlevel 用于设置磁盘空间的负载均衡功能的水位线。当磁盘水位线超过阈值时,负载均衡策略将倾向于优先考虑磁盘均衡。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/173.server_balance_disk_tolerance_percent.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/173.server_balance_disk_tolerance_percent.md new file mode 100644 index 000000000..b98b3b1da --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/173.server_balance_disk_tolerance_percent.md @@ -0,0 +1,15 @@ +server_balance_disk_tolerance_percent +========================================================== + +server_balance_disk_tolerance_percent 用于设置节点间磁盘负载均衡策略中不均衡程度的容忍度。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/174.system_memory.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/174.system_memory.md new file mode 100644 index 000000000..9a3c1b170 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/174.system_memory.md @@ -0,0 +1,19 @@ +system_memory +================================== + +`system_memory` 用于设置系统预留的内存容量。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 30G | +| 取值范围 | \[0M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + +**注意** + + + +系统预留内存不能分配给普通租户使用。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/175.server_balance_cpu_mem_tolerance_percent.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/175.server_balance_cpu_mem_tolerance_percent.md new file mode 100644 index 000000000..8557a6efc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/175.server_balance_cpu_mem_tolerance_percent.md @@ -0,0 +1,15 @@ +server_balance_cpu_mem_tolerance_percent +============================================================= + +server_balance_cpu_mem_tolerance_percent 在节点负载均衡策略中,用于设置 CPU 和内存资源不均衡的容忍度。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 5 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/176.server_cpu_quota_max.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/176.server_cpu_quota_max.md new file mode 100644 index 000000000..236faa2e8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/176.server_cpu_quota_max.md @@ -0,0 +1,14 @@ +server_cpu_quota_max +========================================= + +server_cpu_quota_max 用于设置系统可以使用的最大 CPU 配额。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 5 | +| 取值范围 | \[0, 16\] | +| 是否重启 OBServer 生效 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/177.server_cpu_quota_min.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/177.server_cpu_quota_min.md new file mode 100644 index 000000000..f6cf061dc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/177.server_cpu_quota_min.md @@ -0,0 +1,14 @@ +server_cpu_quota_min +========================================= + +server_cpu_quota_min 用于设置系统可以使用的最小 CPU 配额,系统会自动预留。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 2.5 | +| 取值范围 | \[0, 16\] | +| 是否重启 OBServer 生效 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/178.sql_audit_memory_limit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/178.sql_audit_memory_limit.md new file mode 100644 index 000000000..829164d3c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/178.sql_audit_memory_limit.md @@ -0,0 +1,15 @@ +sql_audit_memory_limit +=========================================== + +sql_audit_memory_limit 用于设置 SQL 审计数据可占用的最大内存。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 容量单位 | +| 默认值 | 3G | +| 取值范围 | \[64M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/179.sys_bkgd_io_high_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/179.sys_bkgd_io_high_percentage.md new file mode 100644 index 000000000..ccbca6e8e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/179.sys_bkgd_io_high_percentage.md @@ -0,0 +1,15 @@ +sys_bkgd_io_high_percentage +================================================ + +sys_bkgd_io_high_percentage 用于设置系统后台 IO 最高占用百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 90 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/18.backup_recovery_window.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/18.backup_recovery_window.md new file mode 100644 index 000000000..254a1bfcb --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/18.backup_recovery_window.md @@ -0,0 +1,19 @@ +backup_recovery_window +=========================================== + +backup_recovery_window 用于设置备份数据可以恢复的时间。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +备份数据恢复的时间单位为天,默认值为 0,表示不自动清理。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/180.sys_bkgd_io_low_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/180.sys_bkgd_io_low_percentage.md new file mode 100644 index 000000000..5e5fc01b7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/180.sys_bkgd_io_low_percentage.md @@ -0,0 +1,16 @@ +sys_bkgd_io_low_percentage +=============================================== + +sys_bkgd_io_low_percentage 用于设置系统后台 IO 最少占用的百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 sys_bkgd_io_low_percentage 的值为 0 时,系统根据环境自动配置比例。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/181.sys_bkgd_io_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/181.sys_bkgd_io_timeout.md new file mode 100644 index 000000000..efea2d4f2 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/181.sys_bkgd_io_timeout.md @@ -0,0 +1,14 @@ +sys_bkgd_io_timeout +======================================== + +sys_bkgd_io_timeout 系统后台 IO 请求超时时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 120s | +| 取值范围 | \[5s, 600s\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/182.sys_bkgd_net_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/182.sys_bkgd_net_percentage.md new file mode 100644 index 000000000..3b7894f6f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/182.sys_bkgd_net_percentage.md @@ -0,0 +1,15 @@ +sys_bkgd_net_percentage +============================================ + +sys_bkgd_net_percentage 用于设置后台系统任务可占用网络带宽百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 60 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/183.sys_bkgd_migration_change_member_list_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/183.sys_bkgd_migration_change_member_list_timeout.md new file mode 100644 index 000000000..9d396901a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/183.sys_bkgd_migration_change_member_list_timeout.md @@ -0,0 +1,15 @@ +sys_bkgd_migration_change_member_list_timeout +================================================================== + +sys_bkgd_migration_change_member_list_timeout 用于设置副本迁移时变更 Paxos 成员组操作的超时时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 1h | +| 取值范围 | \[0s, 24 h\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/184.sys_bkgd_migration_retry_num.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/184.sys_bkgd_migration_retry_num.md new file mode 100644 index 000000000..388ee5f42 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/184.sys_bkgd_migration_retry_num.md @@ -0,0 +1,15 @@ +sys_bkgd_migration_retry_num +================================================= + +sys_bkgd_migration_retry_num 用于设置副本迁移失败时最多重试次数。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 3 | +| 取值范围 | \[3, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/185.syslog_level.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/185.syslog_level.md new file mode 100644 index 000000000..4e51eaa4b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/185.syslog_level.md @@ -0,0 +1,15 @@ +syslog_level +================================= + +syslog_level 用于设置系统日志级别。 + + +| **属性** | **描述** | +|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | INFO | +| 取值范围 | * DEBUG * TRACE * INFO * WARN * USER_ERR * ERROR\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/186.switchover_process_thread_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/186.switchover_process_thread_count.md new file mode 100644 index 000000000..0fb06b5f6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/186.switchover_process_thread_count.md @@ -0,0 +1,15 @@ +switchover_process_thread_count +==================================================== + +switchover_process_thread_count 用于设置主备库切换相关线程池的大小。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 6 | +| 取值范围 | \[1, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/187.system_cpu_quota.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/187.system_cpu_quota.md new file mode 100644 index 000000000..ad5c30f5d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/187.system_cpu_quota.md @@ -0,0 +1,15 @@ +system_cpu_quota +===================================== + +system_cpu_quota 用于设置系统租户可使用的 CPU 配额。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 10 | +| 取值范围 | \[0, 16\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/188.sys_cpu_limit_trigger.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/188.sys_cpu_limit_trigger.md new file mode 100644 index 000000000..31a664b67 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/188.sys_cpu_limit_trigger.md @@ -0,0 +1,15 @@ +sys_cpu_limit_trigger +========================================== + +sys_cpu_limit_trigger 用于设置 CPU 利用率阈值,即当 CPU 利用率超过该阈值时,将暂停系统后台任务的执行。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[50, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/189.syslog_io_bandwidth_limit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/189.syslog_io_bandwidth_limit.md new file mode 100644 index 000000000..9c0823dd2 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/189.syslog_io_bandwidth_limit.md @@ -0,0 +1,15 @@ +syslog_io_bandwidth_limit +============================================== + +syslog_io_bandwidth_limit 用于设置系统日志所能占用的磁盘 IO 带宽上限,超过带宽上限容量的系统日志将被丢弃。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 容量单位 | +| 默认值 | 30MB | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/19.backup_region.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/19.backup_region.md new file mode 100644 index 000000000..21b0303bc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/19.backup_region.md @@ -0,0 +1,15 @@ +backup_region +================================== + +backup_region 用于设置用户建议执行备份的地域。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/190.tablet_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/190.tablet_size.md new file mode 100644 index 000000000..ee18f238e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/190.tablet_size.md @@ -0,0 +1,16 @@ +tablet_size +================================ + +tablet_size 用于设置分区内部并行处理(合并、查询等)时每个分片的大小。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 容量单位 | +| 默认值 | 128M | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +tablet_size 的默认取值必须为 2M 的倍数,数值为 0 时,表示不采用分区内并行处理。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/191.tableapi_transport_compress_func.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/191.tableapi_transport_compress_func.md new file mode 100644 index 000000000..886c6c568 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/191.tableapi_transport_compress_func.md @@ -0,0 +1,15 @@ +tableapi_transport_compress_func +===================================================== + +`tableapi_transport_compress_func` 用于设置 tableAPI 查询结果传输使用的压缩算法。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | none | +| 取值范围 | * none * lz4_1.0 * snappy_1.0 * zlib_1.0 * zstd_1.0 * zstd 1.3.8 | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/192.tenant_task_queue_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/192.tenant_task_queue_size.md new file mode 100644 index 000000000..2d011e30d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/192.tenant_task_queue_size.md @@ -0,0 +1,15 @@ +tenant_task_queue_size +=========================================== + +tenant_task_queue_size 用于设置每个租户的请求队列大小。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 65536 | +| 取值范围 | \[1024, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/193.tenant_groups.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/193.tenant_groups.md new file mode 100644 index 000000000..ac54b479d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/193.tenant_groups.md @@ -0,0 +1,15 @@ +tenant_groups +================================== + +tenant_groups 用于设置负载均衡策略中使用的租户组。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/194.trace_log_slow_query_watermark.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/194.trace_log_slow_query_watermark.md new file mode 100644 index 000000000..5b912d9da --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/194.trace_log_slow_query_watermark.md @@ -0,0 +1,15 @@ +trace_log_slow_query_watermark +=================================================== + +trace_log_slow_query_watermark 用于设置查询的执行时间阈值,如果查询的执行时间超过该阈值,则被认为是慢查询,慢查询的追踪日志会被打印到系统日志中。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[1ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/195.trace_log_sampling_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/195.trace_log_sampling_interval.md new file mode 100644 index 000000000..11d55592c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/195.trace_log_sampling_interval.md @@ -0,0 +1,16 @@ +trace_log_sampling_interval +================================================ + +trace_log_sampling_interval 用于设置定期打印跟踪日志信息的时间。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 10ms | +| 取值范围 | \[0ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +当 enable_record_trace_log 设置为 false 时,由 trace_log_sampling_interval 决定打印慢查询和白名单信息的时间间隔。enable_record_trace_log 配置项相关信息请参见 [enable_record_trace_log](/zh-CN/14.reference-guide-oracle-mode/3.system-configuration-items-1/66.enable_record_trace_log-1.md)。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/196.trx_2pc_retry_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/196.trx_2pc_retry_interval.md new file mode 100644 index 000000000..cb9f0a210 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/196.trx_2pc_retry_interval.md @@ -0,0 +1,15 @@ +trx_2pc_retry_interval +=========================================== + +trx_2pc_retry_interval 用于设置两阶段提交失败时候自动重试的时间间隔。 + + +| **属性** | **描述** | +|------------------|-----------------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[1ms, 5000ms\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/197.trx_force_kill_threshold.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/197.trx_force_kill_threshold.md new file mode 100644 index 000000000..c0a503951 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/197.trx_force_kill_threshold.md @@ -0,0 +1,15 @@ +trx_force_kill_threshold +============================================= + +trx_force_kill_threshold 用于设置因冻结或切主需要杀事务时的最长等待时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[1ms, 10s\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/198.tde_method.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/198.tde_method.md new file mode 100644 index 000000000..3eea30a43 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/198.tde_method.md @@ -0,0 +1,14 @@ +tde_method +=============================== + +tde_method 用于设置透明表空间加密的方式。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | none | +| 取值范围 | * none:表示无法使用透明表空间加密 * internal:表示透明加密采用内部表的形式 * bkmi:表示透明加密采用外部 bkmi 的形式 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/199.token_reserved_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/199.token_reserved_percentage.md new file mode 100644 index 000000000..2469985de --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/199.token_reserved_percentage.md @@ -0,0 +1,14 @@ +token_reserved_percentage +============================================== + +token_reserved_percentage 在控制租户 CPU 调度中,用于设置每次预留多少比例的空闲 token 数给租户。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 30 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/2.auto_leader_switch_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/2.auto_leader_switch_interval.md new file mode 100644 index 000000000..2336b3c05 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/2.auto_leader_switch_interval.md @@ -0,0 +1,17 @@ +auto_leader_switch_interval +================================================ + +auto_leader_switch_interval 用于设置自动切主后台线程工作间隔时间。 + + +| **属性** | **描述** | +|----------------|----------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[1s,+∞) | +| 是否需要重启OBserver | 否 | + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/20.builtin_db_data_verify_cycle.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/20.builtin_db_data_verify_cycle.md new file mode 100644 index 000000000..d37712a1b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/20.builtin_db_data_verify_cycle.md @@ -0,0 +1,15 @@ +builtin_db_data_verify_cycle +================================================= + +builtin_db_data_verify_cycle 用于设置数据坏块自检周期,单位为天。当值为 0 时表示不检查。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 20 | +| 取值范围 | \[0, 360\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/200.unit_balance_resource_weight.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/200.unit_balance_resource_weight.md new file mode 100644 index 000000000..b37aeb712 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/200.unit_balance_resource_weight.md @@ -0,0 +1,28 @@ +unit_balance_resource_weight +================================================= + +unit_balance_resource_weight 用于设置 UNIT 均衡策略中使用的资源权重,一般不需要手工配置。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + +**注意** + + + +* 默认值为空。 如果设置,所有权重的总和必须为100。 + + + +* 当打开 enable_unit_balance_resource_weight 时, unit_balance_resource_weight 配置才能生效。 + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/201.user_block_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/201.user_block_cache_priority.md new file mode 100644 index 000000000..87daded34 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/201.user_block_cache_priority.md @@ -0,0 +1,15 @@ +user_block_cache_priority +============================================== + +user_block_cache_priority 用于设置数据块缓存在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/202.user_row_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/202.user_row_cache_priority.md new file mode 100644 index 000000000..786cc953c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/202.user_row_cache_priority.md @@ -0,0 +1,14 @@ +user_row_cache_priority +============================================ + +user_row_cache_priority 用于设置基线数据行缓存在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/203.user_tab_col_stat_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/203.user_tab_col_stat_cache_priority.md new file mode 100644 index 000000000..70afeda3d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/203.user_tab_col_stat_cache_priority.md @@ -0,0 +1,15 @@ +user_tab_col_stat_cache_priority +===================================================== + +user_tab_col_stat_cache_priority 用于设置统计数据缓存在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/204.user_iort_up_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/204.user_iort_up_percentage.md new file mode 100644 index 000000000..77e76835c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/204.user_iort_up_percentage.md @@ -0,0 +1,14 @@ +user_iort_up_percentage +============================================ + +user_iort_up_percentage 用于设置用户磁盘 IO 时延阈值,即用户磁盘 IO 时延超过该阈值后,系统后台 IO 任务将被限流。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/205.use_large_pages.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/205.use_large_pages.md new file mode 100644 index 000000000..fc786f4a0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/205.use_large_pages.md @@ -0,0 +1,14 @@ +use_large_pages +==================================== + +use_large_pages 用于管理数据库使用的内存大页。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | false | +| 取值范围 | * false * true * only | +| 是否重启 OBServer 生效 | 是 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/206.virtual_table_location_cache_expire_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/206.virtual_table_location_cache_expire_time.md new file mode 100644 index 000000000..81bd81276 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/206.virtual_table_location_cache_expire_time.md @@ -0,0 +1,15 @@ +virtual_table_location_cache_expire_time +============================================================= + +virtual_table_location_cache_expire_time 用于设置虚拟表的位置信息缓存过期时间。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 8s | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/207.workers_per_cpu_quota.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/207.workers_per_cpu_quota.md new file mode 100644 index 000000000..40365c9c0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/207.workers_per_cpu_quota.md @@ -0,0 +1,29 @@ +workers_per_cpu_quota +========================================== + +`workers_per_cpu_quota` 用于设置分配给每个 CPU 配额的工作线程数量。 + + +| **属性** | **描述** | +|-------------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[2, 20\] | +| 是否重启 OBServer 生效 | 否 | + + + +租户中可同时处理的线程数由 `cpu_quota_concurrency` 与 `workers_per_cpu_quota` 2 个配置项控制,且设置时需要满足 `workers_per_cpu_quota > cpu_quota_concurrency`。 + +其中: + +* `workers_per_cpu_quota` 表示租户在每个 CPU 上能分配的最大工作线程数。 + + + +* `cpu_quota_concurrency` 表示租户在每个 CPU 上活跃的工作线程数,也即并发数。`cpu_quota_concurrency` 配置项的详细信息,请参见 [cpu_quota_concurrency](/zh-CN/14.reference-guide-oracle-mode/3.system-configuration-items-1/35.cpu_quota_concurrency-1.md)。 + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/208.wait_leader_batch_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/208.wait_leader_batch_count.md new file mode 100644 index 000000000..ee0e09623 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/208.wait_leader_batch_count.md @@ -0,0 +1,15 @@ +wait_leader_batch_count +============================================ + +wait_leader_batch_count 用于设置 RootService 每次发送切主命令的最大分区个数。 + + +| **属性** | **描述** | +|------------------|---------------| +| 参数类型 | 整型 | +| 默认值 | 1024 | +| 取值范围 | \[128, 5000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/209.writing_throttling_maximum_duration.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/209.writing_throttling_maximum_duration.md new file mode 100644 index 000000000..25261e9f5 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/209.writing_throttling_maximum_duration.md @@ -0,0 +1,15 @@ +writing_throttling_maximum_duration +======================================================== + +write_throttling_maximum_duration 通过控制内存分配进度,控制写入速度。即指定在触发写入限速后,剩余 memstore 内存分配完所需的时间。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 1h | +| 取值范围 | \[1s, 3d\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/21.bf_cache_miss_count_threshold.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/21.bf_cache_miss_count_threshold.md new file mode 100644 index 000000000..676a1d3c3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/21.bf_cache_miss_count_threshold.md @@ -0,0 +1,15 @@ +bf_cache_miss_count_threshold +================================================== + +bf_cache_miss_count_threshold 用于控制 bloomfilter cache 的触发次数,当宏块未命中次数达到该值时,创建 bloomfilter 缓存。值为 0 时表示关闭。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/210.writing_throttling_trigger_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/210.writing_throttling_trigger_percentage.md new file mode 100644 index 000000000..d1d2bf80c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/210.writing_throttling_trigger_percentage.md @@ -0,0 +1,16 @@ +writing_throttling_trigger_percentage +========================================================== + +write_throttling_trigger_percentage 用于设置写入速度的阈值。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 memstore 已使用的内存达到该阈值时,触发写入限速。当该配置项的值为 100 时,表示关闭写入限速机制。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/211.weak_read_version_refresh_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/211.weak_read_version_refresh_interval.md new file mode 100644 index 000000000..76a10556b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/211.weak_read_version_refresh_interval.md @@ -0,0 +1,20 @@ +weak_read_version_refresh_interval +======================================================= + +weak_read_version_refresh_interval 用于设置弱一致性读版本号的刷新周期,影响弱一致性读数据的延时。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 50ms | +| 取值范围 | \[0ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +weak_read_version_refresh_interval 值为 0 时,表示不再刷新弱一致性读版本号,不提供单调读功能。 + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/212.workarea_size_policy.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/212.workarea_size_policy.md new file mode 100644 index 000000000..38cc4fa97 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/212.workarea_size_policy.md @@ -0,0 +1,14 @@ +workarea_size_policy +========================================= + +`workarea_size_policy` 用于设置手动或者自动调整 SQL 工作区大小的策略。 + + +| **属性** | **描述** | +|------------------|-----------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | AUTO | +| 取值范围 | * MANUAL:表示手动调整 * AUTO:表示自动调整 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/213.zone.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/213.zone.md new file mode 100644 index 000000000..b7b7023c2 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/213.zone.md @@ -0,0 +1,15 @@ +zone +========================= + +zone 用于设置节点所在的 Zone 的名字。该配置项一般不需要配置。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/214.zone_merge_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/214.zone_merge_concurrency.md new file mode 100644 index 000000000..78ca4a0bf --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/214.zone_merge_concurrency.md @@ -0,0 +1,15 @@ +zone_merge_concurrency +=========================================== + +zone_merge_concurrency 用于设置在合并时,支持多少个 Zone 并发。当值为 0 时,由系统根据部署情况自动选择最佳并发度。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/215.zone_merge_order.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/215.zone_merge_order.md new file mode 100644 index 000000000..30b44c83f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/215.zone_merge_order.md @@ -0,0 +1,14 @@ +zone_merge_order +===================================== + +zone_merge_order 用于设置 Zone 的轮转合并顺序。不指定时,由系统自动决定。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/216.zone_merge_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/216.zone_merge_timeout.md new file mode 100644 index 000000000..63606d178 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/216.zone_merge_timeout.md @@ -0,0 +1,15 @@ +zone_merge_timeout +======================================= + +zone_merge_timeout 用于设置单个 zone 的合并超时时间。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 3h | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/217.ob_ssl_invited_common_names.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/217.ob_ssl_invited_common_names.md new file mode 100644 index 000000000..539a3dd67 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/217.ob_ssl_invited_common_names.md @@ -0,0 +1,41 @@ +ob_ssl_invited_common_names +================================================ + +ob_ssl_invited_common_names 用于记录当前租户运行的应用身份列表,该身份来自 SSL 双向认证中 Client 端证书 subject 中的 `cn` 字段(common name)。 + + +| 属性 | 描述 | +|------------------|------| +| 参数类型 | 字符串 | +| 默认值 | NONE | +| 取值范围 | 无 | +| 是否重启 OBServer 生效 | 否 | + + + +在用户登录 Server 的密码校验完成后,检查如果同时满足以下三个条件,则限制登录: + +* Client 开启了 SSL,并且 Client 端的 CA、证书或私钥使用的是双向认证。 + + + +* Server 端配置了应用白名单,即白名单不为空。 + + + +* Client 证书 subject 的 `cn` 字段不在白名单内。 + + + + + + +若以上三个条件任何一个都不满足,则白名单检查失效,忽略检查。 + +使用示例如下: + +```sql +obclient> ALTER SYSTEM SET ob_ssl_invited_common_names = 'ALIPAY'; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/218.ssl_external_kms_info.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/218.ssl_external_kms_info.md new file mode 100644 index 000000000..37fbb07ea --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/218.ssl_external_kms_info.md @@ -0,0 +1,119 @@ +ssl_external_kms_info +========================================== + +ssl_external_kms_info 配置项用于记录 OceanBase 数据库 SSL 功能运行依赖的一些信息,通过 json 字符串方式记录不同 SSL 使用方式下依赖的相关配置,json 中至少包含类型 ssl_mode 字段。 + + +| 属性 | 描述 | +|------------------|------| +| 参数类型 | 字符串 | +| 默认值 | 空字符串 | +| 取值范围 | 无 | +| 是否重启 OBServer 生效 | 否 | + + + +使用说明: + +* 该配置项的默认值为空字符串。当 SSL 开关打开后,SSL 使用密钥将取值默认路径下的默认文件。 + + + +* 该配置项取值必须为有效 json,否则配置项设置会检查失败。 + + + +* 该配置项当前仅 ssl_mode 的取值有两种:file 和 bkmi。 + + * 指定为 file 时, json 字符串中不需要其他内容。 + + + + * 指定为 bkmi 时,运行时向 bkmi 获取 SSL 文件,本地不持久化存储。同时,json 字符串还需要提供完整的应用名、bkmi url、bkmi 根证书、身份秘钥、身份秘钥口令、SSL 私钥名称、SSL 私钥版本号、SSL 证书名称等。并且这些信息确实有效可用,即能通过这些从 bkmi 中获取私钥和证书,否则会报响应错误码。 + + + + + + + + + +为了支持外部其他各自的证书颁发体系,ssl_external_kms_info 还可以定制扩展为其他内容 json 串。 + +示例如下: + +```sql +obclient> ALTER SYSTEM SET external_ssl_info = ' +{ +"ssl_mode":"file" +}'; + +obclient> ALTER SYSTEM SET external_ssl_info = ' +{ +"ssl_mode":"bkmi", +"kms_host":"http://bkmi.test.alipay.net/bkmi/api", +"root_cert": +"-----BEGIN CERTIFICATE----- +MIIDqTCCApGgAwIBAgIHBXbH+VUEQTANBgkqhkiG9w0BAQsFADBaMSwwKgYDVQQD +DCNBbnQgRmluYW5hY2lhbCBJbnRyYW5ldCBDQSBSb290IFJTQTEXMBUGA1UECgwO +QW50IEZpbmFuYWNpYWwxETAPBgNVBAsMCEludHJhbmV0MB4XDTE4MDkyNjE1MzUz +N1oXDTQ4MDkyNjE1MzUzN1owWjEsMCoGA1UEAwwjQW50IEZpbmFuYWNpYWwgSW50 +cmFuZXQgQ0EgUm9vdCBSU0ExFzAVBgNVBAoMDkFudCBGaW5hbmFjaWFsMREwDwYD +VQQLDAhJbnRyYW5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJlz +hgCvUVB7wE4/V4Oj9Gq0Qji5dlIF2AyQ/L6xG/aM2cXmhxm7hhschhb6ERgf5z70 +lX5G22XLkH97mkZbX19aCH6xMmvVUaWpKpC1vrW+ZL8nLzWl8UXVONgqa1NvkIz2 +qUJNdGVgFXaSlH4EaK9FzklpHj1uo8KJdC6m33z8eoFpLREycbSkxISATseQF1y0 +WhpvZ0qB6aRft7OM4B1G0tu1+dlZ3Sh6rrCwR+yCw8vfYR4cUA9e8WFU7YciuTXK +l/1q3LfzU8LCe0Gtv29Ahk8Zb6lG7/XHwHG8diuKvyq4qlTNp/SjCJbuUx6RSBjD +zP1nRacRuKrxI9ybZ8MCAwEAAaN0MHIwHwYDVR0jBBgwFoAUmtzqDGWl1NWKvUAi +yR877VbODwAwHQYDVR0OBBYEFJrc6gxlpdTVir1AIskfO+1Wzg8AMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA8GA1UdJQQIMAYGBFUdJQAwDQYJKoZI +hvcNAQELBQADggEBAEa4NJ8y4OJLpbCC7SCGrGGTJ+ssbVIJdji21F3dn5yIPQfd +M/PM84y2cy6Tp9cvaDjOtagZ2e1Et5TeGZHiUeqlAjWDtY5lgGvJ80VwpxAUDhKn +LGfSMZo1v1gKKVxgh+iaof2L1UCtep5ETsYKeXLkgWsHYBFzqBlhiAZGuQVzaH7T +I66rtw6gOAmJuWoJlJyhVxg0vCgcl0ExaK3LRhkodzGHIonyaEtRCynpgJ4DmIjH +1I7OVqjdHhdt98U2A8oZVNcuwHLkfyXIC6Iu3GVs5IsQudiQwTW/kIOR+Chvu/lC +b/VmGj0MhvmYYc494vWdcNcfED/HPNshio66aiU= +-----END CERTIFICATE----- +", +"private_key": +"-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-128-CBC,D1CE2F7C3BD77CB130E563CDECB4AB5E +NyTth6D4/xeeQ59tn7pGDBhxbGaAsQpTowATdRRnK3Xn4M7lFo1khTUgfKL+eKPz +5RRf85LfIl4P8/VCgpEsExnaIR/M5FoP3vYIMy3u9cyowG3ioMaQ1ZA/zFdq8jWb +4H5/GL8Zi7B/nj8dCy7L1gLC5KOpGZLq3wvyxHMl5+X5fbHvb9KJjsW2eFPL9KEI +yKMRpXET7F0JIBNVHKMX+cUvzXLxH1klHRYSzAWfvoW+wXweKveSvn7wFAxoBjsk +UtnQ/tZvdfqOYMyfwfb4yNGaQjvN0pfYKWvGu1mqajpPNVJ96n9onArV40I7/Q2D +51eDFQ8op/0sygZiU1rurTQnvrvZnvgASrqIDdUQBPJaYLQmDIxc7Wo1Qr6cFKMv +kLNCihBNMar5+LsigyTdb+0VlwgcYtVMUlh8O282LqC11NkVJfAAvDYxZq+SFF1a +hm7D0n9DFT4A2eeXerwNXyk2fAaw8KX12TpXWanRaB1NW2cX9XmzjMQuk04xNLVK +DDMHKUDctBBvYHaBAjkUQT2smRH4ETosiQHcI91iuj2DZ6u/T0uUG3N7gHV3KSOX +DWUBtr/Xok9YuBICJ4gE/tIvH4gaqAqSEWb9TeeSCrX5VdQw03tPWUYKcr9M08Zj +LOMFdlmMOhRbmsglZy9/D+HVShp343DoZqKIO1A1aGYrzDV6izwI1K1an1ugOF3X +2czjyeuMtcz2ZFEhuGYekRiTx+ifu2scRnx2vndi9+RESUhh37BeseQgsENIsaw+ +5SVJlRgxk8N2hSiA8AWAJ/xpgyhYNL3KjAfh2tfH+jUtrN48kaa4JPeYykpk2kDi +OwQD0VhxjAT0ggyeBDbVNat+0w42i9oxpafBx2pCAbnK+WDnnLbUzgobz296fkO1 +H0UUqKBmi28Jntq3ubbg989LRH3VdvOXFvvgI3k2nqKLjzSCZt4MkAH+fo6cFtTf +q2S+geomeYBCGCSF/bgmk1Q/o9e2qPU4XuYcbM0T2ALwW4vYqv9DmORAfXZV/pg4 +myt1tgsnsUig5UMNIW/g7Q9hnVFzUjOKRwLff+sGKhXwmNHKpJVGaWNaESJ0YAAe +ESMMOrEW5kiqRqIbZx52NVwb85rb6ozkm8vR4ApLNNqQ/ylAd4H3zA3bByXn3uTx +7tfksErzsD8seL3yvQV5hkbB8PkQIXCTyL+zbp4+bNk8v3zj9/7BRqpQl0eMJ4oS +0vjkYgzkhBsQY3tvRH3PkodUy1yhc+1ZOjOcmX4lAMW1+vP5XsESM+GESDp3Czp6 +DlfiHbAlGBouWisY63hQtxVQtOboLzWmXwBGv2ENCf5NdW8tT2rWdxVcWOCW/1YE +dZ3/Q43GK0rqQw/j6MN4xOY7JuiBftZiBkLv57UIxUH1owIMR501QLnhq7Olgz+V +Edli5gWpO6OFNGYFhHc8B4FmTq+UUX4bdya/ajbVL/JWH6fjBJsvculQaJGV+Po6 +0Ythfdurd/V0H/s9IkA3XGGckN+XacKpsgr+25kAG5SrdnnZkTVeg1+O/VHiupQw +OkKlD717/MrLYCZvy2D30oCTDF33VUOxSusc9zeJP29ye+WuNG3gX9CVaYbx1I2d +-----END RSA PRIVATE KEY-----", +"PRIVATE_KEY_PHRASE":"123456", +"SCENE":"ANT", +"CALLER":"ob_ssl_crypt", +"CERT_NAME":"ob_yanhua_test", +"PRIVATE_KEY_NAME":"ob_yanhua_test-app-id-authn-RSA-2048-private", +"KEY_VERSION":"1" +}'; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/219.ob_event_history_recycle_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/219.ob_event_history_recycle_interval.md new file mode 100644 index 000000000..96e7b0610 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/219.ob_event_history_recycle_interval.md @@ -0,0 +1,15 @@ +ob_event_history_recycle_interval +====================================================== + +ob_event_history_recycle_interval 用于控制历史事件的回收间隔。 + + +| 属性 | 描述 | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 7d,表示 7 天 | +| 取值范围 | \[1d, 180d\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/22.bf_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/22.bf_cache_priority.md new file mode 100644 index 000000000..2bbefc20a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/22.bf_cache_priority.md @@ -0,0 +1,15 @@ +bf_cache_priority +====================================== + +bf_cache_priority 用于设置 Bloom Filter 缓存优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/220.backup_backup_dest.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/220.backup_backup_dest.md new file mode 100644 index 000000000..317632cb4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/220.backup_backup_dest.md @@ -0,0 +1,14 @@ +backup_backup_dest +======================================= + +backup_backup_dest 用于设置备份数据备份的目的端。 + + +| 属性 | 描述 | +|------------------|-------| +| 参数类型 | 字符串类型 | +| 默认值 | 空字符串 | +| 取值范围 | 无 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/221.backup_log_archive_checkpoint_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/221.backup_log_archive_checkpoint_interval.md new file mode 100644 index 000000000..dd4cb2efa --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/221.backup_log_archive_checkpoint_interval.md @@ -0,0 +1,14 @@ +backup_log_archive_checkpoint_interval +=========================================================== + +backup_log_archive_checkpoint_interval 用于设置备份数据备份 archivelog 的时间间隔。 + + +| 属性 | 描述 | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 0 | +| 取值范围 | \[0s, 24h\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/222.plsql_ccflags.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/222.plsql_ccflags.md new file mode 100644 index 000000000..6d74b487c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/222.plsql_ccflags.md @@ -0,0 +1,29 @@ +plsql_ccflags +================================== + +plsql_ccflags 用于定义 PL 编译器的编译常量。 + + +| 属性 | 描述 | +|------------------|-----------------| +| 参数类型 | 字符串类型 | +| 默认值 | 空字符串 | +| 取值范围 | 符合 PL 编译器规范的字符串 | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +该配置项可以任意定义变量,建议用于控制条件编译。 + +使用示例如下: + +```sql +obclient> ALTER SESSION SET PLSQL_CCFLAGS = 'DeBug:TRUE'; + +obclient> ALTER SYSTEM SET PLSQL_CCFLAGS = 'DeBug:TRUE'; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/223.plsql_code_type.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/223.plsql_code_type.md new file mode 100644 index 000000000..6eaab2f8a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/223.plsql_code_type.md @@ -0,0 +1,22 @@ +plsql_code_type +==================================== + +plsql_code_type 用于指定 PL/SQL 代码的编译类型。 + + +| 属性 | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | NATIVE | +| 取值范围 | * INTERPETED:解析型 * NATIVE:二进制可执行 | +| 是否重启 OBServer 生效 | 否 | + + + +使用示例如下: + +```sql +obclient> ALTER SESSION SET plsql_code_type='INTERPRETED'; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/224.plsql_debug.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/224.plsql_debug.md new file mode 100644 index 000000000..2e296d95c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/224.plsql_debug.md @@ -0,0 +1,22 @@ +plsql_debug +================================ + +plsql_debug 用于指定是否编译成 debug 版本。 + + +| 属性 | 描述 | +|------------------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True:是 * False:否 | +| 是否重启 OBServer 生效 | 否 | + + + +使用示例如下: + +```sql +obclient> ALTER SESSION SET plsql_debug=false; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/225.plsql_optimize_level.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/225.plsql_optimize_level.md new file mode 100644 index 000000000..ed53e85dc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/225.plsql_optimize_level.md @@ -0,0 +1,22 @@ +plsql_optimize_level +========================================= + +plsql_optimize_level 用于指定编译优化级别。 + + +| 属性 | 描述 | +|------------------|------------------------------------| +| 参数类型 | 整数类型 | +| 默认值 | 1 | +| 取值范围 | 0:表示不开启优化 1:表示开启优化 | +| 是否重启 OBServer 生效 | 否 | + + + +使用示例如下: + +```sql +obclient> ALTER SESSION SET plsql_optimize_level=1; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/226.plsql_v2_compatibility.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/226.plsql_v2_compatibility.md new file mode 100644 index 000000000..c9d2a8c4a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/226.plsql_v2_compatibility.md @@ -0,0 +1,22 @@ +plsql_v2_compatibility +=========================================== + +plsql_v2_compatibility 用于指定 Oracle 8 的兼容功能。 + + +| 属性 | 描述 | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True:兼容 * False:不兼容 | +| 是否重启 OBServer 生效 | 否 | + + + +使用示例如下: + +```sql +obclient> ALTER SESSION SET plsql_v2_compatibility=false; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/227.plsql_warnings.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/227.plsql_warnings.md new file mode 100644 index 000000000..35ed11853 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/227.plsql_warnings.md @@ -0,0 +1,74 @@ +plsql_warnings +=================================== + +`plsql_warnings` 用于控制 PL/SQL 编译器的报错行为,可以指定某类型或某个 `warning` 码的状态为` enable`、`disable` 或 `error`。 + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | varchar | +| 默认值 | ENABLE:ALL | +| 取值范围 | 符合规范的字符串 | +| 是否重启 OBServer 生效 | 否 | + + + +使用语法如下: + +```sql +PLSQL_WARNINGS = 'value_clause' [, 'value_clause' ] +value_clause::= +{ ENABLE | DISABLE | ERROR }: +{ ALL +| WARN +| DEBUG +| { integer +| (integer [, integer ] ...) +} +} +``` + + + +其中: + +* `ENABLE`:表示打开指定的 Warnings。 + + + +* `DISABLE`:表示关闭指定的 Warnings。 + + + +* `ERROR`:表示将指定的 Warning 作为 Errors。 + + + +* `ALL`:表示应用到所有的 Warning Messages。 + + + +* `DEBUG`:表示应用到 Debug。 + + + +* `WARN`:表示应用到 Warning。 + + + + + + +使用示例如下: + +```sql +PLSQL_WARNINGS = 'ENABLE:DEBUG', 'DISABLE:WARN'; + +PLSQL_WARNINGS = 'DISABLE:ALL'; + +PLSQL_WARNINGS = 'DISABLE:5000', 'ENABLE:5001','ERROR:5002'; + +PLSQL_WARNINGS = 'ENABLE:(5000,5001,5002)','DISABLE:(6000,6001)'; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/228.recyclebin_object_expire_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/228.recyclebin_object_expire_time.md new file mode 100644 index 000000000..6568294e0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/228.recyclebin_object_expire_time.md @@ -0,0 +1,59 @@ +recyclebin_object_expire_time +================================================== + +recyclebin_object_expire_time 用于自动 Purge 回收站中过期的 Schema对象。 + +描述 +----------------------- + + + +| 属性 | 描述 | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +recyclebin_object_expire_time 配置项的取值说明如下: + +* 当其值为 0s 时,表示关闭自动 Purge 回收站功能。 + + + +* 当其值为非 0s 时,表示回收一段时间前进入回收站的 Schema 对象。 + + + + + + +示例 +----------------------- + +* 关闭自动 Purge 回收站功能 + + ```sql + obclient> ALTER SYSTEM SET recyclebin_object_expire_time = "0s"; + ``` + + + + + + + + +* 打开自动 Purge 回收站功能,并回收 7 天前进入回收站的 Schema 对象 + + ```sql + obclient> ALTER SYSTEM SET recyclebin_object_expire_time = "7d"; + ``` + + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/229.log_archive_batch_buffer_limit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/229.log_archive_batch_buffer_limit.md new file mode 100644 index 000000000..d4d468758 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/229.log_archive_batch_buffer_limit.md @@ -0,0 +1,27 @@ +log_archive_batch_buffer_limit +=================================================== + +当物理备份开启时,log_archive_batch_buffer_limit 用于控制日志归档单机的最大内存使用量。 + +描述 +----------------------- + + + +| 属性 | 描述 | +|------------------|-----------| +| 参数类型 | 容量类型 | +| 默认值 | 1G | +| 取值范围 | \[2M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +示例 +----------------------- + +```sql +obclient> ALTER SYSTEM SET log_archive_batch_buffer_limit = 1GB; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/23.cache_wash_threshold.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/23.cache_wash_threshold.md new file mode 100644 index 000000000..205e59ae4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/23.cache_wash_threshold.md @@ -0,0 +1,15 @@ +cache_wash_threshold +========================================= + +cache_wash_threshold 用于设置触发缓存清理的容量阈值。如果内存空间小于指定值时,内存空间将被清理。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 容量单位 | +| 默认值 | 4GB | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/230.clog_disk_utilization_threshold.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/230.clog_disk_utilization_threshold.md new file mode 100644 index 000000000..21e0ceedd --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/230.clog_disk_utilization_threshold.md @@ -0,0 +1,27 @@ +clog_disk_utilization_threshold +==================================================== + +clog_disk_utilization_threshold 配置项用于控制 clog 或 ilog 磁盘空间复用的水位值。 + +描述 +----------------------- + + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[10, 100) | +| 是否重启 OBServer 生效 | 否 | + + + +示例 +----------------------- + +```sql +obclient> ALTER SYSTEM SET clog_disk_utilization_threshold=80; +``` + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/231.backup_backup_archive_log_batch_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/231.backup_backup_archive_log_batch_count.md new file mode 100644 index 000000000..5c79f1dc8 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/231.backup_backup_archive_log_batch_count.md @@ -0,0 +1,14 @@ +backup_backup_archive_log_batch_count +========================================================== + +backup_backup_archive_log_batch_count 用于设置备份备份日志的任务的批次数量。 + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0,1024\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/232.backup_backup_archivelog_retry_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/232.backup_backup_archivelog_retry_interval.md new file mode 100644 index 000000000..7adca5fe0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/232.backup_backup_archivelog_retry_interval.md @@ -0,0 +1,14 @@ +backup_backup_archivelog_retry_interval +============================================================ + +backup_backup_archivelog_retry_interval 用于设置备份备份日志的任务的重试间隔。 + + +| 属性 | 描述 | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s,1h\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/233.backup_backupset_batch_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/233.backup_backupset_batch_count.md new file mode 100644 index 000000000..20f5df2de --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/233.backup_backupset_batch_count.md @@ -0,0 +1,14 @@ +backup_backupset_batch_count +================================================= + +backup_backupset_batch_count 用于设置备份备份基线的任务的批次数量。 + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0,1024\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/234.backup_backupset_retry_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/234.backup_backupset_retry_interval.md new file mode 100644 index 000000000..0c1ff8169 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/234.backup_backupset_retry_interval.md @@ -0,0 +1,14 @@ +backup_backupset_retry_interval +==================================================== + +backup_backupset_retry_interval 用于设置备份备份基线的任务的重试间隔。 + + +| 属性 | 描述 | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s,1h\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/235.open_cursors.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/235.open_cursors.md new file mode 100644 index 000000000..2d8500e3d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/235.open_cursors.md @@ -0,0 +1,14 @@ +open_cursors +================================= + +open_cursors 用于限制单个 Session 可以同时打开的游标数量。 + + +| 属性 | 描述 | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 50 | +| 取值范围 | \[0,65535\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/236.fast_recovery_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/236.fast_recovery_concurrency.md new file mode 100644 index 000000000..0d4913a2d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/236.fast_recovery_concurrency.md @@ -0,0 +1,14 @@ +fast_recovery_concurrency +============================================== + +`fast_recovery_concurrency` 用于控制 RootService 调度的快速恢复任务在 OBServer 上执行的并发数。 + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[1,1000\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/24.clog_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/24.clog_cache_priority.md new file mode 100644 index 000000000..4895aca35 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/24.clog_cache_priority.md @@ -0,0 +1,14 @@ +clog_cache_priority +======================================== + +clog_cache_priority 用于设置事务日志占用缓存的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/25.clog_sync_time_warn_threshold.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/25.clog_sync_time_warn_threshold.md new file mode 100644 index 000000000..fda006d3c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/25.clog_sync_time_warn_threshold.md @@ -0,0 +1,15 @@ +clog_sync_time_warn_threshold +================================================== + +clog_sync_time_warn_threshold 用于设置事务日志同步耗时告警阈值,同步耗时超过该值产生 WARN 日志。 + + +| **属性** | **描述** | +|------------------|------------------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[1ms, 10000ms\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/26.clog_disk_usage_limit_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/26.clog_disk_usage_limit_percentage.md new file mode 100644 index 000000000..c9278b345 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/26.clog_disk_usage_limit_percentage.md @@ -0,0 +1,15 @@ +clog_disk_usage_limit_percentage +===================================================== + +clog_disk_usage_limit_percentage 用于设置事务日志的磁盘 I/O 最大使用百分比。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 95 | +| 取值范围 | \[80, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/27.clog_transport_compress_all.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/27.clog_transport_compress_all.md new file mode 100644 index 000000000..377f5bd2c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/27.clog_transport_compress_all.md @@ -0,0 +1,14 @@ +clog_transport_compress_all +================================================ + +clog_transport_compress_all 用于设置事务日志传输时是否压缩。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False * True | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/28.clog_transport_compress_func.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/28.clog_transport_compress_func.md new file mode 100644 index 000000000..fcdf74263 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/28.clog_transport_compress_func.md @@ -0,0 +1,15 @@ +clog_transport_compress_func +================================================= + +`clog_transport_compress_func` 用于设置事务日志内部传输时使用的压缩算法。 + + +| **属性** | **描述** | +|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | lz4_1.0 | +| 取值范围 | * none * lz4_1.0 * snappy_1.0 * zlib_1.0 * zstd_1.0 * stream_lz4_1.0 * stream_zstd_1.0 * zstd_1.3.8 * stream_zstd_1.3.8 | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/29.clog_persistence_compress_func.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/29.clog_persistence_compress_func.md new file mode 100644 index 000000000..09fe64160 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/29.clog_persistence_compress_func.md @@ -0,0 +1,15 @@ +clog_persistence_compress_func +=================================================== + +clog_persistence_compress_func 用于设置事务日志落盘压缩算法。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | lz4_1.0 | +| 取值范围 | * none * lz4_1.0 * zstd_1.0 * zstd_1.3.8 | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/3.auto_delete_expired_backup.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/3.auto_delete_expired_backup.md new file mode 100644 index 000000000..b711d294f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/3.auto_delete_expired_backup.md @@ -0,0 +1,14 @@ +auto_delete_expired_backup +=============================================== + +auto_delete_expired_backup 用于设置是否开启自动删除过期备份的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False * True | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/30.clog_max_unconfirmed_log_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/30.clog_max_unconfirmed_log_count.md new file mode 100644 index 000000000..36f9b7926 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/30.clog_max_unconfirmed_log_count.md @@ -0,0 +1,15 @@ +clog_max_unconfirmed_log_count +=================================================== + +clog_max_unconfirmed_log_count 用于设置事务模块中未确认日志的最大数量。 + + +| **属性** | **描述** | +|------------------|----------------| +| 参数类型 | 整型 | +| 默认值 | 1500 | +| 取值范围 | \[100, 50000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/31.cluster.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/31.cluster.md new file mode 100644 index 000000000..bc71789e4 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/31.cluster.md @@ -0,0 +1,15 @@ +cluster +============================ + +cluster 用于设置本 OceanBase 集群名。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 字符串 | +| 默认值 | obcluster | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/32.cluster_id.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/32.cluster_id.md new file mode 100644 index 000000000..067083b44 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/32.cluster_id.md @@ -0,0 +1,15 @@ +cluster_id +=============================== + +cluster_id 用于设置本 OceanBase 集群 ID。 + + +| **属性** | **描述** | +|------------------|-------------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[1, 4294901759\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/33.cpu_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/33.cpu_count.md new file mode 100644 index 000000000..f32d477c6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/33.cpu_count.md @@ -0,0 +1,14 @@ +cpu_count +============================== + +cpu_count 用于设置系统 CPU 总数。如果设置为 0,系统将自动检测 CPU 数量。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/34.cpu_quota_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/34.cpu_quota_concurrency.md new file mode 100644 index 000000000..895f183cf --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/34.cpu_quota_concurrency.md @@ -0,0 +1,35 @@ +cpu_quota_concurrency +========================================== + +cpu_quota_concurrency 用于设置租户的每个 CPU 配额所允许的最大并发数。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 4 | +| 取值范围 | \[1, 10\] | +| 是否重启 OBServer 生效 | 否 | + + + +租户中可同时处理的线程数由 cpu_quota_concurrency 与 workers_per_cpu_quota 2个配置项控制,且设置时需要满足: + +`workers_per_cpu_quota > cpu_quota_concurrency` + +* `workers_per_cpu_quota`表示租户在每个cpu上能分配的最大 worker 数 + + workers_per_cpu_quota 配置项详细信息,请参见 [workers_per_cpu_quota](/zh-CN/14.reference-guide-oracle-mode/3.system-configuration-items-1/209.workers_per_cpu_quota-1.md)。 + + +* `cpu_quota_concurrency`表示租户在每个cpu上活跃的 worker 数,也即并发数 + + + + + +**说明** + + + +当物理机 CPU 足够多时,可以适当调大 `cpu_quota_concurrency `的值;如果物理机 CPU 较少,则调大`cpu_quota_concurrency `的值会存在风险。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/35.cpu_reserved.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/35.cpu_reserved.md new file mode 100644 index 000000000..db0b3b9c5 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/35.cpu_reserved.md @@ -0,0 +1,14 @@ +cpu_reserved +================================= + +cpu_reserved 用于设置系统预留的 CPU 数量,其余 CPU 将被 OceanBase 数据库独占使用。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[0, 15\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/36.config_additional_dir.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/36.config_additional_dir.md new file mode 100644 index 000000000..6faf1bbe6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/36.config_additional_dir.md @@ -0,0 +1,15 @@ +config_additional_dir +========================================== + +config_additional_dir 用于设置本地存储配置文件的多个目录,为了冗余存储多份配置文件。 + + +| **属性** | **描述** | +|------------------|-------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串列表 | +| 默认值 | * etc2 * etc3 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/37.data_copy_concurrency.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/37.data_copy_concurrency.md new file mode 100644 index 000000000..64fb27f72 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/37.data_copy_concurrency.md @@ -0,0 +1,15 @@ +data_copy_concurrency +========================================== + +data_copy_concurrency 用于设置系统中并发执行的数据迁移复制任务的最大并发数。 + + +| **属性** | **描述** | +|--------|----------| +| 参数类型 | 整型 | +| 默认值 | 20 | +| 取值范围 | \[1, +∞) | +| 是否需要重启 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/38.data_dir.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/38.data_dir.md new file mode 100644 index 000000000..29c6bb938 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/38.data_dir.md @@ -0,0 +1,15 @@ +data_dir +============================= + +data_dir 用于设置存储 sstable 等数据的目录。 + + +| **属性** | **描述** | +|--------|--------| +| 参数类型 | 字符串 | +| 默认值 | store | +| 取值范围 | NULL | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/39.datafile_disk_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/39.datafile_disk_percentage.md new file mode 100644 index 000000000..d5b6419d3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/39.datafile_disk_percentage.md @@ -0,0 +1,15 @@ +datafile_disk_percentage +============================================= + +datafile_disk_percentage 表示占用 data_dir 所在磁盘(磁盘 data_dir 所在磁盘将被OceanBase 数据库系统初始化用于存储数据)总空间的百分比。 + + +| **属性** | **描述** | +|--------|----------| +| 参数类型 | 整型 | +| 默认值 | 90 | +| 取值范围 | \[5,99\] | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/4.autoinc_cache_refresh_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/4.autoinc_cache_refresh_interval.md new file mode 100644 index 000000000..951df1862 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/4.autoinc_cache_refresh_interval.md @@ -0,0 +1,15 @@ +autoinc_cache_refresh_interval +=================================================== + +autoinc_cache_refresh_interval 用于设置自增列缓存的刷新间隔。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 3600s | +| 取值范围 | \[100ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/40.dtl_buffer_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/40.dtl_buffer_size.md new file mode 100644 index 000000000..1655cd909 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/40.dtl_buffer_size.md @@ -0,0 +1,15 @@ +dtl_buffer_size +==================================== + +dtl_buffer_size 用于设置 SQL 数据传输模块使用的缓存大小。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 容量单位 | +| 默认值 | 64K | +| 取值范围 | \[4K, 2 M\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/41.datafile_size.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/41.datafile_size.md new file mode 100644 index 000000000..4df9e68fd --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/41.datafile_size.md @@ -0,0 +1,15 @@ +datafile_size +================================== + +datafile_size 用于设置数据文件的大小。一般不需要设置。 + + +| **属性** | **描述** | +|--------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 0M | +| 取值范围 | \[0M, +∞) | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/42.debug_sync_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/42.debug_sync_timeout.md new file mode 100644 index 000000000..ec229d132 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/42.debug_sync_timeout.md @@ -0,0 +1,20 @@ +debug_sync_timeout +======================================= + +debug_sync_timeout 用于打开 debug sync 调试开关,并设置其超时时间。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 时间类型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +debug_sync_timeout 的值为 0 时,表示关闭 debug sync 调试。 + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/43.default_compress_func.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/43.default_compress_func.md new file mode 100644 index 000000000..c76047370 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/43.default_compress_func.md @@ -0,0 +1,15 @@ +default_compress_func +========================================== + +`default_compress_func` 用于设置表数据的默认压缩算法,也可以在建表的时候指定其他压缩算法。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | zstd_1.3.8 | +| 取值范围 | * none * lz4_1.0 * snappy_1.0 * zlib_1.0 * zstd_1.0 * zstd_1.3.8 | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/44.default_compress.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/44.default_compress.md new file mode 100644 index 000000000..fb4e48c56 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/44.default_compress.md @@ -0,0 +1,15 @@ +default_compress +===================================== + +default_compress 用于设置在 Oracle 模式下,建表时使用的默认压缩策略。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | ARCHIVE | +| 取值范围 | * NOCOMPRESS * BASIC * OLTP * QUERY * ARCHIVE | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/45.default_progressive_merge_num.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/45.default_progressive_merge_num.md new file mode 100644 index 000000000..8b725f269 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/45.default_progressive_merge_num.md @@ -0,0 +1,35 @@ +default_progressive_merge_num +================================================== + +default_progressive_merge_num 用于设置新建一张表时默认的渐进合并次数。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 60 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +OceanBase 数据库支持对表数据进行渐进合并,即在对表执行需要重写数据的 DDL 操作后,可以将表数据的重写分散到多次合并中,一次合并中只进行部分数据的重写。您可以通过表级属性`progressive_merge_num`来控制合并行为,也可以通过`default_progressive_merge_num`配置项来设置新建一张表时默认的渐进合并次数。 + +当您未对新建表指定`progressive_merge_num`属性时,系统会将表级属性`progressive_merge_num`的值设置为`default_progressive_merge_num`的值。 + +`progressive_merge_num`属性的取值含义如下: + +* 0 :表示执行渐进合并,且渐进合并的次数为 100。 + + + +* 1:表示强制执行全量合并,不执行渐进合并。 + + + +* 大于 1 :表示发生 Schema 变更时按照指定轮次做渐进合并。 + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/46.default_row_format.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/46.default_row_format.md new file mode 100644 index 000000000..77fb71bd7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/46.default_row_format.md @@ -0,0 +1,15 @@ +default_row_format +======================================= + +default_row_format 用于设置在 MySQL 模式下,建表时使用的默认行格式。 + + +| **属性** | **描述** | +|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | DYNAMIC | +| 取值范围 | * REDUNDANT * COMPAT * DYNAMIC * COMPRESSED | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/47.devname.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/47.devname.md new file mode 100644 index 000000000..d057c1801 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/47.devname.md @@ -0,0 +1,15 @@ +devname +============================ + +devname 用于设置服务进程绑定的网卡设备名。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | bond0 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/48.data_disk_usage_limit_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/48.data_disk_usage_limit_percentage.md new file mode 100644 index 000000000..7353ca0cd --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/48.data_disk_usage_limit_percentage.md @@ -0,0 +1,15 @@ +data_disk_usage_limit_percentage +===================================================== + +data_disk_usage_limit_percentage 用于设置数据文件最大可以写入的百分比,超过这个阈值后,禁止数据迁入。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 90 | +| 取值范围 | \[50, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/49.disk_io_thread_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/49.disk_io_thread_count.md new file mode 100644 index 000000000..bd3341fc3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/49.disk_io_thread_count.md @@ -0,0 +1,14 @@ +disk_io_thread_count +========================================= + +disk_io_thread_count 用于设置磁盘 IO 线程数。必须为偶数。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 8 | +| 取值范围 | \[2, 32\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/5.audit_sys_operations.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/5.audit_sys_operations.md new file mode 100644 index 000000000..fe9edcb3f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/5.audit_sys_operations.md @@ -0,0 +1,15 @@ +audit_sys_operations +========================================= + +audit_sys_operations 用于设置是否追踪系统用户的操作行为。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False * True | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/50.dead_socket_detection_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/50.dead_socket_detection_timeout.md new file mode 100644 index 000000000..c7dcb2779 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/50.dead_socket_detection_timeout.md @@ -0,0 +1,27 @@ +dead_socket_detection_timeout +================================================== + +dead_socket_detection_timeout 用于设置检测失效 Socket 的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 10s | +| 取值范围 | \[0s, 2h\] | +| 是否重启 OBServer 生效 | 否 | + + + +其中: + +* 当 dead_socket_detection_timeout 的值为 0 时,表示禁用 Socket 级故障检测。 + + + +* 当 dead_socket_detection_timeout 的值大于 0 时,表示启用 Socket 级故障检测,且当发送端有数据超过 设置的时间还未收到对方的应答,则认为当前 Socket 不可用。 + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/51.enable_clog_persistence_compress.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/51.enable_clog_persistence_compress.md new file mode 100644 index 000000000..205523e06 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/51.enable_clog_persistence_compress.md @@ -0,0 +1,15 @@ +enable_clog_persistence_compress +===================================================== + +enable_clog_persistence_compress 用于设置是否开启事务日志落盘压缩。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | false | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/52.election_cpu_quota.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/52.election_cpu_quota.md new file mode 100644 index 000000000..f4acd44ec --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/52.election_cpu_quota.md @@ -0,0 +1,15 @@ +election_cpu_quota +======================================= + +election_cpu_quota 用于设置给副本选举相关的后台工作分配的 CPU 配额。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 3 | +| 取值范围 | \[0, 10\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/53.enable_one_phase_commit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/53.enable_one_phase_commit.md new file mode 100644 index 000000000..6fbdbef33 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/53.enable_one_phase_commit.md @@ -0,0 +1,15 @@ +enable_one_phase_commit +============================================ + +enable_one_phase_commit 用于设置是否开启事务提交一阶段优化的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/54.enable_sys_unit_standalone.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/54.enable_sys_unit_standalone.md new file mode 100644 index 000000000..674ba5977 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/54.enable_sys_unit_standalone.md @@ -0,0 +1,35 @@ +enable_sys_unit_standalone +=============================================== + +enable_sys_unit_standalone 用于设置系统租户的 Unit 是否独占节点。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + +当该配置项设置为`True`时,会产生以下影响: + +* 在创建资源池或增加资源池数量时,需要考虑系统租户的 Unit,即不能将普通租户的 Unit 与系统租户的 Unit 部署在同一个 Server 上。 + + + +* 系统会将与系统租户的 Unit 在同一个 Server 上的其他 Unit 迁移走。 + + + +* 永久下线或删除 Server 时,系统会先迁移系统租户的 Unit,再迁移其他租户的 Unit,且其他租户的 Unit 不能与系统租户的 Unit 在同一个 Server 上。 + + + +* 在进行 Tenant groups 均衡时,系统会将系统租户 Unit 所在的 Server 从 tenant groups 的可用机器中过滤掉,即 Tenant groups 的 Unit 会平铺到除了系统租户 Unit 所在 Server 的其他 Server上去。 + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/55.enable_pg.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/55.enable_pg.md new file mode 100644 index 000000000..dbdf2fe7b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/55.enable_pg.md @@ -0,0 +1,14 @@ +enable_pg +============================== + +enable_pg 用于设置是否开启分区组功能。 + + +| 属性 | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/56.enable_smooth_leader_switch.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/56.enable_smooth_leader_switch.md new file mode 100644 index 000000000..bb67d6ccb --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/56.enable_smooth_leader_switch.md @@ -0,0 +1,14 @@ +enable_smooth_leader_switch +================================================ + +enable_smooth_leader_switch 是平滑切主特性的开关。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/57.election_blacklist_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/57.election_blacklist_interval.md new file mode 100644 index 000000000..507af114f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/57.election_blacklist_interval.md @@ -0,0 +1,21 @@ +election_blacklist_interval +================================================ + +election_blacklist_interval 用于设置主副本被废除后不允许再被选为主的时间间隔。 + + +| 属性 | 描述 | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 1800s | +| 取值范围 | \[0s, 24h\] | +| 是否重启 OBServer 生效 | 否 | + + + +OceanBase 数据库通过 election_blacklist_interval 配置项实现了黑名单功能。当 Leader 主动发生卸任后,从当前时间开始计时,在 election_blacklist_interval 配置项设置的时间内,该副本保证不会再被改选为 Leader,即该副本加入了选举黑名单。 +**注意** + + + +仅当主副本发生主动卸任,且 observer 进程不重启时,该副本才会加入黑名单。observer 进程重启后,黑名单状态会丢失。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/58.enable_election_group.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/58.enable_election_group.md new file mode 100644 index 000000000..d40a6ee3a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/58.enable_election_group.md @@ -0,0 +1,15 @@ +enable_election_group +========================================== + +enable_election_group 用于设置是否打开选举组策略。 + + +| 属性 | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/59.enable_auto_leader_switch.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/59.enable_auto_leader_switch.md new file mode 100644 index 000000000..82d3aadff --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/59.enable_auto_leader_switch.md @@ -0,0 +1,14 @@ +enable_auto_leader_switch +============================================== + +enable_auto_leader_switch 用于设置是否开启自动切主。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/6.audit_trail.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/6.audit_trail.md new file mode 100644 index 000000000..baa0b18ba --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/6.audit_trail.md @@ -0,0 +1,15 @@ +audit_trail +================================ + +audit_trail 用于设置是否启用数据库审核。 + + +| 属性 | 描述 | +|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | NONE | +| 取值范围 | * NONE * OS * DB * DB,EXTENDED * DB_EXTENDED | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/60.enable_global_freeze_trigger.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/60.enable_global_freeze_trigger.md new file mode 100644 index 000000000..6ecdd3713 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/60.enable_global_freeze_trigger.md @@ -0,0 +1,22 @@ +enable_global_freeze_trigger +================================================= + +enable_global_freeze_trigger 用于设置是否开启自动触发全局冻结。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + + +**说明** + + + +该配置项保持保持默认值即可,不推荐使用。 + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/61.enable_manual_merge.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/61.enable_manual_merge.md new file mode 100644 index 000000000..90f1ac25a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/61.enable_manual_merge.md @@ -0,0 +1,16 @@ +enable_manual_merge +======================================== + +enable_manual_merge 用于设置是否开启手工合并。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + +enable_manual_merge 用于 DBA 管理错峰是否暂停,只有在 enable_manual_merge 为 True 时,max_merge_duration_time 才有效。如果这个值为 True,则认为 DBA 关闭自动合并。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/62.enable_merge_by_turn.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/62.enable_merge_by_turn.md new file mode 100644 index 000000000..b4b598e3d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/62.enable_merge_by_turn.md @@ -0,0 +1,15 @@ +enable_merge_by_turn +========================================= + +enable_merge_by_turn 用于设置是否开启轮转合并策略。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/63.enable_perf_event.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/63.enable_perf_event.md new file mode 100644 index 000000000..ad2b65667 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/63.enable_perf_event.md @@ -0,0 +1,15 @@ +enable_perf_event +====================================== + +enable_perf_event 用于设置是否开启性能事件的信息收集功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/64.enable_rebalance.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/64.enable_rebalance.md new file mode 100644 index 000000000..1298d152d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/64.enable_rebalance.md @@ -0,0 +1,14 @@ +enable_rebalance +===================================== + +enable_rebalance 用于设置是否开启自动负载均衡的功能。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True:开启 * False:不开启 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/65.enable_record_trace_log.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/65.enable_record_trace_log.md new file mode 100644 index 000000000..43e17ecd9 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/65.enable_record_trace_log.md @@ -0,0 +1,14 @@ +enable_record_trace_log +============================================ + +enable_record_trace_log 用于设置是否记录追踪日志。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True:表示只要出现错误,就一定打印 trace log。 * False:表示每隔 trace_log_sampling_interval 会打印一次慢查询或白名单错误码日志。 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/66.enable_record_trace_id.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/66.enable_record_trace_id.md new file mode 100644 index 000000000..c6402456e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/66.enable_record_trace_id.md @@ -0,0 +1,15 @@ +enable_record_trace_id +=========================================== + +enable_record_trace_id 用于设置是否记录应用端设置的追踪 ID。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/67.enable_early_lock_release.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/67.enable_early_lock_release.md new file mode 100644 index 000000000..13df54c6b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/67.enable_early_lock_release.md @@ -0,0 +1,14 @@ +enable_early_lock_release +============================================== + +enable_early_lock_release 用于设置是否开启提前解行锁的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/68.enable_rereplication.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/68.enable_rereplication.md new file mode 100644 index 000000000..2fea277e7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/68.enable_rereplication.md @@ -0,0 +1,19 @@ +enable_rereplication +========================================= + +enable_rereplication 用于设置是否开启自动补副本的功能。 + + +| 属性 | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +如果不开启 enable_rereplication,即使分区的副本数小于设置的 ob_default_replica_num,也不会进行复制。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/69.enable_rich_error_msg.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/69.enable_rich_error_msg.md new file mode 100644 index 000000000..99f22366e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/69.enable_rich_error_msg.md @@ -0,0 +1,14 @@ +enable_rich_error_msg +========================================== + +enable_rich_error_msg 用于设置是否在客户端消息中添加服务器地址、时间、追踪 ID 等调试信息。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True:表示会在错误消息前添加 OBServer 的 `ip:port`、出错时间和日志 Trace ID。 * False:表示保持文本错误消息内容不变。 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/7.balancer_idle_time.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/7.balancer_idle_time.md new file mode 100644 index 000000000..0897aa7b3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/7.balancer_idle_time.md @@ -0,0 +1,14 @@ +balancer_idle_time +======================================= + +balancer_idle_time 用于设置负载均衡等后台任务线程空闲时的唤醒间隔时间。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 5m,表示 5 分钟 | +| 取值范围 | \[10s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/70.enable_rootservice_standalone.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/70.enable_rootservice_standalone.md new file mode 100644 index 000000000..98a8b2b7a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/70.enable_rootservice_standalone.md @@ -0,0 +1,14 @@ +enable_rootservice_standalone +================================================== + +enable_rootservice_standalone 用于设置是否让系统租户和 RootService 独占 OBServer 节点。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/71.enable_sql_audit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/71.enable_sql_audit.md new file mode 100644 index 000000000..8f6ffe73d --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/71.enable_sql_audit.md @@ -0,0 +1,14 @@ +enable_sql_audit +===================================== + +enable_sql_audit 用于设置是否开启 SQL 审计功能。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True:开启 * False:不开启 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/72.enable_sql_operator_dump.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/72.enable_sql_operator_dump.md new file mode 100644 index 000000000..6935acecf --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/72.enable_sql_operator_dump.md @@ -0,0 +1,14 @@ +enable_sql_operator_dump +============================================= + +enable_sql_operator_dump 用于设置是否允许 SQL 处理过程的中间结果写入磁盘以释放内存。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/73.enable_async_syslog.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/73.enable_async_syslog.md new file mode 100644 index 000000000..6607a7d16 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/73.enable_async_syslog.md @@ -0,0 +1,15 @@ +enable_async_syslog +======================================== + +enable_async_syslog 用于设置是否启用系统日志异步写。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/74.enable_syslog_recycle.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/74.enable_syslog_recycle.md new file mode 100644 index 000000000..51c4ce73a --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/74.enable_syslog_recycle.md @@ -0,0 +1,15 @@ +enable_syslog_recycle +========================================== + +enable_syslog_recycle 用于设置是否开启回收系统日志的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/75.enable_syslog_wf.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/75.enable_syslog_wf.md new file mode 100644 index 000000000..065e17e43 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/75.enable_syslog_wf.md @@ -0,0 +1,15 @@ +enable_syslog_wf +===================================== + +enable_syslog_wf 用于设置是否把 WARN 以上级别的系统日志打印到一个单独的日志文件中。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/76.enable_upgrade_mode.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/76.enable_upgrade_mode.md new file mode 100644 index 000000000..3309eed15 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/76.enable_upgrade_mode.md @@ -0,0 +1,16 @@ +enable_upgrade_mode +======================================== + +enable_upgrade_mode 用于设置是否开启升级模式。在升级模式中,会暂停部分系统后台功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + +在升级前,对于需要禁止的功能(例如, DDL 操作),您可以统一通过该系统配置项来控制,使升级流程更简单。升级前将 enable_upgrade_mode 设置为 True,升级后将其设置为 False。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/77.enable_separate_sys_clog.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/77.enable_separate_sys_clog.md new file mode 100644 index 000000000..61a5577e6 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/77.enable_separate_sys_clog.md @@ -0,0 +1,15 @@ +enable_separate_sys_clog +============================================= + +enable_separate_sys_clog 用于设置是否把系统事务日志与用户事务日志分开存储。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/78.enable_ddl.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/78.enable_ddl.md new file mode 100644 index 000000000..f8a9164a9 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/78.enable_ddl.md @@ -0,0 +1,15 @@ +enable_ddl +=============================== + +enable_ddl 用于设置是否允许执行 DDL。 + + +| **属性** | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/79.enable_major_freeze.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/79.enable_major_freeze.md new file mode 100644 index 000000000..e89e565c3 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/79.enable_major_freeze.md @@ -0,0 +1,15 @@ +enable_major_freeze +======================================== + +enable_major_freeze 用于设置是否开启自动全局冻结的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/8.balancer_log_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/8.balancer_log_interval.md new file mode 100644 index 000000000..a0e31d595 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/8.balancer_log_interval.md @@ -0,0 +1,15 @@ +balancer_log_interval +========================================== + +balancer_log_interval 用于负载均衡等后台任务线程打印统计日志的间隔时间。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 1m,表示 1 分钟 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/80.enable_rebuild_on_purpose.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/80.enable_rebuild_on_purpose.md new file mode 100644 index 000000000..c5f5a1d19 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/80.enable_rebuild_on_purpose.md @@ -0,0 +1,14 @@ +enable_rebuild_on_purpose +============================================== + +enable_rebuild_on_purpose 在备副本日志落后过多时,设置是否开启主动触发副本重建操作。 + + +| **属性** | **描** **述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/81.enable_log_archive.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/81.enable_log_archive.md new file mode 100644 index 000000000..26f90c225 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/81.enable_log_archive.md @@ -0,0 +1,15 @@ +enable_log_archive +======================================= + +enable_log_archive 用于设置是否开启日志归档功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/82.enable_monotonic_weak_read.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/82.enable_monotonic_weak_read.md new file mode 100644 index 000000000..87032236e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/82.enable_monotonic_weak_read.md @@ -0,0 +1,15 @@ +enable_monotonic_weak_read +=============================================== + +enable_monotonic_weak_read 用于设置是否开启单调读。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/83.external_kms_info.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/83.external_kms_info.md new file mode 100644 index 000000000..6859db8ee --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/83.external_kms_info.md @@ -0,0 +1,16 @@ +external_kms_info +====================================== + +external_kms_info 用于存储一些密钥管理信息。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + +使用外部密钥管理中心时,external_kms_info 将存储一些密钥管理信息。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/84.freeze_trigger_percentage.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/84.freeze_trigger_percentage.md new file mode 100644 index 000000000..52018975c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/84.freeze_trigger_percentage.md @@ -0,0 +1,16 @@ +freeze_trigger_percentage +============================================== + +freeze_trigger_percentage 用于设置触发全局冻结的租户使用内存阈值。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 70 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + + +详细信息请参见 [enable_global_freeze_trigger](/zh-CN/14.reference-guide-oracle-mode/3.system-configuration-items-1/61.enable_global_freeze_trigger-1.md)。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/85.flush_log_at_trx_commit.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/85.flush_log_at_trx_commit.md new file mode 100644 index 000000000..2872d46d0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/85.flush_log_at_trx_commit.md @@ -0,0 +1,31 @@ +flush_log_at_trx_commit +============================================ + +flush_log_at_trx_commit 用于设置事务提交时写事务日志策略。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[0, 2\] | +| 是否重启 OBServer 生效 | 否 | + + + +flush_log_at_trx_commit 配置项的取值含义如下: + +* 取值为 0 表示不等待日志写入缓冲区。 + + + +* 取值为 1 表示等待日志写入磁盘。 + + + +* 取值为 2 表示等待日志写入缓冲区而不等落盘。 + + + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/86.fuse_row_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/86.fuse_row_cache_priority.md new file mode 100644 index 000000000..c800bb60f --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/86.fuse_row_cache_priority.md @@ -0,0 +1,14 @@ +fuse_row_cache_priority +============================================ + +fuse_row_cache_priority 用于设置融合行缓存在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/87.force_refresh_location_cache_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/87.force_refresh_location_cache_interval.md new file mode 100644 index 000000000..8da7686e0 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/87.force_refresh_location_cache_interval.md @@ -0,0 +1,14 @@ +force_refresh_location_cache_interval +========================================================== + +force_refresh_location_cache_interval 用于设置刷新位置缓存的最大时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 2h,表示 2 小时 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/88.force_refresh_location_cache_threshold.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/88.force_refresh_location_cache_threshold.md new file mode 100644 index 000000000..195ec0025 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/88.force_refresh_location_cache_threshold.md @@ -0,0 +1,15 @@ +force_refresh_location_cache_threshold +=========================================================== + +force_refresh_location_cache_threshold 用于设置刷新位置缓存时每秒最多刷新次数的阈值,超过该阈值会被限流。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/89.get_leader_candidate_rpc_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/89.get_leader_candidate_rpc_timeout.md new file mode 100644 index 000000000..56e43194b --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/89.get_leader_candidate_rpc_timeout.md @@ -0,0 +1,15 @@ +get_leader_candidate_rpc_timeout +===================================================== + +get_leader_candidate_rpc_timeout 用于设置自动切主策略获取切主候选者的内部请求超时时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 9s | +| 取值范围 | \[2s, 180s\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/9.balancer_timeout_check_interval.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/9.balancer_timeout_check_interval.md new file mode 100644 index 000000000..612730057 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/9.balancer_timeout_check_interval.md @@ -0,0 +1,14 @@ +balancer_timeout_check_interval +==================================================== + +balancer_timeout_check_interval 用于设置检查负载均衡等后台任务超时的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 1m,表示 1 分钟 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/90.global_major_freeze_residual_memory.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/90.global_major_freeze_residual_memory.md new file mode 100644 index 000000000..be9684716 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/90.global_major_freeze_residual_memory.md @@ -0,0 +1,21 @@ +global_major_freeze_residual_memory +======================================================== + +global_major_freeze_residual_memory 用于设置触发全局冻结的剩余内存阈值。即当剩余内存小于这个百分比时,触发全局冻结。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 40 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + + +global_major_freeze_residual_memory 配置项是百分比,百分比基数是 memory_limit - system_memory,即除去为 OceanBase 数据库内部 500 租户预留的内存。已经冻结的 memstore 在 merge 完成后,内存就可以释放,所以冻结的 memstore 占用的内存在这里被看作是 active_memstore 可以使用的内存,blockcache 可以挤占的那部分内存也被看作是 memstore 可以使用的内存。 +**说明** + + + +global_major_freeze_residual_memory 配置项取值需要比 global_write_halt_residual_memory 大,否则全局 freeze trigger 实际不生效,只能依靠 tenant 触发全局冻结。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/91.global_write_halt_residual_memory.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/91.global_write_halt_residual_memory.md new file mode 100644 index 000000000..e3351b679 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/91.global_write_halt_residual_memory.md @@ -0,0 +1,16 @@ +global_write_halt_residual_memory +====================================================== + +global_write_halt_residual_memory 用于设置触发暂停普通租户写入(sys 租户不受影响)的全局剩余内存阈值。即当全局剩余内存小于这个百分比时,暂停普通租户写入(sys 租户不受影响)。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 30 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + + +global_write_halt_residual_memory 配置项的值为百分比,百分比基数为 memory_limit - system_memory,即除去为 OceanBase 数据库内部 500 租户预留的内存。计算剩余内存的时候,blockcache 可以挤占的那部分内存看作 memstore 可以使用的内存。 diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/92.ignore_replay_checksum_error.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/92.ignore_replay_checksum_error.md new file mode 100644 index 000000000..3d1896acb --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/92.ignore_replay_checksum_error.md @@ -0,0 +1,14 @@ +ignore_replay_checksum_error +================================================= + +ignore_replay_checksum_error 用于设置是否忽略回放事务日志时发生的校验和错误。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/93.global_index_build_single_replica_timeout.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/93.global_index_build_single_replica_timeout.md new file mode 100644 index 000000000..7184408f5 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/93.global_index_build_single_replica_timeout.md @@ -0,0 +1,15 @@ +global_index_build_single_replica_timeout +============================================================== + +global_index_build_single_replica_timeout 用于建全局索引时,设置每个副本构建的超时时间。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 48h | +| 取值范围 | \[1h, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/94.high_priority_net_thread_count.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/94.high_priority_net_thread_count.md new file mode 100644 index 000000000..177428803 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/94.high_priority_net_thread_count.md @@ -0,0 +1,15 @@ +high_priority_net_thread_count +=================================================== + +high_priority_net_thread_count 用于设置高优先级网络线程数,值为 0 时,表示关闭该功能。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/95.ignore_replica_checksum_error.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/95.ignore_replica_checksum_error.md new file mode 100644 index 000000000..fe87015f7 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/95.ignore_replica_checksum_error.md @@ -0,0 +1,14 @@ +ignore_replica_checksum_error +================================================== + +ignore_replica_checksum_error 用于设置是否忽略多副本间校验和检查发生的错误。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/96.ignore_replay_checksum_error-1.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/96.ignore_replay_checksum_error-1.md new file mode 100644 index 000000000..3d1896acb --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/96.ignore_replay_checksum_error-1.md @@ -0,0 +1,14 @@ +ignore_replay_checksum_error +================================================= + +ignore_replay_checksum_error 用于设置是否忽略回放事务日志时发生的校验和错误。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/97.index_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/97.index_cache_priority.md new file mode 100644 index 000000000..77c5efbfc --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/97.index_cache_priority.md @@ -0,0 +1,15 @@ +index_cache_priority +========================================= + +index_cache_priority 用于设置索引在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/98.index_clog_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/98.index_clog_cache_priority.md new file mode 100644 index 000000000..aaa377718 --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/98.index_clog_cache_priority.md @@ -0,0 +1,15 @@ +index_clog_cache_priority +============================================== + +index_clog_cache_priority 用于设置事务日志索引在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/99.index_info_block_cache_priority.md b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/99.index_info_block_cache_priority.md new file mode 100644 index 000000000..cccf2103e --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/3.system-configuration-items/99.index_info_block_cache_priority.md @@ -0,0 +1,14 @@ +index_info_block_cache_priority +==================================================== + +index_info_block_cache_priority 用于设置块索引在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/13.reference-guide/4.reserved-keywords.md b/docs/docs/docs-cn/13.reference-guide/4.reserved-keywords.md new file mode 100644 index 000000000..92ec86a1c --- /dev/null +++ b/docs/docs/docs-cn/13.reference-guide/4.reserved-keywords.md @@ -0,0 +1,92 @@ +预留关键字 +========================== + + + +目前,OceanBase 数据库 MySQL 模式下的预留关键如下所示。 + + +|--------------|-------------------------------|---------------------|--------------------|-------------------| +| A ||||| +| ACCESSIBLE | ADD | ALL | ALTER | ANALYZE | +| AND | AS | ASC | ASENSITIVE || +| B ||||| +| BEFORE | BETWEEN | BIGINT | BINARY | BLOB | +| BOTH | BY |||| +| C ||||| +| CALL | CASCADE | CASE | CHANGE | CHAR | +| CHARACTER | CHECK | COLLATE | COLUMN | CONDITION | +| CONSTRAINT | CONTINUE | CON | VERT | CREATE | +| CROSS | CURRENT_DATE | CURRENT_TIME | CURRENT_TIME | STAMP | +| CURRENT_USER | CURSOR |||| +| D ||||| +| DATABASE | DATABASES | DAY_HOUR | DAY_MICROSECOND | DAY_MINUTE | +| DAY_SECOND | DECLARE | DECIMAL | DEFAULT | DELAYED | +| DELETE | DESC | DESCRIBE | DETERMINISTIC | DISTINCT | +| DISTINCTROW | DIV | DOUBLE | DROP | DUAL | +| E ||||| +| EACH | ELSE | ELSEIF | ENCLOSED | ESCAPED | +| EXISTS | EXIT | EXPLAIN ||| +| F ||||| +| FETCH | FLOAT | FLOAT4 | FLOAT8 | FOR | +| FORCE | FOREIGN | FROM | FULLTEXT || +| G ||||| +| GENERATED | GET | GRANT | GROUP || +| H ||||| +| HAVING | HIGH_PRIORITY | HOUR_MICROSECOND | HOUR_MINUTE | HOUR_SECOND | +| I ||||| +| IF | IGNORE | IN | INDEX | INFILE | +| INNER | INOUT | INSENSITIVE | INSERT | INT | +| INT1 | INT2 | INT3 | INT4 | INT8 | +| INTEGER | INTERVAL | INTO | IO_AFTER_GTIDS | IO_BEFORE_GTIDS | +| IS | ITERATE |||| +| J ||||| +| JOIN ||||| +| K ||||| +| KEY | KEYS | KILL ||| +| L ||||| +| LEADING | LEAVE | LEFT | LIKE | LIMIT | +| LINEAR | LINES | LOAD | LOCALTIME | LOCALTIMESTAMP | +| LONG | LONGBLOB | LONGTEXT | LOOP | LOW_PRIORITY | +| M ||||| +| MASTER_BIND | MASTER_SSL_VERIFY_SERVER_CERT | MATCH | MAXVALUE | MEDIUMBLOB | +| MEDIUMINT | MEDIUMTEXT | MIDDLEINT | MINUTE_MICROSECOND | MINUTE_SECOND MOD | +| MODIFIES ||||| +| N ||||| +| NATURAL | NOT | NO_WRITE_TO_BINLOG ||| +| O ||||| +| ON | OPTIMIZE | OPTION | OPTIONALLY | OR | +| ORDER | OUT | OUTER | OUTFILE || +| P ||||| +| PARTITION | PRECISION | PRIMARY | PROCEDURE | PURGE | +| R ||||| +| RANGE | READ | READS | READ_WRITE | REAL | +| REFERENCES | REGEXP | RELEASE | RENAME | REPEAT | +| REPLACE | REQUIRE | RESIGNAL | RESTRICT | RETURN | +| REVOKE | RIGHT | RLIKE ||| +| S ||||| +| SCHEMA | SCHEMAS | SECOND_MICROSECOND | SELECT | SENSITIVE | +| SEPARATOR | SET | SHOW | SIGNAL | SMALLINT | +| SPATIAL | SPECIFIC | SQL | SQLEXCEPTION | SQLSTATE | +| SQLWARNING | SQL_BIG_RESULT | SQL_CALC_FOUND_ROWS | SQL_SMALL_RESULT | SSL | +| STARTING | STORED | STRAIGHT_JOIN ||| +| T ||||| +| TABLE | TERMINATED | THEN | TINYBLOB | TINYINT | +| TINYTEXT | TO | TRAILING | TRIGGER | TABLEGROUP | +| U ||||| +| UNDO | UNION | UNIQUE | UNLOCK | UNSIGNED | +| UPDATE | USAGE | USE | USING | UTC_DATE | +| UTC_TIME | UTC_TIMESTAMP |||| +| V ||||| +| VALUES | VARBINARY | VARCHAR | VARCHARACTER | VARYING | +| VIRTUAL ||||| +| W ||||| +| WHEN | WHERE | WHILE | WITH | WRITE | +| X ||||| +| XOR ||||| +| Y ||||| +| YEAR_MONTH ||||| +| Z ||||| +| ZEROFILL ||||| + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/1.ALL_ALL_TABLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/1.ALL_ALL_TABLES.md new file mode 100644 index 000000000..4f52ed4f1 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/1.ALL_ALL_TABLES.md @@ -0,0 +1,92 @@ +ALL_ALL_TABLES +=================================== + + + +功能 +----------- + +查看用户可访问的对象表和关系表,与 ALL_TABLES 不同,ALL_ALL_TABLES 能够查询到对象表。 + +相关视图 +------------- + +* DBA_ALL_TABLES + + + +* USER_ALL_TABLES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表名 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含该表的表空间名字 | +| CLUSTER_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IOT_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| STATUS | VARCHAR2(8) | NO | 表状态: * VALID * UNUSABLE | +| PCT_FREE | NUMBER | NO | 块的最小空闲空间比例 | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BACKED_UP | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | 表行数 | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEGREE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INSTANCES | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CACHE | VARCHAR2(20) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_LOCK | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PARTITIONED | VARCHAR2(3) | NO | 指定表是否是分区: * YES * NO | +| IOT_TYPE | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| OBJECT_ID_TYPE | VARCHAR2(16) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_TYPE_OWNER | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_TYPE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TEMPORARY | VARCHAR2(1) | NO | 指定表是否是临时表 | +| SECONDARY | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NESTED | VARCHAR2(3) | NO | 指定表是否是嵌套表 * YES * NO | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| ROW_MOVEMENT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DURATION | VARCHAR2(15) | NO | 指示临时表的持续时间 | +| SKIP_CORRUPT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MONITORING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTER_OWNER | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEPENDENCIES | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESS_FOR | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DROPPED | VARCHAR2(3) | NO | 表示被删除表是否在回收站里 | +| READ_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| RESULT_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/10.ALL_INDEXES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/10.ALL_INDEXES.md new file mode 100644 index 000000000..092c8c1bd --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/10.ALL_INDEXES.md @@ -0,0 +1,92 @@ +ALL_INDEXES +================================ + + + +功能 +----------- + +ALL_INDEXES 用于查看用户可访问的所有表的索引的索引列信息。 + +相关视图 +------------- + +* USER_INDEXES + + + +* DBA_INDEXES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 索引所属的拥有者。 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字。 | +| INDEX_TYPE | VARCHAR2(27) | NO | 索引的类型。 | +| TABLE_OWNER | VARCHAR2(128) | NO | 被索引对象的拥有者。 | +| TABLE_NAME | VARCHAR2(128) | NO | 被索引对象的名字。 | +| TABLE_TYPE | CHAR(5) | NO | 被索引对象的类型。 | +| UNIQUENESS | VARCHAR2(9) | NO | 表示索引是否是唯一的(UNIQUE)或不唯一的。 | +| COMPRESSION | VARCHAR2(8) | NO | 表示索引是否是被压缩的。 | +| PREFIX_LENGTH | NUMBER | NO | 表示在压缩索引中的前缀列数量。目前暂不支持该字段,当前该字段显示为 NULL | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 索引所在的表空间名。 | +| INI_TRANS | NUMBER | NO | 表示初始事务数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| MAX_TRANS | NUMBER | NO | 表示最大事务数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| INITIAL_EXTENT | NUMBER | NO | 表示初始 extent 大小。目前暂不支持该字段,当前该字段显示为 NULL。 | +| NEXT_EXTENT | NUMBER | NO | 表示第二 extent 大小。目前暂不支持该字段,当前该字段显示为 NULL | +| MIN_EXTENTS | NUMBER | NO | 表示在段里允许的最小 extent 数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| MAX_EXTENTS | NUMBER | NO | 表示在段里允许的最大 extent 数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PCT_INCREASE | NUMBER | NO | 表示 extent 大小的增长率。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PCT_THRESHOLD | NUMBER | NO | 表示每个索引被允许占用的块空间百分比。目前暂不支持该字段,当前该字段显示为 NULL。 | +| INCLUDE_COLUMN | NUMBER | NO | 表示索引组织表的主键的最后一列的列编号。目前暂不支持该字段,当前该字段显示为 NULL。 | +| FREELISTS | NUMBER | NO | 表示被分配各段的进程 freelist 数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| FREELIST_GROUPS | NUMBER | NO | 表示被分配各段的 freelist 组数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PCT_FREE | NUMBER | NO | 表示块中空余空间的最小百分比。目前暂不支持该字段,当前该字段显示为 NULL | +| LOGGING | VARCHAR2(3) | NO | 表示对索引的修改是否被记录了日志。目前暂不支持该字段,当前该字段显示为 NULL。 | +| BLEVEL | NUMBER | NO | 表示 B\*-Tree 的深度。目前暂不支持该字段,当前该字段显示为 NULL。 | +| LEAF_BLOCKS | NUMBER | NO | 表示索引中叶子块的数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DISTINCT_KEYS | NUMBER | NO | 表示不同索引值的数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| AVG_LEAF_BLOCKS_PER_KEY | NUMBER | NO | 表示出现索引中每个不同值的叶块的平均数目,四舍五入到最接近的整数。对于具有 UNIQUE 和 PRIMARY KEY 约束的索引,此值始终为 1。目前暂不支持该字段,当前该字段显示为 NULL。 | +| AVG_DATA_BLOCKS_PER_KEY | NUMBER | NO | 表示表中由索引中不同值四舍五入到最接近的整数所指向的平均数据块数。此统计信息是包含行的数据块的平均数量,这些行包含给定索引列的给定值。目前暂不支持该字段,当前该字段显示为 NULL。 | +| CLUSTERING_FACTOR | NUMBER | NO | 指示基于索引值的表中行的数量。 如果该值接近块数,则表的顺序非常好。在这种情况下,单个叶块中的索引条目往往指向同一数据块中的行。 如果该值接近行数,则表是非常随机的。在这种情况下,同一叶块中的索引条目不太可能指向同一数据块中的行。目前暂不支持该字段,当前该字段显示为 NULL。 | +| STATUS | VARCHAR2(10) | NO | 指示未分区的索引是 VALID 还是 UNUSABLE。 | +| NUM_ROWS | NUMBER | NO | 表示索引中的行数。目前暂不支持该字段,当前该字段显示为 NULL。 | +| SAMPLE_SIZE | NUMBER | NO | 表示用于分析指标的样本大小。目前暂不支持该字段,当前该字段显示为 NULL。 | +| LAST_ANALYZED | DATE | NO | 最近分析该指数的日期。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DEGREE | VARCHAR2(40) | NO | 表示每个实例用于扫描索引的线程数。目前暂不支持该字段,当前该字段显示为 NULL。 | +| INSTANCES | VARCHAR2(40) | NO | 表示要扫描索引的实例数。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PARTITIONED | VARCHAR2(3) | NO | 表示索引是否是分区。 | +| TEMPORARY | VARCHAR2(1) | NO | 表示索引是否在临时表上。目前暂不支持该字段,当前该字段显示为 NULL。 | +| GENERATED | VARCHAR2(1) | NO | 指示索引的名称是系统生成的。目前暂不支持该字段,当前该字段显示为 NULL。 | +| SECONDARY | VARCHAR2(1) | NO | 指示索引是否是辅助对象。目前暂不支持该字段,当前该字段显示为 NULL。 | +| BUFFER_POOL | VARCHAR2(7) | NO | 用于索引块的默认缓冲池的名称。目前暂不支持该字段,当前该字段显示为 NULL。 | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于索引块的数据库智能闪存缓存。目前暂不支持该字段,当前该字段显示为 NULL。 | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 用于索引块的单元闪存缓存。目前暂不支持该字段,当前该字段显示为 NULL。 | +| USER_STATS | VARCHAR2(3) | NO | 是否由用户直接输入统计信息。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DURATION | VARCHAR2(15) | NO | 指示临时表的持续时间: * SYS $ SESSION:在会话期间将保留行 * SYS $ TRANSACTION:在COMMIT 之后删除行 目前暂不支持该字段,当前该字段显示为 NULL。 | +| PCT_DIRECT_ACCESS | NUMBER | NO | 对于索引组织的表上的二级索引,具有 VALID 猜测的行的百分比。目前暂不支持该字段,当前该字段显示为 NULL。 | +| ITYP_OWNER | VARCHAR2(30) | NO | 域索引的索引类型的所有者。目前暂不支持该字段,当前该字段显示为 NULL。 | +| ITYP_NAME | VARCHAR2(30) | NO | 域索引的索引类型名称。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PARAMETERS | VARCHAR2(1000) | NO | 域索引的参数字符串。目前暂不支持该字段,当前该字段显示为 NULL。 | +| GLOBAL_STATS | VARCHAR2(3) | NO | 对于分区索引,指定是通过整体分析索引收集统计信息,还是从基础索引分区和子分区的统计信息中估算统计信息。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DOMIDX_STATUS | VARCHAR2(12) | NO | 表示域索引的状态。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DOMIDX_OPSTATUS | VARCHAR2(6) | NO | 表示域索引上的操作状态。目前暂不支持该字段,当前该字段显示为 NULL。 | +| FUNCIDX_STATUS | VARCHAR2(8) | NO | 基于函数的索引的状态。 | +| JOIN_INDEX | VARCHAR2(3) | NO | 指示索引是否为联接索引。 | +| IOT_REDUNDANT_PKEY_ELIM | VARCHAR2(3) | NO | 指示是否从索引组织表的二级索引中消除了冗余主键列。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DROPPED | VARCHAR2(9) | NO | 表示索引是否被删除并进了回收站。 | +| VISIBILITY | VARCHAR2(10) | NO | 表示索引对优化器是否可见。 | +| DOMIDX_MANAGEMENT | VARCHAR2(14) | NO | 表示域索引是由系统管理还是用户管理。目前暂不支持该字段,当前该字段显示为 NULL。 | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 指示是否已创建索引段。目前暂不支持该字段,当前该字段显示为 NULL。 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/100.DBA_RSRC_PLANS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/100.DBA_RSRC_PLANS.md new file mode 100644 index 000000000..28e7cefb7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/100.DBA_RSRC_PLANS.md @@ -0,0 +1,46 @@ +DBA_RSRC_PLANS +=================================== + + + +功能 +----------------------- + +`DBA_RSRC_PLANS` 视图用于记录系统定义的所有资源管理计划。 + +相关视图 +------------------------- + +* `DBA_RSRC_PLAN_DIRECTIVES` + + + +* `V$RSRC_PLAN` + + + + + + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|---------------------------|----------------|------------|----------------------------------------------------| +| PLAN_ID | NUMBER | NO | 资源计划的 ID。 | +| PLAN | VARCHAR2(128) | NO | 资源计划名。 | +| NUM_PLAN_DIRECTIVES | NUMBER | NO | 当前资源计划定义的指令数。 仅用于兼容,目前值固定为 `NULL`。 | +| CPU_METHOD | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MGMT_METHOD | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| ACTIVE_SESS_POOL_MTH | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| PARALLEL_DEGREE_LIMIT_MTH | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| QUEUING_MTH | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SUB_PLAN | VARCHAR2(3) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| COMMENTS | VARCHAR2(2000) | YES | 资源计划的备注信息。 | +| STATUS | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MANDATORY | VARCHAR2(3) | NO | 仅用于兼容,目前值固定为 `NULL`。 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/101.DBA_RSRC_PLAN_DIRECTIVES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/101.DBA_RSRC_PLAN_DIRECTIVES.md new file mode 100644 index 000000000..e4e52dd40 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/101.DBA_RSRC_PLAN_DIRECTIVES.md @@ -0,0 +1,79 @@ +DBA_RSRC_PLAN_DIRECTIVES +============================================= + + + +功能 +----------------------- + +`DBA_RSRC_PLAN_DIRECTIVES` 视图用于记录数据库中每组资源计划指令的详细信息。 + +相关视图 +------------------------- + +* `DBA_RSRC_PLANS` + + + +* `V$RSRC_PLAN` + + + + + + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|----------------------------|----------------|------------|----------------------| +| PLAN | VARCHAR2(128) | NO | 指令所属的资源计划名。 | +| GROUP_OR_SUBPLAN | VARCHAR2(128) | NO | 指令控制的资源组名。 | +| TYPE | VARCHAR2(14) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| CPU_P1 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| CPU_P2 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| CPU_P3 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| CPU_P4 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| CPU_P5 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| CPU_P6 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| CPU_P7 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| CPU_P8 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MGMT_P1 | NUMBER(38) | NO | 满负载场景下,可用的最大 CPU 份额。 | +| MGMT_P2 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MGMT_P3 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MGMT_P4 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MGMT_P5 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MGMT_P6 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MGMT_P7 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MGMT_P8 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| ACTIVE_SESS_POOL_P1 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| QUEUEING_P1 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| PARALLEL_TARGET_PERCENTAGE | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| PARALLEL_DEGREE_LIMIT_P1 | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SWITCH_GROUP | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SWITCH_FOR_CALL | VARCHAR2(5) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SWITCH_TIME | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SWITCH_IO_MEGABYTES | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SWITCH_IO_REQS | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SWITCH_ESTIMATE | VARCHAR2(5) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MAX_EST_EXEC_TIME | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| UNDO_POOL | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MAX_IDLE_TIME | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MAX_IDLE_BLOCKER_TIME | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MAX_UTILIZATION_LIMIT | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| PARALLEL_QUEUE_TIMEOUT | NUMBER | NO | 仅用于兼容,值一直为 `NULL`。 | +| SWITCH_TIME_IN_CALL | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SWITCH_IO_LOGICAL | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SWITCH_ELAPSED_TIME | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| PARALLEL_SERVER_LIMIT | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| UTILIZATION_LIMIT | NUMBER(38) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| PARALLEL_STMT_CRITICAL | VARCHAR2(12) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| SESSION_PGA_LIMIT | NUMBER | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| PQ_TIMEOUT_ACTION | VARCHAR2(6) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| COMMENTS | VARCHAR2(2000) | YES | 指令的备注信息 | +| STATUS | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MANDATORY | VARCHAR2(3) | NO | 仅用于兼容,目前值固定为 `NULL`。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/102.NLS_DATABASE_PARAMETERS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/102.NLS_DATABASE_PARAMETERS.md new file mode 100644 index 000000000..781282caa --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/102.NLS_DATABASE_PARAMETERS.md @@ -0,0 +1,67 @@ +NLS_DATABASE_PARAMETERS +============================================ + + + +功能 +----------- + +查看 DataBase 级别(OceanBase 数据库租户级)的 NLS 参数。 + +相关视图 +------------- + +* NLS_INSTANCE_PARAMETERS + + + +* NLS_SESSION_PARAMETERS, + + + +* V$NLS_PARAMETERS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------|-----------------|----------------|--------| +| PARAMETER | VARCHAR2(128) | NO | 参数名称 | +| VALUE | VARCHAR2(65536) | YES | 参数取值 | + + + +示例 +----------- + +```sql +obclient> SELECT * FROM SYS.NLS_DATABASE_PARAMETERS; ++-------------------------+----------------------------------+ +| PARAMETER | VALUE | ++-------------------------+----------------------------------+ +| NLS_DATE_FORMAT | YYYY-MM-DD HH24:MI:SS | +| NLS_TIMESTAMP_FORMAT | YYYY-MM-DD HH24:MI:SS.FF | +| NLS_TIMESTAMP_TZ_FORMAT | YYYY-MM-DD HH24:MI:SS.FF TZR TZD | +| NLS_TERRITORY | AMERICA | +| NLS_SORT | BINARY | +| NLS_COMP | BINARY | +| NLS_CHARACTERSET | AL32UTF8 | +| NLS_NCHAR_CHARACTERSET | AL16UTF16 | +| NLS_DATE_LANGUAGE | AMERICAN | +| NLS_LENGTH_SEMANTICS | BYTE | +| NLS_NCHAR_CONV_EXCP | FALSE | +| NLS_CALENDAR | GREGORIAN | +| NLS_NUMERIC_CHARACTERS | ., | ++-------------------------+----------------------------------+ +13 rows in set (0.03 sec) +``` + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/103.NLS_INSTANCE_PARAMETERS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/103.NLS_INSTANCE_PARAMETERS.md new file mode 100644 index 000000000..4eeb0b002 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/103.NLS_INSTANCE_PARAMETERS.md @@ -0,0 +1,67 @@ +NLS_INSTANCE_PARAMETERS +============================================ + + + +功能 +----------- + +查看实例级别(租户级别)的 NLS 参数。 + +相关视图 +------------- + +* NLS_DATABASE_PARAMETERS + + + +* NLS_SESSION_PARAMETERS + + + +* V$NLS_PARAMETERS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------|-----------------|----------------|--------| +| PARAMETER | VARCHAR2(128) | NO | 参数名称 | +| VALUE | VARCHAR2(65536) | YES | 参数取值 | + + + +示例 +----------- + +```sql +obclient> SELECT * FROM SYS.NLS_INSTANCE_PARAMETERS; ++-------------------------+----------------------------------+ +| PARAMETER | VALUE | ++-------------------------+----------------------------------+ +| NLS_DATE_FORMAT | YYYY-MM-DD HH24:MI:SS | +| NLS_TIMESTAMP_FORMAT | YYYY-MM-DD HH24:MI:SS.FF | +| NLS_TIMESTAMP_TZ_FORMAT | YYYY-MM-DD HH24:MI:SS.FF TZR TZD | +| NLS_TERRITORY | AMERICA | +| NLS_SORT | BINARY | +| NLS_COMP | BINARY | +| NLS_CHARACTERSET | AL32UTF8 | +| NLS_NCHAR_CHARACTERSET | AL16UTF16 | +| NLS_DATE_LANGUAGE | AMERICAN | +| NLS_LENGTH_SEMANTICS | BYTE | +| NLS_NCHAR_CONV_EXCP | FALSE | +| NLS_CALENDAR | GREGORIAN | +| NLS_NUMERIC_CHARACTERS | ., | ++-------------------------+----------------------------------+ +13 rows in set (0.02 sec) +``` + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/104.NLS_SESSION_PARAMETERS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/104.NLS_SESSION_PARAMETERS.md new file mode 100644 index 000000000..ce5fd0029 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/104.NLS_SESSION_PARAMETERS.md @@ -0,0 +1,66 @@ +NLS_SESSION_PARAMETERS +=========================================== + + + +功能 +----------- + +查看 Session 级别的 NLS 参数。 + +相关视图 +------------- + +* NLS_INSTANCE_PARAMETERS + + + +* NLS_DATABASE_PARAMETERS + + + +* V$NLS_PARAMETERS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------|-----------------|----------------|--------| +| PARAMETER | VARCHAR2(128) | NO | 参数名称 | +| VALUE | VARCHAR2(65536) | YES | 参数取值 | + + + +示例 +----------- + +```sql +obclient> SELECT * FROM SYS.NLS_SESSION_PARAMETERS; ++-------------------------+----------------------------------+ +| PARAMETER | VALUE | ++-------------------------+----------------------------------+ +| NLS_DATE_FORMAT | YYYY-MM-DD HH24:MI:SS | +| NLS_TIMESTAMP_FORMAT | YYYY-MM-DD HH24:MI:SS.FF | +| NLS_TIMESTAMP_TZ_FORMAT | YYYY-MM-DD HH24:MI:SS.FF TZR TZD | +| NLS_LANGUAGE | AMERICAN | +| NLS_TERRITORY | AMERICA | +| NLS_SORT | BINARY | +| NLS_COMP | BINARY | +| NLS_DATE_LANGUAGE | AMERICAN | +| NLS_LENGTH_SEMANTICS | BYTE | +| NLS_NCHAR_CONV_EXCP | FALSE | +| NLS_CALENDAR | GREGORIAN | +| NLS_NUMERIC_CHARACTERS | ., | ++-------------------------+----------------------------------+ +12 rows in set (0.01 sec) +``` + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/105.STMT_AUDIT_OPTION_MAP.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/105.STMT_AUDIT_OPTION_MAP.md new file mode 100644 index 000000000..58626bead --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/105.STMT_AUDIT_OPTION_MAP.md @@ -0,0 +1,28 @@ +STMT_AUDIT_OPTION_MAP +========================================== + + + +功能 +----------- + +记录语句级别审计的 Type 及对应的名称和优先级。 + +相关视图 +------------- + +DBA_STMT_AUDIT_OPTS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|---------------|----------------|-------------------------------------| +| OPTION# | NUMBER(38) | NO | 语句级别审计的 Type ID | +| NAME | VARCHAR2(128) | NO | 语句级别审计的 Type 对应的名称 | +| PROPERTY | NUMBER | NO | 语句级别审计 Type 的优先级,目前暂不支持该字段,默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/106.USER_ALL_TABLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/106.USER_ALL_TABLES.md new file mode 100644 index 000000000..f941b9da3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/106.USER_ALL_TABLES.md @@ -0,0 +1,91 @@ +USER_ALL_TABLES +==================================== + + + +功能 +----------- + +查看当前用户可访问的对象表和关系表,除了 OWNER 字段之外,其他字段和 ALL_ALL_TABLES 相同。 + +相关视图 +------------- + +* DAB_ALL_TABLES + + + +* ALL_ALL_TABLES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------| +| TABLE_NAME | VARCHAR2(128) | NO | 表名 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含该表的表空间名字 | +| CLUSTER_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IOT_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| STATUS | VARCHAR2(8) | NO | 表状态: * VALID * UNUSABLE | +| PCT_FREE | NUMBER | NO | 块的最小空闲空间比例 | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BACKED_UP | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | 表行数 | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEGREE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INSTANCES | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CACHE | VARCHAR2(20) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_LOCK | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PARTITIONED | VARCHAR2(3) | NO | 指定表是否是分区: * YES * NO | +| IOT_TYPE | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| OBJECT_ID_TYPE | VARCHAR2(16) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_TYPE_OWNER | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_TYPE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TEMPORARY | VARCHAR2(1) | NO | 指定表是否是临时表 | +| SECONDARY | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NESTED | VARCHAR2(3) | NO | 指定表是否是嵌套表: * YES * NO | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| ROW_MOVEMENT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DURATION | VARCHAR2(15) | NO | 指示临时表的持续时间 | +| SKIP_CORRUPT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MONITORING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTER_OWNER | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEPENDENCIES | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESS_FOR | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DROPPED | VARCHAR2(3) | NO | 表示被删除表是否在回收站里 | +| READ_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| RESULT_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/107.USER_ARGUMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/107.USER_ARGUMENTS.md new file mode 100644 index 000000000..05d252ead --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/107.USER_ARGUMENTS.md @@ -0,0 +1,55 @@ +USER_ARGUMENTS +=================================== + + + +功能 +----------- + +列出数据库中可用的过程和函数的参数。其列与 `ALL_ARGUMENTS` 中的列相同,去除了 `OWNER` 字段。 + +相关视图 +------------- + +* DBA_ARGUMENTS + + + +* ALL_ARGUMENTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OBJECT_NAME | VARCHAR2(128) | YES | 过程或者函数名 | +| PACKAGE_NAME | VARCHAR2(128) | YES | 包名 | +| OBJECT_ID | NUMBER | NO | 对象 ID | +| OVERLOAD | NUMBER | YES | 出现在包源文件中的第几次重载 | +| SUBPROGRAM_ID | NUMBER | YES | 出现在包中的顺序, 对于独立的过程或者函数该值为 1 | +| ARGUMENT_NAME | VARCHAR2(128) | YES | 参数名,该值为 NULL 说明是函数的返回值 | +| POSITION | NUMBER(38) | NO | 出现在参数列表中的位置 | +| SEQUENCE | NUMBER(38) | NO | 对于复杂类型,该值代表属性的序号 | +| DATA_LEVEL | NUMBER(38) | NO | 对于嵌套的复杂类型, 该值代表当前类型嵌套的层次 | +| DATA_TYPE | VARCHAR2(128) | YES | 参数的数据类型, 对于嵌套的复杂类型, 该值代表当前层的数据类型 | +| DEFAULTED | CHAR(2) | YES | 标识当前参数是否有默认值 | +| DATA_LENGTH | NUMBER(38) | YES | 数据类型的长度 | +| IN_OUT | VARCHAR2(5) | YES | 参数的输入输出属性(NULL 表示是返回值) * IN * OUT * IN OUT | +| DATA_PRECISION | NUMBER(38) | YES | 数值类型的最大长度 | +| DATA_SCALE | NUMBER(38) | YES | 数值类型小数点右边的数据长度 | +| CHARACTER_SET_NAME | VARCHAR2(7) | YES | 参数的字符集名 | +| COLLATION | VARCHAR2(18) | YES | 字符集排序规则 | +| TYPE_OWNER | NUMBER(38) | YES | 复杂数据类型的类型拥有者 | +| TYPE_NAME | VARCHAR2(128) | YES | 复杂数据类型的名字 | +| TYPE_SUBNAME | VARCHAR2(128) | YES | 如果是包中的类型, 该字段代表包名 | +| ORIGIN_CON_ID | NUMBER(38) | YES | 该字段当前代表租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/108.USER_AUDIT_OBJECT.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/108.USER_AUDIT_OBJECT.md new file mode 100644 index 000000000..89864a688 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/108.USER_AUDIT_OBJECT.md @@ -0,0 +1,64 @@ +USER_AUDIT_OBJECT +====================================== + + + +功能 +----------- + +显示当前用户可访问的对象的审计跟踪记录。 + +相关视图 +------------- + +* DBA_AUDIT_OBJECT + + + +* ALL_AUDIT_OBJECT + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-----------------------------|----------------|-------------------------------------------------------| +| OS_USERNAME | VARCHAR2(255) | NO | 操作被审计的用户的操作系统登录用户名。目前暂不支持该字段,当前该字段默认为 NULL | +| USERNAME | VARCHAR2(32) | NO | 操作被审计的用户的名称 | +| USERHOST | VARCHAR2(64) | NO | 客户端主机名称。目前暂不支持该字段,当前该字段默认为 NULL | +| TERMINAL | VARCHAR2(255) | NO | 用户终端的标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TIMESTAMP | DATE | NO | 在本地数据库会话时区中创建审计跟踪条目的日期和时间 | +| OWNER | VARCHAR2(64) | YES | 受行为影响的对象的创建者 | +| OBJ_NAME | VARCHAR2(256) | YES | 受操作影响的对象的名称 | +| ACTION_NAME | VARCHAR2(128) | NO | 与 DBA_AUDIT_TRAIL 中操作列中的数字代码对应的操作类型的名称 | +| NEW_OWNER | VARCHAR2(64) | YES | 在 NEW_NAME 列中命名的对象的所有者 | +| NEW_NAME | VARCHAR2(256) | YES | 对象的新名称在 RENAME 或基础对象的名称之后 | +| SES_ACTIONS | VARCHAR2(19) | NO | 会话摘要。目前暂不支持该字段,当前该字段默认为 NULL | +| COMMENT_TEXT | VARCHAR2(65536) | YES | 在审计跟踪上的文本注释 | +| SESSIONID | NUMBER(38) | NO | 会话的数字 ID | +| ENTRYID | NUMBER(38) | NO | 会话中每个审计跟踪条目的数字 ID | +| STATEMENTID | NUMBER(38) | NO | 每个语句的数字 ID | +| RETURNCODE | NUMBER(38) | NO | 操作生成的错误代码 | +| PRIV_USED | VARCHAR2(40) | NO | 用于执行操作的系统特权。目前暂不支持该字段,当前该字段默认为 NULL | +| CLIENT_ID | VARCHAR2(40) | NO | 会话中的客户端标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| ECONTEXT_ID | VARCHAR2(40) | NO | 应用程序执行上下文标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| SESSION_CPU | NUMBER(38) | NO | 会话使用的CPU时间 | +| EXTENDED_TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | NO | 在 UTC 时区中创建审计跟踪条目的时间戳 | +| PROXY_SESSIONID | NUMBER(38) | NO | 代理会话序列号 | +| GLOBAL_UID | NUMBER(38) | NO | 用户的全局用户标识符 | +| INSTANCE_NUMBER | VARCHAR2(40) | NO | 实例编号由 INSTANCE_NUMBER 初始化参数指定。目前暂不支持该字段,当前该字段默认为 NULL | +| OS_PROCESS | VARCHAR2(40) | NO | 操作系统进程标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TRANSACTIONID | VARCHAR2(128) | NO | 在其中访问或修改对象的事务标识符 | +| SCN | NUMBER(38) | NO | 系统变更号(SCN)的查询。目前暂不支持该字段,当前该字段默认为 0 | +| SQL_BIND | VARCHAR2(2000) | YES | 绑定查询的变量数据。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_TEXT | VARCHAR2(2000) | YES | 查询的 SQL 文本 | +| OBJ_EDITION_NAME | VARCHAR2(128) | NO | 包含被审计对象的版本的名称。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/109.USER_AUDIT_SESSION.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/109.USER_AUDIT_SESSION.md new file mode 100644 index 000000000..7feb9ae71 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/109.USER_AUDIT_SESSION.md @@ -0,0 +1,45 @@ +USER_AUDIT_SESSION +======================================= + + + +功能 +----------- + +显示关于当前用户的连接和断开的审计跟踪记录。 + +相关视图 +------------- + +DBA_AUDIT_SESSION + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-----------------------------|----------------|-------------------------------------------------------| +| OS_USERNAME | VARCHAR2(255) | NO | 操作被审计的用户的操作系统登录用户名。目前暂不支持该字段,当前该字段默认为 NULL | +| USERNAME | VARCHAR2(64) | NO | 操作被审计的用户的名称 | +| USERHOST | VARCHAR2(32) | NO | 客户端主机名称。目前暂不支持该字段,当前该字段默认为 NULL | +| TERMINAL | VARCHAR2(255) | NO | 用户终端的标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TIMESTAMP | DATE | NO | 在本地数据库会话时区中创建审计跟踪条目的日期和时间 | +| ACTION_NAME | VARCHAR2(128) | NO | 与 DBA_AUDIT_TRAIL 中操作列中的数字代码对应的操作类型的名称 | +| LOGOFF_TIME | DATE | NO | 用户注销的日期和时间 | +| LOGOFF_LREAD | NUMBER(38) | NO | 会话的逻辑读取 | +| LOGOFF_PREAD | NUMBER | NO | 会话的物理读取。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGOFF_LWRITE | NUMBER | NO | 会话的逻辑写操作。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGOFF_DLOCK | VARCHAR2(40) | NO | 在会话期间检测到死锁。目前暂不支持该字段,当前该字段默认为 NULL | +| SESSIONID | NUMBER(38) | NO | 会话的数字 ID | +| RETURNCODE | NUMBER(38) | NO | 操作生成的错误代码 | +| CLIENT_ID | VARCHAR2(40) | NO | 会话中的客户端标识符 | +| SESSION_CPU | NUMBER(38) | NO | 会话使用的 CPU 时间 | +| EXTENDED_TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | NO | 在 UTC 时区中创建审计跟踪条目的时间戳 | +| PROXY_SESSIONID | NUMBER(38) | NO | 代理会话序列号 | +| GLOBAL_UID | NUMBER(38) | NO | 用户的全局用户标识符 | +| INSTANCE_NUMBER | VARCHAR2(40) | NO | INSTANCE_NUMBER 初始化参数指定的实例编号由。目前暂不支持该字段,当前该字段默认为 NULL | +| OS_PROCESS | VARCHAR2(40) | NO | 操作系统进程标识符。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/11.ALL_IND_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/11.ALL_IND_COLUMNS.md new file mode 100644 index 000000000..ce9177075 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/11.ALL_IND_COLUMNS.md @@ -0,0 +1,43 @@ +ALL_IND_COLUMNS +==================================== + + + +功能 +----------- + +查看用户可访问的所有表的索引的索引列信息。 + +相关视图 +------------- + +* USER_IND_COLUMNS + + + +* DBA_IND_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|----------------|----------------|------------------------------| +| INDEX_OWNER | VARCHAR2(128) | NO | 索引所属的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| TABLE_OWNER | VARCHAR2(128) | NO | 索引所在的表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 索引所在的表的名字 | +| COLUMN_NAME | VARCHAR2(4000) | NO | 索引列的名字 | +| COLUMN_POSITION | NUMBER | NO | 索引列在索引中的位置 | +| COLUMN_LENGTH | NUMBER | NO | 索引列的长度 | +| CHAR_LENGTH | NUMBER | NO | 索引列的字符长度 | +| DESCEND | VARCHAR2(4) | NO | 表示索引列是按降序(DESC)排列还是升序(ASC)排列 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/110.USER_AUDIT_STATEMENT.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/110.USER_AUDIT_STATEMENT.md new file mode 100644 index 000000000..c22e24dad --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/110.USER_AUDIT_STATEMENT.md @@ -0,0 +1,64 @@ +USER_AUDIT_STATEMENT +========================================= + + + +功能 +----------- + +显示当前用户发出的 `GRANT`、`REVOKE`、`AUDIT`、`NOAUDIT` 和 `ALTER SYSTEM` 语句的审计跟踪条目。 + +相关视图 +------------- + +* DBA_AUDIT_STATEMENT + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-----------------------------|----------------|--------------------------------------------------------| +| OS_USERNAME | VARCHAR2(255) | NO | 操作被审计的用户的操作系统登录用户名。目前暂不支持该字段,当前该字段默认为 NULL | +| USERNAME | VARCHAR2(64) | NO | 操作被审计的用户的名称 | +| USERHOST | VARCHAR2(32) | NO | 客户端主机名称。目前暂不支持该字段,当前该字段默认为 NULL | +| TERMINAL | VARCHAR2(255) | NO | 用户终端的标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TIMESTAMP | DATE | NO | 在本地数据库会话时区中创建审计跟踪条目的日期和时间 | +| OWNER | VARCHAR2(64) | YES | 受行为影响的对象的创建者 | +| OBJ_NAME | VARCHAR2(256) | YES | 受操作影响的对象的名称 | +| ACTION_NAME | VARCHAR2(128) | NO | 与 DBA_AUDIT_TRAIL 中操作列中的数字代码对应的操作类型的名称 | +| NEW_NAME | VARCHAR2(256) | YES | 对象的新名称在 RENAME 或基础对象的名称之后 | +| OBJ_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE 语句授予或撤销的对象权限,待 Patch | +| SYS_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE 语句授予或撤消的系统权限,待 Patch | +| ADMIN_OPTION | VARCHAR2(1) | NO | 表示已使用 ADMIN 选项授予角色或系统权限,待 Patch | +| GRANTEE | VARCHAR2(128) | NO | GRANT 或 REVOKE 中指定的授予者名称,待 Patch | +| AUDIT_OPTION | VARCHAR2(40) | NO | 审计选项与审计语句一起设置,待 Patch | +| SES_ACTIONS | VARCHAR2(19) | NO | 会话摘要。目前暂不支持该字段,当前该字段默认为 NULL | +| COMMENT_TEXT | VARCHAR2(65536) | YES | 审核跟踪上的文本注释,由应用程序插入 | +| SESSIONID | NUMBER(38) | NO | 会话的数字 ID | +| ENTRYID | NUMBER(38) | NO | 会话中每个审计跟踪条目的数字 ID | +| STATEMENTID | NUMBER(38) | NO | 每个语句的数字 ID | +| RETURNCODE | NUMBER(38) | NO | 操作生成的错误代码 | +| PRIV_USED | VARCHAR2(40) | NO | 用于执行操作的系统权限。目前暂不支持该字段,当前该字段默认为 NULL | +| CLIENT_ID | VARCHAR2(40) | NO | 会话中的客户端标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| ECONTEXT_ID | VARCHAR2(40) | NO | 应用程序执行上下文标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| SESSION_CPU | NUMBER(38) | NO | 会话使用的 CPU 时间 | +| EXTENDED_TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | NO | 在 UTC 时区中创建审计跟踪条目的时间戳 | +| PROXY_SESSIONID | NUMBER(38) | NO | 代理会话序列号 | +| GLOBAL_UID | NUMBER(38) | NO | 用户的全局用户标识符 | +| INSTANCE_NUMBER | VARCHAR2(40) | NO | 由 INSTANCE_NUMBER 初始化参数指定的实例编号。目前暂不支持该字段,当前该字段默认为 NULL | +| OS_PROCESS | VARCHAR2(40) | NO | 进程的操作系统进程标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TRANSACTIONID | VARCHAR2(128) | NO | 在其中访问或修改对象的事务标识符 | +| SCN | NUMBER(38) | NO | 系统变更号 (SCN) 的查询。目前暂不支持该字段,当前该字段默认为 0 | +| SQL_BIND | VARCHAR2(2000) | YES | 绑定查询的变量数据。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_TEXT | VARCHAR2(2000) | YES | 查询的 SQL 文本 | +| OBJ_EDITION_NAME | VARCHAR2(128) | NO | 包含被审计对象的版本的名称。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/111.USER_AUDIT_TRAIL.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/111.USER_AUDIT_TRAIL.md new file mode 100644 index 000000000..91b56c88e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/111.USER_AUDIT_TRAIL.md @@ -0,0 +1,66 @@ +USER_AUDIT_TRAIL +===================================== + + + +功能 +----------- + +显示与当前用户相关的标准审计跟踪条目。 + +相关视图 +------------- + +DBA_AUDIT_TRAIL + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-----------------------------|----------------|--------------------------------------------------------| +| OS_USERNAME | VARCHAR2(255) | NO | 操作被审计的用户的操作系统登录用户名。目前暂不支持该字段,当前该字段默认为 NULL | +| USERNAME | VARCHAR2(64) | NO | 操作被审计的用户的名称 | +| USERHOST | VARCHAR2(32) | NO | 客户端主机名称。目前暂不支持该字段,当前该字段默认为 NULL | +| TERMINAL | VARCHAR2(255) | NO | 用户终端的标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TIMESTAMP | DATE | NO | 在本地数据库会话时区中创建审计跟踪条目的日期和时间 | +| OWNER | VARCHAR2(64) | YES | 受行为影响的对象的创建者 | +| OBJ_NAME | VARCHAR2(256) | YES | 受操作影响的对象的名称 | +| ACTION | NUMBER(38) | NO | 数字操作类型代码 | +| ACTION_NAME | VARCHAR2(128) | NO | 与操作列中的数字代码对应的操作类型的名称 | +| NEW_OWNER | VARCHAR2(64) | YES | 在 NEW_NAME 列中命名的对象的所有者 | +| NEW_NAME | VARCHAR2(256) | YES | 在 RENAME 或基础对象的名称后对象的新名称 | +| OBJ_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE 语句授予或撤销的对象特权,待 Patch | +| SYS_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE 语句授予或撤消的系统特权,待 Patch | +| ADMIN_OPTION | VARCHAR2(1) | NO | 指示是否使用 ADMIN 选项授予角色或系统特权,待 Patch | +| GRANTEE | VARCHAR2(128) | NO | GRANT 或 REVOKE 中指定的授予者名称,待 Patch | +| AUDIT_OPTION | VARCHAR2(40) | NO | AUDIT 语句设置的审计选项,待Patch | +| SES_ACTIONS | VARCHAR2(19) | NO | 会话摘要,OB 不支持,默认为 NULL | +| LOGOFF_TIME | DATE | NO | 用户注销的日期和时间 | +| LOGOFF_LREAD | NUMBER(38) | NO | 会话的逻辑读取 | +| LOGOFF_PREAD | NUMBER | NO | 会话的物理读取。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGOFF_LWRITE | NUMBER | NO | 会话的逻辑写操作。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGOFF_DLOCK | VARCHAR2(40) | NO | 在会话期间检测到死锁。目前暂不支持该字段,当前该字段默认为 NULL | +| COMMENT_TEXT | VARCHAR2(65536) | YES | 在审计跟踪条目上的文本注释,提供关于被审计的语句的更多信息 | +| SESSIONID | NUMBER(38) | NO | 会话的数字 ID | +| ENTRYID | NUMBER(38) | NO | 每个审计跟踪条目的数字 ID | +| STATEMENTID | NUMBER(38) | NO | 每个语句的数字 ID | +| RETURNCODE | NUMBER(38) | NO | 操作生成的错误代码 | +| PRIV_USED | VARCHAR2(40) | NO | 用于执行操作的系统特权。目前暂不支持该字段,当前该字段默认为 NULL | +| CLIENT_ID | VARCHAR2(40) | NO | 会话中的客户端标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| ECONTEXT_ID | VARCHAR2(40) | NO | 应用程序执行上下文标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| SESSION_CPU | NUMBER(38) | NO | 会话使用的 CPU 时间 | +| EXTENDED_TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | NO | 在 UTC 时区中创建审计跟踪条目的时间戳 | +| PROXY_SESSIONID | NUMBER(38) | NO | 代理会话序列号 | +| GLOBAL_UID | NUMBER(38) | NO | 用户的全局用户标识符 | +| INSTANCE_NUMBER | VARCHAR2(40) | NO | 由 INSTANCE_NUMBER 初始化参数指定的实例编号。目前暂不支持该字段,当前该字段默认为 NULL | +| OS_PROCESS | VARCHAR2(40) | NO | 进程的操作系统进程标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TRANSACTIONID | VARCHAR2(128) | NO | 在其中访问或修改对象的事务标识符 | +| SCN | NUMBER(38) | NO | 系统变更号(SCN)的查询。目前暂不支持该字段,当前该字段默认为 0 | +| SQL_BIND | VARCHAR2(2000) | YES | 绑定查询的变量数据。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_TEXT | VARCHAR2(2000) | YES | 查询的 SQL 文本 | +| OBJ_EDITION_NAME | VARCHAR2(128) | NO | 包含被审计对象的版本的名称。目前暂不支持该字段,当前该字段默认为 NULL | +| DBID | NUMBER(38) | NO | 被审计数据库的数据库标识符 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/112.USER_COLL_TYPES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/112.USER_COLL_TYPES.md new file mode 100644 index 000000000..94556f4e8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/112.USER_COLL_TYPES.md @@ -0,0 +1,46 @@ +USER_COLL_TYPES +==================================== + + + +功能 +----------- + +列出当前用户可用的用户自定义集合类型。 + +相关视图 +------------- + +* DBA_COLL_TYPES + + + +* ALL_COLL_TYPES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TYPE_NAME | VARCHAR2(64) | NO | 类型名 | +| COLL_TYPE | VARCHAR2(10) | NO | 集合类型: * VARYING * ARRAY * NESTED TABLE | +| UPPER_BOUND | NUMBER(38) | YES | 对于 VARYING,记录集合的最大大小 | +| ELEM_TYPE_MOD | VARCHAR2(7) | YES | 目前暂不支持该字段,当前该字段默认为 NULL | +| ELEM_TYPE_OWNER | VARCHAR2(128) | YES | 集合元素类型的拥有者 | +| ELEM_TYPE_NAME | VARCHAR2(324) | YES | 集合元素类型名 | +| LENGTH | NUMBER(38) | YES | 集合元素类型长度 | +| NUMBER_PRECISION | NUMBER(38) | YES | 集合元素类型精度 | +| SCALE | NUMBER(38) | YES | 集合元素类型小数点右边数据的长度 | +| CHARACTER_SET_NAME | CHAR(7) | YES | 集合元素类型字符集 | +| ELEM_STORAGE | CHAR(7) | YES | 目前暂不支持该字段,当前该字段默认为 NULL | +| NULLS_STORED | CHAR(7) | YES | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/113.USER_COL_COMMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/113.USER_COL_COMMENTS.md new file mode 100644 index 000000000..ab9567f48 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/113.USER_COL_COMMENTS.md @@ -0,0 +1,39 @@ +USER_COL_COMMENTS +====================================== + + + +功能 +----------- + +查看当前用户拥有的视图和表的所有列注释。 + +相关视图 +------------- + +* ALL_COL_COMMENTS + + + +* DBA_COL_COMMENTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|----------------|----------------|--------| +| OBJECT_NAME | VARCHAR2(128) | NO | 对象名字 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列名 | +| COMMENTS | VARCHAR2(4000) | YES | 列注释 | + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/114.USER_COL_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/114.USER_COL_PRIVS.md new file mode 100644 index 000000000..3d7214cef --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/114.USER_COL_PRIVS.md @@ -0,0 +1,36 @@ +USER_COL_PRIVS +=================================== + + + +功能 +----------- + +描述当前用户是对象所有者、授予者或被授予者的列对象授予。 +**说明** + + + +目前不支持列权限功能。 + +相关视图 +------------- + +DBA_COL_PRIVS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|---------------|----------------|------------------| +| GRANTEE | VARCHAR2(128) | NO | 被授予访问权限的用户的名称 | +| OWNER | VARCHAR2(128) | NO | 对象的所有者 | +| TABLE_NAME | VARCHAR2(256) | NO | 对象的名称 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列的名称 | +| GRANTOR | VARCHAR2(128) | NO | 执行授权的用户的名称 | +| PRIVILEGE | VARCHAR2(40) | NO | 列上的特权 | +| GRANTABLE | VARCHAR2(3) | NO | 是否能使用 GRANT 授予权限 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/115.USER_CONSTRAINTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/115.USER_CONSTRAINTS.md new file mode 100644 index 000000000..671c2da34 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/115.USER_CONSTRAINTS.md @@ -0,0 +1,54 @@ +USER_CONSTRAINTS +===================================== + + + +功能 +----------- + +查看用户拥有的所有表的约束信息。 + +相关视图 +------------- + +* ALL_CONSTRAINT + + + +* DBA_CONSTRAINT + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|----------------|----------------|--------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 约束的所有者 | +| CONSTRAINT_NAME | VARCHAR2(128) | NO | 约束名字 | +| CONSTRAINT_TYPE | VARCHAR2(1) | NO | 索引类型,目前只支持 NORMAL 类型 | +| TABLE_NAME | VARCHAR2(128) | NO | 约束所在的表的名字 | +| SEARCH_CONDITION | VARCHAR2(4000) | NO | check 约束 search condition 的文本 | +| R_OWNER | VARCHAR2(128) | NO | 被引用约束的拥有者 | +| R_CONSTRAINT_NAME | VARCHAR2(128) | NO | 被引用约束的名字 | +| DELETE_RULE | VARCHAR2(9) | NO | 外键约束的级联删除规则 | +| STATUS | VARCHAR2(8) | NO | 表示约束是 ENABLE 还是 DISABLE | +| DEFERRABLE | VARCHAR2(14) | NO | 表示约束是 DEFERRABLE 还是 NOT DEFERRABLE | +| DEFERRED | VARCHAR2(9) | NO | 表示约束是 DEFERRED 还是 IMMEDIATE | +| VALIDATED | VARCHAR2(13) | NO | 表示约束是 VALIDATED 还是 NOT VALIDATED | +| GENERATED | VARCHAR2(14) | NO | 表示约束的名字是 USER NAME 还是 GENERATED NAME | +| BAD | VARCHAR2(3) | NO | 暂不支持该字段,字段默认为 NULL | +| RELY | VARCHAR2(4) | NO | 表示约束是否是 RELY 状态 | +| LAST_CHANGE | DATE | NO | 约束上一次被改为 ENABLE 或者 DISABLE 的时间 | +| INDEX_OWNER | VARCHAR2(128) | NO | 约束上索引的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 约束上索引的名字 | +| INVALID | VARCHAR2(7) | NO | 表示约束是否是 INVALIDATE 状态 | +| VIEW_RELATED | VARCHAR2(14) | NO | 表示约束是否创建在视图上 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/116.USER_CONS_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/116.USER_CONS_COLUMNS.md new file mode 100644 index 000000000..adcff386e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/116.USER_CONS_COLUMNS.md @@ -0,0 +1,39 @@ +USER_CONS_COLUMNS +====================================== + + + +功能 +----------- + +查看用户拥有的所有表的约束中的列信息。 + +相关视图 +------------- + +* ALL_CONS_COLUMNS + + + +* DBA_CONS_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|----------------|----------------|----------| +| OWNER | VARCHAR2(128) | VARCHAR2(128) | 列的拥有者 | +| CONSTRAINT_NAME | VARCHAR2(128) | NO | 约束名字 | +| TABLE_NAME | VARCHAR2(128) | NO | 约束所在表的表名 | +| COLUMN_NAME | VARCHAR2(4000) | YES | 约束中的列名 | +| POSITION | NUMBER | YES | 列在约束中的位置 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/117.USER_ERRORS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/117.USER_ERRORS.md new file mode 100644 index 000000000..d59940142 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/117.USER_ERRORS.md @@ -0,0 +1,47 @@ +USER_ERRORS +================================ + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看用户可访问的当前存储对象的错误。 + +相关视图 +------------- + +* ALL_ERRORS + + + +* DBA_ERRORS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|----------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| NAME | VARCHAR2(128) | NO | 对象的名称 | +| TYPE | VARCHAR2(19) | NO | 对象的类型: * VIEW * PROCEDUCE * FUNCTION * PACKAGE * PACKAGE_BODY * TRIGGER * TYPE * TYPE BODY * LIBRARY * JAVA SOURCE * JAVA CLASS * DIMENSION | +| SEQUENCE | NUMBER | NO | 同一次编译多个错误的错误编号(未排序) | +| LINE | NUMBER | NO | 错误发生的行号 | +| POSITION | NUMBER | NO | 错误发生的列号 | +| TEXT | VARCHAR2(4000) | NO | 错误信息文本 | +| ATTRIBUTE | VARCHAR2(9) | NO | 表明是 ERROR 还是 WARNING | +| MESSAGE_NUMBER | NUMBER | NO | 错误编码 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/118.USER_INDEXES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/118.USER_INDEXES.md new file mode 100644 index 000000000..d7d9048d4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/118.USER_INDEXES.md @@ -0,0 +1,91 @@ +USER_INDEXES +================================= + + + +功能 +----------- + +USER_INDEXES 用于查看用户拥有的所有表的索引信息。 + +相关视图 +------------- + +* ALL_INDEXES + + + +* DBA_INDEXES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------|----------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------| +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字。 | +| INDEX_TYPE | VARCHAR2(27) | NO | 索引的类型。 | +| TABLE_OWNER | VARCHAR2(128) | NO | 被索引对象的拥有者。 | +| TABLE_NAME | VARCHAR2(128) | NO | 被索引对象的名字。 | +| TABLE_TYPE | CHAR(5) | NO | 被索引对象的类型。 | +| UNIQUENESS | VARCHAR2(9) | NO | 表示索引是否是唯一的(UNIQUE)或不唯一的。 | +| COMPRESSION | VARCHAR2(8) | NO | 表示索引是否是被压缩的。 | +| PREFIX_LENGTH | NUMBER | NO | 表示在压缩索引中的前缀列数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 索引所在的表空间名。 | +| INI_TRANS | NUMBER | NO | 表示初始事务数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| MAX_TRANS | NUMBER | NO | 表示最大事务数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| INITIAL_EXTENT | NUMBER | NO | 表示初始 extent 大小。目前暂不支持该字段,当前该字段显示为 NULL。 | +| NEXT_EXTENT | NUMBER | NO | 表示第二 extent 大小。目前暂不支持该字段,当前该字段显示为 NULL。 | +| MIN_EXTENTS | NUMBER | NO | 表示在段里允许的最小 extent 数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| MAX_EXTENTS | NUMBER | NO | 表示在段里允许的最大 extent 数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PCT_INCREASE | NUMBER | NO | 表示 extent 大小的增长率。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PCT_THRESHOLD | NUMBER | NO | 表示每个索引被允许占用的块空间百分比。目前暂不支持该字段,当前该字段显示为 NULL。 | +| INCLUDE_COLUMN | NUMBER | NO | 表示索引组织表的主键的最后一列的列编号。目前暂不支持该字段,当前该字段显示为 NULL。 | +| FREELISTS | NUMBER | NO | 表示被分配个段的进程 freelist 数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| FREELIST_GROUPS | NUMBER | NO | 表示被分配个段的 freelist 组数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PCT_FREE | NUMBER | NO | 表示块中空余空间的最小百分比。目前暂不支持该字段,当前该字段显示为 NULL。 | +| LOGGING | VARCHAR2(3) | NO | 指示对索引的修改是否被记录了日志。目前暂不支持该字段,当前该字段显示为 NULL。 | +| BLEVEL | NUMBER | NO | 表示 B\*-Tree 的深度。目前暂不支持该字段,当前该字段显示为 NULL。 | +| LEAF_BLOCKS | NUMBER | NO | 表示索引中叶子块的数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DISTINCT_KEYS | NUMBER | NO | 表示不同索引值的数量。目前暂不支持该字段,当前该字段显示为 NULL。 | +| AVG_LEAF_BLOCKS_PER_KEY | NUMBER | NO | 出现索引中每个不同值的叶块的平均数目,四舍五入到最接近的整数。对于具有 UNIQUE 和 PRIMARY KEY 约束的索引,此值始终为 1。目前暂不支持该字段,当前该字段显示为 NULL。 | +| AVG_DATA_BLOCKS_PER_KEY | NUMBER | NO | 表中由索引中不同值四舍五入到最接近的整数所指向的平均数据块数。此统计信息是包含行的数据块的平均数量,这些行包含给定索引列的给定值。目前暂不支持该字段,当前该字段显示为 NULL。 | +| CLUSTERING_FACTOR | NUMBER | NO | 指示基于索引值的表中行的数量。 如果该值接近块数,则表的顺序非常好。在这种情况下,单个叶块中的索引条目往往指向同一数据块中的行。 如果该值接近行数,则表是非常随机的。在这种情况下,同一叶块中的索引条目不太可能指向同一数据块中的行。目前暂不支持该字段,当前该字段显示为 NULL。 | +| STATUS | VARCHAR2(10) | NO | 指示未分区的索引是 VALID 还是 UNUSABLE。 | +| NUM_ROWS | NUMBER | NO | 索引中的行数。 | +| SAMPLE_SIZE | NUMBER | NO | 用于分析指标的样本大小。目前暂不支持该字段,当前该字段显示为 NULL。 | +| LAST_ANALYZED | DATE | NO | 最近分析该指数的日期。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DEGREE | VARCHAR2(40) | NO | 表示每个实例用于扫描索引的线程数。目前暂不支持该字段,当前该字段显示为 NULL。 | +| INSTANCES | VARCHAR2(40) | NO | 要扫描索引的实例数。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PARTITIONED | VARCHAR2(3) | NO | 表示索引是否是分区索引。 | +| TEMPORARY | VARCHAR2(1) | NO | 表示索引是否在临时表上。目前暂不支持该字段,当前该字段显示为 NULL。 | +| GENERATED | VARCHAR2(1) | NO | 指示索引的名称是系统生成的。目前暂不支持该字段,当前该字段显示为 NULL。 | +| SECONDARY | VARCHAR2(1) | NO | 指示索引是否是辅助对象。目前暂不支持该字段,当前该字段显示为 NULL。 | +| BUFFER_POOL | VARCHAR2(7) | NO | 用于索引块的默认缓冲池的名称。目前暂不支持该字段,当前该字段显示为 NULL。 | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于索引块的数据库智能闪存缓存。目前暂不支持该字段,当前该字段显示为 NULL。 | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 用于索引块的单元闪存缓存。目前暂不支持该字段,当前该字段显示为 NULL。 | +| USER_STATS | VARCHAR2(3) | NO | 是否由用户直接输入统计信息。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DURATION | VARCHAR2(15) | NO | 指示临时表的持续时间。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PCT_DIRECT_ACCESS | NUMBER | NO | 对于索引组织的表上的二级索引,具有 VALID 猜测的行的百分比。目前暂不支持该字段,当前该字段显示为 NULL。 | +| ITYP_OWNER | VARCHAR2(30) | NO | 对于域索引,索引类型的所有者。目前暂不支持该字段,当前该字段显示为 NULL。 | +| ITYP_NAME | VARCHAR2(30) | NO | 对于域索引,索引类型的名称。目前暂不支持该字段,当前该字段显示为 NULL。 | +| PARAMETERS | VARCHAR2(1000) | NO | 域索引的参数字符串。目前暂不支持该字段,当前该字段显示为 NULL。 | +| GLOBAL_STATS | VARCHAR2(3) | NO | 对于分区索引,指示是通过整体分析索引收集统计信息,还是从基础索引分区和子分区的统计信息中估算统计信息。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DOMIDX_STATUS | VARCHAR2(12) | NO | 表示域索引的状态。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DOMIDX_OPSTATUS | VARCHAR2(6) | NO | 表示域索引上的操作状态。目前暂不支持该字段,当前该字段显示为 NULL。 | +| FUNCIDX_STATUS | VARCHAR2(8) | NO | 基于函数的索引的状态。 | +| JOIN_INDEX | VARCHAR2(3) | NO | 指示索引是否为联接索引。 | +| IOT_REDUNDANT_PKEY_ELIM | VARCHAR2(3) | NO | 指示是否从索引组织表的二级索引中消除了冗余主键列。目前暂不支持该字段,当前该字段显示为 NULL。 | +| DROPPED | VARCHAR2(9) | NO | 表示索引是否被删除并进了回收站。 | +| VISIBILITY | VARCHAR2(10) | NO | 表示索引对优化器是否可见。 | +| DOMIDX_MANAGEMENT | VARCHAR2(14) | NO | 表示域索引是由系统管理还是用户管理。目前暂不支持该字段,当前该字段显示为 NULL。 | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 指示是否已创建索引段。目前暂不支持该字段,当前该字段显示为 NULL。 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/119.USER_IND_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/119.USER_IND_COLUMNS.md new file mode 100644 index 000000000..3db5650d7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/119.USER_IND_COLUMNS.md @@ -0,0 +1,41 @@ +USER_IND_COLUMNS +===================================== + + + +功能 +----------- + +查看用户拥有的所有表的索引的索引列信息。 + +相关视图 +------------- + +* ALL_IND_COLUMNS + + + +* DBA_IND_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|----------------|----------------|------------------------------| +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| TABLE_OWNER | VARCHAR2(128) | NO | 索引所在的表的拥有者 | +| COLUMN_NAME | VARCHAR2(4000) | NO | 索引列的名字 | +| COLUMN_POSITION | NUMBER | NO | 索引列在索引中的位置 | +| COLUMN_LENGTH | NUMBER | NO | 索引列的长度 | +| CHAR_LENGTH | NUMBER | NO | 索引列的字符长度 | +| DESCEND | VARCHAR2(4) | NO | 表示索引列是按降序(DESC)排列还是升序(ASC)排列 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/12.ALL_IND_EXPRESSIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/12.ALL_IND_EXPRESSIONS.md new file mode 100644 index 000000000..e62e7f059 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/12.ALL_IND_EXPRESSIONS.md @@ -0,0 +1,40 @@ +ALL_IND_EXPRESSIONS +======================================== + + + +功能 +----------- + +查看用户在数据库中可访问的 function-based 索引的信息。 + +相关视图 +------------- + +* DBA_IND_EXPRESSIONS + + + +* USER_IND_EXPRESSIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|----------------|----------------|----------------------| +| INDEX_OWNER | VARCHAR2(128) | NO | 索引所属的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| TABLE_OWNER | VARCHAR2(128) | NO | 索引所在表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 索引所在表的名字 | +| COLUMN_EXPRESSION | VARCHAR2(1000) | NO | function-base 索引的表达式 | +| COLUMN_POSITION | NUMBER(38) | NO | 列所在索引的位置 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/120.USER_IND_EXPRESSIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/120.USER_IND_EXPRESSIONS.md new file mode 100644 index 000000000..949fe3f15 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/120.USER_IND_EXPRESSIONS.md @@ -0,0 +1,38 @@ +USER_IND_EXPRESSIONS +========================================= + + + +功能 +----------- + +查看用户在数据库中所拥有的 function-based 索引的信息。 + +相关视图 +------------- + +* DBA_IND_EXPRESSIONS + + + +* ALL_IND_EXPRESSIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|----------------|----------------|----------------------| +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| TABLE_NAME | VARCHAR2(128) | NO | 索引所在表的名字 | +| COLUMN_EXPRESSION | VARCHAR2(1000) | NO | function-base 索引的表达式 | +| COLUMN_POSITION | NUMBER(38) | NO | 列所在索引的位置 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/121.USER_IND_PARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/121.USER_IND_PARTITIONS.md new file mode 100644 index 000000000..fbeda5aa6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/121.USER_IND_PARTITIONS.md @@ -0,0 +1,75 @@ +USER_IND_PARTITIONS +======================================== + + + +功能 +----------- + +查看当前用户为所有者的数据库中索引分区的信息,与 `ALL_IND_PARTITIONS`、`DBA_IND_PARTITIONS` 相比没有`INDEX_OWNER` 字段。 + +相关视图 +------------- + +* DBA_IND_PARTITIONS + + + +* ALL_IND_PARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------| +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| COMPOSITE | VARCHAR2(3) | NO | 表示分区是否属于composited-partition 表的本地索引(YES)或者(NO) | +| PARTITION_NAME | VARCHAR2(128) | NO | 索引名称 | +| SUBPARTITION_COUNT | NUMBER(38) | YES | 子分区个数 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 分区绑定 Value 的表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 分区绑定 Value 表达式的长度 | +| PARTITION_POSITION | NUMBER | NO | 分区在索引中的位置 | +| STATUS | VARCHAR2(8) | NO | 指示索引分区是否可用 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含分区的表空间的名称 | +| PCT_FREE | NUMBER | NO | 块中最小可用空间百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 初始交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 最大交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 初始范围的大小,单位:字节。目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 辅助扩展区的大小,单位:字节。目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 段中允许的最小范围数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 段中允许的最大扩展数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 段中允许的最大块数。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 范围大小的百分比增加。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 在此段中分配的进程空闲列表数。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 在此段中分配的进程自由列表组数。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(7) | NO | 指示是否记录对索引的更改。目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 表示分区索引是否开启压缩: * 开启(ENABLE) * 未开启(DISABLE) | +| BLEVEL | NUMBER | NO | B\*- 树级别(从根块到叶块的索引深度)。深度为 0 表示根块和叶块相同。目前暂不支持该字段,当前该字段默认为 NULL | +| LEAF_BLOCKS | NUMBER | NO | 索引分区中的叶块数。目前暂不支持该字段,当前该字段默认为 NULL | +| DISTINCT_KEYS | NUMBER | NO | 索引分区中不同键的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_LEAF_BLOCKS_PER_KEY | NUMBER | NO | 出现索引中每个不同值的叶块的平均数目,四舍五入到最接近的整数。对于强制执行 UNIQUE 和 PRIMARY KEY 约束的索引,此值始终为 1。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_DATA_BLOCKS_PER_KEY | NUMBER | NO | 表中由索引中不同值四舍五入到最接近的整数所指向的平均数据块数。此统计数据是包含行的数据块的平均数量,这些行包含给定索引列的给定值。目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTERING_FACTOR | NUMBER | NO | 指示基于索引值的表中行的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | ANALYZE 语句返回的行数。目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 分析此分区时使用的样本量。目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 最近对该分区进行分析的日期。目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 分区的实际缓冲池。目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于分区块的数据库智能闪存缓存提示。目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 单元闪存缓存提示用于分区块。目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 指示是否由用户直接输入统计信息。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_DIRECT_ACCESS | NUMBER | NO | 如果在索引组织表上有二级索引,则用 VALID 猜测的行百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 指示是针对整个分区收集分区的统计信息,还是根据基础子分区的统计信息进行估计。目前暂不支持该字段,当前该字段默认为 NULL | +| DOMIDX_OPSTATUS | VARCHAR2(6) | NO | 与索引上的操作状态。目前暂不支持该字段,当前该字段默认为 NULL | +| PARAMETERS | VARCHAR2(1000) | NO | 对于域索引,参数字符串。目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 指示分区是否在间隔分区表的间隔部分中或分区是否在范围部分中。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 指示是否已创建索引分区段。 N/A 表示该索引已细分,并且分区级别不存在任何段。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/122.USER_IND_SUBPARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/122.USER_IND_SUBPARTITIONS.md new file mode 100644 index 000000000..d7b8a208f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/122.USER_IND_SUBPARTITIONS.md @@ -0,0 +1,74 @@ +USER_IND_SUBPARTITIONS +=========================================== + + + +功能 +----------- + +查看数据库中用户所拥有的所有索引子分区的信息,与 `DBA``_IND_SUBPARTITIONS`、`ALL_IND_SUBPARTITIONS` 相比没有 `INDEX_OWNER` 字段。 + +相关视图 +------------- + +* DBA_IND_SUBPARTITIONS + + + +* ALL_IND_SUBPARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名字 | +| SUBPARTITION_NAME | VARCHAR2(128) | NO | 子分区名字 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 子分区绑定 Value 的表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 子分区绑定 Value 表达式的长度 | +| SUBPARTITION_POSITION | NUMBER | NO | 子分区在分区的位置 | +| STATUS | VARCHAR2(8) | NO | 指示索引分区是否可用 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含分区的表空间的名称 | +| PCT_FREE | NUMBER | NO | 块中最小可用空间百分比。目前暂不支持该字段,当前该字段显示为 NULL | +| INI_TRANS | NUMBER | NO | 初始交易数。目前暂不支持该字段,当前该字段显示为 NULL | +| MAX_TRANS | NUMBER | NO | 最大交易数。目前暂不支持该字段,当前该字段显示为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 初始范围的大小,单位:字节。目前暂不支持该字段,当前该字段显示为 NULL | +| NEXT_EXTENT | NUMBER | NO | 辅助扩展区的大小,单位:字节。目前暂不支持该字段,当前该字段显示为 NULL | +| MIN_EXTENT | NUMBER | NO | 段中允许的最小范围数。目前暂不支持该字段,当前该字段显示为 NULL | +| MAX_EXTENT | NUMBER | NO | 段中允许的最大扩展数。目前暂不支持该字段,当前该字段显示为 NULL | +| MAX_SIZE | NUMBER | NO | 段中允许的最大块数。目前暂不支持该字段,当前该字段显示为 NULL | +| PCT_INCREASE | NUMBER | NO | 范围大小的百分比增加。目前暂不支持该字段,当前该字段显示为 NULL | +| FREELISTS | NUMBER | NO | 在此段中分配的进程空闲列表数。目前暂不支持该字段,当前该字段显示为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 在此段中分配的进程自由列表组数。目前暂不支持该字段,当前该字段显示为 NULL | +| LOGGING | VARCHAR2(7) | NO | 指示是否记录对索引的更改。目前暂不支持该字段,当前该字段显示为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 表示分区索引是否开启压缩: * 开启(ENABLE) * 未开启(DISABLE) | +| BLEVEL | NUMBER | NO | B树级别(从根块到叶块的索引深度)。深度为 0 表示根块和叶块相同。目前暂不支持该字段,当前该字段显示为 NULL | +| LEAF_BLOCKS | NUMBER | NO | 索引中的叶块数。目前暂不支持该字段,当前该字段显示为 NULL | +| DISTINCT_KEYS | NUMBER | NO | 索引分区中不同键的数量。目前暂不支持该字段,当前该字段显示为 NULL | +| AVG_LEAF_BLOCKS_PER_KEY | NUMBER | NO | 出现索引中每个不同值的叶块的平均数目,四舍五入到最接近的整数。对于强制执行 UNIQUE 和 PRIMARY KEY 约束的索引,此值始终为 1。目前暂不支持该字段,当前该字段显示为 NULL | +| AVG_DATA_BLOCKS_PER_KEY | NUMBER | NO | 表中由索引中不同值四舍五入到最接近的整数所指向的平均数据块数。此统计数据是包含行的数据块的平均数量,这些行包含给定索引列的给定值。目前暂不支持该字段,当前该字段显示为 NULL | +| CLUSTERING_FACTOR | NUMBER | NO | 指示基于索引值的表中行的数量。目前暂不支持该字段,当前该字段显示为 NULL | +| NUM_ROWS | NUMBER | NO | 此索引子分区中的行数。目前暂不支持该字段,当前该字段显示为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 分析此子分区时使用的样本量。目前暂不支持该字段,当前该字段显示为 NULL | +| LAST_ANALYZED | DATE | NO | 最近对该分区进行分析的日期。目前暂不支持该字段,当前该字段显示为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 子分区的默认缓冲池。目前暂不支持该字段,当前该字段显示为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于子分区块的数据库智能闪存缓存提示。目前暂不支持该字段,当前该字段显示为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 单元闪存缓存提示将用于子分区块。目前暂不支持该字段,当前该字段显示为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 指示是否由用户直接输入统计信息。OceanBase 数据库暂不支持该字段,目前该字段显示为 NULL | +| PCT_DIRECT_ACCESS | NUMBER | NO | 如果索引组织表上的二级索引,则具有有效猜测的行的百分比。目前暂不支持该字段,当前该字段显示为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | * 如果已收集统计信息,则GLOBAL_STATS 将为 YES * 如果未收集统计信息,则GLOBAL_STATS 将为 NO 目前暂不支持该字段,当前该字段显示为 NULL | +| DOMIDX_OPSTATUS | VARCHAR2(6) | NO | 域索引上的操作状态。目前暂不支持该字段,当前该字段显示为 NULL | +| PARAMETERS | VARCHAR2(1000) | NO | 对于域索引,参数字符串。目前暂不支持该字段,当前该字段显示为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 指示分区是否在间隔分区表的间隔部分中(是)或分区是否在范围部分中(否)。目前暂不支持该字段,当前该字段显示为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 指示是否已创建索引子分区段。N/A 表示该索引未分区。目前暂不支持该字段,当前该字段显示为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/123.USER_OBJECTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/123.USER_OBJECTS.md new file mode 100644 index 000000000..e32c67c87 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/123.USER_OBJECTS.md @@ -0,0 +1,48 @@ +USER_OBJECTS +================================= + + + +功能 +----------- + +查看用户拥有的所有数据库对象,视图与 ALL_OBJECTS 一致,但没有 OWNER 列,因为 OWNER 就是自己本身。 + +相关视图 +------------- + +* ALL_OBJECTS + + + +* DBA_OBJECTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------| +| OBJECT_NAME | VARCHAR2(128) | NO | 对象名字 | +| SUBOBJECT_NAME | VARCHAR2(128) | NO | 子对象名字(例如,partition) | +| OBJECT_ID | NUMBER(38) | NO | 对象的字典 ID 值 | +| DATA_OBJECT_ID | NUMBER | NO | 包含该对象 segment 的字典 ID 值 | +| OBJECT_TYPE | VARCHAR2(23) | NO | 对象类型,包括表、索引、分区、包、存储过程、同义词、序列等 | +| CREATED | DATE | NO | 对象创建时间 | +| LAST_DDL_TIME | DATE | NO | 对象最后一次 DDL 时间 | +| TIMESTAMP | VARCHAR2(256) | NO | 对象指定的时间戳,以字符形式输出 | +| STATUS | VARCHAR2(7) | NO | 对象状态: * VALID * INVALID | +| TEMPORARY | VARCHAR2(1) | NO | 表示该对象是一个临时对象 | +| GENERATED | VARCHAR2(1) | NO | 表示该对象的名字是否是由系统生成 | +| SECONDARY | VARCHAR2(1) | NO | 该字段暂未使用 | +| NAMESPACE | NUMBER | NO | 对象的命名空间 | +| EDITION_NAME | VARCHAR2(128) | NO | 保留字段 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/124.USER_PART_INDEXES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/124.USER_PART_INDEXES.md new file mode 100644 index 000000000..df1144572 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/124.USER_PART_INDEXES.md @@ -0,0 +1,62 @@ +USER_PART_INDEXES +====================================== + + + +功能 +----------- + +查看属于当前用户的分区索引的分区信息。 + +相关视图 +------------- + +* DBA_PART_INDEXES + + + +* USER_PART_INDEXES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| INDEX_NAME | VARCHAR2(30) | NO | 分区索引的名字 | +| TABLE_NAME | VARCHAR2(30) | NO | 索引所属的表的名字 | +| PARTITIONING_TYPE | VARCHAR2(9) | NO | 分区方式: * HASH * RANGE * LIST | +| SUBPARTITIONING_TYPE | VARCHAR2(9) | NO | 子分区的分区方式: * HASH * RANGE * LIST | +| PARTITION_COUNT | NUMBER | NO | 索引中分区个数 | +| DEF_SUBPARTITION_COUNT | NUMBER | NO | 对于复合分区索引, 表示子分区的个数 | +| PARTITIONING_KEY_COUNT | NUMBER | NO | 分区键的数量 | +| SUBPARTITIONING_KEY_COUNT | NUMBER | NO | 对于复合分区索引,表示子分区键的数量 | +| LOCALITY | VARCHAR2(6) | NO | 分区索引是局部(LOCAL)还是全局 (GLOBAL) | +| ALIGNMENT | VARCHAR2(12) | NO | 分区索引是前缀 (PREFIXED)还是非前缀 (NON_PREFIXED) | +| DEF_TABLESPACE_NAME | VARCHAR2(30) | NO | 对于局部索引, 添加或分割表分区时默认的表空间 | +| DEF_PCT_FREE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INITIAL_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_NEXT_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MIN_EXTENTS | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_EXTENTS | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_SIZE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PCT_INCREASE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_LOGGING | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PARAMETERS | VARCHAR2(1000) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(1000) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/125.USER_PART_KEY_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/125.USER_PART_KEY_COLUMNS.md new file mode 100644 index 000000000..867d8100f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/125.USER_PART_KEY_COLUMNS.md @@ -0,0 +1,39 @@ +USER_PART_KEY_COLUMNS +========================================== + + + +功能 +----------- + +查看当前用户拥有的所有分区对象中分区键包含的列。 + +相关视图 +------------- + +* DBA_PART_KEY_COLUMNS + + + +* ALL_PART_KEY_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------| +| NAME | VARCHAR2(128) | NO | 分区表或分区索引的名字 | +| OBJECT_TYPE | CHAR(5) | NO | 分区对象的类型: * TABLE * INDEX | +| COLUMN_NAME | VARCHAR2(4000) | NO | 列的名字 | +| COLUMN_POSITION | NUMBER | NO | 列在分区键中的位置 | +| COLLATED_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/126.USER_PART_TABLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/126.USER_PART_TABLES.md new file mode 100644 index 000000000..8b6c4f05e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/126.USER_PART_TABLES.md @@ -0,0 +1,61 @@ +USER_PART_TABLES +===================================== + + + +功能 +----------- + +查看当前用户的分区表的分区信息。 + +相关视图 +------------- + +* DBA_PART_TABLES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TABLE_NAME | VARCHAR2(128) | NO | 分区表的名字 | +| PARTITIONING_TYPE | VARCHAR2(9) | NO | 分区方式: * HASH * RANGE * LIST | +| SUBPARTITIONING_TYPE | VARCHAR2(9) | NO | 子分区的分区方式: * HASH * RANGE * LIST | +| PARTITION_COUNT | NUMBER | NO | 分区表中分区个数 | +| DEF_SUBPARTITION_COUNT | NUMBER | NO | 对于复合分区表,表示子分区的个数 | +| PARTITIONING_KEY_COUNT | NUMBER | NO | 分区键的数量 | +| SUBPARTITIONING_KEY_COUNT | NUMBER | NO | 对于复合分区表,表示子分区键的数量 | +| STATUS | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_TABLESPACE_NAME | VARCHAR2(30) | NO | 分区表所属的表空间名 | +| DEF_PCT_FREE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INITIAL_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_NEXT_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MIN_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_SIZE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PCT_INCREASE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_LOGGING | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 是否开启压缩 | +| COMPRESS_FOR | VARCHAR2(12) | NO | 压缩方法 | +| DEF_BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| REF_PTN_CONSTRAINT_NAME | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(1000) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IS_NESTED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_SEGMENT_CREATED | VARCHAR2(4) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/127.USER_PROCEDURES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/127.USER_PROCEDURES.md new file mode 100644 index 000000000..956fc1a3b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/127.USER_PROCEDURES.md @@ -0,0 +1,49 @@ +USER_PROCEDURES +==================================== + + + +功能 +----------- + +列出当前用户可用的过程和函数。 + +相关视图 +------------- + +* DBA_PROCEDURES + + + +* ALL_PROCEDURES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|------------------------------------------------| +| OBJECT_NAME | VARCHAR2(128) | YES | 包名 | +| PROCEDURE_NAME | VARCHAR2(128) | NO | 过程或者函数名 | +| OBJECT_ID | NUMBER | NO | 对象 ID | +| SUBPROGRAM_ID | NUMBER | NO | 出现在包中的顺序, 对于独立的过程或者函数该值为 1 | +| OVERLOAD | NUMBER | NO | 出现在包源文件中的第几次重载 | +| OBJECT_TYPE | VARCHAR2(9) | NO | 对象的类型 | +| AGGREGATE | VARCHAR2(3) | NO | 表示该过程是否为聚合函数。目前暂不支持该字段,当前该字段默认为 NO | +| PIPELINED | VARCHAR2(3) | NO | 表示该过程是否为管道表函数 | +| IMPLTYPEOWNER | VARCHAR2(30) | NO | 实现类型所有者的名称。目前暂不支持该字段,当前该字段默认为 NULL | +| IMPLTYPENAME | VARCHAR2(30) | NO | 实现类型的名称。目前暂不支持该字段,当前该字段默认为 NULL | +| PARALLEL | VARCHAR2(3) | NO | 指示过程或功能是否是并行启用的 | +| INTERFACE | VARCHAR2(3) | NO | 过程/函数是使用 ODCI 接口实现的表函数。目前暂不支持该字段,当前该字段默认为 NULL | +| DETERMINISTIC | VARCHAR2(3) | NO | 该过程/功能被声明为确定性的 | +| AUTHID | VARCHAR2(12) | NO | INVOKER/DEFINER | +| ORIGIN_CON_ID | NUMBER(38) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/128.USER_PROFILES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/128.USER_PROFILES.md new file mode 100644 index 000000000..0fe4148a4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/128.USER_PROFILES.md @@ -0,0 +1,38 @@ +USER_PROFILES +================================== + + + +功能 +----------- + +查看所有的简介和这些简介的限制。 + +相关视图 +------------- + +* DBA_PROFILES + + + +* ALL_PROFILES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|--------------|----------------|-----------------------------------| +| PROFILE | VARCHAR2(30) | NO | 简介的名称 | +| RESOURCE_NAME | VARCHAR2(32) | NO | 资源的名称 | +| RESOURCE_TYPE | VARCHAR2(8) | NO | 表明一个资源的简介是一个 KERNEL 还是一个 PASSWORD | +| LIMIT | VARCHAR2(40) | NO | 简介资源的限制 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/129.USER_ROLE_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/129.USER_ROLE_PRIVS.md new file mode 100644 index 000000000..3a9fa4c47 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/129.USER_ROLE_PRIVS.md @@ -0,0 +1,23 @@ +USER_ROLE_PRIVS +==================================== + + + +功能 +----------- + +描述授予当前用户的角色。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|--------------|----------------|----------------------------| +| GRANTEE | VARCHAR2(30) | NO | 用户的名称,或 PUBLIC | +| GRANTED_ROLE | VARCHAR2(30) | NO | 授予用户的角色名称 | +| ADMIN_OPTION | VARCHAR2(3) | NO | 指示授权是否带有 ADMIN 选项 | +| DEFAULT_ROLE | VARCHAR2(3) | NO | 指示角色是否被指定为用户的 DEFAULT ROLE | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/13.ALL_IND_PARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/13.ALL_IND_PARTITIONS.md new file mode 100644 index 000000000..a35392f3d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/13.ALL_IND_PARTITIONS.md @@ -0,0 +1,76 @@ +ALL_IND_PARTITIONS +======================================= + + + +功能 +----------- + +查看用户可访问的数据库中索引分区的信息。 + +相关视图 +------------- + +* DBA_IND_PARTITIONS + + + +* USER_IND_PARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------| +| INDEX_OWNER | VARCHAR2(128) | NO | 索引所属的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| COMPOSITE | VARCHAR2(3) | NO | 表示分区是否属于composited-partition 表的本地索引(YSE) 或者(NO) | +| PARTITION_NAME | VARCHAR2(128) | NO | 索引名称 | +| SUBPARTITION_COUNT | NUMBER(38) | YES | 子分区个数 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 分区绑定 Value 的表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 分区绑定 Value 表达式的长度 | +| PARTITION_POSITION | NUMBER | NO | 分区在索引中的位置 | +| STATUS | VARCHAR2(8) | NO | 指示索引分区是否可用 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含分区的表空间的名称 | +| PCT_FREE | NUMBER | NO | 块中最小可用空间百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 初始交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 最大交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 初始范围的大小,单位:字节。目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 辅助扩展区的大小,单位:字节。目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 段中允许的最小范围数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 段中允许的最大扩展数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 段中允许的最大块数。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 范围大小的百分比增加。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 在此段中分配的进程空闲列表数。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 在此段中分配的进程自由列表组数。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(7) | NO | 指示是否记录对索引的更改。目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 表示分区索引是否开启压缩: * 开启(ENABLE) * 未开启(DISABLE) | +| BLEVEL | NUMBER | NO | B\*- 树级别(从根块到叶块的索引深度)。深度为 0 表示根块和叶块相同。目前暂不支持该字段,当前该字段默认为 NULL | +| LEAF_BLOCKS | NUMBER | NO | 索引分区中的叶块数。目前暂不支持该字段,当前该字段默认为 NULL | +| DISTINCT_KEYS | NUMBER | NO | 索引分区中不同键的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_LEAF_BLOCKS_PER_KEY | NUMBER | NO | 出现索引中每个不同值的叶块的平均数目,四舍五入到最接近的整数。对于强制执行 UNIQUE 和 PRIMARY KEY 约束的索引,此值始终为 1。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_DATA_BLOCKS_PER_KEY | NUMBER | NO | 表中由索引中不同值四舍五入到最接近的整数所指向的平均数据块数。此统计数据是包含行的数据块的平均数量,这些行包含给定索引列的给定值。目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTERING_FACTOR | NUMBER | NO | 指示基于索引值的表中行的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | ANALYZE 语句返回的行数。目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 分析此分区时使用的样本量。目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 最近对该分区进行分析的日期。目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 分区的实际缓冲池。目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于分区块的数据库智能闪存缓存提示。目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 单元闪存缓存提示用于分区块。目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 指示是否由用户直接输入统计信息。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_DIRECT_ACCESS | NUMBER | NO | 如果在索引组织表上有二级索引,则用 VALID 猜测的行百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 指示是针对整个分区收集分区的统计信息,还是根据基础子分区的统计信息进行估计。目前暂不支持该字段,当前该字段默认为 NULL | +| DOMIDX_OPSTATUS | VARCHAR2(6) | NO | 与索引上的操作状态。目前暂不支持该字段,当前该字段默认为 NULL | +| PARAMETERS | VARCHAR2(1000) | NO | 对于域索引,参数字符串。目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 指示分区是否在间隔分区表的间隔部分中或分区是否在范围部分中。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 指示是否已创建索引分区段。 N/A 表示该索引已细分,并且分区级别不存在任何段。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/130.USER_SEGMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/130.USER_SEGMENTS.md new file mode 100644 index 000000000..b6942857b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/130.USER_SEGMENTS.md @@ -0,0 +1,46 @@ +USER_SEGMENTS +================================== + + + +功能 +----------- + +查看当前用户下的对象拥有的段分配的存储信息。 + +相关视图 +------------- + +DBA_SEGMENTS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|---------------|----------------|-----------------------------------------------| +| SEGMENT_NAME | VARCHAR2(128) | NO | 段名字(如果有) | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名字,如果是非分区对象,则为空值 NULL | +| SEGMENT_TYPE | VARCHAR2(18) | NO | 段类型 | +| SEGMENT_SUBTYPE | VARCHAR2(10) | NO | 大字段 LOB 段的子类型。目前暂不支持该字段,当前该字段默认为 NULL | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 含有该段的表空间。目前暂不支持该字段,当前该字段默认为 NULL | +| BYTES | NUMBER(38) | NO | 段大小,单位:bytes | +| BLOCKS | NUMBER(38) | NO | 段块大小 | +| EXTENTS | NUMBER | NO | 段申请的簇数。目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 段创建初始化时段簇的大小,单位:bytes。目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 段申请下一个簇的大小,单位:bytes。目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENTS | NUMBER | NO | 段允许申请的最小簇数量。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENTS | NUMBER | NO | 段允许申请的最大簇数量。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 段允许申请的最大块数量。目前暂不支持该字段,当前该字段默认为 NULL | +| RETENTION | VARCHAR2(7) | NO | SecureFile 的保留字段。目前暂不支持该字段,当前该字段默认为 NULL | +| MINRETENTION | NUMBER | NO | SecureFile 的最短保留时长。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 增加要分配的下一个数据块大小的百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 该段申请的空闲链表数。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 该段申请的空闲组数。目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 用于段块的缓冲池 | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于段块的数据库智能闪存缓存提示 | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 用于段块的单元闪存缓存提示 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/131.USER_SEQUENCES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/131.USER_SEQUENCES.md new file mode 100644 index 000000000..f98b6b0c5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/131.USER_SEQUENCES.md @@ -0,0 +1,42 @@ +USER_SEQUENCES +=================================== + + + +功能 +----------- + +列出当前用户拥有的所有 SEQUENCE。 + +相关视图 +------------- + +* ALL_SEQUENCES + + + +* DBA_SEQUENCES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|-------------------------| +| OBJECT_NAME | VARCHAR2(128) | NO | SEQUENCE 名 | +| MIN_VALUE | NUMBER(28) | NO | SEQUENCE 可取的最小值(含最小值) | +| MAX_VALUE | NUMBER(28) | NO | SEQUENCE 可取的最大值(含最大值) | +| INCREMENT_BY | NUMBER(28) | NO | 每次取值的步长,可为正整数或负整数,不可为 0 | +| CYCLE_FLAG | CHAR(1) | NO | 是否可以循环取值 | +| ORDER_FLAG | CHAR(1) | NO | 取值是否保证全局有序 | +| CACHE_SIZE | NUMBER(28) | NO | 每个节点缓存值的数量 | +| LAST_NUMBER | NUMBER(38) | NO | 记录下一个可分配给节点的值 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/132.USER_SOURCE.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/132.USER_SOURCE.md new file mode 100644 index 000000000..36989b48d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/132.USER_SOURCE.md @@ -0,0 +1,38 @@ +USER_SOURCE +================================ + + + +功能 +----------- + +列出当前用户可用的过程和函数的源代码。 + +相关视图 +------------- + +* DBA_SOURCE + + + +* ALL_SOURCE + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|--------------|----------------|-------------------------| +| NAME | VARCHAR2(30) | NO | 对象名 | +| TYPE | VARCHAR2(12) | NO | 对象类型 | +| LINE | NUMBER | NO | TEXT 字段对应的源代码中的行号 | +| TEXT | CLOB | NO | 当前行的源代码 | +| ORIGIN_CON_ID | NUMBER(38) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/133.USER_SUBPARTITION_TEMPLATES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/133.USER_SUBPARTITION_TEMPLATES.md new file mode 100644 index 000000000..6afb62aa5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/133.USER_SUBPARTITION_TEMPLATES.md @@ -0,0 +1,39 @@ +USER_SUBPARTITION_TEMPLATES +================================================ + + + +功能 +----------- + +查看所有子分区模版描述信息。 + +相关视图 +------------- + +* ALL_SUBPARTITION_TEMPLATES + + + +* DBA_SUBPARTITION_TEMPLATES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|----------------|----------------|-----------| +| TABLE_NAME | VARCHAR2(256) | NO | 分区表名字 | +| SUBPARTITION_NAME | VARCHAR2(64) | NO | 子分区名 | +| SUBPARTITION_POSITION | NUMBER | YES | 子分区位置 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 分区所属的表空间名 | +| HIGH_BOUND | VARCHAR2(1024) | NO | 分区模板表达式 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/134.USER_SUBPART_KEY_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/134.USER_SUBPART_KEY_COLUMNS.md new file mode 100644 index 000000000..8b0e22532 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/134.USER_SUBPART_KEY_COLUMNS.md @@ -0,0 +1,39 @@ +USER_SUBPART_KEY_COLUMNS +============================================= + + + +功能 +----------- + +查看当前用户拥有的所有分区对象中子分区键包含的列。 + +相关视图 +------------- + +* DBA_SUBPART_KEY_COLUMNS + + + +* ALL_SUBPART_KEY_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------| +| NAME | VARCHAR2(128) | NO | 分区表或分区索引的名字 | +| OBJECT_TYPE | CHAR(5) | NO | 分区对象的类型: * TABLE * INDEX | +| COLUMN_NAME | VARCHAR2(4000) | NO | 列的名字 | +| COLUMN_POSITION | NUMBER | NO | 列在分区键中的位置 | +| COLLATED_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/135.USER_SYNONYMS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/135.USER_SYNONYMS.md new file mode 100644 index 000000000..8e411eeeb --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/135.USER_SYNONYMS.md @@ -0,0 +1,37 @@ +USER_SYNONYMS +================================== + + + +功能 +----------- + +查看当前用户所拥有的同义词。 + +相关视图 +------------- + +* ALL_SYNONYMS + + + +* DBA_SYNONYMS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|----------------------------------------------------------| +| SYNONYM_NAME | VARCHAR2(128) | NO | 同义词名字 | +| TABLE_OWNER | VARCHAR2(128) | NO | 同义词引用对象的名字,这里的TABLE_NAME 仅仅是列名而已,同义词也可以是对其他对象(例如视图等)的同义词 | +| TABLE_NAME | VARCHAR2(128) | NO | 同义词引用的对象名字 | +| DB_LINK | VARCHAR2(128) | NO | 如果引用的是 DB Link,则表示 DB Link 的名字 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/136.USER_SYS_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/136.USER_SYS_PRIVS.md new file mode 100644 index 000000000..53868a9d6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/136.USER_SYS_PRIVS.md @@ -0,0 +1,27 @@ +USER_SYS_PRIVS +=================================== + + + +功能 +----------- + +列出了授予当前用户的系统权限。 + +相关视图 +------------- + +DBA_SYS_PRIVS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|------------------| +| GRANTEE | VARCHAR2(128) | NO | 接受授权的受让人名称、用户或角色 | +| PRIVILEGE | VARCHAR2(40) | NO | 系统权限 | +| ADMIN_OPTION | VARCHAR2(3) | NO | 授予管理选项 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/137.USER_TAB_SUBPARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/137.USER_TAB_SUBPARTITIONS.md new file mode 100644 index 000000000..2bad3cbfc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/137.USER_TAB_SUBPARTITIONS.md @@ -0,0 +1,71 @@ +USER_TAB_SUBPARTITIONS +=========================================== + + + +功能 +----------- + +描述了当前用户拥有的每个表子分区的子分区名、表的名称和它所属的分区以及它的存储属性。 + +相关视图 +------------- + +* ALL_TAB_SUBPARTITIONS + + + +* DBA_TAB_SUBPARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|----------------|----------------|-----------------------| +| TABLE_NAME | VARCHAR2(128) | NO | 表名 | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名称 | +| SUBPARTITION_NAME | VARCHAR2(128) | NO | 子分区名称 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 子分区表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 子分区表达式的长度 | +| SUBPARTITION_POSITION | NUMBER | NO | 子分区在分区中的位置 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含子分区的表空间的名称 | +| PCT_FREE | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| LOGGING | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 子分区是否压缩 | +| COMPRESS_FOR | VARCHAR2(12) | YES | 压缩方法 | +| NUM_ROWS | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/138.USER_TRIGGERS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/138.USER_TRIGGERS.md new file mode 100644 index 000000000..b83bd57f9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/138.USER_TRIGGERS.md @@ -0,0 +1,54 @@ +USER_TRIGGERS +================================== + + + +功能 +----------- + +描述当前用户拥有的触发器。 + +相关视图 +------------- + +* ALL_TRIGGERS + + + +* DBA_TRIGGERS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|-----------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------| +| TRIGGER_NAME | VARCHAR2(128) | NO | 触发器名字 | +| TRIGGER_TYPE | VARCHAR2(16) | NO | 触发器类型: * BEFORE/AFTER * ROW/STMT | +| TRIGGERING_EVENT | VARCHAR2(246) | NO | 触发事件,当前 OceanBase 数据库仅支持 INSERT、UPDATE、DELETE等。 | +| TABLE_OWNER | VARCHAR2(128) | NO | 表 OWNER,触发对象类型为表时有效。 | +| BASE_OBJECT_TYPE | VARCHAR2(18) | NO | 触发对象类型,当前 OceanBase 数据库仅支持 TABLE。 | +| TABLE_NAME | VARCHAR2(256) | NO | 表名,触发对象类型为表时有效。 | +| COLUMN_NAME | VARCHAR2(4000) | NO | 列名,仅在触发对象为嵌套表时有效,其它情况为 NULL。 | +| REFERENCING_NAMES | VARCHAR2(422) | NO | REF 名,OLD 和 NEW 的别名。 | +| WHEN_CLAUSE | VARCHAR2(4000) | YES | 触发条件 | +| STATUS | VARCHAR2(8) | NO | 状态: * ENABLE * DISABLE | +| DESCRIPTION | VARCHAR2(65536) | NO | 触发器描述,包括名字、类型、事件信息。当前 OceanBase 数据库包含的信息比 Oracle 更多。 | +| ACTION_TYPE | VARCHAR2(11) | NO | ACTION 类型,当前 OceanBase 数据库仅支持 PL/SQL。 | +| TRIGGER_BODY | VARCHAR2(65536) | NO | 触发器语句,当前 OceanBase 数据库包含的信息比 Oracle 更多。 | +| CROSSEDITION | VARCHAR2(7) | NO | 跨版本信息。目前暂不支持该字段 | +| BEFORE_STATEMENT | VARCHAR2(3) | NO | 语句前,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| BEFORE_ROW | VARCHAR2(3) | NO | 行前,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| AFTER_ROW | VARCHAR2(3) | NO | 行后,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| AFTER_STATEMENT | VARCHAR2(3) | NO | 语句后,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| INSTEAD_OF_ROW | VARCHAR2(3) | NO | 代替,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| FIRE_ONCE | VARCHAR2(3) | NO | 目前暂不支持该字段 | +| APPLY_SERVER_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/139.USER_TABLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/139.USER_TABLES.md new file mode 100644 index 000000000..bb71cc60b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/139.USER_TABLES.md @@ -0,0 +1,87 @@ +USER_TABLES +================================ + + + +功能 +----------- + +查看当前用户拥有的所有表。 + +相关视图 +------------- + +* ALL_TABLES + + + +* DBA_TABLES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------| +| TABLE_NAME | VARCHAR2(128) | NO | 表名 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含该表的表空间名字 | +| CLUSTER_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IOT_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| STATUS | VARCHAR2(8) | NO | 表状态: * VALID * UNUSABLE | +| PCT_FREE | NUMBER | NO | 块的最小空闲空间比例 | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BACKED_UP | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | 表行数 | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEGREE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INSTANCES | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CACHE | VARCHAR2(20) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_LOCK | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,该字段默认为 NULL | +| PARTITIONED | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| IOT_TYPE | VARCHAR2(12) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| TEMPORARY | VARCHAR2(1) | NO | 指定表是否是临时表 | +| SECONDARY | VARCHAR2(1) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| NESTED | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| ROW_MOVEMENT | VARCHAR2(8) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| DURATION | VARCHAR2(15) | NO | 指示临时表的持续时间 | +| SKIP_CORRUPT | VARCHAR2(8) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| MONITORING | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| CLUSTER_OWNER | VARCHAR2(30) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| DEPENDENCIES | VARCHAR2(8) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| COMPRESS_FOR | VARCHAR2(12) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| DROPPED | VARCHAR2(3) | NO | 表示被删除表是否在回收站里 | +| READ_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 目前暂不支持该字段,该字段默认为 NULL | +| RESULT_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,该字段默认为 NULL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/14.ALL_IND_SUBPARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/14.ALL_IND_SUBPARTITIONS.md new file mode 100644 index 000000000..f38a24afd --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/14.ALL_IND_SUBPARTITIONS.md @@ -0,0 +1,75 @@ +ALL_IND_SUBPARTITIONS +========================================== + + + +功能 +----------- + +查看数据库中用户可以访问的所有索引子分区的信息。 + +相关视图 +------------- + +* DBA_IND_SUBPARTITIONS + + + +* USER_IND_SUBPARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| INDEX_OWNER | VARCHAR2(128) | NO | 索引所属的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名字 | +| SUBPARTITION_NAME | VARCHAR2(128) | NO | 子分区名字 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 子分区绑定 Value 的表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 子分区绑定 Value 表达式的长度 | +| SUBPARTITION_POSITION | NUMBER | NO | 子分区在分区的位置 | +| STATUS | VARCHAR2(8) | NO | 指示索引分区是否可用 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含分区的表空间的名称 | +| PCT_FREE | NUMBER | NO | 块中最小可用空间百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 初始交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 最大交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 初始范围的大小(以字节为单位)。目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 辅助扩展区的大小(以字节为单位)。目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 段中允许的最小范围数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 段中允许的最大扩展数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 段中允许的最大块数。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 范围大小的百分比增加。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 在此段中分配的进程空闲列表数。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 在此段中分配的进程自由列表组数。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(7) | NO | 指示是否记录对索引的更改。目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 表示分区索引是否开启压缩: * 开启(ENABLE) * 未开启(DISABLE) | +| BLEVEL | NUMBER | NO | B树级别(从根块到叶块的索引深度)。深度为 0 表示根块和叶块相同。目前暂不支持该字段,当前该字段默认为 NULL | +| LEAF_BLOCKS | NUMBER | NO | 索引中的叶块数。目前暂不支持该字段,当前该字段默认为 NULL | +| DISTINCT_KEYS | NUMBER | NO | 索引分区中不同键的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_LEAF_BLOCKS_PER_KEY | NUMBER | NO | 出现索引中每个不同值的叶块的平均数目,四舍五入到最接近的整数。对于强制执行 UNIQUE 和 PRIMARY KEY 约束的索引,此值始终为 1。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_DATA_BLOCKS_PER_KEY | NUMBER | NO | 表中由索引中不同值四舍五入到最接近的整数所指向的平均数据块数。此统计数据是包含行的数据块的平均数量,这些行包含给定索引列的指定值。目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTERING_FACTOR | NUMBER | NO | 指示基于索引值的表中行的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | 此索引子分区中的行数。目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 分析此子分区时使用的样本量。目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 最近对该分区进行分析的日期。目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 子分区的默认缓冲池。目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于子分区块的数据库智能闪存缓存提示。目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 单元闪存缓存提示将用于子分区块。目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 指示是否由用户直接输入统计信息。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_DIRECT_ACCESS | NUMBER | NO | 如果索引组织表上的二级索引,则具有有效猜测的行的百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | * 如果已收集统计信息,则 GLOBAL_STATS 将为 YES * 如果未收集统计信息,则 GLOBAL_STATS 将为 NO 目前暂不支持该字段,当前该字段默认为 NULL | +| DOMIDX_OPSTATUS | VARCHAR(6) | NO | 域索引上的操作状态。目前暂不支持该字段,当前该字段默认为 NULL | +| PARAMETERS | VARCHAR2(1000) | NO | 对于域索引,参数字符串。目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 指示分区是否在间隔分区表的间隔部分中(是)或分区是否在范围部分中(否)。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 指示是否已创建索引子分区段。 N/A 表示该索引未分区。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/140.USER_TABLESPACES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/140.USER_TABLESPACES.md new file mode 100644 index 000000000..e29e55bb7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/140.USER_TABLESPACES.md @@ -0,0 +1,47 @@ +USER_TABLESPACES +===================================== + + + +功能 +----------- + +USER_TABLESPACES 用于展示所有的 Tablespace。 + +相关视图 +------------- + +DBA_TABLESPACES + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TABLESPACE_NAME | VARCHAR2(30) | NO | 表空间的名称。 | +| BLOCK_SIZE | NUMBER | NO | 表空间块大小。目前暂不支持该字段,当前该字段默认为 NULL。 | +| INITIAL_EXTENT | NUMBER | NO | 默认初始区段大小。目前暂不支持该字段,该字段默认为 NULL。 | +| NEXT_EXTENT | NUMBER | NO | 默认增量区段大小。目前暂不支持该字段,当前该字段默认为 NULL。 | +| MIN_EXTENTS | NUMBER | NO | 默认的最小扩展数。目前暂不支持该字段,当前该字段默认为 NULL。 | +| MAX_EXTENTS | NUMBER | NO | 默认的最大扩展数。目前暂不支持该字段,当前该字段默认为 NULL。 | +| MAX_SIZE | NUMBER | NO | 段的默认最大大小。目前暂不支持该字段,当前该字段默认为 NULL。 | +| PCT_INCREASE | NUMBER | NO | 区段大小的默认增加百分比。目前暂不支持该字段,当前该字段默认为 NULL。 | +| MIN_EXTLEN | NUMBER | NO | 此表空间的最小区段大小。目前暂不支持该字段,当前该字段默认为 NULL。 | +| STATUS | VARCHAR2(9) | NO | 表空间状态: * ONLINE * OFFLINE * READ ONLY 目前暂不支持该字段,当前该字段默认为 NULL。 | +| CONTENTS | VARCHAR2(9) | NO | 表内容: * UNDO * PERMANENT * TEMPORARY 目前暂不支持该字段,当前该字段默认为 NULL。 | +| LOGGING | VARCHAR2(9) | NO | 默认的日志记录属性: * LOGGING * NOLOGGING 目前暂不支持该字段,当前该字段默认为 NULL。 | +| FORCE_LOGGING | VARCHAR2(3) | NO | 指示表空间是否处于强制日志记录模式。目前暂不支持该字段,当前该字段默认为 NULL。 | +| EXTENT_MANAGEMENT | VARCHAR2(10) | NO | 指示表空间中的区段是字典管理的还是本地管理。目前暂不支持该字段,当前该字段默认为 NULL。 | +| ALLOCATION_TYPE | VARCHAR2(9) | NO | 表空间中有效的区段分配类型: * SYSTEM * UNIFORM * USER 目前暂不支持该字段,当前该字段默认为 NULL。 | +| SEGMENT_SPACE_MANAGEMENT | VARCHAR2(6) | NO | 指示表空间中的空闲和使用的段空间是使用空闲列表还是位图来管理。目前暂不支持该字段,当前该字段默认为 NULL。 | +| DEF_TAB_COMPRESSION | VARCHAR2(8) | NO | 指示是否启用默认表压缩。 | +| RETENTION | VARCHAR2(11) | NO | 撤消表空间保留: * GUARANTEE * A RETENTION * NOGUARANTEE * NOT APPLY 目前暂不支持该字段,当前该字段默认为 NULL。 | +| BIGFILE | VARCHAR2(3) | NO | 指示表空间是大文件表空间还是小文件表空间。目前暂不支持该字段,当前该字段默认为 NULL。 | +| PREDICATE_EVALUATION | VARCHAR2(7) | NO | 指示谓词是由主机计算还是由存储计算。目前暂不支持该字段,当前该字段默认为 NULL。 | +| ENCRYPTED | VARCHAR2(3) | NO | 指示表空间是否加密或不加密。目前暂不支持该字段,当前该字段默认为 NULL。 | +| COMPRESS_FOR | VARCHAR2(12) | NO | 默认压缩操作的类型。 OceanBase 数据库暂不支持该字段,目前该字段默认为 NULL。 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/141.USER_TAB_COLS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/141.USER_TAB_COLS.md new file mode 100644 index 000000000..8c0dfaa9a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/141.USER_TAB_COLS.md @@ -0,0 +1,71 @@ +USER_TAB_COLS +================================== + + + +功能 +----------- + +查看当前用户拥有的表、视图、集群的所有列。 + +这个视图与 USER_TABLE_COLUMNS 区别在于没有对隐藏列进行过滤。 + +相关视图 +------------- + +* ALL_TAB_COLS + + + +* DBA_TAB_COLS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|----------------|----------------|-------------------------------------------------------------------------------------------------------------------------------| +| TABLE_NAME | VARCHAR2(128) | NO | 表、视图的名字 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列名 | +| DATA_TYPE | VARCHAR2(128) | NO | 列类型 | +| DATA_TYPE_MOD | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_TYPE_OWNER | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_LENGTH | NUMBER | NO | 列长度,单位:bytes | +| DATA_PRECISION | NUMBER | NO | 数字数据类型的十进制精度;浮点数据类型的二进制精度;所有其他数据类型为空值 | +| DATA_SCALE | NUMBER | NO | 数值小数点右边的数字 | +| NULLABLE | VARCHAR2(1) | NO | 列是否允许为空 | +| COLUMN_ID | NUMBER | NO | 列序号 | +| DEFAULT_LENGTH | NUMBER | NO | 列默认长度 | +| DATA_DEFAULT | VARCHAR2(128) | NO | 列默认值 | +| NUM_DISTINCT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOW_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HIGH_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DENSITY | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_NULLS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_BUCKETS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHARACTER_SET_NAME | VARCHAR2(44) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_COL_DECL_LENGTH | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_COL_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_LENGTH | NUMBER | NO | 字符类型的列长度 | +| CHAR_USED | VARCHAR2(1) | NO | 表示列是按照字节长度还是字符长度 | +| V80_FMT_IMAGE | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_UPGRADED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HIDDEN_COLUMN | VARCHAR2(3) | NO | 表示列是否是隐藏列: * YES * NO | +| VIRTUAL_COLUMN | VARCHAR2(3) | NO | 表示列是否是虚拟列: * YES * NO | +| SEGMENT_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERNAL_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HISTOGRAM | VARCHAR2(15) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| QUALIFIED_COL_NAME | VARCHAR2(4000) | NO | 限定列名 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/142.USER_TAB_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/142.USER_TAB_COLUMNS.md new file mode 100644 index 000000000..c1d03c75b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/142.USER_TAB_COLUMNS.md @@ -0,0 +1,63 @@ +USER_TAB_COLUMNS +===================================== + + + +功能 +----------- + +查看当前用户拥有的表、视图、集群的所有列。 + +相关视图 +------------- + +* ALL_TAB_COLUMNS + + + +* DBA_TAB_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|---------------|----------------|---------------------------------------| +| TABLE_NAME | VARCHAR2(128) | NO | 表、视图的名字 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列名 | +| DATA_TYPE | VARCHAR2(128) | NO | 列类型 | +| DATA_TYPE_MOD | VARCHAR2(3) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| DATA_TYPE_OWNER | VARCHAR2(128) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| DATA_LENGTH | NUMBER | NO | 列长度,单位:bytes | +| DATA_PRECISION | NUMBER | NO | 数字数据类型的十进制精度;浮点数据类型的二进制精度;所有其他数据类型为空值 | +| DATA_SCALE | NUMBER | NO | 数值小数点右边的数字 | +| NULLABLE | VARCHAR2(1) | NO | 列是否允许为空 | +| COLUMN_ID | NUMBER | NO | 列序号 | +| DEFAULT_LENGTH | NUMBER | NO | 列默认长度 | +| DATA_DEFAULT | VARCHAR2(128) | NO | 列默认值 | +| NUM_DISTINCT | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| LOW_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| HIGH_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| DENSITY | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| NUM_NULLS | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| NUM_BUCKETS | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| CHARACTER_SET_NAME | VARCHAR2(44) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| CHAR_COL_DECL_LENGTH | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| AVG_COL_LEN | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| CHAR_LENGTH | NUMBER | NO | 字符类型的列长度 | +| CHAR_USED | VARCHAR2(1) | NO | 表示列是按照字节长度还是字符长度 | +| V80_FMT_IMAGE | VARCHAR2(3) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| DATA_UPGRADED | VARCHAR2(3) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| HISTOGRAM | VARCHAR2(15) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/143.USER_TAB_COMMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/143.USER_TAB_COMMENTS.md new file mode 100644 index 000000000..4ae0f9787 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/143.USER_TAB_COMMENTS.md @@ -0,0 +1,37 @@ +USER_TAB_COMMENTS +====================================== + + + +功能 +----------- + +查看当前用户拥有的表、视图的注释。 + +相关视图 +------------- + +* ALL_TAB_COMMENTS + + + +* DBA_TAB_COMMENTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|----------------|----------------|---------| +| TABLE_NAME | VARCHAR2(128) | NO | 表、视图的名字 | +| TABLE_TYPE | VARCHAR2(11) | NO | 对象类型 | +| COMMENTS | VARCHAR2(4000) | NO | 对象注释 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/144.USER_TAB_PARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/144.USER_TAB_PARTITIONS.md new file mode 100644 index 000000000..201bf2612 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/144.USER_TAB_PARTITIONS.md @@ -0,0 +1,74 @@ +USER_TAB_PARTITIONS +======================================== + + + +功能 +----------- + +查看属于当前用户的多级分区信息、分区存储参数和分区统计信息。 + +相关视图 +------------- + +* DBA_TAB_PARTITIONS + + + +* ALL_TAB_PARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|----------------|----------------|--------------------------| +| TABLE_NAME | VARCHAR2(128) | NO | 分区表名字 | +| COMPOSITE | VARCHAR2(3) | NO | 是否为多级分区 | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名 | +| SUBPARTITION_COUNT | NUMBER | YES | 子分区个数 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 分区表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 分区表达式的长度 | +| PARTITION_POSITION | NUMBER | NO | 分区的位置 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 分区所属的表空间名 | +| PCT_FREE | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| LOGGING | VARCHAR2(7) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 是否开启压缩 | +| COMPRESS_FOR | VARCHAR2(12) | YES | 压缩方法 | +| NUM_ROWS | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| IS_NESTED | VARCHAR2(3) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| PARENT_TABLE_PARTITION | VARCHAR2(30) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(4) | NO | 目前暂不支持该字段,且当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/145.USER_TYPES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/145.USER_TYPES.md new file mode 100644 index 000000000..6e2c5a8f9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/145.USER_TYPES.md @@ -0,0 +1,48 @@ +USER_TYPES +=============================== + + + +功能 +----------- + +列出当前用户的用户自定义类型。 + +相关视图 +------------- + +* DBA_TYPES + + + +* ALL_TYPES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|--------------|----------------|--------------------------| +| TYPE_NAME | VARCHAR2(64) | NO | 类型名 | +| TYPE_OID | NUMBER(38) | NO | 类型 OID | +| TYPECODE | VARCHAR2(10) | NO | 代表对象的类型,例如 OBJECT、COLL 等 | +| ATTRIBUTES | NUMBER(38) | NO | 类型包含的属性数 | +| METHODS | NUMBER(38) | NO | 类型包含的方法数 | +| PREDEFINED | CHAR(2) | NO | 是否是系统预定义类型 | +| INCOMPLETE | CHAR(2) | NO | 是否是不完整类型, 只有名字没有方法和属性 | +| FINAL | CHAR(3) | NO | 是否不可被继承 | +| INSTANTIABLE | CHAR(3) | NO | 是否可实例化 | +| SUPERTYPE_OWNER | VARCHAR2(30) | NO | 父类型的拥有者 | +| SUPERTYPE_NAME | VARCHAR2(30) | NO | 父类型名 | +| LOCAL_ATTRIBUTES | NUMBER(38) | NO | 本地属性数 | +| LOCAL_METHODS | NUMBER(38) | NO | 本地方法数 | +| TYPEID | NUMBER(38) | YES | 目前暂不支持该字段,且当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/146.USER_TYPE_ATTRS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/146.USER_TYPE_ATTRS.md new file mode 100644 index 000000000..c3803652b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/146.USER_TYPE_ATTRS.md @@ -0,0 +1,46 @@ +USER_TYPE_ATTRS +==================================== + + + +功能 +----------- + +列出当前用户可用的用户自定义类型的属性信息。 + +相关视图 +------------- + +* DBA_TYPE_ATTRS + + + +* ALL_TYPE_ATTRS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|--------------------------| +| TYPE_NAME | VARCHAR2(64) | NO | 类型名 | +| ATTR_NAME | VARCHAR2(64) | NO | 类型属性名 | +| ATTR_TYPE_MOD | VARCHAR2(7) | NO | 类型的 Modify 属性。目前暂未使用该字段 | +| ATTR_TYPE_OWNER | VARCHAR2(128) | NO | 属性的类型拥有者 | +| ATTR_TYPE_NAME | VARCHAR2(324) | NO | 属性的类型名 | +| LENGTH | NUMBER(38) | NO | 属性类型长度 | +| NUMBER_PRECISION | NUMBER(38) | NO | 属性数值类型的长度 | +| SCALE | NUMBER(38) | NO | 数值类型小数点右边的数据长度 | +| CHARACTER_SET_NAME | CHAR(7) | NO | 属性类型的字符集 | +| ATTR_NO | NUMBER(38) | NO | 属性编号 | +| INHERITED | CHAR(2) | NO | 该属性是否继承自父类型 | +| CHAR_USED | CHAR(1) | YES | 目前暂不支持该字段,且当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/147.USER_TYPE_METHODS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/147.USER_TYPE_METHODS.md new file mode 100644 index 000000000..21b467766 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/147.USER_TYPE_METHODS.md @@ -0,0 +1,47 @@ +USER_TYPE_METHODS +====================================== + + +**说明** + +说明: OceanBase 数据库暂未支持该视图的相关功能。 + +功能 +----------- + +查看用户可以访问的对象类型的方法,除了不含有OWNER字段,字段信息和ALL_TYPE_METHODS一致。 + +相关视图 +------------- + +* DBA_TYPE_METHODS + + + +* ALL_TYPE_METHODS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|--------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TYPE_NAME | VARCHAR2(30) | NO | 类型的名称 | +| METHOD_NAME | VARCHAR2(30) | NO | 方法的名称 | +| METHOD_NO | NUMBER | NO | 方法编号,为了区分重载方法 | +| METHOD_TYPE | VARCHAR2(6) | NO | 方法类型: * MAP * ORDER * PUBLIC | +| PARAMETERS | NUMBER | NO | 方法参数的个数 | +| RESULTS | NUMBER | NO | 方法返回结果的个数 | +| FINAL | VARCHAR2(3) | NO | 表明此方法是否为 FINAL: * YES * NO | +| INSTANTIABLE | VARCHAR2(3) | NO | 表明此方法是否可实例化: * YES * NO | +| OVERRIDING | VARCHAR2(3) | NO | 表明此方法是否重载一个超类型方法: * YES * NO | +| INHERITED | VARCHAR2(3) | NO | 表明此方法是否继承自一个超类型: * YES * NO | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/148.USER_VIEWS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/148.USER_VIEWS.md new file mode 100644 index 000000000..a936cafca --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/148.USER_VIEWS.md @@ -0,0 +1,43 @@ +USER_VIEWS +=============================== + + + +功能 +----------- + +描述当前用户拥有的视图。 + +相关视图 +------------- + +* ALL_VIEWS + + + +* DBA_VIEWS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|----------------|----------------|------------------------------------------------------------| +| VIEW_NAME | VARCHAR2(128) | NO | 索引名字 | +| TEXT_LENGTH | NUMBER | NO | 视图定义长度 | +| TEXT | VARCHAR2(4000) | NO | 视图正文 | +| OID_TEXT_LENGTH | NUMBER | NO | 类型视图的 WITH OID 子句的长度。目前暂不支持该字段,且当前该字段默认为 NULL | +| OID_TEXT | VARCHAR2(4000) | NO | 类型视图的 WITH OID 子句。目前暂不支持该字段,且当前该字段默认为 NULL | +| VIEW_TYPE | VARCHAR2(30) | NO | 视图的类型(如果视图是类型视图)。 目前暂不支持该字段,且当前该字段默认为 NULL | +| SUPERVIEW_NAME | VARCHAR2(30) | NO | 超级视图的名称。目前暂不支持该字段,且当前该字段默认为 NULL | +| EDITIONING_VIEW | VARCHAR2(1) | NO | 保留以备将来使用。目前暂不支持该字段,且当前该字段默认为 NULL | +| READ_ONLY | VARCHAR2(1) | NO | 表示视图是否只读。目前暂不支持该字段,且当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/149.USER_RECYCLEBIN.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/149.USER_RECYCLEBIN.md new file mode 100644 index 000000000..4dbf796e7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/149.USER_RECYCLEBIN.md @@ -0,0 +1,40 @@ +USER_RECYCLEBIN +==================================== + + + +功能 +----------------------- + +记录回收站的信息。 + +相关视图 +------------------------- + +DBA__RECYCLEBIN + +字段说明 +------------------------- + + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|----------------|---------------|------------|------------------------------------------------------------------------------------------------------------------------------------| +| OBJECT_NAME | VARCHAR2(128) | NO | 对象的新名称 | +| ORIGINAL_NAME | VARCHAR2(128) | NO | 对象的原始名称 | +| OPERATION | VARCHAR2(9) | NO | 暂不支持该字段,默认为 NULL | +| TYPE | VARCHAR2(25) | NO | 对象类型 | +| TS_NAME | VARCHAR2(30) | NO | 对象所属的表的名称 | +| CREATETIME | VARCHAR2(30) | NO | 创建对象的时间 | +| DROPTIME | VARCHAR2(30) | NO | 对象进入回收站的时间 | +| DROPSCN | NUMBER | NO | 暂不支持该字段,默认为 NULL | +| PARTITION_NAME | VARCHAR2(128) | NO | 暂不支持该字段,默认为 NULL | +| CAN_UNDROP | VARCHAR2(3) | NO | 是否可以将对象从回收站中恢复: * YES * NO | +| CAN_PURGE | VARCHAR2(3) | NO | 是否可以将对象清除: * YES * NO | +| RELATED | NUMBER | NO | 暂不支持该字段,默认为 NULL | +| BASE_OBJECT | NUMBER | NO | 暂不支持该字段,默认为 NULL | +| PURGE_OBJECT | NUMBER | NO | 暂不支持该字段,默认为 NULL | +| SPACE | NUMBER | NO | 暂不支持该字段,默认为 NULL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/15.ALL_METHOD_PARAMS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/15.ALL_METHOD_PARAMS.md new file mode 100644 index 000000000..cf1ef547c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/15.ALL_METHOD_PARAMS.md @@ -0,0 +1,50 @@ +ALL_METHOD_PARAMS +====================================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看用户可访问的对象类型的方法参数。 + +相关视图 +------------- + +* DBA_METHOD_PARAMS + + + +* USER_METHOD_PARAMS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|--------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(30) | NO | 类型的拥有者 | +| TYPE_NAME | VARCHAR2(30) | NO | 类型名称 | +| METHOD_NAME | VARCHAR2(30) | NO | 方法名称 | +| METHOD_NO | NUMBER | NO | 对于重载的方法,这个编号区分另一个名字相同的方法。不要将这个和对象 ID 混淆。 | +| PARAM_NAME | VARCHAR2(30) | NO | 参数的名称 | +| PARAM_NO | NUMBER | NO | 参数编号(正数) | +| PARAM_MODE | VARCHAR2(6) | NO | 参数模式: * IN * OUT * IN OUT | +| PARAM_TYPE_MOD | VARCHAR2(7) | NO | 参数是否引用其他的对象 | +| PARAM_TYPE_OWNER | VARCHAR2(30) | NO | 参数类型的拥有者 | +| PARAM_TYPE_NAME | VARCHAR2(30) | NO | 参数类型的名称 | +| CHARACTER_SET_NAME | VARCHAR2(44) | NO | 方法的字符集是鼎昌的字符集(CHAR_CS)或者是鼎昌的自然字符集(NCHAR_CS),或者用户特殊指定的一个字符集。 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/150.USER_DEPENDENCIES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/150.USER_DEPENDENCIES.md new file mode 100644 index 000000000..ee443321e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/150.USER_DEPENDENCIES.md @@ -0,0 +1,41 @@ +USER_DEPENDENCIES +====================================== + + + +功能 +----------------------- + +`USER_DEPENDENCIES` 视图用于展示当前用户 Schema 中各对象之间的依赖关系。目前仅支持展示 PL 对象之间的依赖关系。 + +相关视图 +------------------------- + +* `ALL_DEPENDENCIES` + + + +* `DBA_DEPENDENCIES` + + + + + + +字段说明 +------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|---------------|----------------|-------------------| +| NAME | VARCHAR2(128) | NO | 依赖者的名称 | +| TYPE | VARCHAR2(23) | NO | 依赖者的类型 | +| REFERENCED_OWNER | VARCHAR2(128) | NO | 被依赖者的 Owner 名称 | +| REFERENCED_NAME | VARCHAR2(128) | NO | 被依赖者的名称 | +| REFERENCED_TYPE | VARCHAR2(18) | NO | 被依赖者的类型 | +| REFERENCED_LINK_NAME | VARCHAR2(128) | NO | 被依赖者的 Dblink 名称 | +| SCHEMAID | NUMBER | NO | 当前用户对应的 Schema ID | +| DEPENDENCY_TYPE | VARCHAR2(4) | NO | 指示该依赖为强依赖或者其他依赖 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/151.ROLE_TAB_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/151.ROLE_TAB_PRIVS.md new file mode 100644 index 000000000..816bfe993 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/151.ROLE_TAB_PRIVS.md @@ -0,0 +1,26 @@ +ROLE_TAB_PRIVS +=================================== + + + +功能 +----------- + +描述授予角色的表特权。仅提供关于用户可以访问的角色的信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|---------------|----------------|--------------------| +| ROLE | VARCHAR2(128) | NO | 角色名称 | +| OWNER | VARCHAR2(128) | NO | 对象的所有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 对象的名称 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列的名称(如果使用) | +| PRIVILEGE | VARCHAR2(40) | NO | 授予角色的对象权限 | +| GRANTABLE | VARCHAR2(3) | NO | 该角色是否被授予了 ADMIN 选项 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/152.ROLE_SYS_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/152.ROLE_SYS_PRIVS.md new file mode 100644 index 000000000..882024925 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/152.ROLE_SYS_PRIVS.md @@ -0,0 +1,23 @@ +ROLE_SYS_PRIVS +=================================== + + + +功能 +----------- + +描述授予角色的系统特权。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|--------------------| +| ROLE | VARCHAR2(128) | NO | 角色名称 | +| PRIVILEGE | VARCHAR2(40) | NO | 授予该角色的系统权限 | +| ADMIN_OPTION | VARCHAR2(3) | NO | 该角色是否被授予了 ADMIN 选项 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/153.ROLE_ROLE_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/153.ROLE_ROLE_PRIVS.md new file mode 100644 index 000000000..85ec21f86 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/153.ROLE_ROLE_PRIVS.md @@ -0,0 +1,23 @@ +ROLE_ROLE_PRIVS +==================================== + + + +功能 +----------- + +描述授予其他角色的角色。只提供关于用户可以访问的角色的信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|--------------|---------------|------------|--------------------| +| ROLE | VARCHAR2(128) | NO | 角色名称 | +| GRANTED_ROLE | VARCHAR2(128) | NO | 授予的角色 | +| ADMIN_OPTION | VARCHAR2(3) | NO | 该角色是否被授予了 ADMIN 选项 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/154.DICTIONARY.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/154.DICTIONARY.md new file mode 100644 index 000000000..fd447cc04 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/154.DICTIONARY.md @@ -0,0 +1,22 @@ +DICTIONARY +=============================== + + + +功能 +----------- + +包含对数据字典表和视图的描述。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|----------------|----------------|---------| +| TABLE_NAME | VARCHAR2(128) | NO | 对象的名称 | +| COMMENTS | VARCHAR2(4000) | NO | 对象的文本注释 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/155.DICT.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/155.DICT.md new file mode 100644 index 000000000..1d9c9fa60 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/155.DICT.md @@ -0,0 +1,22 @@ +DICT +========================= + + + +功能 +----------- + +与 `DICTIONARY` 视图相同,包含对数据字典表和视图的描述。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|----------------|----------------|---------| +| TABLE_NAME | VARCHAR2(128) | NO | 对象的名称 | +| COMMENTS | VARCHAR2(4000) | NO | 对象的文本注释 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/16.ALL_OBJECTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/16.ALL_OBJECTS.md new file mode 100644 index 000000000..7dbaf40df --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/16.ALL_OBJECTS.md @@ -0,0 +1,51 @@ +ALL_OBJECTS +================================ + + + +功能 +----------- + +查看用户可访问的所有数据库对象。 + +相关视图 +------------- + +* USER_OBJECTS + + + +* DBA_OBJECTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | NO | 对象名字 | +| SUBOBJECT_NAME | VARCHAR2(128) | NO | 子对象名字(例如,partition) | +| OBJECT_ID | NUMBER(38) | NO | 对象的字典ID值 | +| DATA_OBJECT_ID | NUMBER | NO | 包含该对象 Segment 的字典 ID 值 | +| OBJECT_TYPE | VARCHAR2(23) | NO | 对象类型,包括表、索引、分区、包、存储过程、同义词、序列等 | +| CREATED | DATE | NO | 对象创建时间 | +| LAST_DDL_TIME | DATE | NO | 对象最后一次 DDL 时间 | +| TIMESTAMP | VARCHAR2(256) | NO | 对象指定的时间戳,以字符形式输出 | +| STATUS | VARCHAR2(7) | NO | 对象状态: * VALID * INVALID | +| TEMPORARY | VARCHAR2(1) | NO | 表示该对象是一个临时对象 | +| GENERATED | VARCHAR2(1) | NO | 表示该对象的名字是否是由系统生成 | +| SECONDARY | VARCHAR2(1) | NO | 暂未使用 | +| NAMESPACE | NUMBER | NO | 对象的命名空间 | +| EDITION_NAME | VARCHAR2(128) | NO | 保留字段 | + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/17.ALL_PART_INDEXES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/17.ALL_PART_INDEXES.md new file mode 100644 index 000000000..b8580c5b8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/17.ALL_PART_INDEXES.md @@ -0,0 +1,63 @@ +ALL_PART_INDEXES +===================================== + + + +功能 +----------- + +查看当前用户可访问的分区索引的分区信息。 + +相关视图 +------------- + +* DBA_PART_INDEXES + + + +* USER_PART_INDEXES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 分区索引的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 分区索引的名字 | +| TABLE_NAME | VARCHAR2(128) | NO | 索引所属的表的名字 | +| PARTITIONING_TYPE | VARCHAR2(9) | NO | 分区方式: * HASH * RANGE * LIST | +| SUBPARTITIONING_TYPE | VARCHAR2(9) | NO | 子分区的分区方式: * HASH * RANGE * LIST | +| PARTITION_COUNT | NUMBER | NO | 索引中分区个数 | +| DEF_SUBPARTITION_COUNT | NUMBER | NO | 对于复合分区索引,表示子分区的个数 | +| PARTITIONING_KEY_COUNT | NUMBER | NO | 分区键的数量 | +| SUBPARTITIONING_KEY_COUNT | NUMBER | NO | 对于复合分区索引,表示子分区键的数量 | +| LOCALITY | VARCHAR2(6) | NO | 分区索引是局部 (LOCAL)还是全局 (GLOBAL) | +| ALIGNMENT | VARCHAR2(12) | NO | 分区索引是前缀(PREFIXED)还是非前缀 (NON_PREFIXED) | +| DEF_TABLESPACE_NAME | VARCHAR2(30) | NO | 对于局部索引,添加或分割表分区时默认表空间 | +| DEF_PCT_FREE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INITIAL_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_NEXT_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MIN_EXTENTS | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_EXTENTS | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_SIZE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PCT_INCREASE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_LOGGING | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PARAMETERS | VARCHAR2(1000) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(1000) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/18.ALL_PART_KEY_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/18.ALL_PART_KEY_COLUMNS.md new file mode 100644 index 000000000..2b0ce4b3f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/18.ALL_PART_KEY_COLUMNS.md @@ -0,0 +1,40 @@ +ALL_PART_KEY_COLUMNS +========================================= + + + +功能 +----------- + +查看用户可访问的所有分区对象中分区键包含的列。 + +相关视图 +------------- + +* DBA_PART_KEY_COLUMNS + + + +* USER_PART_KEY_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 分区表或分区索引的拥有者 | +| NAME | VARCHAR2(128) | NO | 分区表或分区索引的名字 | +| OBJECT_TYPE | CHAR(5) | NO | 分区对象的类型: * TABLE * INDEX | +| COLUMN_NAME | VARCHAR2(4000) | NO | 列的名字 | +| COLUMN_POSITION | NUMBER | NO | 列在分区键中的位置 | +| COLLATED_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/19.ALL_PART_TABLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/19.ALL_PART_TABLES.md new file mode 100644 index 000000000..e41779358 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/19.ALL_PART_TABLES.md @@ -0,0 +1,66 @@ +ALL_PART_TABLES +==================================== + + + +功能 +----------- + +查看当前用户可访问的分区表的分区信息。 + +相关视图 +------------- + +* DBA_PART_TABLES : 查看所有的分区表的分区信息 + + + +* USER_PART_TABLES : 查看属于当前用户的分区表的分区信息 + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 分区表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 分区表的名字 | +| PARTITIONING_TYPE | VARCHAR2(9) | NO | 分区方式: * HASH * RANGE * LIST | +| SUBPARTITIONING_TYPE | VARCHAR2(9) | NO | 子分区的分区方式: * HASH * RANGE * LIST | +| PARTITION_COUNT | NUMBER | NO | 分区表中分区个数 | +| DEF_SUBPARTITION_COUNT | NUMBER | NO | 对于复合分区表,表示子分区的个数 | +| PARTITIONING_KEY_COUNT | NUMBER | NO | 分区键的数量 | +| SUBPARTITIONING_KEY_COUNT | NUMBER | NO | 对于复合分区表,表示子分区键的数量 | +| STATUS | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_TABLESPACE_NAME | VARCHAR2(30) | NO | 分区表所属的表空间名 | +| DEF_PCT_FREE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INITIAL_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_NEXT_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MIN_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_SIZE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PCT_INCREASE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_LOGGING | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 是否开启压缩 | +| COMPRESS_FOR | VARCHAR2(12) | NO | 压缩方法 | +| DEF_BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| REF_PTN_CONSTRAINT_NAME | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(1000) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IS_NESTED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_SEGMENT_CREATED | VARCHAR2(4) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/2.ALL_ARGUMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/2.ALL_ARGUMENTS.md new file mode 100644 index 000000000..46ebfb21c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/2.ALL_ARGUMENTS.md @@ -0,0 +1,56 @@ +ALL_ARGUMENTS +================================== + + + +功能 +----------- + +列出数据库中可用的过程和函数的参数。 + +相关视图 +------------- + +* DBA_ARGUMENTS + + + +* USER_ARGUMENTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | YES | 过程或者函数名 | +| PACKAGE_NAME | VARCHAR2(128) | YES | 包名 | +| OBJECT_ID | NUMBER | NO | 对象 ID | +| OVERLOAD | NUMBER | YES | 出现在包源文件中的第几次重载 | +| SUBPROGRAM_ID | NUMBER | YES | 出现在包中的顺序, 对于独立的过程或者函数该值为 1 | +| ARGUMENT_NAME | VARCHAR2(128) | YES | 参数名,该值为 NULL 说明是函数的返回值 | +| POSITION | NUMBER(38) | NO | 出现在参数列表中的位置 | +| SEQUENCE | NUMBER(38) | NO | 对于复杂类型,该值代表属性的序号 | +| DATA_LEVEL | NUMBER(38) | NO | 对于嵌套的复杂类型, 该值代表当前类型嵌套的层次 | +| DATA_TYPE | VARCHAR2(128) | YES | 参数的数据类型,对于嵌套的复杂类型,该值代表当前层的数据类型 | +| DEFAULTED | CHAR(2) | YES | 标识当前参数是否有默认值 | +| DATA_LENGTH | NUMBER(38) | YES | 数据类型的长度 | +| IN_OUT | VARCHAR2(5) | YES | 参数的输入输出属性(NULL 表示是返回值): * IN * OUT * IN OUT | +| DATA_PRECISION | NUMBER(38) | YES | 数值类型的最大长度 | +| DATA_SCALE | NUMBER(38) | YES | 数值类型小数点右边的数据长度 | +| CHARACTER_SET_NAME | VARCHAR2(7) | YES | 参数的字符集名 | +| COLLATION | VARCHAR2(18) | YES | 字符集排序规则 | +| TYPE_OWNER | NUMBER(38) | YES | 复杂数据类型的类型拥有者 | +| TYPE_NAME | VARCHAR2(128) | YES | 复杂数据类型的名字 | +| TYPE_SUBNAME | VARCHAR2(128) | YES | 如果是包中的类型, 该字段代表包名 | +| ORIGIN_CON_ID | NUMBER(38) | YES | 该字段当前代表租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/20.ALL_PROCEDURES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/20.ALL_PROCEDURES.md new file mode 100644 index 000000000..ca21a7ab7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/20.ALL_PROCEDURES.md @@ -0,0 +1,50 @@ +ALL_PROCEDURES +=================================== + + + +功能 +----------- + +列出数据库中可用的过程和函数。 + +相关视图 +------------- + +* DBA_PROCEDURES + + + +* USER_PROCEDURES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | YES | 包名 | +| PROCEDURE_NAME | VARCHAR2(128) | NO | 过程或者函数名 | +| OBJECT_ID | NUMBER | NO | 对象 ID | +| SUBPROGRAM_ID | NUMBER | NO | 出现在包中的顺序, 对于独立的过程或者函数该值为 1 | +| OVERLOAD | NUMBER | NO | 出现在包源文件中的第几次重载 | +| OBJECT_TYPE | VARCHAR2(9) | NO | 对象的类型 | +| AGGREGATE | VARCHAR2(3) | NO | 表示该过程是否为聚合函数。目前暂不支持该字段,当前该字段默认为 NO | +| PIPELINED | VARCHAR2(3) | NO | 表示该过程是否为管道表函数 | +| IMPLTYPEOWNER | VARCHAR2(30) | NO | 实现类型所有者的名称。目前暂不支持该字段,当前该字段默认为 NULL | +| IMPLTYPENAME | VARCHAR2(30) | NO | 实现类型的名称。目前暂不支持该字段,当前该字段默认为 NULL | +| PARALLEL | VARCHAR2(3) | NO | 指示过程或功能是否是并行启用的 | +| INTERFACE | VARCHAR2(3) | NO | 过程/函数是使用 ODCI 接口实现的表函数。目前暂不支持该字段,当前该字段默认为 NULL | +| DETERMINISTIC | VARCHAR2(3) | NO | 该过程或功能被声明为确定性的 | +| AUTHID | VARCHAR2(12) | NO | INVOKER/DEFINER | +| ORIGIN_CON_ID | NUMBER(38) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/21.ALL_PROFILES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/21.ALL_PROFILES.md new file mode 100644 index 000000000..31ee19b7c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/21.ALL_PROFILES.md @@ -0,0 +1,38 @@ +ALL_PROFILES +================================= + + + +功能 +----------- + +查看所有的简介和这些简介的限制。 + +相关视图 +------------- + +* DBA_PROFILES + + + +* USER_PROFILES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|--------------|----------------|-----------------------------------| +| PROFILE | VARCHAR2(30) | NO | 简介的名称 | +| RESOURCE_NAME | VARCHAR2(32) | NO | 资源的名称 | +| RESOURCE_TYPE | VARCHAR2(8) | NO | 表明一个资源的简介是一个 KERNEL 还是一个 PASSWORD | +| LIMIT | VARCHAR2(40) | NO | 简介资源的限制 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/22.ALL_SCHEDULER_JOB_ARGS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/22.ALL_SCHEDULER_JOB_ARGS.md new file mode 100644 index 000000000..770808f6f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/22.ALL_SCHEDULER_JOB_ARGS.md @@ -0,0 +1,47 @@ +ALL_SCHEDULER_JOB_ARGS +=========================================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看用户可查的调度作业参数信息。 + +相关视图 +------------- + +* USER_SCHEDULER_JOB_ARGS + + + +* DBA_SCHEDULER_JOB_ARGS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|----------------|----------------|-------------------------| +| OWNER | VARCHAR2(30) | NO | 参数所属作业的拥有者 | +| JOB_NAME | VARCHAR2(30) | NO | 参数所属作业的名称 | +| ARGUMENT_NAME | VARCHAR2(30) | NO | 参数的可选名称 | +| ARGUMENT_POSITION | NUMBER | NO | 参数在参数列表中的位置 | +| ARGUMENT_TYPE | VARCHAR2(61) | NO | 参数的数据类型 | +| VALUE | VARCHAR2(4000) | NO | 如果参数是一个字符串类型,参数的默认值 | +| DEFAULT_ANYDATA_VALUE | VARCHAR2(128) | NO | 如果参数是 ANYDATA 类型,参数的默认值 | +| OUT_ARGUMENT | VARCHAR2(5) | NO | 保留字段 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/23.ALL_SCHEDULER_PROGRAM_ARGS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/23.ALL_SCHEDULER_PROGRAM_ARGS.md new file mode 100644 index 000000000..0c9841c69 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/23.ALL_SCHEDULER_PROGRAM_ARGS.md @@ -0,0 +1,48 @@ +ALL_SCHEDULER_PROGRAM_ARGS +=============================================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看用户可查的调度程序参数信息。 + +相关视图 +------------- + +* USER_SCHEDULER_PROGRAM_ARGS + + + +* DBA_SCHEDULER_PROGRAM_ARGS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|----------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(30) | NO | 参数所属程序的拥有者 | +| PROGRAM_NAME | VARCHAR2(30) | NO | 参数所属程序的名称 | +| ARGUMENT_NAME | VARCHAR2(30) | NO | 参数的可选名称 | +| ARGUMENT_POSITION | NUMBER | NO | 参数在参数列表中的位置 | +| ARGUMENT_TYPE | VARCHAR2(61) | NO | 参数的数据类型 | +| METADATA_ATTRIBUTE | VARCHAR2(19) | NO | 元数据的属性: * JOB_NAME * JOB_OWNER * JOB_START * WINDOW_START * WINDOW_END * JOB_SUBNAME * EVENT_MESSAGE * JOB_SCHEDULER_START | +| DEFAULT_VALUE | VARCHAR2(4000) | NO | 如果参数是一个字符串类型,参数的默认值 | +| DEFAULT_ANYDATA_VALUE | VARCHAR2(128) | YES | 如果参数是 ANYDATA 类型,参数的默认值 | +| OUT_ARGUMENT | VARCHAR2(5) | YES | 保留字段 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/24.ALL_SEQUENCES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/24.ALL_SEQUENCES.md new file mode 100644 index 000000000..a69db8078 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/24.ALL_SEQUENCES.md @@ -0,0 +1,43 @@ +ALL_SEQUENCES +================================== + + + +功能 +----------- + +列出用户可访问的所有 SEQUENCE。 + +相关视图 +------------- + +* DBA_SEQUENCES + + + +* USER_SEQUENCES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|-------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | NO | SEQUENCE 名 | +| MIN_VALUE | NUMBER(28) | NO | SEQUENCE 可取的最小值(含) | +| MAX_VALUE | NUMBER(28) | NO | SEQUENCE 可取的最大值(含) | +| INCREMENT_BY | NUMBER(28) | NO | 每次取值的步长,可为正整数或负整数,不可为 0 | +| CYCLE_FLAG | CHAR(1) | NO | 是否可以循环取值 | +| ORDER_FLAG | CHAR(1) | NO | 取值是否保证全局有序 | +| CACHE_SIZE | NUMBER(28) | NO | 每个节点缓存值的数量 | +| LAST_NUMBER | NUMBER(38) | NO | 记录下一个可分配给节点的值 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/25.ALL_SOURCE.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/25.ALL_SOURCE.md new file mode 100644 index 000000000..d0eec926b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/25.ALL_SOURCE.md @@ -0,0 +1,40 @@ +ALL_SOURCE +=============================== + + + +功能 +----------- + +列出数据库中可用的过程和函数的源代码。 + +相关视图 +------------- + +* DBA_SOURCE + + + +* USER_SOURCE + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|--------------|----------------|-------------------| +| OWNER | VARCHAR2(30) | NO | 对象所属的拥有者 | +| NAME | VARCHAR2(30) | NO | 对象名 | +| TYPE | VARCHAR2(12) | NO | 对象类型 | +| LINE | NUMBER | NO | TEXT 字段对应的源代码中的行号 | +| TEXT | CLOB | NO | 当前行的源代码 | +| ORIGIN_CON_ID | NUMBER(38) | NO | 暂不支持该字段,字段默认为NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/26.ALL_SUBPARTITION_TEMPLATES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/26.ALL_SUBPARTITION_TEMPLATES.md new file mode 100644 index 000000000..0ef151cce --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/26.ALL_SUBPARTITION_TEMPLATES.md @@ -0,0 +1,40 @@ +ALL_SUBPARTITION_TEMPLATES +=============================================== + + + +功能 +----------- + +查看所有子分区模版描述信息。 + +相关视图 +------------- + +* DBA_SUBPARTITION_TEMPLATES + + + +* USER_SUBPARTITION_TEMPLATES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|----------------|----------------|-----------| +| TABLE_OWNER | VARCHAR2(128) | NO | 分区表的所有者 | +| TABLE_NAME | VARCHAR2(256) | NO | 分区表名 | +| SUBPARTITION_NAME | VARCHAR2(64) | NO | 子分区名 | +| SUBPARTITION_POSITION | NUMBER | YES | 子分区位置 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 分区所属的表空间名 | +| HIGH_BOUND | VARCHAR2(1024) | NO | 分区模板表达式 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/27.ALL_SUBPART_KEY_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/27.ALL_SUBPART_KEY_COLUMNS.md new file mode 100644 index 000000000..781a07a21 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/27.ALL_SUBPART_KEY_COLUMNS.md @@ -0,0 +1,40 @@ +ALL_SUBPART_KEY_COLUMNS +============================================ + + + +功能 +----------- + +查看用户可访问的所有分区对象中子分区键包含的列。 + +相关视图 +------------- + +* DBA_SUBPART_KEY_COLUMNS + + + +* USER_SUBPART_KEY_COLUMNS + + + + + + +字段说明 +---------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 分区表或分区索引的拥有者 | +| NAME | VARCHAR2(128) | NO | 分区表或分区索引的名字 | +| OBJECT_TYPE | CHAR(5) | NO | 分区对象的类型: * TABLE * INDEX | +| COLUMN_NAME | VARCHAR2(4000) | NO | 列的名字 | +| COLUMN_POSITION | NUMBER | NO | 列在分区键中的位置 | +| COLLATED_COLUMN_ID | NUMBER | NO | 目前暂未支持该字段,当前该字段默认为NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/28.ALL_SYNONYMS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/28.ALL_SYNONYMS.md new file mode 100644 index 000000000..c5b3fd0dc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/28.ALL_SYNONYMS.md @@ -0,0 +1,41 @@ +ALL_SYNONYMS +================================= + + + +功能 +----------- + +查看用户可访问的所有同义词。 + +相关视图 +------------- + +* DBA_SYNONYMS + + + +* USER_SYNONYMS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|----------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 同义词的拥有者 | +| SYNONYM_NAME | VARCHAR2(128) | NO | 同义词名字 | +| TABLE_OWNER | VARCHAR2(128) | NO | 同义词引用对象的名字,这里的TABLE_NAME 仅仅是列名而已,同义词也可以是对其他对象(例如视图等)的同义词 | +| TABLE_NAME | VARCHAR2(128) | NO | 同义词引用的对象名字 | +| DB_LINK | VARCHAR2(128) | NO | 如果引用的是 DB Link,则表示 DB Link 的名字 | + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/29.ALL_TABLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/29.ALL_TABLES.md new file mode 100644 index 000000000..2520629cb --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/29.ALL_TABLES.md @@ -0,0 +1,89 @@ +ALL_TABLES +=============================== + + + +功能 +----------- + +查看用户可访问的所有表。 + +相关视图 +------------- + +* DBA_TABLES + + + +* USER_TABLES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表名 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含该表的表空间名字 | +| CLUSTER_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IOT_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| STATUS | VARCHAR2(8) | NO | 表状态: * VALID * UNUSABLE | +| PCT_FREE | NUMBER | NO | 块的最小空闲空间比例 | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BACKED_UP | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | 表行数 | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEGREE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INSTANCES | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CACHE | VARCHAR2(20) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_LOCK | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PARTITIONED | VARCHAR2(3) | NO | 指定表是否是分区: * YES * NO | +| IOT_TYPE | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TEMPORARY | VARCHAR2(1) | NO | 指定表是否是临时表 | +| SECONDARY | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NESTED | VARCHAR2(3) | NO | 指定表是否是嵌套表 * YES * NO | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| ROW_MOVEMENT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DURATION | VARCHAR2(15) | NO | 指示临时表的持续时间 | +| SKIP_CORRUPT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MONITORING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTER_OWNER | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEPENDENCIES | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESS_FOR | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DROPPED | VARCHAR2(3) | NO | 表示被删除表是否在回收站里 | +| READ_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| RESULT_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/3.ALL_COL_COMMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/3.ALL_COL_COMMENTS.md new file mode 100644 index 000000000..e389ccda3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/3.ALL_COL_COMMENTS.md @@ -0,0 +1,40 @@ +ALL_COL_COMMENTS +===================================== + + + +功能 +----------- + +查看用户可访问的视图和表的所有列注释。 + +相关视图 +------------- + +* USER_COL_COMMENTS + + + +* DBA_COL_COMMENTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|----------------|----------------|--------| +| OWNER | VARCHAR2(128) | NO | 对象的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | NO | 对象名字 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列名 | +| COMMENTS | VARCHAR2(4000) | YES | 列注释 | + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/30.ALL_TAB_COLS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/30.ALL_TAB_COLS.md new file mode 100644 index 000000000..46f62b5bc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/30.ALL_TAB_COLS.md @@ -0,0 +1,72 @@ +ALL_TAB_COLS +================================= + + + +功能 +----------- + +查看当前用户可访问的的表、视图、集群的所有列。 + +这个视图与 ALL_TABLE_COLUMNS 的区别在于没有对隐藏列进行过滤。 + +相关视图 +------------- + +* DBA_TAB_COLS + + + +* USER_TAB_COLS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|----------------|----------------|-------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 表、视图的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表、视图的名字 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列名 | +| DATA_TYPE | VARCHAR2(128) | NO | 列类型 | +| DATA_TYPE_MOD | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_TYPE_OWNER | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_LENGTH | NUMBER | NO | 列长度,单位:bytes | +| DATA_PRECISION | NUMBER | NO | 数字数据类型的十进制精度;浮点数据类型的二进制精度;所有其他数据类型为空值 | +| DATA_SCALE | NUMBER | NO | 数值小数点右边的数字 | +| NULLABLE | VARCHAR2(1) | NO | 列是否允许为空 | +| COLUMN_ID | NUMBER | NO | 列序号 | +| DEFAULT_LENGTH | NUMBER | NO | 列默认长度 | +| DATA_DEFAULT | VARCHAR2(128) | NO | 列默认值 | +| NUM_DISTINCT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOW_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HIGH_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DENSITY | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_NULLS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_BUCKETS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHARACTER_SET_NAME | VARCHAR2(44) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_COL_DECL_LENGTH | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_COL_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_LENGTH | NUMBER | NO | 字符类型的列长度 | +| CHAR_USED | VARCHAR2(1) | NO | 表示列是按照字节长度还是字符长度 | +| V80_FMT_IMAGE | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_UPGRADED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HIDDEN_COLUMN | VARCHAR2(3) | NO | 表示列是否是隐藏列: * YES * NO | +| VIRTUAL_COLUMN | VARCHAR2(3) | NO | 表示列是否是虚拟列: * YES * NO | +| SEGMENT_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERNAL_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HISTOGRAM | VARCHAR2(15) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| QUALIFIED_COL_NAME | VARCHAR2(4000) | NO | 限定列名 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/31.ALL_TAB_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/31.ALL_TAB_COLUMNS.md new file mode 100644 index 000000000..f40a5f6ad --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/31.ALL_TAB_COLUMNS.md @@ -0,0 +1,65 @@ +ALL_TAB_COLUMNS +==================================== + + + +功能 +----------- + +查看当前用户可访问的表、视图、集群的所有列。 + +相关视图 +------------- + +* DBA_TAB_COLUMNS + + + +* USER_TAB_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|---------------|----------------|---------------------------------------| +| OWNER | VARCHAR2(128) | NO | 表、视图的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表、视图的名字 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列名 | +| DATA_TYPE | VARCHAR2(128) | NO | 列类型 | +| DATA_TYPE_MOD | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_TYPE_OWNER | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_LENGTH | NUMBER | NO | 列长度,单位:bytes | +| DATA_PRECISION | NUMBER | NO | 数字数据类型的十进制精度;浮点数据类型的二进制精度;所有其他数据类型为空值 | +| DATA_SCALE | NUMBER | NO | 数值小数点右边的数字 | +| NULLABLE | VARCHAR2(1) | NO | 列是否允许为空 | +| COLUMN_ID | NUMBER | NO | 列序号 | +| DEFAULT_LENGTH | NUMBER | NO | 列默认长度 | +| DATA_DEFAULT | VARCHAR2(128) | NO | 列默认值 | +| NUM_DISTINCT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOW_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HIGH_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DENSITY | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_NULLS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_BUCKETS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHARACTER_SET_NAME | VARCHAR2(44) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_COL_DECL_LENGTH | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_COL_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_LENGTH | NUMBER | NO | 字符类型的列长度 | +| CHAR_USED | VARCHAR2(1) | NO | 表示列是按照字节长度还是字符长度 | +| V80_FMT_IMAGE | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_UPGRADED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HISTOGRAM | VARCHAR2(15) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/32.ALL_TAB_COMMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/32.ALL_TAB_COMMENTS.md new file mode 100644 index 000000000..4cfb66b6e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/32.ALL_TAB_COMMENTS.md @@ -0,0 +1,38 @@ +ALL_TAB_COMMENTS +===================================== + + + +功能 +----------- + +查看当前用户可访问的表、视图的注释。 + +相关视图 +------------- + +* DBA_TAB_COMMENTS + + + +* USER_TAB_COMMENTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|----------------|----------------|----------| +| OWNER | VARCHAR2(128) | NO | 表、视图的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表、视图的名字 | +| TABLE_TYPE | VARCHAR2(11) | NO | 对象类型 | +| COMMENTS | VARCHAR2(4000) | NO | 对象注释 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/33.ALL_TAB_PARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/33.ALL_TAB_PARTITIONS.md new file mode 100644 index 000000000..d3800ee7d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/33.ALL_TAB_PARTITIONS.md @@ -0,0 +1,75 @@ +ALL_TAB_PARTITIONS +======================================= + + + +功能 +----------- + +查看所有分区表的多级分区信息、分区存储参数和分区统计信息。 + +相关视图 +------------- + +* DBA_TAB_PARTITIONS + + + +* USER_TAB_PARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|----------------|----------------|-------------------------| +| TABLE_OWNER | VARCHAR2(128) | NO | 分区表所属的 USER | +| TABLE_NAME | VARCHAR2(128) | NO | 分区表名字 | +| COMPOSITE | VARCHAR2(3) | NO | 是否为多级分区 | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名 | +| SUBPARTITION_COUNT | NUMBER | YES | 子分区个数 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 分区表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 分区表达式的长度 | +| PARTITION_POSITION | NUMBER | NO | 分区的位置 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 分区所属表空间的名字 | +| PCT_FREE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 是否开启压缩 | +| COMPRESS_FOR | VARCHAR2(12) | YES | 压缩方法 | +| NUM_ROWS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IS_NESTED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PARENT_TABLE_PARTITION | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(4) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/34.ALL_TAB_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/34.ALL_TAB_PRIVS.md new file mode 100644 index 000000000..ffe425899 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/34.ALL_TAB_PRIVS.md @@ -0,0 +1,52 @@ +ALL_TAB_PRIVS +================================== + + + +功能 +----------- + +ALL_TAB_PRIVS 列出了满足以下条件的对象权限: + +* 当前用户为对象的拥有者,或为对象权限的授予者,或为对象权限的被授予者。 + + + +* 对象权限的被授予者为已激活角色或 PUBLIC 角色。 + + + + + + +相关视图 +------------- + +* DBA_TAB_PRIVS + + + +* USER_TAB_PRIVS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|-------------------------------| +| GRANTOR | VARCHAR2(128) | NO | 执行授权的用户名 | +| GRANTEE | VARCHAR2(128) | NO | 被授予访问权限的用户名 | +| TABLE_SCHEMA | VARCHAR2(128) | NO | 对象的模式 | +| TABLE_NAME | VARCHAR2(128) | NO | 对象名称 | +| PRIVILEGE | VARCHAR2(40) | NO | 对象的权限 | +| GRANTABLE | VARCHAR2(3) | NO | 指示是否能通过 GRANT OPTION 授予权限 | +| HIERARCHY | VARCHAR2(10) | NO | 指示是否能通过 HIERARCHY OPTION 授予权限 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/35.ALL_TAB_SUBPARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/35.ALL_TAB_SUBPARTITIONS.md new file mode 100644 index 000000000..b4a31f019 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/35.ALL_TAB_SUBPARTITIONS.md @@ -0,0 +1,72 @@ +ALL_TAB_SUBPARTITIONS +========================================== + + + +功能 +----------- + +ALL_TAB_SUBPARTITIONS 用于显示 DBMS_STATS 包为当前用户可访问的分区生成的分区级别的分区信息、分区存储参数和分区统计信息。 + +相关视图 +------------- + +* DBA_TAB_SUBPARTITIONS + + + +* USER_TAB_SUBPARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|---------------|----------------|-------------------------| +| TABLE_OWNER | VARCHAR2(128) | NO | 表的所有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表名 | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名称 | +| SUBPARTITION_NAME | VARCHAR2(128) | NO | 子分区名称 | +| HIGH_VALUE | NUMBER | NO | 子分区表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 子分区表达式的长度 | +| SUBPARTITION_POSITION | VARCHAR2(30) | NO | 子分区在分区中的位置 | +| TABLESPACE_NAME | NUMBER | NO | 包含子分区的表空间的名称 | +| PCT_FREE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 子分区是否压缩 | +| COMPRESS_FOR | VARCHAR2(12) | YES | 压缩方法 | +| NUM_ROWS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/36.ALL_TRIGGERS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/36.ALL_TRIGGERS.md new file mode 100644 index 000000000..91e370cbf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/36.ALL_TRIGGERS.md @@ -0,0 +1,55 @@ +ALL_TRIGGERS +================================= + + + +功能 +----------- + +描述当前用户拥有的表上触发器与描述。如果用户具有 CREATE ANY TRIGGER权限,则该视图描述数据库中的所有触发器。 + +相关视图 +------------- + +* DBA_TRIGGERS + + + +* USER_TRIGGERS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|-----------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 触发器 OWNER | +| TRIGGER_NAME | VARCHAR2(128) | NO | 触发器名字 | +| TRIGGER_TYPE | VARCHAR2(16) | NO | 触发器类型: * BEFORE/AFTER * ROW/STMT | +| TRIGGERING_EVENT | VARCHAR2(246) | NO | 触发事件,当前 OceanBase 数据库仅支持 INSERT、UPDATE、DELETE等。 | +| TABLE_OWNER | VARCHAR2(128) | NO | 表 OWNER,触发对象类型为表时有效。 | +| BASE_OBJECT_TYPE | VARCHAR2(18) | NO | 触发对象类型,当前 OceanBase 数据库仅支持 TABLE。 | +| TABLE_NAME | VARCHAR2(256) | NO | 表名,触发对象类型为表时有效。 | +| COLUMN_NAME | VARCHAR2(4000) | NO | 列名,仅在触发对象为嵌套表时有效,其它情况为 NULL。 | +| REFERENCING_NAMES | VARCHAR2(422) | NO | REF 名,OLD 和 NEW 的别名。 | +| WHEN_CLAUSE | VARCHAR2(4000) | YES | 触发条件 | +| STATUS | VARCHAR2(8) | NO | 状态: * ENABLE * DISABLE | +| DESCRIPTION | VARCHAR2(65536) | NO | 触发器描述,包括名字、类型、事件信息。 当前 OceanBase 数据库包含的信息比 Oracle 更多。 | +| ACTION_TYPE | VARCHAR2(11) | NO | ACTION 类型,当前 OceanBase 数据库仅支持 PL/SQL。 | +| TRIGGER_BODY | VARCHAR2(65536) | NO | 触发器语句 当前 OceanBase 数据库包含的信息比 Oracle 更多。 | +| CROSSEDITION | VARCHAR2(7) | NO | 跨版本信息,当前 OceanBase 数据库不支持。 | +| BEFORE_STATEMENT | VARCHAR2(3) | NO | 语句前,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| BEFORE_ROW | VARCHAR2(3) | NO | 行前,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| AFTER_ROW | VARCHAR2(3) | NO | 行后,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| AFTER_STATEMENT | VARCHAR2(3) | NO | 语句后,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| INSTEAD_OF_ROW | VARCHAR2(3) | NO | 代替,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| FIRE_ONCE | VARCHAR2(3) | NO | 目前暂不支持该字段 | +| APPLY_SERVER_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/37.ALL_TYPES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/37.ALL_TYPES.md new file mode 100644 index 000000000..1949ba964 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/37.ALL_TYPES.md @@ -0,0 +1,49 @@ +ALL_TYPES +============================== + + + +功能 +----------- + +列出数据库中可用的用户自定义类型。 + +相关视图 +------------- + +* DBA_TYPES + + + +* USER_TYPES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|---------------|----------------|---------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| TYPE_NAME | VARCHAR2(64) | NO | 类型名 | +| TYPE_OID | NUMBER(38) | NO | 类型 OID | +| TYPECODE | VARCHAR2(10) | NO | 代表对象的类型,例如 OBJECT、 COLL 等 | +| ATTRIBUTES | NUMBER(38) | NO | 类型包含的属性数 | +| METHODS | NUMBER(38) | NO | 类型包含的方法数 | +| PREDEFINED | CHAR(2) | NO | 是否是系统预定义类型 | +| INCOMPLETE | CHAR(2) | NO | 是否是不完整类型, 只有名字没有方法和属性 | +| FINAL | CHAR(3) | NO | 是否不可被继承 | +| INSTANTIABLE | CHAR(3) | NO | 是否可实例化 | +| SUPERTYPE_OWNER | VARCHAR2(30) | NO | 父类型的拥有者 | +| SUPERTYPE_NAME | VARCHAR2(30) | NO | 父类型名 | +| LOCAL_ATTRIBUTES | NUMBER(38) | NO | 本地属性数 | +| LOCAL_METHODS | NUMBER(38) | NO | 本地方法数 | +| TYPEID | NUMBER(38) | YES | 目前暂不支持该字段,当前字段默认为NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/38.ALL_TYPE_ATTRS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/38.ALL_TYPE_ATTRS.md new file mode 100644 index 000000000..1e62329dd --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/38.ALL_TYPE_ATTRS.md @@ -0,0 +1,46 @@ +ALL_TYPE_ATTRS +=================================== + + + +功能 +----------- + +列出数据库中可用的用户自定义类型的属性信息。 + +相关视图 +------------- + +* DBA_TYPE_ATTRS + + + +* USER_TYPE_ATTRS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|-------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| TYPE_NAME | VARCHAR2(64) | NO | 类型名 | +| ATTR_NAME | VARCHAR2(64) | NO | 类型属性名 | +| ATTR_TYPE_MOD | VARCHAR2(7) | NO | 类型的 Modify 属性。目前暂未使用该字段 | +| ATTR_TYPE_OWNER | VARCHAR2(128) | NO | 属性的类型拥有者 | +| ATTR_TYPE_NAME | VARCHAR2(324) | NO | 属性的类型名 | +| LENGTH | NUMBER(38) | NO | 属性类型长度 | +| NUMBER_PRECISION | NUMBER(38) | NO | 属性数值类型的长度 | +| SCALE | NUMBER(38) | NO | 数值类型小数点右边的数据长度 | +| CHARACTER_SET_NAME | CHAR(7) | NO | 属性类型的字符集 | +| ATTR_NO | NUMBER(38) | NO | 属性编号 | +| INHERITED | CHAR(2) | NO | 该属性是否继承自父类型 | +| CHAR_USED | CHAR(1) | YES | 目前暂不支持该字段,该字段字段默认为NULL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/39.ALL_TYPE_METHODS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/39.ALL_TYPE_METHODS.md new file mode 100644 index 000000000..257d7acff --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/39.ALL_TYPE_METHODS.md @@ -0,0 +1,50 @@ +ALL_TYPE_METHODS +===================================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看用户可以访问的对象类型的方法。 + +相关视图 +------------- + +* DBA_TYPE_METHODS + + + +* USER_TYPE_METHODS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|--------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(30) | NO | 类型的拥有者 | +| TYPE_NAME | VARCHAR2(30) | NO | 类型的名称 | +| METHOD_NAME | VARCHAR2(30) | NO | 方法的名称 | +| METHOD_NO | NUMBER | NO | 方法编号,为了区分重载方法 | +| METHOD_TYPE | VARCHAR2(6) | NO | 方法类型: * MAP * ORDER * PUBLIC | +| PARAMETERS | NUMBER | NO | 方法参数的个数 | +| RESULTS | NUMBER | NO | 方法返回结果的个数 | +| FINAL | VARCHAR2(3) | NO | 表明此方法是否为 FINAL: * YES * NO | +| INSTANTIABLE | VARCHAR2(3) | NO | 表明此方法是否可实例化: * YES * NO | +| OVERRIDING | VARCHAR2(3) | NO | 表明此方法是否重载一个超类型方法: * YES * NO | +| INHERITED | VARCHAR2(3) | NO | 表明此方法是否继承自一个超类型: * YES * NO | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/4.ALL_COLL_TYPES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/4.ALL_COLL_TYPES.md new file mode 100644 index 000000000..0737f46c8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/4.ALL_COLL_TYPES.md @@ -0,0 +1,47 @@ +ALL_COLL_TYPES +=================================== + + + +功能 +----------- + +列出数据库中可用的用户自定义集合类型。其列与 DBA_COLL_TYPES 中的列相同。 + +相关视图 +------------- + +* DBA_COLL_TYPES + + + +* USER_COLL_TYPES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| TYPE_NAME | VARCHAR2(64) | NO | 类型名 | +| COLL_TYPE | VARCHAR2(10) | NO | 集合类型: * VARYING * ARRAY * NESTED TABLE | +| UPPER_BOUND | NUMBER(38) | YES | 对于 VARYING,记录集合的最大大小 | +| ELEM_TYPE_MOD | VARCHAR2(7) | YES | 目前暂不支持该字段,当前字段默认为 NULL | +| ELEM_TYPE_OWNER | VARCHAR2(128) | YES | 集合元素类型的拥有者 | +| ELEM_TYPE_NAME | VARCHAR2(324) | YES | 集合元素类型名 | +| LENGTH | NUMBER(38) | YES | 集合元素类型长度 | +| NUMBER_PRECISION | NUMBER(38) | YES | 集合元素类型精度 | +| SCALE | NUMBER(38) | YES | 集合元素类型小数点右边数据的长度 | +| CHARACTER_SET_NAME | CHAR(7) | YES | 集合元素类型字符集 | +| ELEM_STORAGE | CHAR(3) | YES | 目前暂不支持该字段,当前字段默认为 NULL | +| NULLS_STORED | CHAR(1) | YES | 目前暂不支持该字段,当前字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/40.ALL_USERS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/40.ALL_USERS.md new file mode 100644 index 000000000..095592f7f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/40.ALL_USERS.md @@ -0,0 +1,28 @@ +ALL_USERS +============================== + + + +功能 +----------- + +查看所有用户。 + +相关视图 +------------- + +DBA_USERS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|--------------|----------------|---------| +| USERNAME | VARCHAR2(30) | NO | 用户名 | +| USERID | NUMBER(38) | NO | 用户 ID | +| CREATED | DATE | NO | 创建用户的时间 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/41.ALL_VIEWS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/41.ALL_VIEWS.md new file mode 100644 index 000000000..14063e850 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/41.ALL_VIEWS.md @@ -0,0 +1,44 @@ +ALL_VIEWS +============================== + + + +功能 +----------- + +查看所有视图。 + +相关视图 +------------- + +* DBA_VIEWS + + + +* USER_VIEWS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|----------------|----------------|----------------------------------------------| +| OWNER | VARCHAR2(128) | NO | VIEW 所属的 USER | +| VIEW_NAME | VARCHAR2(128) | NO | 索引名字 | +| TEXT_LENGTH | NUMBER | NO | 视图定义长度。 | +| TEXT | VARCHAR2(4000) | NO | 视图正文 | +| OID_TEXT_LENGTH | NUMBER | NO | 类型视图的 WITH OID 子句的长度。目前暂不支持该字段,当前该字段默认为 NULL | +| OID_TEXT | VARCHAR2(4000) | NO | 类型视图的 WITH OID子句。目前暂不支持该字段,当前该字段默认为 NULL | +| VIEW_TYPE | VARCHAR2(30) | NO | 视图的类型(如果视图是类型视图)。目前暂不支持该字段,当前该字段默认为 NULL | +| SUPERVIEW_NAME | VARCHAR2(30) | NO | 超级视图的名称。目前暂不支持该字段,当前该字段默认为 NULL | +| EDITIONING_VIEW | VARCHAR2(1) | NO | 保留以备将来使用。 | +| READ_ONLY | VARCHAR2(1) | NO | 表示视图是否只读。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/42.AUDIT_ACTIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/42.AUDIT_ACTIONS.md new file mode 100644 index 000000000..eac06ece8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/42.AUDIT_ACTIONS.md @@ -0,0 +1,27 @@ +AUDIT_ACTIONS +================================== + + + +功能 +----------- + +记录审计记录中 action id 和对应的名称。 + +相关视图 +------------- + +无 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|---------------|----------------|--------------------------| +| ACTION | NUMBER(38) | NO | 审计记录中的 Action ID | +| NAME | VARCHAR2(128) | NO | 审计记录中 Action ID 对应的 Name | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/43.ALL_DEPENDENCIES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/43.ALL_DEPENDENCIES.md new file mode 100644 index 000000000..9f577d45a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/43.ALL_DEPENDENCIES.md @@ -0,0 +1,41 @@ +ALL_DEPENDENCIES +===================================== + + + +功能 +----------------------- + +`ALL_DEPENDENCIES` 视图用于展示数据库中所有对象之间的依赖关系。目前仅支持展示 PL 对象之间的依赖关系。 + +相关视图 +------------------------- + +* `DBA_DEPENDENCIES` + + + +* `USER_DEPENDENCIES` + + + + + + +字段说明 +------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|---------------|----------------|-----------------| +| OWNER | VARCHAR2(128) | NO | 依赖者 Owner 的名称 | +| NAME | VARCHAR2(128) | NO | 依赖者的名称 | +| TYPE | VARCHAR2(23) | NO | 依赖者的类型 | +| REFERENCED_OWNER | VARCHAR2(128) | NO | 被依赖者的 Owner 名称 | +| REFERENCED_NAME | VARCHAR2(128) | NO | 被依赖者的名称 | +| REFERENCED_TYPE | VARCHAR2(18) | NO | 被依赖者的类型 | +| REFERENCED_LINK_NAME | VARCHAR2(128) | NO | 被依赖者的 Dblink 名称 | +| DEPENDENCY_TYPE | VARCHAR2(4) | NO | 指示该依赖为强依赖或者其他依赖 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/44.DBA_ALL_TABLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/44.DBA_ALL_TABLES.md new file mode 100644 index 000000000..de2e1df9b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/44.DBA_ALL_TABLES.md @@ -0,0 +1,92 @@ +DBA_ALL_TABLES +=================================== + + + +功能 +----------- + +查看数据库中的对象表和关系表,它的字段与 ALL_ALL_TABLES 相同。 + +相关视图 +------------- + +* ALL_ALL_TABLES + + + +* USER_ALL_TABLES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表名 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含该表的表空间名字 | +| CLUSTER_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IOT_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| STATUS | VARCHAR2(8) | NO | 表状态: * VALID * UNUSABLE | +| PCT_FREE | NUMBER | NO | 块的最小空闲空间比例 | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BACKED_UP | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | 表行数 | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEGREE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INSTANCES | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CACHE | VARCHAR2(20) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_LOCK | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PARTITIONED | VARCHAR2(3) | NO | 指定表是否是分区: * YES * NO | +| IOT_TYPE | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| OBJECT_ID_TYPE | VARCHAR2(16) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_TYPE_OWNER | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_TYPE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TEMPORARY | VARCHAR2(1) | NO | 指定表是否是临时表 | +| SECONDARY | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NESTED | VARCHAR2(3) | NO | 指定表是否是嵌套表: * YES * NO | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| ROW_MOVEMENT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DURATION | VARCHAR2(15) | NO | 指示临时表的持续时间 | +| SKIP_CORRUPT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MONITORING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTER_OWNER | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEPENDENCIES | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESS_FOR | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DROPPED | VARCHAR2(3) | NO | 表示被删除表是否在回收站里 | +| READ_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| RESULT_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/45.DBA_ARGUMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/45.DBA_ARGUMENTS.md new file mode 100644 index 000000000..b84fc4389 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/45.DBA_ARGUMENTS.md @@ -0,0 +1,56 @@ +DBA_ARGUMENTS +================================== + + + +功能 +----------- + +列出数据库中可用的过程和函数的参数。其列与 ALL_ARGUMENTS 中的列相同。 + +相关视图 +------------- + +* ALL_ARGUMENTS + + + +* USER_ARGUMENTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | YES | 过程或者函数名 | +| PACKAGE_NAME | VARCHAR2(128) | YES | 包名 | +| OBJECT_ID | NUMBER | NO | 对象 ID | +| OVERLOAD | NUMBER | YES | 出现在包源文件中的第几次重载 | +| SUBPROGRAM_ID | NUMBER | YES | 出现在包中的顺序,对于独立的过程或者函数该值为 1 | +| ARGUMENT_NAME | VARCHAR2(128) | YES | 参数名, 该值为 NULL 说明是函数的返回值 | +| POSITION | NUMBER(38) | NO | 出现在参数列表中的位置 | +| SEQUENCE | NUMBER(38) | NO | 对于复杂类型,该值代表属性的序号 | +| DATA_LEVEL | NUMBER(38) | NO | 对于嵌套的复杂类型,该值代表当前类型嵌套的层次 | +| DATA_TYPE | VARCHAR2(128) | YES | 参数的数据类型,对于嵌套的复杂类型, 该值代表当前层的数据类型 | +| DEFAULTED | CHAR(2) | YES | 标识当前参数是否有默认值 | +| DATA_LENGTH | NUMBER(38) | YES | 数据类型的长度 | +| IN_OUT | VARCHAR2(5) | YES | 参数的输入输出属性(NULL 表示是返回值) * IN * OUT * IN OUT | +| DATA_PRECISION | NUMBER(38) | YES | 数值类型的最大长度 | +| DATA_SCALE | NUMBER(38) | YES | 数值类型小数点右边的数据长度 | +| CHARACTER_SET_NAME | VARCHAR2(7) | YES | 参数的字符集名 | +| COLLATION | VARCHAR2(18) | YES | 字符集排序规则 | +| TYPE_OWNER | NUMBER(38) | YES | 复杂数据类型的类型拥有者 | +| TYPE_NAME | VARCHAR2(128) | YES | 复杂数据类型的名字 | +| TYPE_SUBNAME | VARCHAR2(128) | YES | 如果是包中的类型, 该字段代表包名 | +| ORIGIN_CON_ID | NUMBER(38) | YES | 该字段当前代表租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/46.DBA_AUDIT_EXISTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/46.DBA_AUDIT_EXISTS.md new file mode 100644 index 000000000..dd28258ef --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/46.DBA_AUDIT_EXISTS.md @@ -0,0 +1,50 @@ +DBA_AUDIT_EXISTS +===================================== + + + +功能 +----------- + +显示 `AUDIT EXISTS` 和 `AUDIT NOT EXISTS` 产生的审计跟踪条目。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | 是否可以为 NULL | **描述** | +|--------------------|-----------------------------|------------|-------------------------------------------------------| +| OS_USERNAME | VARCHAR2(255) | NO | 已审核其操作的用户的操作系统登录用户名。目前暂不支持该字段,当前该字段默认为 NULL | +| USERNAME | VARCHAR2(64) | NO | 审核其操作的用户的名称,不是 ID 号 | +| USERHOST | VARCHAR2(32) | NO | 客户端主机名。目前暂不支持该字段,当前该字段默认为 NULL | +| TERMINAL | VARCHAR2(255) | NO | 用户终端的标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TIMESTAMP | DATE | NO | 在本地数据库会话时区中创建审计跟踪条目的日期和时间(由审计会话创建的条目的用户登录日期和时间) | +| OWNER | VARCHAR2(64) | YES | 不存在对象的预定创造者 | +| OBJ_NAME | VARCHAR2(256) | YES | 受操作影响的对象的名称 | +| ACTION_NAME | VARCHAR2(128) | NO | 与 DBA_AUDIT_TRAIL 中操作列中的数字代码对应的操作类型的名称 | +| NEW_OWNER | VARCHAR2(64) | YES | 在 NEW_NAME 列中命名的对象的所有者 | +| NEW_NAME | VARCHAR2(256) | YES | 在重命名或基础对象的名称之后重新命名对象 | +| OBJ_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE语句授予或撤销的对象特权,待 Patch | +| SYS_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE 语句授予或撤消的系统特权,待 Patch | +| GRANTEE | VARCHAR2(128) | NO | GRANT 或 REVOKE 中指定的授予者名称,待 Patch | +| SESSIONID | NUMBER(38) | NO | 会话的数字 ID | +| ENTRYID | NUMBER(38) | NO | 会话中每个审计跟踪条目的数字 ID | +| STATEMENTID | NUMBER(38) | NO | 每个语句的数字 ID | +| RETURNCODE | NUMBER(38) | NO | 操作生成的错误代码。 | +| CLIENT_ID | VARCHAR2(40) | NO | 会话中的客户端标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| ECONTEXT_ID | VARCHAR2(40) | NO | 应用程序执行上下文标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| SESSION_CPU | NUMBER(38) | NO | 会话使用的 CPU 时间 | +| EXTENDED_TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | NO | 在 UTC 时区中创建审计跟踪条目的时间戳 | +| PROXY_SESSIONID | NUMBER(38) | NO | 代理会话序列号 | +| GLOBAL_UID | NUMBER(38) | NO | 用户的全局用户标识符 | +| INSTANCE_NUMBER | VARCHAR2(40) | NO | 实例编号由 INSTANCE_NUMBER 初始化参数指定。目前暂不支持该字段,当前该字段默认为 NULL | +| OS_PROCESS | VARCHAR2(40) | NO | 操作系统进程标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TRANSACTIONID | VARCHAR2(128) | NO | 在其中访问或修改对象的事务标识符 | +| SCN | NUMBER(38) | NO | 系统变更号(SCN)的查询。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_BIND | VARCHAR2(2000) | NO | 绑定查询的变量数据。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_TEXT | VARCHAR2(2000) | NO | 查询的 SQL 文本 | +| OBJ_EDITION_NAME | VARCHAR2(128) | NO | 预留字段,暂不支持 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/47.DBA_AUDIT_OBJECT.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/47.DBA_AUDIT_OBJECT.md new file mode 100644 index 000000000..de38483b9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/47.DBA_AUDIT_OBJECT.md @@ -0,0 +1,59 @@ +DBA_AUDIT_OBJECT +===================================== + + + +功能 +----------- + +显示数据库中所有对象的审计跟踪记录。 + +相关视图 +------------- + +* USER_AUDIT_OBJECT + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-----------------------------|----------------|-------------------------------------------------------| +| OS_USERNAME | VARCHAR2(255) | NO | 操作被审计的用户的操作系统登录用户名。目前暂不支持该字段,当前该字段默认为 NULL | +| USERNAME | VARCHAR2(32) | NO | 操作被审计的用户的名称 | +| USERHOST | VARCHAR2(64) | NO | 客户端主机名称。目前暂不支持该字段,当前该字段默认为 NULL | +| TERMINAL | VARCHAR2(255) | NO | 用户终端的标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TIMESTAMP | DATE | NO | 在本地数据库会话时区中创建审计跟踪条目的日期和时间 | +| OWNER | VARCHAR2(64) | YES | 受操作影响的对象的创建者 | +| OBJ_NAME | VARCHAR2(256) | YES | 受操作影响的对象的名称 | +| ACTION_NAME | VARCHAR2(128) | NO | 与 DBA_AUDIT_TRAIL 中操作列中的数字代码对应的操作类型的名称 | +| NEW_OWNER | VARCHAR2(64) | YES | 在 NEW_NAME 列中命名的对象的所有者 | +| NEW_NAME | VARCHAR2(256) | YES | 对象在 RENAME 之后的新名称或基础对象的名称 | +| SES_ACTIONS | VARCHAR2(19) | NO | 会话摘要。目前暂不支持该字段,当前该字段默认为 NULL | +| COMMENT_TEXT | VARCHAR2(65536) | YES | 在审计跟踪上的文本注释 | +| SESSIONID | NUMBER(38) | NO | 会话的数字 ID | +| ENTRYID | NUMBER(38) | NO | 会话中每个审计跟踪条目的数字 ID | +| STATEMENTID | NUMBER(38) | NO | 每个语句的数字 ID | +| RETURNCODE | NUMBER(38) | NO | 操作生成的错误代码 | +| PRIV_USED | VARCHAR2(40) | NO | 用于执行操作的系统权限。目前暂不支持该字段,当前该字段默认为 NULL | +| CLIENT_ID | VARCHAR2(40) | NO | 会话中的客户端标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| ECONTEXT_ID | VARCHAR2(40) | NO | 应用程序执行上下文标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| SESSION_CPU | NUMBER(38) | NO | 会话使用的 CPU 时间 | +| EXTENDED_TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | NO | 在 UTC 时区中创建审计跟踪条目的时间戳 | +| PROXY_SESSIONID | NUMBER(38) | NO | 代理会话序列号 | +| GLOBAL_UID | NUMBER(38) | NO | 用户的全局用户标识符 | +| INSTANCE_NUMBER | VARCHAR2(40) | NO | 由 INSTANCE_NUMBER初始化参数指定的实例编号。目前暂不支持该字段,当前该字段默认为 NULL | +| OS_PROCESS | VARCHAR2(40) | NO | 进程的操作系统进程标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TRANSACTIONID | VARCHAR2(128) | NO | 在其中访问或修改对象的事务标识符 | +| SCN | NUMBER(38) | NO | 系统变更号(SCN)的查询。目前暂不支持该字段,当前该字段默认为 0 | +| SQL_BIND | VARCHAR2(2000) | YES | 绑定查询的变量数据。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_TEXT | VARCHAR2(2000) | YES | 查询的 SQL 文本 | +| OBJ_EDITION_NAME | VARCHAR2(128) | NO | 包含被审计对象的版本的名称。目前暂不支持该字段,当前该字段默认为 NULL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/48.DBA_AUDIT_SESSION.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/48.DBA_AUDIT_SESSION.md new file mode 100644 index 000000000..feae8d526 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/48.DBA_AUDIT_SESSION.md @@ -0,0 +1,50 @@ +DBA_AUDIT_SESSION +====================================== + + + +功能 +----------- + +显示所有关于 `CONNECT` 和 `DISCONNECT` 的审计跟踪记录。 + +相关视图 +------------- + +* USER_AUDIT_SESSION + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-----------------------------|----------------|--------------------------------------------------------| +| OS_USERNAME | VARCHAR2(255) | NO | 操作被审计的用户的操作系统登录用户名。目前暂不支持该字段,当前该字段默认为 NULL | +| USERNAME | VARCHAR2(64) | NO | 操作被审计的用户的名称 | +| USERHOST | VARCHAR2(32) | NO | 客户端主机名称。目前暂不支持该字段,当前该字段默认为 NULL | +| TERMINAL | VARCHAR2(255) | NO | 用户终端的标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TIMESTAMP | DATE | NO | 在本地数据库会话时区中创建审计跟踪条目的日期和时间 | +| ACTION_NAME | VARCHAR2(128) | NO | 与 DBA_AUDIT_TRAIL 中操作列中的数字代码对应的操作类型的名称 | +| LOGOFF_TIME | DATE | NO | 用户注销的日期和时间 | +| LOGOFF_LREAD | NUMBER(38) | NO | 会话的逻辑读取 | +| LOGOFF_PREAD | NUMBER | NO | 会话的物理读取。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGOFF_LWRITE | NUMBER | NO | 会话的逻辑写操作。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGOFF_DLOCK | VARCHAR2(40) | NO | 在会话期间检测到的死锁。目前暂不支持该字段,当前该字段默认为 NULL | +| SESSIONID | NUMBER(38) | NO | 会话的数字 ID | +| RETURNCODE | NUMBER(38) | NO | 操作生成的错误代码 | +| CLIENT_ID | VARCHAR2(40) | NO | 每个会话中的客户端标识符 | +| SESSION_CPU | NUMBER(38) | NO | 会话使用的 CPU 时间 | +| EXTENDED_TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | NO | 在 UTC 时区中创建审计跟踪条目的时间戳 | +| PROXY_SESSIONID | NUMBER(38) | NO | 代理会话序列号 | +| GLOBAL_UID | NUMBER(38) | NO | 用户的全局用户标识符 | +| INSTANCE_NUMBER | VARCHAR2(40) | NO | 由 INSTANCE_NUMBER 初始化参数指定的实例编号。目前暂不支持该字段,当前该字段默认为 NULL | +| OS_PROCESS | VARCHAR2(40) | NO | 进程的操作系统进程标识符。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/49.DBA_AUDIT_STATEMENT.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/49.DBA_AUDIT_STATEMENT.md new file mode 100644 index 000000000..3c7ea5a64 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/49.DBA_AUDIT_STATEMENT.md @@ -0,0 +1,58 @@ +DBA_AUDIT_STATEMENT +======================================== + + + +功能 +----------- + +DBA_AUDIT_STATEMENT 用于展示整个数据库中关于 `GRANT`、`REVOKE`、`AUDIT`、`NOAUDIT `和 `ALTER SYSTEM `语句的审计跟踪记录。 + +相关视图 +------------- + +USER_AUDIT_STATEMENT + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-----------------------------|----------------|---------------------------------------------------------| +| OS_USERNAME | VARCHAR2(255) | NO | 操作被审计的用户的操作系统登录用户名。目前暂不支持该字段,当前该字段默认为 NULL。 | +| USERNAME | VARCHAR2(64) | NO | 操作被审计的用户的名称。 | +| USERHOST | VARCHAR2(32) | NO | 客户端主机名称。目前暂不支持该字段,当前该字段默认为 NULL。 | +| TERMINAL | VARCHAR2(255) | NO | 用户终端的标识符。目前暂不支持该字段,当前该字段默认为 NULL。 | +| TIMESTAMP | DATE | NO | 在本地数据库会话时区中创建审计跟踪条目的日期和时间。 | +| OWNER | VARCHAR2(64) | YES | 受行为影响的对象的创建者。 | +| OBJ_NAME | VARCHAR2(256) | YES | 受操作影响的对象的名称。 | +| ACTION_NAME | VARCHAR2(128) | NO | 与 DBA_AUDIT_TRAIL 中操作列中的数字代码对应的操作类型的名称。 | +| NEW_NAME | VARCHAR2(256) | YES | 对象在 RENAME 之后的新名称或基础对象的名称。 | +| OBJ_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE 语句授予或撤销的对象权限。 | +| SYS_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE 语句授予或撤消的系统权限。 | +| ADMIN_OPTION | VARCHAR2(1) | NO | 表示已使用 ADMIN 选项授予角色或系统特权。 | +| GRANTEE | VARCHAR2(128) | NO | GRANT 或 REVOKE 中指定的授予者名称。 | +| AUDIT_OPTION | VARCHAR2(40) | NO | 与 AUDIT 语句一起设置的审计选项。 | +| SES_ACTIONS | VARCHAR2(19) | NO | 会话摘要。目前暂不支持该字段,当前该字段默认为 NULL。 | +| COMMENT_TEXT | VARCHAR2(65536) | YES | 审核跟踪上的文本注释,由应用程序插入。 | +| SESSIONID | NUMBER(38) | NO | 会话的数字 ID。 | +| ENTRYID | NUMBER(38) | NO | 会话中每个审计跟踪条目的数字 ID。 | +| STATEMENTID | NUMBER(38) | NO | 每个语句的数字 ID。 | +| RETURNCODE | NUMBER(38) | NO | 操作生成的错误代码。 | +| PRIV_USED | VARCHAR2(40) | NO | 用于执行操作的系统权限。目前暂不支持该字段,当前该字段默认为 NULL。 | +| CLIENT_ID | VARCHAR2(40) | NO | 会话中的客户端标识符。目前暂不支持该字段,当前该字段默认为 NULL。 | +| ECONTEXT_ID | VARCHAR2(40) | NO | 应用程序执行上下文标识符。目前暂不支持该字段,当前该字段默认为 NULL。 | +| SESSION_CPU | NUMBER(38) | NO | 会话使用的 CPU 时间。 | +| EXTENDED_TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | NO | 在 UTC 时区中创建审计跟踪条目的时间戳。 | +| PROXY_SESSIONID | NUMBER(38) | NO | 代理会话序列号。 | +| GLOBAL_UID | NUMBER(38) | NO | 用户的全局用户标识符。 | +| INSTANCE_NUMBER | VARCHAR2(40) | NO | 由 INSTANCE_NUMBER 初始化参数指定的实例编号。目前暂不支持该字段,当前该字段默认为 NULL。 | +| OS_PROCESS | VARCHAR2(40) | NO | 进程的操作系统进程标识符。目前暂不支持该字段,当前该字段默认为 NULL。 | +| TRANSACTIONID | VARCHAR2(128) | NO | 在其中访问或修改对象的事务标识符。 | +| SCN | NUMBER(38) | NO | 系统变更号(SCN)的查询。目前暂不支持该字段,当前该字段默认为 NULL。 | +| SQL_BIND | VARCHAR2(2000) | YES | 绑定查询的变量数据。目前暂不支持该字段,当前该字段默认为 NULL。 | +| SQL_TEXT | VARCHAR2(2000) | YES | 查询的 SQL 文本。 | +| OBJ_EDITION_NAME | VARCHAR2(128) | NO | 包含被审计对象的版本的名称。目前暂不支持该字段,当前该字段默认为 NULL。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/5.ALL_COL_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/5.ALL_COL_PRIVS.md new file mode 100644 index 000000000..3b587c585 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/5.ALL_COL_PRIVS.md @@ -0,0 +1,52 @@ +ALL_COL_PRIVS +================================== + + + +功能 +----------- + +ALL_COL_PRIVS 描述以下类型的权限: + +* 当前用户为其对象所有者,授予者或被授予者的列对象权限 + + + +* 已启用角色或被授予者是 PUBLIC 的列对象权限 + + + + + + +相关视图 +------------- + +* DBA_COL_PRIV + + + +* USER_COL_PRIV + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|---------------|----------------|---------------| +| GRANTOR | VARCHAR2(128) | NO | 执行授予的用户的名称 | +| GRANTEE | VARCHAR2(128) | NO | 被授予访问权限的用户的名称 | +| OWNER | VARCHAR2(128) | NO | 对象的拥有者 | +| TABLE_NAME | VARCHAR2(256) | NO | 对象的名称 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列的名称 | +| PRIVILLEGE | VARCHAR2(40) | NO | 列的权限 | +| GRANTABLE | VARCHAR2(3) | NO | 是否使用授予选项 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/50.DBA_AUDIT_TRAIL.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/50.DBA_AUDIT_TRAIL.md new file mode 100644 index 000000000..a76d575e6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/50.DBA_AUDIT_TRAIL.md @@ -0,0 +1,66 @@ +DBA_AUDIT_TRAIL +==================================== + + + +功能 +----------- + +显示所有审计跟踪条目。 + +相关视图 +------------- + +USER_AUDIT_TRAIL + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|-----------------------------|----------------|-----------------------------------------------------------| +| OS_USERNAME | VARCHAR2(255) | NO | 操作被审计的用户的操作系统登录用户名。目前暂不支持该字段,当前该字段默认为 NULL | +| USERNAME | VARCHAR2(64) | NO | 操作被审计的用户的名称 | +| USERHOST | VARCHAR2(32) | NO | 客户端主机名称。目前暂不支持该字段,当前该字段默认为 NULL | +| TERMINAL | VARCHAR2(255) | NO | 用户终端的标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TIMESTAMP | DATE | NO | 在本地数据库会话时区中创建审计跟踪条目的日期和时间 | +| OWNER | VARCHAR2(64) | YES | 受行为影响的对象的创建者 | +| OBJ_NAME | VARCHAR2(256) | YES | 受操作影响的对象的名称 | +| ACTION | NUMBER(38) | NO | 数字操作类型代码。操作类型的对应名称在 ACTION_NAME 列中 | +| ACTION_NAME | VARCHAR2(128) | NO | 与 ACTION 列中的数字代码对应的操作类型的名称 | +| NEW_OWNER | VARCHAR2(64) | YES | 在 NEW_NAME 列中命名的对象的所有者 | +| NEW_NAME | VARCHAR2(256) | YES | 对象的新名称在 RENAME 之后或基础对象的名称之后 | +| OBJ_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE 语句授予或撤销的对象权限,待 Patch | +| SYS_PRIVILEGE | VARCHAR2(255) | NO | 由 GRANT 或 REVOKE 语句授予或撤消的系统权限,待 Patch | +| ADMIN_OPTION | VARCHAR2(1) | NO | 指示是否使用 ADMIN 选项授予角色或系统权限,待 Patch | +| GRANTEE | VARCHAR2(128) | NO | GRANT 或 REVOKE 中指定的授予者名称,待 Patch | +| AUDIT_OPTION | VARCHAR2(40) | NO | 审计选项与审计语句一起设置,待 Patch | +| SES_ACTIONS | VARCHAR2(19) | NO | 会话摘要。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGOFF_TIME | DATE | NO | 用户注销的日期和时间 | +| LOGOFF_LREAD | NUMBER(38) | NO | 会话的逻辑读取 | +| LOGOFF_PREAD | NUMBER | NO | 会话的物理读取。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGOFF_LWRITE | NUMBER | NO | 会话的逻辑写操作。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGOFF_DLOCK | VARCHAR2(40) | NO | 在会话期间检测到死锁。目前暂不支持该字段,当前该字段默认为 NULL | +| COMMENT_TEXT | VARCHAR2(65536) | YES | 在审计跟踪条目上的文本注释 | +| SESSIONID | NUMBER(38) | NO | 会话的数字 ID | +| ENTRYID | NUMBER(38) | NO | 会话中每个审计跟踪条目的数字 ID | +| STATEMENTID | NUMBER(38) | NO | 每个语句的数字 ID | +| RETURNCODE | NUMBER(38) | NO | 操作生成的错误代码 | +| PRIV_USED | VARCHAR2(40) | NO | 用于执行操作的系统权限。目前暂不支持该字段,当前该字段默认为 NULL | +| CLIENT_ID | VARCHAR2(40) | NO | 会话中的客户端标识符。 OceanBase 数据库暂不支持该字段,默认为 NULL | +| ECONTEXT_ID | VARCHAR2(40) | NO | 应用程序执行上下文标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| SESSION_CPU | NUMBER(38) | NO | 会话使用的 CPU 时间 | +| EXTENDED_TIMESTAMP | TIMESTAMP(6) WITH TIME ZONE | NO | 在 UTC 时区中创建审计跟踪条目的时间戳 | +| PROXY_SESSIONID | NUMBER(38) | NO | 代理会话序列号 | +| GLOBAL_UID | NUMBER(38) | NO | 用户的全局用户标识符 | +| INSTANCE_NUMBER | VARCHAR2(40) | NO | 由 INSTANCE_NUMBER 初始化参数指定的实例编号。目前暂不支持该字段,当前该字段默认为 NULL | +| OS_PROCESS | VARCHAR2(40) | NO | 操作系统进程标识符。目前暂不支持该字段,当前该字段默认为 NULL | +| TRANSACTIONID | VARCHAR2(128) | NO | 在其中访问或修改对象的事务标识符 | +| SCN | NUMBER(38) | NO | 系统变更号(SCN)的查询。目前暂不支持该字段,当前该字段默认为 0 | +| SQL_BIND | VARCHAR2(2000) | YES | 绑定查询的变量数据。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_TEXT | VARCHAR2(2000) | YES | 查询的 SQL 文本 | +| OBJ_EDITION_NAME | VARCHAR2(128) | NO | 包含被审计对象的版本的名称。目前暂不支持该字段,当前该字段默认为 NULL | +| DBID | NUMBER(38) | NO | 被审计数据库的数据库标识符 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/51.DBA_COLL_TYPES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/51.DBA_COLL_TYPES.md new file mode 100644 index 000000000..40e00948d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/51.DBA_COLL_TYPES.md @@ -0,0 +1,46 @@ +DBA_COLL_TYPES +=================================== + + + +功能 +----------- + +列出数据库中可用的用户自定义集合类型。其列与 ALL_COLL_TYPES 中的列相同。 + +相关视图 +------------- + +* ALL_COLL_TYPES + + + +* USER_COLL_TYPES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| TYPE_NAME | VARCHAR2(64) | NO | 类型名 | +| COLL_TYPE | VARCHAR2(10) | NO | 集合类型: * VARYING * ARRAY * NESTED TABLE | +| UPPER_BOUND | NUMBER(38) | YES | 对于 VARYING,记录集合的最大大小 | +| ELEM_TYPE_MOD | VARCHAR2(7) | YES | 目前暂不支持该字段,当前该字段默认为NULL | +| ELEM_TYPE_OWNER | VARCHAR2(128) | YES | 集合元素类型的拥有者 | +| ELEM_TYPE_NAME | VARCHAR2(324) | YES | 集合元素类型名 | +| LENGTH | NUMBER(38) | YES | 集合元素类型长度 | +| NUMBER_PRECISION | NUMBER(38) | YES | 集合元素类型精度 | +| SCALE | NUMBER(38) | YES | 集合元素类型小数点右边数据的长度 | +| CHARACTER_SET_NAME | CHAR(7) | YES | 集合元素类型字符集 | +| ELEM_STORAGE | CHAR(3) | YES | 目前暂不支持该字段,当前该字段默认为NULL | +| NULLS_STORED | CHAR(1) | YES | 目前暂不支持该字段,当前该字段默认为NULL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/52.DBA_COL_COMMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/52.DBA_COL_COMMENTS.md new file mode 100644 index 000000000..4792446c3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/52.DBA_COL_COMMENTS.md @@ -0,0 +1,38 @@ +DBA_COL_COMMENTS +===================================== + + + +功能 +----------- + +查看数据库中所有的视图和表的所有列注释。 + +相关视图 +------------- + +* ALL_COL_COMMENTS + + + +* USER_COL_COMMENTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|----------------|----------------|--------| +| OWNER | VARCHAR2(128) | NO | 对象的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | NO | 对象名字 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列名 | +| COMMENTS | VARCHAR2(4000) | YES | 列注释 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/53.DBA_COL_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/53.DBA_COL_PRIVS.md new file mode 100644 index 000000000..4b982be68 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/53.DBA_COL_PRIVS.md @@ -0,0 +1,36 @@ +DBA_COL_PRIVS +================================== + + + +功能 +----------- + +描述数据库中的所有列对象授予。 + +相关视图 +------------- + +* USER_COL_PRIVS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|---------------|----------------|---------------| +| GRANTEE | VARCHAR2(128) | NO | 被授予访问权限的用户的名称 | +| OWNER | VARCHAR2(128) | NO | 对象的所有者 | +| TABLE_NAME | VARCHAR2(256) | NO | 对象的名称 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列的名称 | +| GRANTOR | VARCHAR2(128) | NO | 执行授权的用户的名称 | +| PRIVILEGE | VARCHAR2(40) | NO | 列上的权限 | +| GRANTABLE | VARCHAR2(3) | NO | 指示是否使用授予选项 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/54.DBA_CONSTRAINTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/54.DBA_CONSTRAINTS.md new file mode 100644 index 000000000..f599ff76d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/54.DBA_CONSTRAINTS.md @@ -0,0 +1,54 @@ +DBA_CONSTRAINTS +==================================== + + + +功能 +----------- + +查看数据库中所有表的约束信息。 + +相关视图 +------------- + +* USER_CONSTRAINT + + + +* ALL_CONSTRAINT + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|----------------|----------------|--------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 约束的拥有者 | +| CONSTRAINT_NAME | VARCHAR2(128) | NO | 约束名字 | +| CONSTRAINT_TYPE | VARCHAR2(1) | NO | 索引类型,目前只支持 NORMAL类型 | +| TABLE_NAME | VARCHAR2(128) | NO | 约束所在的表的名字 | +| SEARCH_CONDITION | VARCHAR2(4000) | NO | check 约束 search condition 的文本 | +| R_OWNER | VARCHAR2(128) | NO | 被引用约束的拥有者 | +| R_CONSTRAINT_NAME | VARCHAR2(128) | NO | 被引用约束的名字 | +| DELETE_RULE | VARCHAR2(9) | NO | 外键约束的级联删除规则 | +| STATUS | VARCHAR2(8) | NO | 表示约束是 ENABLE 还是 DISABLE | +| DEFERRABLE | VARCHAR2(14) | NO | 表示约束是 DEFERRABLE 还是 NOT DEFERRABLE | +| DEFERRED | VARCHAR2(9) | NO | 表示约束是 DEFERRED 还是 IMMEDIATE | +| VALIDATED | VARCHAR2(13) | NO | 表示约束是 VALIDATED 还是 NOT VALIDATED | +| GENERATED | VARCHAR2(14) | NO | 表示约束的名字是 USER NAME 还是 GENERATED NAME | +| BAD | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| RELY | VARCHAR2(4) | NO | 表示约束是否是 RELY 状态 | +| LAST_CHANGE | DATE | NO | 约束上一次被改为 ENABLE 或者 DISABLE 的时间 | +| INDEX_OWNER | VARCHAR2(128) | NO | 约束上索引的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 约束上索引的名字 | +| INVALID | VARCHAR2(7) | NO | 表示约束是否是 INVALIDATE 状态 | +| VIEW_RELATED | VARCHAR2(14) | NO | 表示约束是否创建在视图上 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/55.DBA_CONS_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/55.DBA_CONS_COLUMNS.md new file mode 100644 index 000000000..caa84c64d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/55.DBA_CONS_COLUMNS.md @@ -0,0 +1,39 @@ +DBA_CONS_COLUMNS +===================================== + + + +功能 +----------- + +查看数据库中所有表的约束中的列信息。 + +相关视图 +------------- + +* USER_CONS_COLUMNS + + + +* ALL_CONS_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|----------------|----------------|----------| +| OWNER | VARCHAR2(128) | NO | 约束的拥有者 | +| CONSTRAINT_NAME | VARCHAR2(128) | NO | 约束名字 | +| TABLE_NAME | VARCHAR2(128) | NO | 约束所在表的表名 | +| COLUMN_NAME | VARCHAR2(4000) | NO | 约束中的列名 | +| POSITION | NUMBER | NO | 列在约束中的位置 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/56.DBA_ERRORS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/56.DBA_ERRORS.md new file mode 100644 index 000000000..083fed28b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/56.DBA_ERRORS.md @@ -0,0 +1,48 @@ +DBA_ERRORS +=============================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看数据库中的当前存储对象的错误。 + +相关视图 +------------- + +* ALL_ERRORS + + + +* USER_ERRORS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|----------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象的拥有者 | +| NAME | VARCHAR2(128) | NO | 对象的名称 | +| TYPE | VARCHAR2(19) | NO | 对象的类型: * VIEW * PROCEDUCE * FUNCTION * PACKAGE * PACKAGE_BODY * TRIGGER * TYPE * TYPE BODY * LIBRARY * JAVA SOURCE * JAVA CLASS * DIMENSION | +| SEQUENCE | NUMBER | NO | 同一次编译多个错误的错误编号(为排序) | +| LINE | NUMBER | NO | 错误发生的行号 | +| POSITION | NUMBER | NO | 错误发生的列号 | +| TEXT | VARCHAR2(4000) | NO | 错误信息文本 | +| ATTRIBUTE | VARCHAR2(9) | NO | 表明是 ERROR 还是 WARNING | +| MESSAGE_NUMBER | NUMBER | NO | 错误编码 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/57.DBA_INDEXES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/57.DBA_INDEXES.md new file mode 100644 index 000000000..d3eabb722 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/57.DBA_INDEXES.md @@ -0,0 +1,92 @@ +DBA_INDEXES +================================ + + + +功能 +----------- + +DBA_INDEXES 用于查看数据库所有表的索引信息。 + +相关视图 +------------- + +* USER_INDEXES + + + +* ALL_INDEXES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------|----------------|----------------|-------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 索引所属的拥有者。 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字。 | +| INDEX_TYPE | VARCHAR2(27) | YES | 索引的类型。 | +| TABLE_OWNER | VARCHAR2(128) | NO | 被索引对象的拥有者。 | +| TABLE_NAME | VARCHAR2(128) | NO | 被索引对象的名字。 | +| TABLE_TYPE | CHAR(5) | YES | 被索引对象的类型。 | +| UNIQUENESS | VARCHAR2(9) | YES | 表示索引是否是唯一的(UNIQUE)或不唯一的。 | +| COMPRESSION | VARCHAR2(8) | YES | 表示索引是否是被压缩的。 | +| PREFIX_LENGTH | NUMBER | YES | 表示在压缩索引中的前缀列数量。目前暂不支持该字段,当前该字段默认为 NULL。 | +| TABLESPACE_NAME | VARCHAR2(30) | YES | 索引所在的表空间名。 | +| INI_TRANS | NUMBER | YES | 表示初始事务数量。目前暂不支持该字段,当前该字段默认为 NULL。 | +| MAX_TRANS | NUMBER | YES | 表示最大事务数量。目前暂不支持该字段,当前该字段默认为 NULL。 | +| INITIAL_EXTENT | NUMBER | YES | 表示初始 extent 大小。目前暂不支持该字段,当前该字段默认为 NULL。 | +| NEXT_EXTENT | NUMBER | YES | 表示第二 extent 大小。目前暂不支持该字段,当前该字段默认为 NULL。 | +| MIN_EXTENTS | NUMBER | YES | 表示在段里允许的最小 extent 数量。目前暂不支持该字段,当前该字段默认为 NULL。 | +| MAX_EXTENTS | NUMBER | YES | 表示在段里允许的最大 extent 数量。目前暂不支持该字段,当前该字段默认为 NULL。 | +| PCT_INCREASE | NUMBER | YES | 表示 extent 大小的增长率。目前暂不支持该字段,当前该字段默认为 NULL。 | +| PCT_THRESHOLD | NUMBER | YES | 表示每个索引被允许占用的块空间百分比。目前暂不支持该字段,当前该字段默认为 NULL。 | +| INCLUDE_COLUMN | NUMBER | YES | 表示索引组织表的主键的最后一列的列编号。目前暂不支持该字段,当前该字段默认为 NULL。 | +| FREELISTS | NUMBER | YES | 表示被分配个段的进程 freelist 数量。目前暂不支持该字段,当前该字段默认为 NULL。 | +| FREELIST_GROUPS | NUMBER | YES | 表示被分配个段的 freelist 组数量。目前暂不支持该字段,当前该字段默认为 NULL。 | +| PCT_FREE | NUMBER | YES | 表示块中空余空间的最小百分比。目前暂不支持该字段,当前该字段默认为 NULL。 | +| LOGGING | VARCHAR2(3) | YES | 表示对索引的修改是否被记录了日志。目前暂不支持该字段,当前该字段默认为 NULL。 | +| BLEVEL | NUMBER | YES | 表示 B\*-Tree 的深度。目前暂不支持该字段,当前该字段默认为 NULL。 | +| LEAF_BLOCKS | NUMBER | YES | 表示索引中叶子块的数量。目前暂不支持该字段,当前该字段默认为 NULL。 | +| DISTINCT_KEYS | NUMBER | YES | 表示不同索引值的数量。目前暂不支持该字段,当前该字段默认为 NULL。 | +| AVG_LEAF_BLOCKS_PER_KEY | NUMBER | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| AVG_DATA_BLOCKS_PER_KEY | NUMBER | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| CLUSTERING_FACTOR | NUMBER | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| STATUS | VARCHAR2(10) | YES | 指示未分区的索引是 VALID 还是 UNUSABLE。 | +| NUM_ROWS | NUMBER | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| SAMPLE_SIZE | NUMBER | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| LAST_ANALYZED | DATE | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| DEGREE | VARCHAR2(40) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| INSTANCES | VARCHAR2(40) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| PARTITIONED | VARCHAR2(3) | YES | 表示索引是否是分区索引。 | +| TEMPORARY | VARCHAR2(1) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| GENERATED | VARCHAR2(1) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| SECONDARY | VARCHAR2(1) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| BUFFER_POOL | VARCHAR2(7) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| FLASH_CACHE | VARCHAR2(7) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| CELL_FLASH_CACHE | VARCHAR2(7) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| USER_STATS | VARCHAR2(3) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| DURATION | VARCHAR2(15) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| PCT_DIRECT_ACCESS | NUMBER | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| ITYP_OWNER | VARCHAR2(30) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| ITYP_NAME | VARCHAR2(30) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| PARAMETERS | VARCHAR2(1000) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| GLOBAL_STATS | VARCHAR2(3) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| DOMIDX_STATUS | VARCHAR2(12) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| DOMIDX_OPSTATUS | VARCHAR2(6) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| FUNCIDX_STATUS | VARCHAR2(8) | YES | 基于函数的索引的状态。 | +| JOIN_INDEX | VARCHAR2(3) | YES | 指示索引是否为联接索引。 | +| IOT_REDUNDANT_PKEY_ELIM | VARCHAR2(3) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| DROPPED | VARCHAR2(9) | YES | 表示索引是否被删除并进了回收站。 | +| VISIBILITY | VARCHAR2(10) | YES | 表示索引对优化器是否可见。 | +| DOMIDX_MANAGEMENT | VARCHAR2(14) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| SEGMENT_CREATED | VARCHAR2(3) | YES | 目前暂不支持该字段,当前该字段默认为 NULL。 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/58.DBA_IND_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/58.DBA_IND_COLUMNS.md new file mode 100644 index 000000000..c201a9f3d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/58.DBA_IND_COLUMNS.md @@ -0,0 +1,43 @@ +DBA_IND_COLUMNS +==================================== + + + +功能 +----------- + +查看数据库所有表的索引的索引列信息。 + +相关视图 +------------- + +* USER_IND_COLUMNS + + + +* ALL_IND_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|----------------|----------------|------------------------------| +| INDEX_OWNER | VARCHAR2(128) | NO | 索引所属的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| TABLE_OWNER | VARCHAR2(128) | NO | 索引所在的表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 索引所在的表的名字 | +| COLUMN_NAME | VARCHAR2(4000) | NO | 索引列的名字 | +| COLUMN_POSITION | NUMBER | NO | 索引列在索引中的位置 | +| COLUMN_LENGTH | NUMBER | NO | 索引列的长度 | +| CHAR_LENGTH | NUMBER | NO | 索引列的字符长度 | +| DESCEND | VARCHAR2(4) | NO | 表示索引列是按降序(DESC)排列还是升序(ASC)排列 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/59.DBA_IND_EXPRESSIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/59.DBA_IND_EXPRESSIONS.md new file mode 100644 index 000000000..da0f01a6e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/59.DBA_IND_EXPRESSIONS.md @@ -0,0 +1,40 @@ +DBA_IND_EXPRESSIONS +======================================== + + + +功能 +----------- + +查看数据库中所有 function-based 索引的信息。 + +相关视图 +------------- + +* ALL_IND_EXPRESSIONS + + + +* USER_IND_EXPRESSIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|----------------|----------------|----------------------| +| INDEX_OWNER | VARCHAR2(128) | NO | 索引所属的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| TABLE_OWNER | VARCHAR2(128) | NO | 索引所在表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 索引所在表的名字 | +| COLUMN_EXPRESSION | VARCHAR2(1000) | NO | function-base 索引的表达式 | +| COLUMN_POSITION | NUMBER(38) | NO | 列所在索引的位置 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/6.ALL_CONSTRAINTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/6.ALL_CONSTRAINTS.md new file mode 100644 index 000000000..6c061325a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/6.ALL_CONSTRAINTS.md @@ -0,0 +1,54 @@ +ALL_CONSTRAINTS +==================================== + + + +功能 +----------- + +查看用户可访问的所有表的约束信息。 + +相关视图 +------------- + +* USER_CONSTRAINT + + + +* DBA_CONSTRAINT + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|----------------|----------------|--------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 约束的拥有者 | +| CONSTRAINT_NAME | VARCHAR2(128) | NO | 约束名字 | +| CONSTRAINT_TYPE | VARCHAR2(1) | NO | 索引类型,目前只支持 NORMAL 类型 | +| TABLE_NAME | VARCHAR2(128) | NO | 约束所在的表的名字 | +| SEARCH_CONDITION | VARCHAR2(4000) | NO | check 约束 search condition 的文本 | +| R_OWNER | VARCHAR2(128) | NO | 被引用约束的拥有者 | +| R_CONSTRAINT_NAME | VARCHAR2(128) | NO | 被引用约束的名字 | +| DELETE_RULE | VARCHAR2(9) | NO | 外键约束的级联删除规则 | +| STATUS | VARCHAR2(8) | NO | 表示约束是 ENABLE 还是 DISABLE | +| DEFERRABLE | VARCHAR2(14) | NO | 表示约束是 DEFERRABLE 还是NOT DEFERRABLE | +| DEFERRED | VARCHAR2(9) | NO | 表示约束是 DEFERRED 还是 IMMEDIATE | +| VALIDATED | VARCHAR2(13) | NO | 表示约束是 VALIDATED 还是 NOT VALIDATED | +| GENERATED | VARCHAR2(14) | NO | 表示约束的名字是 USER NAME 还是 GENERATED NAME | +| BAD | VARCHAR2(3) | NO | 目前暂不支持这个字段,当前该字段默认为 NULL | +| RELY | VARCHAR2(4) | NO | 表示约束是否是 RELY 状态 | +| LAST_CHANGE | DATE | NO | 约束上一次被改为 ENABLE 或者 DISABLE 的时间 | +| INDEX_OWNER | VARCHAR2(128) | NO | 约束上索引的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 约束上索引的名字 | +| INVALID | VARCHAR2(7) | NO | 表示约束是否是 INVALIDATE 状态 | +| VIEW_RELATED | VARCHAR2(14) | NO | 表示约束是否建在视图上 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/60.DBA_IND_PARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/60.DBA_IND_PARTITIONS.md new file mode 100644 index 000000000..380a3f35b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/60.DBA_IND_PARTITIONS.md @@ -0,0 +1,76 @@ +DBA_IND_PARTITIONS +======================================= + + + +功能 +----------- + +查看数据库中所有索引分区的信息。 + +相关视图 +------------- + +* ALL_IND_PARTITIONS + + + +* USER_IND_PARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------| +| INDEX_OWNER | VARCHAR2(128) | NO | 索引所属的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| COMPOSITE | VARCHAR2(3) | NO | 表示分区是否属于 composited-partition 表的本地索引(YSE) 或者(NO) | +| PARTITION_NAME | VARCHAR2(128) | NO | 索引名称 | +| SUBPARTITION_COUNT | NUMBER(38) | YES | 子分区个数 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 分区绑定 Value 的表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 分区绑定 Value 表达式的长度 | +| PARTITION_POSITION | NUMBER | NO | 分区在索引中的位置 | +| STATUS | VARCHAR2(8) | NO | 指示索引分区是否可用 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含分区的表空间的名称 | +| PCT_FREE | NUMBER | NO | 块中最小可用空间百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 初始交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 最大交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 初始范围的大小,单位:字节。目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 辅助扩展区的大小,单位:字节。目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 段中允许的最小范围数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 段中允许的最大扩展数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 段中允许的最大块数。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 范围大小的百分比增加。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 在此段中分配的进程空闲列表数。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 在此段中分配的进程自由列表组数。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(7) | NO | 指示是否记录对索引的更改。目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 表示分区索引是否开启压缩: * 开启(ENABLE) * 未开启(DISABLE) | +| BLEVEL | NUMBER | NO | B\*- 树级别(从根块到叶块的索引深度)。深度为 0 表示根块和叶块相同。目前暂不支持该字段,当前该字段默认为 NULL | +| LEAF_BLOCKS | NUMBER | NO | 索引分区中的叶块数。目前暂不支持该字段,当前该字段默认为 NULL | +| DISTINCT_KEYS | NUMBER | NO | 索引分区中不同键的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_LEAF_BLOCKS_PER_KEY | NUMBER | NO | 出现索引中每个不同值的叶块的平均数目,四舍五入到最接近的整数。对于强制执行 UNIQUE 和 PRIMARY KEY 约束的索引,此值始终为 1。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_DATA_BLOCKS_PER_KEY | NUMBER | NO | 表中由索引中不同值四舍五入到最接近的整数所指向的平均数据块数。此统计数据是包含行的数据块的平均数量,这些行包含给定索引列的给定值。目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTERING_FACTOR | NUMBER | NO | 指示基于索引值的表中行的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | ANALYZE 语句返回的行数。目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 分析此分区时使用的样本量。目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 最近对该分区进行分析的日期。目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 分区的实际缓冲池。目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于分区块的数据库智能闪存缓存提示。目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 单元闪存缓存提示用于分区块。目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 指示是否由用户直接输入统计信息。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_DIRECT_ACCESS | NUMBER | NO | 如果在索引组织表上有二级索引,则用 VALID 猜测的行百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 指示是针对整个分区收集分区的统计信息,还是根据基础子分区的统计信息进行估计。目前暂不支持该字段,当前该字段默认为 NULL | +| DOMIDX_OPSTATUS | VARCHAR2(6) | NO | 与索引上的操作状态。目前暂不支持该字段,当前该字段默认为 NULL | +| PARAMETERS | VARCHAR2(1000) | NO | 对于域索引,参数字符串。目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 指示分区是否在间隔分区表的间隔部分中或分区是否在范围部分中。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 指示是否已创建索引分区段。 N/A 表示该索引已细分,并且分区级别不存在任何段。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/61.DBA_IND_SUBPARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/61.DBA_IND_SUBPARTITIONS.md new file mode 100644 index 000000000..e253b242e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/61.DBA_IND_SUBPARTITIONS.md @@ -0,0 +1,75 @@ +DBA_IND_SUBPARTITIONS +========================================== + + + +功能 +----------- + +查看数据库中所有索引子分区的信息。 + +相关视图 +------------- + +* ALL_IND_SUBPARTITIONS + + + +* USER_IND_SUBPARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| INDEX_OWNER | VARCHAR2(128) | NO | 索引所属的拥有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 索引名字 | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名字 | +| SUBPARTITION_NAME | VARCHAR2(128) | NO | 子分区名字 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 子分区绑定 Value 的表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 子分区绑定 Value 表达式的长度 | +| SUBPARTITION_POSITION | NUMBER | NO | 子分区在分区的位置 | +| STATUS | VARCHAR2(8) | NO | 指示索引分区是否可用 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含分区的表空间的名称 | +| PCT_FREE | NUMBER | NO | 块中最小可用空间百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 初始交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 最大交易数。目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 初始范围的大小,单位:字节。目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 辅助扩展区的大小,单位:字节。目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 段中允许的最小范围数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 段中允许的最大扩展数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 段中允许的最大块数。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 范围大小的百分比增加。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 在此段中分配的进程空闲列表数。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 在此段中分配的进程自由列表组数。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(7) | NO | 指示是否记录对索引的更改。目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 表示分区索引是否开启压缩: * 开启(ENABLE) * 未开启(DISABLE) | +| BLEVEL | NUMBER | NO | B 树级别(从根块到叶块的索引深度)。深度为 0 表示根块和叶块相同。目前暂不支持该字段,当前该字段默认为 NULL | +| LEAF_BLOCKS | NUMBER | NO | 索引中的叶块数。目前暂不支持该字段,当前该字段默认为 NULL | +| DISTINCT_KEYS | NUMBER | NO | 索引分区中不同键的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_LEAF_BLOCKS_PER_KEY | NUMBER | NO | 出现索引中每个不同值的叶块的平均数目,四舍五入到最接近的整数。对于强制执行 UNIQUE 和 PRIMARY KEY 约束的索引,此值始终为 1。目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_DATA_BLOCKS_PER_KEY | NUMBER | NO | 表中由索引中不同值四舍五入到最接近的整数所指向的平均数据块数。此统计数据是包含行的数据块的平均数量,这些行包含给定索引列的给定值。目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTERING_FACTOR | NUMBER | NO | 指示基于索引值的表中行的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | 此索引子分区中的行数。目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 分析此子分区时使用的样本量。目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 最近对该分区进行分析的日期。目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 子分区的默认缓冲池。目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于子分区块的数据库智能闪存缓存提示。目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 单元闪存缓存提示将用于子分区块。目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 指示是否由用户直接输入统计信息。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_DIRECT_ACCESS | NUMBER | NO | 如果索引组织表上的二级索引,则具有有效猜测的行的百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | * 如果已收集统计信息,则GLOBAL_STATS 将为 YES * 如果未收集统计信息,则GLOBAL_STATS 将为 NO 目前暂不支持该字段,当前该字段默认为 NULL | +| DOMIDX_OPSTATUS | VARCHAR2(6) | VARCHAR2(6) | 域索引上的操作状态。目前暂不支持该字段,当前该字段默认为 NULL | +| PARAMETERS | VARCHAR2(1000) | VARCHAR2(1000) | 对于域索引,参数字符串。目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 指示分区是否在间隔分区表的间隔部分中(是)或分区是否在范围部分中(否)。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 指示是否已创建索引子分区段。N/A 表示该索引未分区。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/62.DBA_METHOD_PARAMS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/62.DBA_METHOD_PARAMS.md new file mode 100644 index 000000000..a507044f7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/62.DBA_METHOD_PARAMS.md @@ -0,0 +1,49 @@ +DBA_METHOD_PARAMS +====================================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看数据库中的对象类型的方法参数。 + +相关视图 +------------- + +* ALL_METHOD_PARAMS + + + +* USER_METHOD_PARAMS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|--------------|----------------|-------------------------------------------------------------| +| OWNER | VARCHAR2(30) | NO | 类型的拥有者 | +| TYPE_NAME | VARCHAR2(30) | NO | 类型名称 | +| METHOD_NAME | VARCHAR2(30) | NO | 方法名称 | +| METHOD_NO | NUMBER | NO | 对于重载的方法,这个编号区分另一个名字相同的方法。不要将这个和对象id混淆。 | +| PARAM_NAME | VARCHAR2(30) | NO | 参数的名称 | +| PARAM_NO | NUMBER | NO | 参数编号(正数) | +| PARAM_MODE | VARCHAR2(6) | NO | 参数模式(IN, OUT, IN OUT) | +| PARAM_TYPE_MOD | VARCHAR2(7) | NO | 参数是否引用其他的对象 | +| PARAM_TYPE_OWNER | VARCHAR2(30) | NO | 参数类型的拥有者 | +| PARAM_TYPE_NAME | VARCHAR2(30) | NO | 参数类型的名称 | +| CHARACTER_SET_NAME | VARCHAR2(44) | NO | 方法的字符集是鼎昌的字符集(CHAR_CS)或者是鼎昌的自然字符集(NCHAR_CS),或者用户特殊指定的一个字符集。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/63.DBA_OBJECTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/63.DBA_OBJECTS.md new file mode 100644 index 000000000..6b4ca5040 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/63.DBA_OBJECTS.md @@ -0,0 +1,48 @@ +DBA_OBJECTS +================================ + + + +功能 +----------- + +查看数据库所有数据库对象,视图定义与 ALL_OBJECTS 一致。 + +相关视图 +------------- + +* ALL_OBJECTS + + + +* USER_OBJECTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | NO | 对象名字 | +| SUBOBJECT_NAME | VARCHAR2(128) | NO | 子对象名字(例如,partition) | +| OBJECT_ID | NUMBER(38) | NO | 对象的字典 ID 值 | +| DATA_OBJECT_ID | NUMBER | NO | 包含该对象 Segment 的字典 ID值 | +| OBJECT_TYPE | VARCHAR2(23) | NO | 对象类型,包括表、索引、分区、包、存储过程、同义词、序列等 | +| CREATED | DATE | NO | 对象创建时间 | +| LAST_DDL_TIME | DATE | NO | 对象最后一次 DDL 时间 | +| TIMESTAMP | VARCHAR2(256) | NO | 对象指定的时间戳,以字符形式输出 | +| STATUS | VARCHAR2(7) | NO | 对象状态: * VALID * INVALID | +| TEMPORARY | VARCHAR2(1) | NO | 表示该对象是一个临时对象 | +| GENERATED | VARCHAR2(1) | NO | 表示该对象的名字是否是由系统生成 | +| SECONDARY | VARCHAR2(1) | NO | 目前该字段暂未使用 | +| NAMESPACE | NUMBER | NO | 对象的命名空间 | +| EDITION_NAME | VARCHAR2(128) | NO | 保留字段 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/64.DBA_OBJ_AUDIT_OPTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/64.DBA_OBJ_AUDIT_OPTS.md new file mode 100644 index 000000000..0ab15f0e9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/64.DBA_OBJ_AUDIT_OPTS.md @@ -0,0 +1,44 @@ +DBA_OBJ_AUDIT_OPTS +======================================= + + + +功能 +----------- + +记录对象级别审计详细配置。 + +相关视图 +------------- + +ALL_DEF_AUDIT_OPTS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|---------------|----------------|-----------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象的 owner 名称 | +| OBJECT_NAME | VARCHAR2(128) | NO | 对象的名称 | +| OBJECT_TYPE | VARCHAR2(23) | NO | 对象的类型 | +| ALT | VARCHAR2(3) | NO | alter 操作 | +| AUD | VARCHAR2(3) | NO | audit 操作 | +| COM | VARCHAR2(3) | NO | comment 操作 | +| DEL | VARCHAR2(3) | NO | delete 操作 | +| GRA | VARCHAR2(3) | NO | grant 操作 | +| IND | VARCHAR2(3) | NO | index 操作 | +| INS | VARCHAR2(3) | NO | insert 操作 | +| LOC | VARCHAR2(3) | NO | lock 操作 | +| REN | VARCHAR2(3) | NO | rename 操作 | +| SEL | VARCHAR2(3) | NO | select 操作 | +| UPD | VARCHAR2(3) | NO | update 操作 | +| REF | VARCHAR2(3) | NO | refrences 操作 **说明** 该字段已不再使用。 | +| EXE | VARCHAR2(3) | NO | execute 操作 | +| WRI | VARCHAR2(3) | NO | write 操作 | +| REA | VARCHAR2(3) | NO | read 操作 | +| FBK | VARCHAR2(3) | NO | flashback 操作 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/65.DBA_PART_INDEXES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/65.DBA_PART_INDEXES.md new file mode 100644 index 000000000..17c3266f3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/65.DBA_PART_INDEXES.md @@ -0,0 +1,63 @@ +DBA_PART_INDEXES +===================================== + + + +功能 +----------- + +查看所有的分区索引的分区信息。 + +相关视图 +------------- + +* DBA_PART_INDEXES + + + +* USER_PART_INDEXES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 分区索引所有者 | +| INDEX_NAME | VARCHAR2(128) | NO | 分区索引的名字 | +| TABLE_NAME | VARCHAR2(128) | NO | 索引关联的表的名字 | +| PARTITIONING_TYPE | VARCHAR2(9) | NO | 分区方式: * HASH * RANGE * LIST | +| SUBPARTITIONING_TYPE | VARCHAR2(9) | NO | 子分区的分区方式: * HASH * RANGE * LIST | +| PARTITION_COUNT | NUMBER | NO | 索引中分区个数 | +| DEF_SUBPARTITION_COUNT | NUMBER | NO | 对于复合分区索引,默认为子分区的分区个数(如果指定) | +| PARTITIONING_KEY_COUNT | NUMBER | NO | 分区键中列的个数 | +| SUBPARTITIONING_KEY_COUNT | NUMBER | NO | 对于复合分区索引,子分区分区键个数 | +| LOCALITY | VARCHAR2(6) | NO | 分区索引是局部(LOCAL) 还是全局 (GLOBAL) | +| ALIGNMENT | VARCHAR2(12) | NO | 分区索引是前缀(PREFIXED)还是非前缀 (NON_PREFIXED) | +| DEF_TABLESPACE_NAME | VARCHAR2(30) | NO | 对于局部索引, 添加或分割表分区时默认的表空间 | +| DEF_PCT_FREE | NUMBER | NO | 对于局部索引, 添加表分区时默认 PCTFREE 值 | +| DEF_INI_TRANS | NUMBER | NO | 对于局部索引,添加表分区时默认 INITRANS 值 | +| DEF_MAX_TRANS | NUMBER | NO | 对于局部索引,添加表分区时默认 MAXTRANS 的值 | +| DEF_INITIAL_EXTENT | VARCHAR2(40) | NO | 对于局部索引,添加表分区时默认 INITIAL 值。如果未指定,值为 DEFAULT | +| DEF_NEXT_EXTENT | VARCHAR2(40) | NO | 对于局部索引,添加表分区时默认 NEXT 值;如果未指定,值为 DEFAULT | +| DEF_MIN_EXTENTS | VARCHAR2(40) | NO | 对于局部索引,添加表分区时默认 MINEXTENTS 值。如果未指定,值为 DEFAULT | +| DEF_MAX_EXTENTS | VARCHAR2(40) | NO | 对于局部索引,添加表分区时默认 MAXEXTENTS 值。如果未指定,值为 DEFAULT | +| DEF_MAX_SIZE | VARCHAR2(40) | NO | 对于局部索引,添加表分区时默认 MAXSIZE 值;如果未指定,值为 DEFAULT | +| DEF_PCT_INCREASE | VARCHAR2(40) | NO | 对于局部索引,添加表分区时默认 PCTINCREASE 值;如果未指定,值为 DEFAULT | +| DEF_FREELISTS | NUMBER | NO | 对于局部索引,添加表分区时默认 FREELISTS 的值 | +| DEF_FREELIST_GROUPS | NUMBER | NO | 对于局部索引,添加表分区时默认 FREELIST GROUPS 的值 | +| DEF_LOGGING | VARCHAR2(7) | NO | 对于局部索引,添加表分区时默认 LOGGING 参数。目前该字段暂未使用,当前该字段默认为 NULL | +| DEF_BUFFER_POOL | VARCHAR2(7) | NO | 对于局部索引,添加表分区时默认 buffer pool 。目前该字段暂未使用,当前该字段默认为 NULL | +| DEF_FLASH_CACHE | VARCHAR2(7) | NO | 对于局部索引,添加表分区时默认 Database Smart Flash Cache hint。目前该字段暂未使用,当前该字段默认为 NULL | +| DEF_CELL_FLASH_CACHE | VARCHAR2(7) | NO | 对于局部索引, 添加表分区时默认 cell flash cache hint。目前该字段暂未使用,当前该字段默认为 NULL | +| DEF_PARAMETERS | VARCHAR2(1000) | NO | 域索引的默认参数串 | +| INTERVAL | VARCHAR2(1000) | NO | 定义区间划分的字符串 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/66.DBA_PART_KEY_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/66.DBA_PART_KEY_COLUMNS.md new file mode 100644 index 000000000..f8e6bfb62 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/66.DBA_PART_KEY_COLUMNS.md @@ -0,0 +1,40 @@ +DBA_PART_KEY_COLUMNS +========================================= + + + +功能 +----------- + +查看数据库中所有分区对象中分区键包含的列。 + +相关视图 +------------- + +* ALL_PART_KEY_COLUMNS + + + +* USER_PART_KEY_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 分区表或分区索引的拥有者 | +| NAME | VARCHAR2(128) | NO | 分区表或分区索引的名字 | +| OBJECT_TYPE | CHAR(5) | NO | 分区对象的类型: * TABLE * INDEX | +| COLUMN_NAME | VARCHAR2(4000) | NO | 列的名字 | +| COLUMN_POSITION | NUMBER | NO | 列在分区键中的位置 | +| COLLATED_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/67.DBA_PART_TABLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/67.DBA_PART_TABLES.md new file mode 100644 index 000000000..4041bc340 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/67.DBA_PART_TABLES.md @@ -0,0 +1,66 @@ +DBA_PART_TABLES +==================================== + + + +功能 +----------- + +查看当前用户可访问的分区表的分区信息。 + +相关视图 +------------- + +* ALL_PART_TABLES:查看所有的分区表的分区信息 + + + +* USER_PART_TABLES:查看属于当前用户的分区表的分区信息 + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 分区表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 分区表的名字 | +| PARTITIONING_TYPE | VARCHAR2(9) | NO | 分区方式: * HASH * RANGE * LIST | +| SUBPARTITIONING_TYPE | VARCHAR2(9) | NO | 子分区的分区方式: * HASH * RANGE * LIST | +| PARTITION_COUNT | NUMBER | NO | 分区表中分区个数 | +| DEF_SUBPARTITION_COUNT | NUMBER | NO | 对于复合分区表,表示子分区的个数 | +| PARTITIONING_KEY_COUNT | NUMBER | NO | 分区键的数量 | +| SUBPARTITIONING_KEY_COUNT | NUMBER | NO | 对于复合分区表,表示子分区键的数量 | +| STATUS | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_TABLESPACE_NAME | VARCHAR2(30) | NO | 分区表所属的表空间名 | +| DEF_PCT_FREE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_INITIAL_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_NEXT_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MIN_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_MAX_SIZE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_PCT_INCREASE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_LOGGING | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 是否开启压缩 | +| COMPRESS_FOR | VARCHAR2(12) | NO | 压缩方法 | +| DEF_BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| REF_PTN_CONSTRAINT_NAME | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(1000) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IS_NESTED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_SEGMENT_CREATED | VARCHAR2(4) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/68.DBA_PROCEDURES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/68.DBA_PROCEDURES.md new file mode 100644 index 000000000..0a8fc230a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/68.DBA_PROCEDURES.md @@ -0,0 +1,50 @@ +DBA_PROCEDURES +=================================== + + + +功能 +----------- + +列出数据库中可用的过程和函数。 + +相关视图 +------------- + +* ALL_PROCEDURES + + + +* USER_PROCEDURES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|---------------|----------------|-------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | YES | 包名 | +| PROCEDURE_NAME | VARCHAR2(128) | NO | 过程或者函数名 | +| OBJECT_ID | NUMBER | NO | 对象 ID | +| SUBPROGRAM_ID | NUMBER | NO | 出现在包中的顺序, 对于独立的过程或者函数该值为 1 | +| OVERLOAD | NUMBER | NO | 出现在包源文件中的第几次重载 | +| OBJECT_TYPE | VARCHAR2(9) | NO | 对象的类型 | +| AGGREGATE | VARCHAR2(3) | NO | 表示该过程是否为聚合函数。目前暂不支持该字段,当前该字段默认为 NO | +| PIPELINED | VARCHAR2(3) | NO | 表示该过程是否为管道表函数 | +| IMPLTYPEOWNER | VARCHAR2(30) | NO | 实现类型所有者的名称。目前暂不支持该字段,当前该字段默认为 NULL | +| IMPLTYPENAME | VARCHAR2(30) | NO | 实现类型的名称。目前暂不支持该字段,当前该字段默认为 NULL | +| PARALLEL | VARCHAR2(3) | NO | 指示过程或功能是否是并行启用的 | +| INTERFACE | VARCHAR2(3) | NO | 过程/函数是使用 ODCI 接口实现的表函数。目前暂不支持该字段,当前该字段默认为 NULL | +| DETERMINISTIC | VARCHAR2(3) | NO | 该过程或功能被声明为确定性的 | +| AUTHID | VARCHAR2(12) | NO | * INVOKER * DEFINER | +| ORIGIN_CON_ID | NUMBER(38) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/69.DBA_PROFILES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/69.DBA_PROFILES.md new file mode 100644 index 000000000..92f5c13c7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/69.DBA_PROFILES.md @@ -0,0 +1,38 @@ +DBA_PROFILES +================================= + + + +功能 +----------- + +查看所有的简介和这些简介的限制。 + +相关视图 +------------- + +* ALL_PROFILES + + + +* USER_PROFILES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|--------------|----------------|----------------------------------| +| PROFILE | VARCHAR2(30) | NO | 简介的名称 | +| RESOURCE_NAME | VARCHAR2(32) | NO | 资源的名称 | +| RESOURCE_TYPE | VARCHAR2(8) | NO | 表明一个资源的简介是一个KERNEL 还是一个 PASSWORD | +| LIMIT | VARCHAR2(40) | NO | 简介资源的限制 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/7.ALL_CONS_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/7.ALL_CONS_COLUMNS.md new file mode 100644 index 000000000..80c02e9b1 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/7.ALL_CONS_COLUMNS.md @@ -0,0 +1,39 @@ +ALL_CONS_COLUMNS +===================================== + + + +功能 +----------- + +查看用户可访问的所有表的约束中的列信息。 + +相关视图 +------------- + +* USER_CONS_COLUMNS + + + +* DBA_CONS_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|----------------|----------------|----------| +| OWNER | VARCHAR2(128) | NO | 约束的拥有者 | +| CONSTRAINT_NAME | VARCHAR2(128) | NO | 约束名字 | +| TABLE_NAME | VARCHAR2(128) | NO | 约束所在表的表名 | +| COLUMN_NAME | VARCHAR2(4000) | NO | 约束中的列名 | +| POSITION | NUMBER | NO | 列在约束中的位置 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/70.DBA_ROLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/70.DBA_ROLES.md new file mode 100644 index 000000000..420f5b59e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/70.DBA_ROLES.md @@ -0,0 +1,23 @@ +DBA_ROLES +============================== + + + +功能 +----------- + +DBA_ROLES 列出数据库中存在的所有角色。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|--------------|----------------|------------------------------------| +| ROLE | VARCHAR2(30) | NO | 角色名称 | +| PASSWORD_REQUIRED | VARCHAR2(8) | NO | 指示角色是否需要启用密码。目前支持角色密码功能,但该字段不能正确显示 | +| AUTHENTICATION_TYPE | VARCHAR2(11) | NO | 指示角色的身份验证机制。目前暂不支持该字段。 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/71.DBA_ROLE_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/71.DBA_ROLE_PRIVS.md new file mode 100644 index 000000000..cf3e8ff8f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/71.DBA_ROLE_PRIVS.md @@ -0,0 +1,29 @@ +DBA_ROLE_PRIVS +=================================== + + + +功能 +----------- + +描述授予所有用户的角色和数据库中的角色。 + +相关视图 +------------- + +USER_ROLE_PRIVS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|--------------|----------------|-------------------| +| GRANTEE | VARCHAR2(30) | NO | 接收授予的用户或角色的名称 | +| GRANTED_ROLE | VARCHAR2(30) | NO | 授予角色名 | +| ADMIN_OPTION | VARCHAR2(3) | NO | 指示授权是否带有 ADMIN 选项 | +| DEFAULT_ROLE | VARCHAR2(3) | NO | 指示角色是否被指定为用户的默认角色 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/72.DBA_SCHEDULER_JOB_ARGS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/72.DBA_SCHEDULER_JOB_ARGS.md new file mode 100644 index 000000000..8f72f1068 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/72.DBA_SCHEDULER_JOB_ARGS.md @@ -0,0 +1,47 @@ +DBA_SCHEDULER_JOB_ARGS +=========================================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看数据库中的调度作业参数信息。 + +相关视图 +------------- + +* USER_SCHEDULER_JOB_ARGS + + + +* ALL_SCHEDULER_JOB_ARGS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|----------------|----------------|-------------------------| +| OWNER | VARCHAR2(30) | NO | 参数所属作业的拥有者 | +| JOB_NAME | VARCHAR2(30) | NO | 参数所属作业的名称 | +| ARGUMENT_NAME | VARCHAR2(30) | NO | 参数的可选名称 | +| ARGUMENT_POSITION | NUMBER | NO | 参数在参数列表中的位置 | +| ARGUMENT_TYPE | VARCHAR2(61) | NO | 参数的数据类型 | +| VALUE | VARCHAR2(4000) | NO | 如果参数是一个字符串类型,参数的默认值 | +| DEFAULT_ANYDATA_VALUE | VARCHAR2(128) | NO | 如果参数是 ANYDATA 类型,参数的默认值 | +| OUT_ARGUMENT | VARCHAR2(5) | NO | 保留字段 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/73.DBA_SCHEDULER_PROGRAM_ARGS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/73.DBA_SCHEDULER_PROGRAM_ARGS.md new file mode 100644 index 000000000..987410694 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/73.DBA_SCHEDULER_PROGRAM_ARGS.md @@ -0,0 +1,48 @@ +DBA_SCHEDULER_PROGRAM_ARGS +=============================================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看数据库中的调度程序参数信息。 + +相关视图 +------------- + +* USER_SCHEDULER_PROGRAM_ARGS + + + +* DBA_SCHEDULER_PROGRAM_ARGS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|----------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(30) | NO | 参数所属程序的拥有者 | +| PROGRAM_NAME | VARCHAR2(30) | NO | 参数所属程序的名称 | +| ARGUMENT_NAME | VARCHAR2(30) | NO | 参数的可选名称 | +| ARGUMENT_POSITION | NUMBER | NO | 参数在参数列表中的位置 | +| ARGUMENT_TYPE | VARCHAR2(61) | NO | 参数的数据类型 | +| METADATA_ATTRIBUTE | VARCHAR2(19) | NO | 元数据的属性: * JOB_NAME * JOB_OWNER * JOB_START * WINDOW_START * WINDOW_END * JOB_SUBNAME * EVENT_MESSAGE * JOB_SCHEDULER_START | +| DEFAULT_VALUE | VARCHAR2(4000) | NO | 如果参数是一个字符串类型,参数的默认值 | +| DEFAULT_ANYDATA_VALUE | VARCHAR2(128) | NO | 如果参数是 ANYDATA 类型,参数的默认值 | +| OUT_ARGUMENT | VARCHAR2(5) | NO | 保留字段 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/74.DBA_SEGMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/74.DBA_SEGMENTS.md new file mode 100644 index 000000000..5fa60b73f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/74.DBA_SEGMENTS.md @@ -0,0 +1,49 @@ +DBA_SEGMENTS +================================= + + + +功能 +----------- + +查看数据库中所有段分配的存储信息。 + +相关视图 +------------- + +USER_SEGMENTS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|---------------|----------------|-----------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 拥有者名称 | +| SEGMENT_NAME | VARCHAR2(128) | NO | 段名字(如果有) | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名字,如果是非分区对象,则为空值 NULL | +| SEGMENT_TYPE | VARCHAR2(18) | NO | 段类型 | +| SEGMENT_SUBTYPE | VARCHAR2(10) | NO | 大字段 LOB 段的子类型。目前暂不支持该字段,当前该字段默认为 NULL | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 含有该段的表空间。目前暂不支持该字段,当前该字段默认为 NULL | +| HEADER_FILE | NUMBER | NO | 包含该段头的文件 ID。目前暂不支持该字段,当前该字段默认为 NULL | +| HEADER_BLOCK | NUMBER | NO | 包含段头的块 ID。目前暂不支持该字段,当前该字段默认为 NULL | +| BYTES | NUMBER(38) | NO | 段大小,单位:bytes | +| BLOCKS | NUMBER(38) | NO | 段块大小 | +| EXTENTS | NUMBER | NO | 段申请的簇数。目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 段创建初始化时段簇的大小,单位:bytes。目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 段申请下一个簇的大小,单位:bytes。目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENTS | NUMBER | NO | 段允许申请的最小簇数量。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENTS | NUMBER | NO | 段允许申请的最大簇数量。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 段允许申请的最大块数量。目前暂不支持该字段,当前该字段默认为 NULL | +| RETENTION | VARCHAR2(7) | NO | SecureFile 的保留字段。目前暂不支持该字段,当前该字段默认为 NULL | +| MINRETENTION | NUMBER | NO | SecureFile 的最短保留时长。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 增加要分配的下一个数据块大小的百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 该段申请的空闲链表数。目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 该段申请的空闲组数。目前暂不支持该字段,当前该字段默认为 NULL | +| RELATIVE_FNO | NUMBER | NO | 段头的相对文件号。目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 用于段块的缓冲池 | +| FLASH_CACHE | VARCHAR2(7) | NO | 用于段块的数据库智能闪存缓存提示 | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 用于段块的单元闪存缓存提示 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/75.DBA_SEQUENCES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/75.DBA_SEQUENCES.md new file mode 100644 index 000000000..edfaffe28 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/75.DBA_SEQUENCES.md @@ -0,0 +1,43 @@ +DBA_SEQUENCES +================================== + + + +功能 +----------- + +列出数据库中所有 SEQUENCE。 + +相关视图 +------------- + +* ALL_SEQUENCES + + + +* USER_SEQUENCES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|-------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| OBJECT_NAME | VARCHAR2(128) | NO | SEQUENCE 名 | +| MIN_VALUE | NUMBER(28) | NO | SEQUENCE 可取的最小值(含) | +| MAX_VALUE | NUMBER(28) | NO | SEQUENCE 可取的最大值(含最大值) | +| INCREMENT_BY | NUMBER(28) | NO | 每次取值的步长,可为正整数或负整数,不可为 0 | +| CYCLE_FLAG | CHAR(1) | NO | 是否可以循环取值 | +| ORDER_FLAG | CHAR(1) | NO | 取值是否保证全局有序 | +| CACHE_SIZE | NUMBER(28) | NO | 每个节点缓存值的数量 | +| LAST_NUMBER | NUMBER(38) | NO | 记录下一个可分配给节点的值 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/76.DBA_SOURCE.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/76.DBA_SOURCE.md new file mode 100644 index 000000000..092dc7729 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/76.DBA_SOURCE.md @@ -0,0 +1,40 @@ +DBA_SOURCE +=============================== + + + +功能 +----------- + +列出数据库中可用的过程和函数的源代码。 + +相关视图 +------------- + +* ALL_SOURCE + + + +* USER_SOURCE + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------|--------------|----------------|--------------------| +| OWNER | VARCHAR2(30) | NO | 对象所属的拥有者 | +| NAME | VARCHAR2(30) | NO | 对象名 | +| TYPE | VARCHAR2(12) | NO | 对象类型 | +| LINE | NUMBER | NO | TEXT 字段对应的源代码中的行号 | +| TEXT | CLOB | NO | 当前行的源代码 | +| ORIGIN_CON_ID | NUMBER(38) | NO | 暂不支持该字段,字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/77.DBA_STMT_AUDIT_OPTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/77.DBA_STMT_AUDIT_OPTS.md new file mode 100644 index 000000000..b8cdde6c4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/77.DBA_STMT_AUDIT_OPTS.md @@ -0,0 +1,30 @@ +DBA_STMT_AUDIT_OPTS +======================================== + + + +功能 +----------- + +记录语句级别审计的详细配置。 + +相关视图 +------------- + +STMT_AUDIT_OPTION_MAP + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|--------------------------------| +| USER_NAME | VARCHAR2(128) | NO | 被审计的用户名 | +| PROXY_NAME | VARCHAR2(128) | NO | 被审计的 Proxy 用户名,当前该字段的值始终为 NULL | +| AUDIT_OPTION | VARCHAR2(128) | NO | 语句级别审计的 Type ID | +| SUCCESS | VARCHAR2(10) | NO | 语句执行成功时的审计模式 | +| FAILURE | VARCHAR2(10) | NO | 语句执行失败时的审计模式 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/78.DBA_SUBPARTITION_TEMPLATES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/78.DBA_SUBPARTITION_TEMPLATES.md new file mode 100644 index 000000000..016f24798 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/78.DBA_SUBPARTITION_TEMPLATES.md @@ -0,0 +1,40 @@ +DBA_SUBPARTITION_TEMPLATES +=============================================== + + + +功能 +----------- + +查看所有子分区模版描述信息。 + +相关视图 +------------- + +* ALL_SUBPARTITION_TEMPLATES + + + +* USER_SUBPARTITION_TEMPLATES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|----------------|----------------|-----------| +| USER_NAME | VARCHAR2(128) | NO | 分区表的所有者 | +| TABLE_NAME | VARCHAR2(256) | NO | 分区表名 | +| SUBPARTITION_NAME | VARCHAR2(64) | NO | 子分区名 | +| SUBPARTITION_POSITION | NUMBER | YES | 子分区位置 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 分区所属的表空间名 | +| HIGH_BOUND | VARCHAR2(1024) | NO | 分区模板表达式 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/79.DBA_SUBPART_KEY_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/79.DBA_SUBPART_KEY_COLUMNS.md new file mode 100644 index 000000000..38d4b55d3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/79.DBA_SUBPART_KEY_COLUMNS.md @@ -0,0 +1,40 @@ +DBA_SUBPART_KEY_COLUMNS +============================================ + + + +功能 +----------- + +查看数据库中所有分区对象中子分区键包含的列。 + +相关视图 +------------- + +* ALL_SUBPART_KEY_COLUMNS + + + +* USER_SUBPART_KEY_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|----------------|----------------|----------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 分区表或分区索引的拥有者 | +| NAME | VARCHAR2(128) | NO | 分区表或分区索引的名字 | +| OBJECT_TYPE | CHAR(5) | NO | 分区对象的类型: * TABLE * INDEX | +| COLUMN_NAME | VARCHAR2(4000) | NO | 列的名字 | +| COLUMN_POSITION | NUMBER | NO | 列在分区键中的位置 | +| COLLATED_COLUMN_ID | NUMBER | NO | 目前暂未支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/8.ALL_DEF_AUDIT_OPTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/8.ALL_DEF_AUDIT_OPTS.md new file mode 100644 index 000000000..64bde0a91 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/8.ALL_DEF_AUDIT_OPTS.md @@ -0,0 +1,51 @@ +ALL_DEF_AUDIT_OPTS +======================================= + + + +功能 +----------- + +记录任何对象默认被审计的审计条件。每列的取值如下: + +* `-/-`:默认不审计 + +* `S/-`: 只在语句执行成功时审计 + +* `-/S`: 只在语句执行失败时审计 + +* `S/S`: 语句执行无论成功还是失败时都审计 + + + + +相关视图 +------------- + +DBA_OBJ_AUDIT_OPTS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|-------------|----------------|-----------------------------------| +| ALT | VARCHAR2(3) | NO | ALTER 操作 | +| AUD | VARCHAR2(3) | NO | AUDIT 操作 | +| COM | VARCHAR2(3) | NO | COMMENT 操作 | +| DEL | VARCHAR2(3) | NO | DELETE 操作 | +| GRA | VARCHAR2(3) | NO | GRANT 操作 | +| IND | VARCHAR2(3) | NO | INDEX 操作 | +| INS | VARCHAR2(3) | NO | INSERT 操作 | +| LOC | VARCHAR2(3) | NO | LOCK 操作 | +| REN | VARCHAR2(3) | NO | RENAME 操作 | +| SEL | VARCHAR2(3) | NO | SELECT 操作 | +| UPD | VARCHAR2(3) | NO | UPDATE 操作 | +| REF | VARCHAR2(3) | NO | REFERENCE 操作,目前仅定义了但不支持,默认值为 NULL | +| EXE | VARCHAR2(3) | NO | EXECUTE 操作 | +| FBK | VARCHAR2(3) | NO | FLASHBACK 操作 | +| REA | VARCHAR2(3) | NO | READ 操作 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/80.DBA_SYNONYMS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/80.DBA_SYNONYMS.md new file mode 100644 index 000000000..d31dd64f9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/80.DBA_SYNONYMS.md @@ -0,0 +1,39 @@ +DBA_SYNONYMS +================================= + + + +功能 +----------- + +查看数据库中所有同义词。 + +相关视图 +------------- + +* ALL_SYNONYMS + + + +* USER_SYNONYMS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|-------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 同义词的拥有者 | +| SYNONYM_NAME | VARCHAR2(128) | NO | 同义词名字 | +| TABLE_OWNER | VARCHAR2(128) | NO | 同义词引用对象的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 同义词引用的对象名字 | +| DB_LINK | VARCHAR2(128) | NO | 如果引用的是 DB Link,则表示 DB Link 名字。目前同义词暂不支持 DB LINK | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/81.DBA_SYS_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/81.DBA_SYS_PRIVS.md new file mode 100644 index 000000000..13e1cf5af --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/81.DBA_SYS_PRIVS.md @@ -0,0 +1,28 @@ +DBA_SYS_PRIVS +================================== + + + +功能 +----------- + +描述授予用户和角色的系统特权。此视图不显示 `USERNAME` 列。 + +相关视图 +------------- + +USER_SYS_PRIVS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|------------------| +| GRANTEE | VARCHAR2(128) | NO | 接受授权的授予者名称、用户或角色 | +| PRIVILEGE | VARCHAR2(40) | NO | 系统权限 | +| ADMIN_OPTION | VARCHAR2(3) | NO | 授予管理选项 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/82.DBA_TABLES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/82.DBA_TABLES.md new file mode 100644 index 000000000..fcecf8335 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/82.DBA_TABLES.md @@ -0,0 +1,89 @@ +DBA_TABLES +=============================== + + + +功能 +----------- + +查看数据库中的所有表。 + +相关视图 +------------- + +* ALL_TABLES + + + +* USER_TABLES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------------|---------------|----------------|---------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 表的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表名 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含该表的表空间名字 | +| CLUSTER_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IOT_NAME | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| STATUS | VARCHAR2(8) | NO | 表状态: * VALID * UNUSABLE | +| PCT_FREE | NUMBER | NO | 块的最小空闲空间比例 | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BACKED_UP | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_ROWS | NUMBER | NO | 表行数 | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_FREELIST_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEGREE | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INSTANCES | VARCHAR2(40) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CACHE | VARCHAR2(20) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TABLE_LOCK | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PARTITIONED | VARCHAR2(3) | NO | 指定表是否是分区: * YES * NO | +| IOT_TYPE | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| TEMPORARY | VARCHAR2(1) | NO | 指定表是否是临时表 | +| SECONDARY | VARCHAR2(1) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NESTED | VARCHAR2(3) | NO | 指定表是否是嵌套表: * YES * NO | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| ROW_MOVEMENT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DURATION | VARCHAR2(15) | NO | 指示临时表的持续时间 | +| SKIP_CORRUPT | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MONITORING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CLUSTER_OWNER | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DEPENDENCIES | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESS_FOR | VARCHAR2(12) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DROPPED | VARCHAR2(3) | NO | 表示被删除表是否在回收站里 | +| READ_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| RESULT_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/83.DBA_TABLESPACES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/83.DBA_TABLESPACES.md new file mode 100644 index 000000000..1cc333fa0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/83.DBA_TABLESPACES.md @@ -0,0 +1,48 @@ +DBA_TABLESPACES +==================================== + + + +功能 +----------- + +查看所有 tablespace。 + +相关视图 +------------- + +USER_TABLESPACES + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------------|--------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TABLESPACE_NAME | VARCHAR2(30) | NO | 表空间的名称 | +| BLOCK_SIZE | NUMBER | NO | 表空间块大小。目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 默认初始区段大小。目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 默认增量区段大小。目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENTS | NUMBER | NO | 默认的最小扩展数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENTS | NUMBER | NO | 默认的最大扩展数。目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 段的默认最大大小。目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 区段大小的默认增加百分比。目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTLEN | NUMBER | NO | 此表空间的最小区段大小。目前暂不支持该字段,当前该字段默认为 NULL | +| STATUS | VARCHAR2(9) | NO | 表空间状态: * ONLINE * OFFLINE * READ ONLY 目前暂不支持该字段,当前该字段默认为 NULL | +| CONTENTS | VARCHAR2(9) | NO | 表内容: * UNDO * PERMANENT * TEMPORARY 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(9) | NO | 默认的日志记录属性: * LOGGING * NOLOGGING 目前暂不支持该字段,当前该字段默认为 NULL | +| FORCE_LOGGING | VARCHAR2(3) | NO | 指示表空间是否处于强制日志记录模式。目前暂不支持该字段,当前该字段默认为 NULL | +| EXTENT_MANAGEMENT | VARCHAR2(10) | NO | 指示表空间中的区段是字典管理的还是本地管理。目前暂不支持该字段,当前该字段默认为 NULL | +| ALLOCATION_TYPE | VARCHAR2(9) | NO | 表空间中有效的区段分配类型: * SYSTEM * UNIFORM * USER 目前暂不支持该字段,当前该字段默认为 NULL | +| PLUGGED_IN | VARCHAR2(3) | NO | 指示是否插入表空间。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_SPACE_MANAGEMENT | VARCHAR2(6) | NO | 指示表空间中的空闲和使用的段空间是使用空闲列表还是位图来管理的。目前暂不支持该字段,当前该字段默认为 NULL | +| DEF_TAB_COMPRESSION | VARCHAR2(8) | NO | 指示是否启用默认表压缩 | +| RETENTION | VARCHAR2(11) | NO | 撤消表空间保留: * GUARANTEE * A RETENTION * NOGUARANTEE * NOT APPLY 目前暂不支持该字段,当前该字段默认为 NULL | +| BIGFILE | VARCHAR2(3) | NO | 指示表空间是大文件表空间还是小文件表空间。目前暂不支持该字段,当前该字段默认为 NULL | +| PREDICATE_EVALUATION | VARCHAR2(7) | NO | 指示谓词是由主机计算还是由存储计算。目前暂不支持该字段,当前该字段默认为 NULL | +| ENCRYPTED | VARCHAR2(3) | NO | 指示表空间是否加密或不加密。目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESS_FOR | VARCHAR2(12) | NO | 默认压缩操作的类型。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/84.DBA_TAB_COLS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/84.DBA_TAB_COLS.md new file mode 100644 index 000000000..adb8db427 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/84.DBA_TAB_COLS.md @@ -0,0 +1,72 @@ +DBA_TAB_COLS +================================= + + + +功能 +----------- + +查看数据库中的所有表、视图、集群的所有列。 + +这个视图与 DBA_TABLE_COLUMNS 的区别在于没有对隐藏列进行过滤。 + +相关视图 +------------- + +* ALL_TAB_COLS + + + +* USER_TAB_COLS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|----------------|----------------|-------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 表、视图的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表、视图的名字 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列名 | +| DATA_TYPE | VARCHAR2(128) | NO | 列类型 | +| DATA_TYPE_MOD | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_TYPE_OWNER | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_LENGTH | NUMBER | NO | 列长度,单位:bytes | +| DATA_PRECISION | NUMBER | NO | 数字数据类型的十进制精度;浮点数据类型的二进制精度;所有其他数据类型为空值 | +| DATA_SCALE | NUMBER | NO | 数值小数点右边的数字 | +| NULLABLE | VARCHAR2(1) | NO | 列是否允许为空 | +| COLUMN_ID | NUMBER | NO | 列序号 | +| DEFAULT_LENGTH | NUMBER | NO | 列默认长度 | +| DATA_DEFAULT | VARCHAR2(128) | NO | 列默认值 | +| NUM_DISTINCT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOW_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HIGH_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DENSITY | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_NULLS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_BUCKETS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHARACTER_SET_NAME | VARCHAR2(44) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_COL_DECL_LENGTH | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_COL_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_LENGTH | NUMBER | NO | 字符类型的列长度 | +| CHAR_USED | VARCHAR2(1) | NO | 表示列是按照字节长度还是字符长度 | +| V80_FMT_IMAGE | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_UPGRADED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HIDDEN_COLUMN | VARCHAR2(3) | NO | 表示列是否是隐藏列: * YES * NO | +| VIRTUAL_COLUMN | VARCHAR2(3) | NO | 表示列是否是虚拟列 * YES * NO | +| SEGMENT_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERNAL_COLUMN_ID | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HISTOGRAM | VARCHAR2(15) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| QUALIFIED_COL_NAME | VARCHAR2(4000) | NO | 限定列名 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/85.DBA_TAB_COLUMNS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/85.DBA_TAB_COLUMNS.md new file mode 100644 index 000000000..539bcb2bc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/85.DBA_TAB_COLUMNS.md @@ -0,0 +1,65 @@ +DBA_TAB_COLUMNS +==================================== + + + +功能 +----------- + +查看数据库中所有的表、视图、集群的所有列。 + +相关视图 +------------- + +* ALL_TAB_COLUMNS + + + +* USER_TAB_COLUMNS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|---------------|----------------|---------------------------------------| +| OWNER | VARCHAR2(128) | NO | 表、视图的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表、视图的名字 | +| COLUMN_NAME | VARCHAR2(128) | NO | 列名 | +| DATA_TYPE | VARCHAR2(128) | NO | 列类型 | +| DATA_TYPE_MOD | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_TYPE_OWNER | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_LENGTH | NUMBER | NO | 列长度,单位:bytes | +| DATA_PRECISION | NUMBER | NO | 数字数据类型的十进制精度;浮点数据类型的二进制精度;所有其他数据类型为空值 | +| DATA_SCALE | NUMBER | NO | 数值小数点右边的数字 | +| NULLABLE | VARCHAR2(1) | NO | 列是否允许为空 | +| COLUMN_ID | NUMBER | NO | 列序号 | +| DEFAULT_LENGTH | NUMBER | NO | 列默认长度 | +| DATA_DEFAULT | VARCHAR2(128) | NO | 列默认值 | +| NUM_DISTINCT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOW_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HIGH_VALUE | VARCHAR2(128) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DENSITY | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_NULLS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NUM_BUCKETS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHARACTER_SET_NAME | VARCHAR2(44) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_COL_DECL_LENGTH | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_COL_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAR_LENGTH | NUMBER | NO | 字符类型的列长度 | +| CHAR_USED | VARCHAR2(1) | NO | 表示列是按照字节长度还是字符长度 | +| V80_FMT_IMAGE | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATA_UPGRADED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| HISTOGRAM | VARCHAR2(15) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/86.DBA_TAB_COMMENTS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/86.DBA_TAB_COMMENTS.md new file mode 100644 index 000000000..29bb185ab --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/86.DBA_TAB_COMMENTS.md @@ -0,0 +1,37 @@ +DBA_TAB_COMMENTS +===================================== + + + +功能 +----------- + +查看数据库中所有表、视图的注释。 + +相关视图 +------------- + +* ALL_TAB_COMMENTS + + + +* USER_TAB_COMMENTS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|----------------|----------------|----------| +| OWNER | VARCHAR2(128) | NO | 表、视图的拥有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 表、视图的名字 | +| TABLE_TYPE | VARCHAR2(11) | NO | 对象类型 | +| COMMENTS | VARCHAR2(4000) | NO | 对象注释 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/87.DBA_TAB_PARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/87.DBA_TAB_PARTITIONS.md new file mode 100644 index 000000000..6f21f6bad --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/87.DBA_TAB_PARTITIONS.md @@ -0,0 +1,75 @@ +DBA_TAB_PARTITIONS +======================================= + + + +功能 +----------- + +查看当前用户可访问的多级分区信息、分区存储参数和分区统计信息。 + +相关视图 +------------- + +* ALL_TAB_PARTITIONS + + + +* USER_TAB_PARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|----------------|----------------|-------------------------| +| TABLE_OWNER | VARCHAR2(128) | NO | 分区表所属的 USER | +| TABLE_NAME | VARCHAR2(128) | NO | 分区表名字 | +| COMPOSITE | VARCHAR2(3) | NO | 是否为多级分区 | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名 | +| SUBPARTITION_COUNT | NUMBER | YES | 子分区个数 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 分区表达式 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 分区表达式的长度 | +| PARTITION_POSITION | NUMBER | NO | 分区的位置 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 分区所属的表空间名 | +| PCT_FREE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MIN_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| MAX_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LOGGING | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| COMPRESSION | VARCHAR2(8) | NO | 是否开启压缩 | +| COMPRESS_FOR | VARCHAR2(12) | YES | 压缩方法 | +| NUM_ROWS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| IS_NESTED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PARENT_TABLE_PARTITION | VARCHAR2(30) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| INTERVAL | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SEGMENT_CREATED | VARCHAR2(4) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/88.DBA_TAB_PRIVS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/88.DBA_TAB_PRIVS.md new file mode 100644 index 000000000..698f593a5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/88.DBA_TAB_PRIVS.md @@ -0,0 +1,31 @@ +DBA_TAB_PRIVS +================================== + + + +功能 +----------- + +描述数据库中的所有对象授予。 + +相关视图 +------------- + +USER_TAB_PRIVS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|---------------|----------------|-----------------------| +| GRANTEE | VARCHAR2(128) | NO | 被授予访问权限的用户的名称 | +| OWNER | VARCHAR2(128) | NO | 对象的所有者 | +| TABLE_NAME | VARCHAR2(128) | NO | 对象的名称 | +| GRANTOR | VARCHAR2(128) | NO | 执行授权的用户的名称 | +| PRIVILEGE | VARCHAR2(40) | NO | 对象的特权 | +| GRANTABLE | VARCHAR2(3) | NO | 是否能使用 GRANT 授予权限 | +| HIERARCHY | VARCHAR2(3) | NO | 是否能使用 HIERARCHY 授予权限 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/89.DBA_TAB_SUBPARTITIONS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/89.DBA_TAB_SUBPARTITIONS.md new file mode 100644 index 000000000..e9a89cea8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/89.DBA_TAB_SUBPARTITIONS.md @@ -0,0 +1,71 @@ +DBA_TAB_SUBPARTITIONS +========================================== + + + +功能 +----------- + +`DBA_TAB_SUBPARTITIONS` 用于展示子分区名称、表和所属分区的名称、其存储属性以及 `DBMS_STATS` 包生成的统计信息。 + +相关视图 +------------- + +* ALL_TAB_SUBPARTITIONS + + + +* USER_TAB_SUBPARTITIONS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|----------------|----------------|--------------------------| +| TABLE_OWNER | VARCHAR2(128) | NO | 表的所有者。 | +| TABLE_NAME | VARCHAR2(128) | NO | 表名。 | +| PARTITION_NAME | VARCHAR2(128) | NO | 分区名称。 | +| SUBPARTITION_NAME | VARCHAR2(128) | NO | 子分区名称。 | +| HIGH_VALUE | VARCHAR2(1024) | NO | 子分区表达式。 | +| HIGH_VALUE_LENGTH | NUMBER | NO | 子分区表达式的长度。 | +| SUBPARTITION_POSITION | NUMBER | NO | 子分区在分区中的位置。 | +| TABLESPACE_NAME | VARCHAR2(30) | NO | 包含子分区的表空间的名称。 | +| PCT_FREE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| PCT_USED | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| INI_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| MAX_TRANS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| INITIAL_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| NEXT_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| MIN_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| MAX_EXTENT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| MAX_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| PCT_INCREASE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| FREELISTS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| FREELIST_GROUPS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| LOGGING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| COMPRESSION | VARCHAR2(8) | NO | 子分区是否压缩。 | +| COMPRESS_FOR | VARCHAR2(12) | YES | 压缩方法。 | +| NUM_ROWS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| EMPTY_BLOCKS | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| AVG_SPACE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| CHAIN_CNT | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| AVG_ROW_LEN | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| SAMPLE_SIZE | NUMBER | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| LAST_ANALYZED | DATE | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| BUFFER_POOL | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| CELL_FLASH_CACHE | VARCHAR2(7) | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| GLOBAL_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| USER_STATS | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| INTERVAL | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | +| SEGMENT_CREATED | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/9.ALL_ERRORS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/9.ALL_ERRORS.md new file mode 100644 index 000000000..597055e54 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/9.ALL_ERRORS.md @@ -0,0 +1,48 @@ +ALL_ERRORS +=============================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图的相关功能。 + +功能 +----------- + +查看用户可以访问的当前存储对象的错误。 + +相关视图 +------------- + +* DBA_ERRORS + + + +* USER_ERRORS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|----------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象的拥有者 | +| NAME | VARCHAR2(128) | NO | 对象的名称 | +| TYPE | VARCHAR2(19) | NO | 对象的类型: * VIEW * PROCEDUCE * FUNCTION * PACKAGE * PACKAGE_BODY * TRIGGER * TYPE * TYPE BODY * LIBRARY * JAVA SOURCE * JAVA CLASS * DIMENSION | +| SEQUENCE | NUMBER | NO | 同一次编译有多条错误时的错误编号(未排序) | +| LINE | NUMBER | NO | 错误发生的行 | +| POSITION | NUMBER | NO | 错误发生的列 | +| TEXT | VARCHAR2(4000) | NO | 错误信息文本 | +| ATTRIBUTE | VARCHAR2(9) | NO | 表明是 ERROR 还是 WARNING | +| MESSAGE_NUMBER | number | NO | 错误编码 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/90.DBA_TRIGGERS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/90.DBA_TRIGGERS.md new file mode 100644 index 000000000..0f782238d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/90.DBA_TRIGGERS.md @@ -0,0 +1,55 @@ +DBA_TRIGGERS +================================= + + + +功能 +----------- + +描述数据库中的所有触发器。 + +相关视图 +------------- + +* ALL_TRIGGERS + + + +* USER_TRIGGERS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|-----------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 触发器 OWNER | +| TRIGGER_NAME | VARCHAR2(128) | NO | 触发器名字 | +| TRIGGER_TYPE | VARCHAR2(16) | NO | 触发器类型: * BEFORE/AFTER * ROW/STMT | +| TRIGGERING_EVENT | VARCHAR2(246) | NO | 触发事件,当前 OceanBase 数据库仅支持 INSERT、UPDATE、DELETE等。 | +| TABLE_OWNER | VARCHAR2(128) | NO | 表 OWNER,触发对象类型为表时有效。 | +| BASE_OBJECT_TYPE | VARCHAR2(18) | NO | 触发对象类型,当前 OceanBase 数据库仅支持 TABLE。 | +| TABLE_NAME | VARCHAR2(256) | NO | 表名,触发对象类型为表时有效。 | +| COLUMN_NAME | VARCHAR2(4000) | YES | 列名,仅在触发对象为嵌套表时有效,其它情况为 NULL。 | +| REFERENCING_NAMES | VARCHAR2(422) | NO | REF 名,是 OLD 和 NEW 的别名。 | +| WHEN_CLAUSE | VARCHAR2(4000) | YES | 触发条件 | +| STATUS | VARCHAR2(8) | NO | 状态: * ENABLE * DISABLE | +| DESCRIPTION | VARCHAR2(65536) | NO | 触发器描述,包括名字、类型、事件信息。当前 OceanBase 包含的信息比 Oracle 更多。 | +| ACTION_TYPE | VARCHAR2(11) | NO | ACTION 类型,当前 OceanBase 数据库仅支持 PL/SQL。 | +| TRIGGER_BODY | VARCHAR2(65536) | NO | 触发器语句。当前 OceanBase 数据库包含的信息比 Oracle 更多。 | +| CROSSEDITION | VARCHAR2(7) | NO | 跨版本信息,目前暂不支持该字段。 | +| BEFORE_STATEMENT | VARCHAR2(3) | NO | 语句前,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| BEFORE_ROW | VARCHAR2(3) | NO | 行前,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| AFTER_ROW | VARCHAR2(3) | NO | 行后,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| AFTER_STATEMENT | VARCHAR2(3) | NO | 语句后,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| INSTEAD_OF_ROW | VARCHAR2(3) | NO | 代替,YES/NO。表示组合触发器是否包含指定类型的 Section。 | +| FIRE_ONCE | VARCHAR2(3) | NO | 目前暂不支持该字段。 | +| APPLY_SERVER_ONLY | VARCHAR2(3) | NO | 目前暂不支持该字段。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/91.DBA_TYPES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/91.DBA_TYPES.md new file mode 100644 index 000000000..b4ddf45ec --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/91.DBA_TYPES.md @@ -0,0 +1,49 @@ +DBA_TYPES +============================== + + + +功能 +----------- + +列出数据库中可用的用户自定义类型。 + +相关视图 +------------- + +* ALL_TYPES + + + +* USER_TYPES + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|---------------|----------------|---------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| TYPE_NAME | VARCHAR2(64) | NO | 类型名 | +| TYPE_OID | NUMBER(38) | NO | 类型 OID | +| TYPECODE | VARCHAR2(10) | NO | 代表对象的类型,例如 OBJECT、 COLL 等 | +| ATTRIBUTES | NUMBER(38) | NO | 类型包含的属性数 | +| METHODS | NUMBER(38) | NO | 类型包含的方法数 | +| PREDEFINED | CHAR(2) | NO | 是否是系统预定义类型 | +| INCOMPLETE | CHAR(2) | NO | 是否是不完整类型, 只有名字没有方法和属性 | +| FINAL | CHAR(3) | NO | 是否不可被继承 | +| INSTANTIABLE | CHAR(3) | NO | 是否可实例化 | +| SUPERTYPE_OWNER | VARCHAR2(30) | NO | 父类型的拥有者 | +| SUPERTYPE_NAME | VARCHAR2(30) | NO | 父类型名 | +| LOCAL_ATTRIBUTES | NUMBER(38) | NO | 本地属性数 | +| LOCAL_METHODS | NUMBER(38) | NO | 本地方法数 | +| TYPEID | NUMBER(38) | YES | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/92.DBA_TYPE_ATTRS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/92.DBA_TYPE_ATTRS.md new file mode 100644 index 000000000..6a1df95ae --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/92.DBA_TYPE_ATTRS.md @@ -0,0 +1,47 @@ +DBA_TYPE_ATTRS +=================================== + + + +功能 +----------- + +列出数据库中可用的用户自定义类型的属性信息。 + +相关视图 +------------- + +* ALL_TYPE_ATTRS + + + +* USER_TYPE_ATTRS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------------|---------------|----------------|-------------------------| +| OWNER | VARCHAR2(128) | NO | 对象所属的拥有者 | +| TYPE_NAME | VARCHAR2(64) | NO | 类型名 | +| ATTR_NAME | VARCHAR2(64) | NO | 类型属性名 | +| ATTR_TYPE_MOD | VARCHAR2(7) | NO | 类型的 Modify 属性。当前暂未使用该字段 | +| ATTR_TYPE_OWNER | VARCHAR2(128) | NO | 属性的类型拥有者 | +| ATTR_TYPE_NAME | VARCHAR2(324) | NO | 属性的类型名 | +| LENGTH | NUMBER(38) | NO | 属性类型长度 | +| NUMBER_PRECISION | NUMBER(38) | NO | 属性数值类型的长度 | +| SCALE | NUMBER(38) | NO | 数值类型小数点右边的数据长度 | +| CHARACTER_SET_NAME | CHAR(7) | NO | 属性类型的字符集 | +| ATTR_NO | NUMBER(38) | NO | 属性编号 | +| INHERITED | CHAR(2) | NO | 该属性是否继承自父类型 | +| CHAR_USED | CHAR(1) | YES | 目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/93.DBA_TYPE_METHODS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/93.DBA_TYPE_METHODS.md new file mode 100644 index 000000000..062b7e769 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/93.DBA_TYPE_METHODS.md @@ -0,0 +1,49 @@ +DBA_TYPE_METHODS +===================================== + + +**说明** + + + +OceanBase 数据库暂未支持该视图。 + +功能 +----------- + +查看数据库中对象类型的方法。 + +相关视图 +------------- + +* ALL_TYPE_METHODS + + + +* USER_TYPE_METHODS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|--------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(30) | NO | 类型的拥有者 | +| TYPE_NAME | VARCHAR2(30) | NO | 类型的名称 | +| METHOD_NAME | VARCHAR2(30) | NO | 方法的名称 | +| METHOD_NO | NUMBER | NO | 方法编号,为了区分重载方法 | +| METHOD_TYPE | VARCHAR2(6) | NO | 方法类型: * MAP * ORDER * PUBLIC | +| PARAMETERS | NUMBER | NO | 方法参数的个数 | +| RESULTS | NUMBER | NO | 方法返回结果的个数 | +| FINAL | VARCHAR2(3) | NO | 表明此方法是否为 FINAL: * YES * NO | +| INSTANTIABLE | VARCHAR2(3) | NO | 表明此方法是否可实例化: * YES * NO | +| OVERRIDING | VARCHAR2(3) | NO | 表明此方法是否重载一个超类型方法: * YES * NO | +| INHERITED | VARCHAR2(3) | NO | 表明此方法是否继承自一个超类型: * YES * NO | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/94.DBA_USERS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/94.DBA_USERS.md new file mode 100644 index 000000000..9f32fb310 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/94.DBA_USERS.md @@ -0,0 +1,36 @@ +DBA_USERS +============================== + + + +功能 +----------- + +查看所有用户。 + +相关视图 +------------- + +ALL_USERS + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------------|----------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| USERNAME | VARCHAR2(128) | NO | 用户名称 | +| USER_ID | NUMBER(38) | NO | 用户的身份证号 | +| PASSWORD | VARCHAR2(128) | NO | 此列不建议使用 AUTHENTICATION_TYPE 列 | +| ACCOUNT_STATUS | VARCHAR2(30) | NO | 帐户状态: * OPEN * EXPIRED * EXPIRED(GRACE) * LOCKED(TIMED) * LOCKED * EXPIRED \& LOCKED(TIMED) * EXPIRED(GRACE) \&LOCKED(TIMED) * EXPIRED \& LOCKED * EXPIRED(GRACE) \& LOCKED | +| LOCK_DATE | DATE | NO | 如果帐户状态被锁定,则锁定帐户的日期 | +| EXPIRY_DATE | DATE | NO | 账户到期日期 | +| DEFAULT_TABLESPACE | VARCHAR2(30) | NO | 数据的默认表空间 | +| TEMPORARY_TABLESPACE | VARCHAR2(30) | NO | 临时表的默认表空间的名称或表空间组的名称 | +| CREATED | DATE | NO | 用户创建日期 | +| INITIAL_RSRC_CONSUMER_GROUP | VARCHAR2(30) | NO | 用户的初始资源使用者组 | +| EXTERNAL_NAME | VARCHAR2(4000) | NO | 用户的外部名称 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/95.DBA_VIEWS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/95.DBA_VIEWS.md new file mode 100644 index 000000000..b5db10ac1 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/95.DBA_VIEWS.md @@ -0,0 +1,44 @@ +DBA_VIEWS +============================== + + + +功能 +----------- + +查看所有视图。 + +相关视图 +------------- + +* ALL_VIEWS + + + +* USER_VIEWS + + + + + + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------|----------------|----------------|-----------------------| +| OWNER | VARCHAR2(128) | NO | VIEW 所属的 USER | +| VIEW_NAME | VARCHAR2(128) | NO | 索引名字 | +| TEXT_LENGTH | NUMBER | NO | 视图定义长度 | +| TEXT | VARCHAR2(4000) | NO | 视图的文本 | +| OID_TEXT_LENGTH | NUMBER | NO | 类型化视图的 WITH OID 子句的长度 | +| OID_TEXT | VARCHAR2(4000) | NO | 类型化视图的 WITH OID子句 | +| VIEW_TYPE | VARCHAR2(30) | NO | 如果视图是有类型的视图,则视图的类型 | +| SUPERVIEW_NAME | VARCHAR2(30) | NO | 父视图的名称 | +| EDITIONING_VIEW | VARCHAR2(1) | NO | 留作将来使用 | +| READ_ONLY | VARCHAR2(1) | NO | 表示视图是否为只读 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/96.DBA_RECYCLEBIN.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/96.DBA_RECYCLEBIN.md new file mode 100644 index 000000000..44f92a906 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/96.DBA_RECYCLEBIN.md @@ -0,0 +1,41 @@ +DBA_RECYCLEBIN +=================================== + + + +功能 +----------------------- + +记录回收站的信息。 + +相关视图 +------------------------- + +USER_RECYCLEBIN + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|----------------|---------------|------------|------------------------------------------------------------------------------------------------------------------------------------| +| OWNER | VARCHAR2(128) | NO | 对象原始所有者的名称 | +| OBJECT_NAME | VARCHAR2(128) | NO | 对象的新名称 | +| ORIGINAL_NAME | VARCHAR2(128) | NO | 对象的原始名称 | +| OPERATION | VARCHAR2(9) | NO | 暂不支持该字段,默认为 NULL | +| TYPE | VARCHAR2(25) | NO | 对象类型 | +| TS_NAME | VARCHAR2(30) | NO | 对象所属的表空间的名称 | +| CREATETIME | VARCHAR2(30) | NO | 创建对象的时间 | +| DROPTIME | VARCHAR2(30) | NO | 对象进入回收站的时间 | +| DROPSCN | NUMBER | NO | 暂不支持该字段,默认为 NULL | +| PARTITION_NAME | VARCHAR2(128) | NO | 暂不支持该字段,默认为 NULL | +| CAN_UNDROP | VARCHAR2(3) | NO | 是否可以将对象从回收站中恢复: * YES * NO | +| CAN_PURGE | VARCHAR2(3) | NO | 是否可以将对象清除: * YES * NO | +| RELATED | NUMBER | NO | 暂不支持该字段,默认为 NULL | +| BASE_OBJECT | NUMBER | NO | 暂不支持该字段,默认为 NULL | +| PURGE_OBJECT | NUMBER | NO | 暂不支持该字段,默认为 NULL | +| SPACE | NUMBER | NO | 暂不支持该字段,默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/97.DBA_DEPENDENCIES.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/97.DBA_DEPENDENCIES.md new file mode 100644 index 000000000..467df4a05 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/97.DBA_DEPENDENCIES.md @@ -0,0 +1,41 @@ +DBA_DEPENDENCIES +===================================== + + + +功能 +----------------------- + +`DBA_DEPENDENCIES` 视图用于展示数据库中各对象之间的所有依赖关系。目前仅支持展示 PL 对象之间的依赖关系。 + +相关视图 +------------------------- + +* `ALL_DEPENDENCIES` + + + +* `USER_DEPENDENCIES` + + + + + + +字段说明 +------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------|---------------|----------------|-------------------| +| OWNER | VARCHAR2(128) | NO | 依赖者 Owner 的名称 | +| NAME | VARCHAR2(128) | NO | 依赖者的名称 | +| TYPE | VARCHAR2(23) | NO | 依赖者的类型 | +| REFERENCED_OWNER | VARCHAR2(128) | NO | 被依赖者的 Owner 名称 | +| REFERENCED_NAME | VARCHAR2(128) | NO | 被依赖者的名称 | +| REFERENCED_TYPE | VARCHAR2(18) | NO | 被依赖者的类型 | +| REFERENCED_LINK_NAME | VARCHAR2(128) | NO | 被依赖者的 Dblink 名称 | +| DEPENDENCY_TYPE | VARCHAR2(4) | NO | 指示该依赖为强依赖或者其他依赖类型 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/98.DBA_RSRC_CONSUMER_GROUPS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/98.DBA_RSRC_CONSUMER_GROUPS.md new file mode 100644 index 000000000..2819dd69e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/98.DBA_RSRC_CONSUMER_GROUPS.md @@ -0,0 +1,38 @@ +DBA_RSRC_CONSUMER_GROUPS +============================================= + + + +功能 +----------------------- + +`DBA_RSRC_CONSUMER_GROUPS` 视图用于展示数据库中所有资源组的信息。 + +相关视图 +------------------------- + +* `DBA_RSRC_GROUP_MAPPINGS` + + + + + + +字段说明 +------------------------- + + + +| 字段类型 | 类型 | 是否可以为 NULL | 描述 | +|-------------------|----------------|------------|--------------------------------------| +| CONSUMER_GROUP_ID | NUMBER(38) | NO | 资源组 ID。 | +| CONSUMER_GROUP | VARCHAR2(128) | NO | 用户绑定到的资源组的名称。 | +| CPU_METHOD | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| MGMT_METHOD | VARCHAR2(128) | NO | 仅用于兼容,目前值固定为 `NULL`。 | +| INTERNAL_USE | VARCHAR2(3) | NO | 指示该资源组是否仅用于内部使用,仅用于兼容,目前值固定为 `NULL`。 | +| COMMENTS | VARCHAR2(2000) | YES | 对资源组的备注信息。 | +| CATEGORY | VARCHAR2(128) | NO | 资源组的类别,仅用于兼容,目前值固定为 `NULL`。 | +| STATUS | VARCHAR2(128) | NO | 资源组的状态,仅用于兼容,目前值固定为 `NULL`。 | +| MANDATORY | VARCHAR2(3) | NO | 指示该资源组是否为必填,仅用于兼容,目前值固定为 `NULL`。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/99.DBA_RSRC_GROUP_MAPPINGS.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/99.DBA_RSRC_GROUP_MAPPINGS.md new file mode 100644 index 000000000..e2dfed542 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/1.dictionary-view-1/99.DBA_RSRC_GROUP_MAPPINGS.md @@ -0,0 +1,33 @@ +DBA_RSRC_GROUP_MAPPINGS +============================================ + + + +功能 +----------------------- + +`DBA_RSRC_GROUP_MAPPINGS` 视图用于记录用户和资源组之间的绑定关系。 + +相关视图 +------------------------- + +* `DBA_RSRC_CONSUMER_GROUPS` + + + + + + +字段说明 +------------------------- + + + +| 字段类型 | 类型 | 是否可以为 NULL | 描述 | +|----------------|----------------|------------|-----------------------------------| +| ATTRIBUTE | VARCHAR2(128) | NO | 类别,当前版本仅支持 `ORACLE_USER`。 | +| VALUE | VARBINARY(128) | NO | 值,当类别为 `ORACLE_USER` 时,记录的是登录用户名。 | +| CONSUMER_GROUP | VARCHAR2(128) | YES | 用户绑定到的资源组的名称。 | +| STATUS | VARCHAR2(128) | NO | 资源组的状态,仅用于兼容,目前值固定为 `NULL`。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/1.gv-lock-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/1.gv-lock-1.md new file mode 100644 index 000000000..e5076683e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/1.gv-lock-1.md @@ -0,0 +1,31 @@ +GV$LOCK +============================ + + + +功能 +----------- + +展示 OceanBase 数据库的行锁信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|---------------|----------------|-------------------| +| SVR_IP | varchar(32) | NO | 服务器 IP | +| SVR_PORT | NUMBER(38) | NO | 服务器端口号 | +| TABLE_ID | NUMBER(38) | NO | 表 ID | +| ADDR | varchar(512) | NO | 被锁对象的地址 | +| KADDR | NUMBER(38) | NO | 锁地址 | +| SID | NUMBER(38) | NO | 会话持有的 ID | +| TYPE | NUMBER(38) | NO | 0(行锁) | +| LMODE | NUMBER(38) | NO | 0(写锁) | +| REQUEST | NUMBER | YES | Null | +| CTIME | NUMBER(38) | NO | 加锁耗时 | +| BLOCK | NUMBER(38) | NO | 最早被阻塞的 session_id | +| CON_ID | VARCHAR2(256) | NO | 租户 ID | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/10.gv-plan_cache_plan_explain-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/10.gv-plan_cache_plan_explain-1.md new file mode 100644 index 000000000..c45dfc976 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/10.gv-plan_cache_plan_explain-1.md @@ -0,0 +1,35 @@ +GV$PLAN_CACHE_PLAN_EXPLAIN +=============================================== + + + +**功能** +--------------------------- + +该视图用于展示缓存在全部的 Server 中的计划缓存中的物理执行计划。 +**说明** + + + +该视图仅支持 get 操作,查询时需要指定 IP、PORT、TENANT_ID、PLAN_ID字段。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|----------------|----------------|------------------| +| TENANT_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 端口号 | +| PLAN_ID | NUMBER(38) | NO | 计划的 ID | +| PLAN_DEPTH | NUMBER(38) | NO | Operator 在展示时的深度 | +| PLAN_LINE_ID | NUMBER(38) | NO | Operator 的编号 | +| OPERATOR | VARCHAR2(128) | NO | Operator 的名称 | +| NAME | VARCHAR2(256) | NO | 表的名称 | +| ROWS | NUMBER(38) | NO | 预估的结果行数 | +| COST | NUMBER(38) | NO | 预估的代价 | +| PROPERTY | VARCHAR2(4096) | NO | 对应 Operator 的信息 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/11.gv-plan_cache_plan_stat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/11.gv-plan_cache_plan_stat-1.md new file mode 100644 index 000000000..3e0eb02c5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/11.gv-plan_cache_plan_stat-1.md @@ -0,0 +1,81 @@ +GV$PLAN_CACHE_PLAN_STAT +============================================ + + + +**功能** +--------------------------- + +该视图记录了当前租户在所有 Server 上的计划缓存中缓存的每一个缓存对象的状态。 +**注意** + + + +该表不仅缓存了 SQL 计划对象,也缓存了 PL 对象(如匿名块、PL Package以及PL Function),某些字段只在特定对象下有效。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|-----------------------------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TENANT_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 机器的 IP | +| SVR_PORT | NUMBER(38) | NO | 机器端口号 | +| PLAN_ID | NUMBER(38) | NO | 缓存对象的 ID | +| SQL_ID | VARCHAR2(32) | NO | 缓存对象对应的 SQL ID,如果是 PL 对象,则该字段为 NULL | +| TYPE | NUMBER(38) | NO | 对于 SQL 计划的缓存,该字段表示计划的类型: * 1:表示本地计划 * 2:表示远程计划 * 3:表示分配计划 对于 PL 对象缓存,该字段表示PL对象的类型: * 1:表示程序 * 2:表示函数 * 3:表示包 * 4:表示匿名块 | +| DB_ID | NUMBER(38) | NO | 数据库的 ID | +| IS_BIND_SENSITIVE | NUMBER(38) | NO | 该计划是否需要打开 ACS | +| IS_BIND_AWARE | NUMBER(38) | NO | 该计划已经打开了 ACS | +| STATEMENT | VARCHAR2(65536) | NO | 对于 SQL 计划,该字段为参数化后的 SQL 语句;对于匿名块对象,该字段为参数化后的匿名块语句;其他对象该字段无效 | +| QUERY_SQL | VARCHAR2(65536) | NO | 对于 SQL 计划,字段为第一次加载计划时查询的原始 SQL 语句;对于匿名块字段,该字段为参数化后的匿名块语句 | +| SPECIAL_PARAMS | VARCHAR2(4096) | NO | 表示不可参数化的参数值 | +| PARAM_INFOS | VARCHAR2(65536) | NO | 表示参数化信息 | +| SYS_VARS | VARCHAR2(4096) | NO | 影响缓存对象的系统变量的值 | +| PLAN_HASH | NUMBER(38) | NO | SQL 计划的 Hash 值 | +| FIRST_LOAD_TIME | TIMESTAMP(6) WITH LOCAL TIME ZONE | NO | 第一次被加载时间 | +| SCHEMA_VERSION | NUMBER(38) | NO | Schema 版本号 | +| MERGED_VERSION | NUMBER(38) | NO | 当前缓存的计划对应的合并版本号 | +| LAST_ACTIVE_TIME | TIMESTAMP(6) WITH LOCAL TIME ZONE | NO | 上一次被执行时间 | +| AVG_EXE_USEC | NUMBER(38) | NO | 平均执行时间 | +| SLOWEST_EXE_TIME | TIMESTAMP(6) WITH LOCAL TIME ZONE | NO | 最慢执行时间戳 | +| SLOWEST_EXE_USEC | NUMBER(38) | NO | 最慢一次执行耗时 | +| SLOW_COUNT | NUMBER(38) | NO | 当前 SQL 计划成为慢查询的次数 | +| HIT_COUNT | NUMBER(38) | NO | 被命中次数 | +| PLAN_SIZE | NUMBER(38) | NO | 缓存对象占用的内存大小 | +| EXECUTIONS | NUMBER(38) | NO | 执行次数 | +| DISK_READS | NUMBER(38) | NO | 所有执行物理读的次数 | +| DIRECT_WRITES | NUMBER(38) | NO | 所有执行写盘的次数 | +| BUFFERS_GETS | NUMBER(38) | NO | 所有执行逻辑读的次数 | +| APPLICATION_WATI_TIME | NUMBER(38) | NO | 所有执行所有 application 类事件的总时间 | +| CONCURRENCY_WAIT_TIME | NUMBER(38) | NO | 所有执行所有 concurrency 类事件的总时间 | +| USER_IO_WAIT_TIME | NUMBER(38) | NO | 所有执行所有 user_io 类事件的总时间 | +| ROWS_PROCESSED | NUMBER(38) | NO | 所有执行选择的结果行数或执行更改表中的行数 | +| ELAPSED_TIME | NUMBER(38) | NO | 所有执行接收到请求到执行结束消耗时间 | +| CPU_TIME | NUMBER(38) | NO | 所有执行消耗的 CPU 时间 | +| LARGE_QUERYS | NUMBER(38) | NO | 被判断为大查询的次数 | +| DELAYED_LARGE_QUERYS | NUMBER(38) | NO | 被判断为大查询且被丢入大查询队列的次数 | +| DELAYED_PX_QUERYS | NUMBER(38) | NO | 并行查询被丢回队列重试的次数 | +| OUTLINE_VERSION | NUMBER(38) | NO | Outline 版本号 | +| OUTLINE_ID | NUMBER(38) | NO | Outline 的 ID,为 -1 表示不是通过绑定 Outline 生成的计划 | +| OUTLINE_DATA | VARCHAR2(65536) | NO | 计划对应的 Outline 信息 | +| HINTS_INFO | VARCHAR2(65536) | NO | SQL 计划的 Hint 信息 | +| HINTS_ALL_WORKED | NUMBER(38) | NO | SQL 计划中的 Hint 是否都已经生效 | +| ACS_SEL_INFO | VARCHAR2(65536) | NO | 当前 ACS 计划对应的选择率空间 | +| TABLE_SCAN | NUMBER(38) | NO | 表示该查询是否为主键扫描 | +| EVOLUTION | NUMBER(38) | NO | 表示该执行计划是否在演进中 | +| EVO_EXECUTIONS | NUMBER(38) | NO | 演进次数 | +| EVO_CPU_TIME | NUMBER(38) | NO | 演进过程中总的执行 CPU 时间 | +| TIMEOUT_COUNT | NUMBER(38) | NO | 超时次数 | +| PS_STMT_ID | NUMBER(38) | NO | prepare statement 的 ID | +| SESSID | NUMBER(38) | NO | 缓存对象所在的 Session ID | +| TEMP_TABLES | VARCHAR2(65536) | NO | SQL 计划中包含的临时表表名,如果没有临时表,字段为空 | +| IS_USE_JIT | NUMBER(38) | NO | SQL 计划是否开启了表达式编译执行 | +| OBJECT_TYPE | VARCHAR2(65536) | NO | 缓存对象的类型: * SQL_PLAN * PROCEDURE * FUNCTION * PACKAGE * ANONYMOUS | +| PL_SCHEMA_ID | NUMBER(38) | NO | 对于非匿名块的 PL 对象,字段为缓存对象的 Schema ID;对于匿名块,字段与 ps_stmt_id 相同;对于 SQL 计划,该字段无意义 | +| IS_BATCHED_MULTI_STMT | NUMBER(38) | NO | 表示是否为 batched multistmt 优化的计划 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/12.gv-plan_cache_stat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/12.gv-plan_cache_stat-1.md new file mode 100644 index 000000000..f8e1f7239 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/12.gv-plan_cache_stat-1.md @@ -0,0 +1,31 @@ +GV$PLAN_CACHE_STAT +======================================= + + + +功能 +----------------------- + +该视图记录当前租户在所有 Server 上的每个计划缓存整体的状态。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|--------------|----------------|-----------------------------------| +| SVR_IP | VARCHAR2(32) | NO | 服务器的 IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 端口号 | +| SQL_NUM | NUMBER(38) | NO | plan_cache 涉及 SQL 条数 | +| MEM_USED | NUMBER(38) | NO | plan_cache 已经使用的内存 | +| MEM_HOLD | NUMBER(38) | NO | plan_cache 持有的内存 | +| ACCESS_COUNT | NUMBER(38) | NO | 进行 plan_cache 的次数 | +| HIT_COUNT | NUMBER(38) | NO | 命中 plan_cache 的次数 | +| HIT_RATE | NUMBER(38) | NO | plan_cache 的命中率 | +| PLAN_NUM | NUMBER(38) | NO | plan 的个数 | +| MEM_LIMIT | NUMBER(38) | NO | plan_cache 的内存上限 | +| HASH_BUCKET | NUMBER(38) | NO | plan_cache hash map 中的 Bucket 的个数 | +| STMTKEY_NUM | NUMBER(38) | NO | plan_cache 中 stmt_key 的个数 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/13.gv-ps_item_info-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/13.gv-ps_item_info-1.md new file mode 100644 index 000000000..9da74f7c0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/13.gv-ps_item_info-1.md @@ -0,0 +1,30 @@ +GV$PS_ITEM_INFO +==================================== + + + +**功能** +--------------------------- + +用于给 prepared statement 提供监控功能,包含 PS Cache 中所有 prepare statement 的基本信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|-----------------|----------------|----------------------------| +| SVR_IP | VARCHAR2(32) | NO | 机器 IP | +| SVR_PORT | NUMBER(38) | NO | 机器端口号 | +| STMT_ID | NUMBER(38) | NO | ps cache 中对应语句的 stmt_id 信息 | +| DB_ID | NUMBER(38) | NO | prepare 语句涉及到的数据库 ID | +| PS_SQL | VARCHAR2(65536) | NO | prepare 的 SQL 信息 | +| PARAM_COUNT | NUMBER(38) | NO | prepare 的参数个数信息 | +| STMT_ITEM_REF_COUNT | NUMBER(38) | NO | stmt_item 的引用计数信息 | +| STMT_INFO_REF_COUNT | NUMBER(38) | NO | stmt_info 的引用计数信息 | +| MEM_HOLD | NUMBER(38) | NO | 该 prepare stmt 占用的内存大小 | +| STMT_TYPE | NUMBER(38) | NO | 该 prepare stmt 的类型信息 | +| CHECKSUM | NUMBER(38) | NO | 该 prepare stmt 的 checksum | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/14.gv-ps_stat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/14.gv-ps_stat-1.md new file mode 100644 index 000000000..0bcb4eb77 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/14.gv-ps_stat-1.md @@ -0,0 +1,25 @@ +GV$PS_STAT +=============================== + + + +**功能** +--------------------------- + +监控 PS Cache 的整体状态,包括命中率、内存占用、缓存的 Item 数目。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|--------------|----------------|---------------------| +| SVR_IP | VARCHAR2(32) | NO | 服务器的 IP | +| SVR_PORT | NUMBER(38) | NO | 服务器的端口号 | +| STMT_COUNT | NUMBER(38) | NO | PS Cache 中目前缓存了多少语句 | +| HIT_COUNT | NUMBER(38) | NO | PS Cache 总的命中次数 | +| ACCESS_COUNT | NUMBER(38) | NO | 访问 PS Cache 的总次数 | +| MEM_HOLD | NUMBER(38) | NO | PS Cache 占用了多少内存 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/15.gv-server_memstore-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/15.gv-server_memstore-1.md new file mode 100644 index 000000000..5b77d4faf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/15.gv-server_memstore-1.md @@ -0,0 +1,25 @@ +GV$SERVER_MEMSTORE +======================================= + + + +**功能** +--------------------------- + +该视图用于展示当前服务器上 Memtable 的汇总占用信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|--------------|----------------|----------------------| +| SVR_IP | VARCHAR2(32) | NO | 服务器 IP | +| SVR_PORT | NUMBER(38) | NO | 服务器端口 | +| ACTIVE | NUMBER(38) | NO | 当前活跃 Memstore 所占内存 | +| TOTAL | NUMBER(38) | NO | 所有的 Memtable 的内存总大小 | +| FREEZE_TRIGGER | NUMBER(38) | NO | 触发 Memtable 冻结的内存总大小 | +| MEM_LIMIT | NUMBER(38) | NO | Memtable 的内存总限制 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/16.gv-session_wait-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/16.gv-session_wait-1.md new file mode 100644 index 000000000..c32c50b82 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/16.gv-session_wait-1.md @@ -0,0 +1,37 @@ +GV$SESSION_WAIT +==================================== + + + +**功能** +--------------------------- + +该视图用于展示所有服务器上所有 Session 的当前或者上一次等待事件的一些信息,包括等待事件名称、等待耗时等。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | 是否可以为 NULL | **描述** | +|----------------------------|--------------|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SID | NUMBER(38) | NO | Session ID | +| CON_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 服务器的 IP | +| SVR_PORT | NUMBER(38) | NO | 服务器端口 | +| EVENT | VARCHAR2(64) | NO | 等待事件名称 | +| P1TEXT | VARCHAR2(64) | NO | 等待事件的第 1 个参数的描述 | +| P1 | NUMBER(38) | NO | 等待事件的第 1 个参数的值 | +| P2TEXT | VARCHAR2(64) | NO | 等待事件的第 2 个参数的描述 | +| P2 | NUMBER(38) | NO | 等待事件的第 2 个参数的值 | +| P3TEXT | VARCHAR2(64) | NO | 等待事件的第 3 个参数的描述 | +| P3 | NUMBER(38) | NO | 等待事件的第 3 个参数的值 | +| WAIT_CLASS_ID | NUMBER(38) | NO | 等待事件的类别 ID | +| WAIT_CLASS# | NUMBER(38) | NO | 等待事件的类别序号 | +| WAIT_CLASS | VARCHAR2(64) | NO | 等待事件的类别名称 | +| STATE | VARCHAR2(19) | NO | 当前等待事件的状态,包含四种状态: * Waiting:Session 正等待这个事件。 * Waited unknown time:由于设置了 timed_statistics 值为 false,导致不能得到时间信息。表示发生了等待,但时间很短 * Wait short time:表示发生了等待,但由于时间非常短不超过一个时间单位,所以没有记录 * Waited knnow time:如果 Session 等待然后得到了所需资源,那么将从 waiting 进入本状态 | +| WAIT_TIME_MICRO | NUMBER(38) | NO | 等待时间,单位为微秒。如果当前正在等待,表示已经等待的时长;如果当前没有等待,表示最后一次等待的总等待时长 | +| TIME_REMAINING_MICRO | NUMBER(38) | NO | * \> 0:表示最后一次等待时间,单位:毫秒,当前未在等待状态 * 0:Session 正在等待当前的事件 * -1:最后一次等待时间小于 1 个统计单位,当前未在等待状态 * -2:时间统计状态未置为可用,当前未在等待状态 | +| TIME_SINCE_LAST_WAIT_MICRO | NUMBER(38) | NO | 上一次等待结束到现在的时间,单位为毫秒,如果当前正在等待,其值为 0。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/17.gv-session_wait_history-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/17.gv-session_wait_history-1.md new file mode 100644 index 000000000..f9d3e3de3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/17.gv-session_wait_history-1.md @@ -0,0 +1,36 @@ +GV$SESSION_WAIT_HISTORY +============================================ + + + +**功能** +--------------------------- + +该视图用于展示所有服务器上所有 Session 的最近 10 次等待事件的信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|--------------|----------------|------------------------| +| SID | NUMBER(38) | NO | Session ID | +| CON_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 服务器的 IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 服务器端口 | +| SEQ# | NUMBER(38) | NO | 等待事件序列号 | +| EVENT# | NUMBER(38) | NO | 等待事件编号 | +| EVENT | VARCHAR2(64) | NO | 等待事件名称 | +| P1TEXT | VARCHAR2(64) | NO | 等待事件的第 1 个参数的描述 | +| P1 | NUMBER(38) | NO | 等待事件的第 1 个参数的值 | +| P2TEXT | VARCHAR2(64) | NO | 等待事件的第 2 个参数的描述 | +| P2 | NUMBER(38) | NO | 等待事件的第 2 个参数的值 | +| P3TEXT | VARCHAR2(64) | NO | 等待事件的第 3 个参数的描述 | +| P3 | NUMBER(38) | NO | 等待事件的第 3 个参数的值 | +| WAIT_TIME_MICRO | NUMBER(38) | NO | 等待事件的等待时间,单位为毫秒 | +| TIME_SINCE_LAST_WAIT_MICRO | NUMBER(38) | NO | 自上一次等待结束到当前等待的时间,单位为毫秒 | +| WAIT_TIME | NUMBER(38) | NO | 等待事件的等待时间,单位为百分之一秒 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/18.gv-sesstat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/18.gv-sesstat-1.md new file mode 100644 index 000000000..6fedb648f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/18.gv-sesstat-1.md @@ -0,0 +1,25 @@ +GV$SESSTAT +=============================== + + + +**功能** +--------------------------- + +该视图用于展示所有服务器上的 Session 级别的一些统计信息,其中, STATISTIC# 表示统计项编号,可以从 V$STATNAME 中查询到对应统计项编号的统计项名称及其含义。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|--------------|----------------|------------| +| SID | NUMBER(38) | NO | Session 号 | +| CON_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 服务器的 IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 服务器端口号 | +| STATISTIC# | NUMBER(38) | NO | 统计项编号 | +| VALUE | NUMBER(38) | NO | 统计项值 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/19.gv-sql_audit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/19.gv-sql_audit-1.md new file mode 100644 index 000000000..6e14caa70 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/19.gv-sql_audit-1.md @@ -0,0 +1,99 @@ +GV$SQL_AUDIT +================================= + + + +**功能** +--------------------------- + +该视图用于展示所有 Server 上每一次 SQL 请求的来源、执行状态等统计信息。该视图是按照租户拆分的,除了系统租户,其他租户不能跨租户查询。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------|-----------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SVR_IP | VARCHAR2(32) | NO | IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 端口号 | +| REQUEST_ID | NUMBER(38) | NO | 请求的 ID 号 | +| SQL_EXEC_ID | NUMBER(38) | NO | 本次执行的 ID | +| TRACE_ID | VARCHAR2(128) | NO | 该语句的 trace_id | +| SID | NUMBER(38) | NO | Session 连接 ID | +| CLIENT_IP | VARCHAR2(32) | NO | 发送请求的客户端 IP | +| CLIENT_PORT | NUMBER(38) | NO | 发送请求的客户端端口号 | +| TENANT_ID | NUMBER(38) | NO | 发送请求的租户 ID | +| EFFECTIVE_TENANT_ID | NUMBER(38) | NO | 租户 ID | +| TENANT_NAME | VARCHAR2(64) | NO | 发送请求的租户名称 | +| USER_ID | NUMBER(38) | NO | 发送请求的用户 ID | +| USER_NAME | VARCHAR2(64) | NO | 发送请求的用户名称 | +| USER_CLIENT_IP | VARCHAR2(32) | NO | 发送请求的客户端 IP | +| DB_ID | NUMBER(38) | NO | 数据库 ID | +| DB_NAME | VARCHAR2(128) | NO | 数据库名称 | +| SQL_ID | VARCHAR2(32) | NO | 该 SQL 的 ID | +| QUERY_SQL | VARCHAR2(65536) | NO | 实际的 SQL 语句 | +| PLAN_ID | NUMBER(38) | NO | 执行计划 ID | +| AFFECTED_ROWS | NUMBER(38) | NO | 影响行数 | +| RETURN_ROWS | NUMBER(38) | NO | 返回行数 | +| PARTITION_CNT | NUMBER(38) | NO | 该请求涉及的分区数 | +| RET_CODE | NUMBER(38) | NO | 执行结果返回码 | +| QC_ID | NUMBER(38) | NO | 并行执行场景下,调度器 ID | +| DFO_ID | NUMBER(38) | NO | 并行执行场景下,当前执行的子计划 ID | +| SQC_ID | NUMBER(38) | NO | 并行执行场景下,本地协调器 ID | +| WORKER_ID | NUMBER(38) | NO | 并行执行场景下,工作线程 ID | +| EVENT | VARCHAR2(64) | NO | 最长等待事件名称 | +| P1TEXT | VARCHAR2(64) | NO | 等待事件参数 1 | +| P1 | NUMBER(38) | NO | 等待事件参数 1 的值 | +| P2TEXT | VARCHAR2(64) | NO | 等待事件参数 2 | +| P2 | NUMBER(38) | NO | 等待事件参数 2 的值 | +| P3TEXT | VARCHAR2(64) | NO | 等待事件参数 3 | +| P3 | NUMBER(38) | NO | 等待事件参数 3 的值 | +| LEVEL | NUMBER(38) | NO | 等待事件的级别 | +| WAIT_CLASS_ID | NUMBER(38) | NO | 等待事件所属的 Class ID | +| WAIT_CLASS# | NUMBER(38) | NO | 等待事件所属的 Class 的下标 | +| WAIT_CLASS | VARCHAR2(64) | NO | 等待事件所属的 Class 名称 | +| STATE | VARCHAR2(19) | NO | 等待事件的状态 | +| WAIT_TIME_MICRO | NUMBER(38) | NO | 该等待事件所等待的时间,单位:微秒 | +| TOTAL_WAIT_TIME_MICRO | NUMBER(38) | NO | 执行过程所有等待的总时间,单位:微秒 | +| TOTAL_WAITS | NUMBER(38) | NO | 执行过程总等待的次数 | +| RPC_COUNT | NUMBER(38) | NO | 发送 RPC 个数 | +| PLAN_TYPE | NUMBER(38) | NO | 执行计划类型: * local * remote * distribute | +| IS_INNER_SQL | NUMBER(38) | NO | 是否为内部 SQL 请求 | +| IS_EXECUTOR_RPC | NUMBER(38) | NO | 当前请求是否为 RPC 请求 | +| IS_HIT_PLAN | NUMBER(38) | NO | 是否命中 plan_cache | +| REQUEST_TIME | NUMBER(38) | NO | 开始执行时间点 | +| ELAPSED_TIME | NUMBER(38) | NO | 接收到请求到执行结束所消耗的总时间 | +| NET_TIME | NUMBER(38) | NO | 发送 RPC 到接收到请求的时间 | +| NET_WAIT_TIME | NUMBER(38) | NO | 接收到请求到进入队列的时间 | +| QUEUE_TIME | NUMBER(38) | NO | 请求在队列的等待时间 | +| DECODE_TIME | NUMBER(38) | NO | 出队列后 Decode 的时间 | +| GET_PLAN_TIME | NUMBER(38) | NO | 开始 Process 到获得计划的时间 | +| EXECUTE_TIME | NUMBER(38) | NO | 计划执行所消耗的时间 | +| APPLICATION_WAIT_TIME | NUMBER(38) | NO | 所有 application 类事件的总时间 | +| CONCURRENCY_WAIT_TIME | NUMBER(38) | NO | 所有 Concurrency 类事件的总时间 | +| USER_IO_WAIT_TIME | NUMBER(38) | NO | 所有 user_io 类事件的总时间 | +| SCHEDULE_TIME | NUMBER(38) | NO | 所有 Schedule 类事件的时间 | +| ROW_CACHE_HIT | NUMBER(38) | NO | 行缓存命中次数 | +| BLOOM_FILTER_CACHE_HIT | NUMBER(38) | NO | Bloom Filter 缓存命中次数 | +| BLOCK_CACHE_HIT | NUMBER(38) | NO | 块缓存命中次数 | +| BLOCK_INDEX_CACHE_HIT | NUMBER(38) | NO | 块索引缓存命中次数 | +| DISK_READS | NUMBER(38) | NO | 物理读次数 | +| RETRY_CNT | NUMBER(38) | NO | 重试次数 | +| TABLE_SCAN | NUMBER(38) | NO | 判断该请求是否含全表扫描 | +| CONSISTENCY_LEVEL | NUMBER(38) | NO | 一致性级别 | +| MEMSTORE_READ_ROW_COUNT | NUMBER(38) | NO | Memstore 中的读行数 | +| SSSTORE_READ_ROW_COUNT' | NUMBER(38) | NO | Ssstore 中连读的行数 | +| REQUEST_MEMORY_USED | NUMBER(38) | NO | 该请求消耗的内存 | +| EXPECT_WORKER_COUNT | NUMBER(38) | NO | 请求期望的工作线程数 | +| USED_WORKER_COUNT | NUMBER(38) | NO | 请求实际使用的工作线程数 | +| SCHED_INFO | VARCHAR2(16384) | YES | 请求的调度信息 | +| PS_STMT_ID | NUMBER(38) | NO | 请求对应的 Prepare ID | +| TRANSACTION_HASH | NUMBER(38) | NO | 请求对应的事务的 Hash 值 | +| REQUEST_TYPE | NUMBER(38) | NO | 请求对应的类型: * 0:表示非法 * 1:表示是一个内部请求 * 2:表示是一个本地请求,例如,Local 计划 * 3:表示远程请求 * 4:表示分布式请求 * 5:表示 SQL 的 Prepare 请求 * 6:表示 SQL 得到 execute stmt 请求 | +| IS_BATCHED_MULTI_STMT | NUMBER(38) | NO | 是否进行 batch multi stmt 的优化 | +| OB_TRACE_INFO | VARCHAR2(4096) | NO | 用户设置的 Trace 信息 | +| PLAN_HASH | NUMBER(38) | NO | 执行计划的 Hash 值 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/2.gv-global_transaction.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/2.gv-global_transaction.md new file mode 100644 index 000000000..6004bbb81 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/2.gv-global_transaction.md @@ -0,0 +1,32 @@ +GV$GLOBAL_TRANSACTION +========================================== + + + +功能 +----------- + +该视图用于展示所有服务器上当前活跃的全局事务(主要包括 XA 事务)的信息。 + +字段说明 +------------- + + + +| **字段** | **类型** | **是否可以为NULL** | **说明** | +|--------------|--------------|---------------|--------------------------------------------| +| SVR_IP | RAW(64) | NO | 服务器 IP | +| SVR_PORT | NUMBER | NO | 服务器端口号 | +| FORMATID | NUMBER | NO | 全局事务格式标识符 | +| GLOBALID | RAW(64) | NO | 全局事务事务标识符 | +| BRANCHID | RAW(64) | NO | 全局事务分支限定符 | +| BRANCHES | NUMBER | NO | 该全局事务中分支总数 | +| REFCOUNT | NUMBER | NO | 该全局事务中分支总数 | +| PREPARECOUNT | NUMBER | NO | 该全局事务中已 PREPARED 的分支总数 | +| STATE | VARCHAR2(38) | NO | 该分支的状态 | +| FLAGS | NUMBER | NO | 该分支状态的数字表示 | +| COUPLING | VARCHAR2(15) | NO | 分支间的关系(TIGHTLY COUPLED 或者 LOOSELY COUPLED) | +| CON_ID | NUMBER | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/20.gv-sql_workarea-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/20.gv-sql_workarea-1.md new file mode 100644 index 000000000..1f76a193e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/20.gv-sql_workarea-1.md @@ -0,0 +1,43 @@ +GV$SQL_WORKAREA +==================================== + + + +**功能** +--------------------------- + +之前受 SQL 自动内存管理负责执行的所有 Operator 的 workarea 统计信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------| +| ADDRESS | RAW(8) | NO | SQL 对应的 Handle 地址。目前暂不支持该字段,当前该字段默认为 NULL | +| HASH_VALUE | NUMBER | NO | 语句的 Hash Value 的值。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_ID | VARCHAR2(32) | NO | SQL 语句的 SQL 唯一标示 | +| CHILD_NUMBER | NUMBER | NO | 该 Cursor 的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| WORKAREA_ADDRESS | RAW(8) | NO | workarea 的地址。目前暂不支持该字段,当前该字段默认为 NULL | +| OPERATION_TYPE | VARCHAR2(40) | NO | workarea 的操作符类型,例如 Sort、Hash Join、Group by等 | +| OPERATION_ID | NUMBER(38) | NO | 计划树中识别操作符的唯一标识 | +| POLICY | VARCHAR2(10) | NO | workarea 的策略: * MANUAL * AUTO | +| ESTIMATED_OPTIMAL_SIZE | NUMBER(38) | NO | 在最优情况下执行操作符的估算内存大小,单位:bytes | +| ESTIMATED_ONEPASS_SIZE | NUMBER(38) | NO | 在 one pass 场景下,执行操作符估算内存大小,单位:bytes | +| LAST_MEMORY_USED | NUMBER(38) | NO | 游标在上次执行使用的内存大小,单位:bytes | +| LAST_EXECUTION | VARCHAR2(10) | NO | 上次执行时 workarea 选择的是 optimal、one pass 还是 multi passes | +| LAST_DEGREE | NUMBER(38) | NO | 上次执行并行度 | +| TOTAL_EXECUTIONS | NUMBER(38) | NO | 总共执行使用 workarea 的次数 | +| OPTIMAL_EXECUTIONS | NUMBER(38) | NO | 最优场景下执行的次数 | +| ONEPASS_EXECUTIONS | NUMBER(38) | NO | one pass 场景执行的次数 | +| MULTIPASSES_EXECUTIONS | NUMBER(38) | NO | multi passes 场景执行的次数 | +| ACTIVE_TIME | NUMBER(38) | NO | workarea 活跃时的平均时间,单位:s | +| MAX_TEMPSEG_SIZE | NUMBER(38) | NO | work area 使用时最大的临时磁盘空间,单位:bytes;如果是 NULL,则表示未使用临时空间 | +| LAST_TEMPSEG_SIZE | NUMBER(38) | NO | workarea 上次执行时使用的临时磁盘空间;如果是 NULL,表示未使用临时空间 | +| CON_ID | NUMBER(38) | NO | 租户 ID | + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/21.gv-sql_workarea_active.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/21.gv-sql_workarea_active.md new file mode 100644 index 000000000..3a004b006 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/21.gv-sql_workarea_active.md @@ -0,0 +1,42 @@ +GV$SQL_WORKAREA_ACTIVE +=========================================== + + + +**功能** +--------------------------- + +当前活跃 Operator 的 workarea 信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|--------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SQL_HASH_VALUE | NUMBER | NO | 被执行语句的 Hash 值。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_ID | VARCHAR2(32) | NO | SQL 语句的 SQL 唯一标示 | +| SQL_EXEC_START | DATE | NO | SQL 开始执行时间。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_EXEC_ID | NUMBER(38) | NO | SQL 执行唯一标示 | +| WORKAREA_ADDRESS | RAW(8) | NO | workarea 地址。目前暂不支持该字段,当前该字段默认为 NULL | +| OPERATION_TYPE | VARCHAR2(40) | NO | workarea 操作符类型,例如 Sort、Hash Join、Group by 等 | +| OPERATION_ID | NUMBER(38) | NO | 计划树中识别操作符的唯一标示 | +| POLICY | VARCHAR2(6) | NO | workarea 的策略: * MANUAL * AUTO | +| SID | NUMBER(38) | NO | Session 的唯一标示 | +| QCINST_ID | NUMBER | NO | 查询协调者的实例 ID。目前暂不支持该字段,当前该字段默认为 NULL | +| QCSID | NUMBER | NO | 查询协调者 Session 标示 ID。目前暂不支持该字段,当前该字段默认为 NULL | +| ACTIVE_TIME | NUMBER(38) | NO | workarea 活跃时平均时间,单位:ms | +| WORK_AREA_SIZE | NUMBER | NO | 操作符使用 workarea 最大大小,单位:bytes | +| EXPECT_SIZE | NUMBER(38) | NO | workarea 期望的大小,单位:bytes | +| ACTUAL_MEM_USED | NUMBER(38) | NO | 申请 workarea 的内存量,单位:bytes | +| MAX_MEM_USED | NUMBER(38) | NO | 使用 workarea 最大的内存使用量,单位:bytes | +| NUMBER_PASSES | NUMBER(38) | NO | workarea 在哪个模式下下运行: * 0:optimal 模式 * 1:one pass 模式 * \>=2:multi pass 模式 | +| TEMPSEG_SIZE | NUMBER(38) | NO | workarea 使用的临时空间大小,单位:bytes;如果为 NULL 则表示没有发生写临时文件 | +| TABLESPACE | VARCHAR2(20) | NO | 写临时文件的表命名空间;如果为 NULL,表示没有发生写临时文件。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGRFNO# | NUMBER | NO | 写临时文件相关的文件数量;NULL 表示没有发生写临时文件。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGBLK# | NUMBER | NO | workarea 创建临时文件的 block 数量;NULL 表示没有发生写临时文件。目前暂不支持该字段,当前该字段默认为 NULL | +| CON_ID | NUMBER(38) | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/22.gv-sql_workarea_histogram-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/22.gv-sql_workarea_histogram-1.md new file mode 100644 index 000000000..6c38204ef --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/22.gv-sql_workarea_histogram-1.md @@ -0,0 +1,26 @@ +GV$SQL_WORKAREA_HISTOGRAM +============================================== + + + +**功能** +--------------------------- + +展示之前所有 work area 执行的统计信息,例如在区间 1M~2M 之间全 in-memory 处理的次数、one-pass 次数等。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|------------|----------------|------------------------------------------| +| LOW_OPTIMAL_SIZE | NUMBER(38) | NO | workarea 在 optimal 模式下最低内存量 | +| HIGH_OPTIMAL_SIZE | NUMBER(38) | NO | workarea 在 optimal 模式下最高内存量 | +| OPTIMAL_EXECUTIONS | NUMBER(38) | NO | workarea 在最低和最高区间的最优模式下执行的次数 | +| ONEPASS_EXECUTIONS | NUMBER(38) | NO | workarea 在最低和最高区间的 one pass 模式下执行的次数 | +| MULTIPASSES_EXECUTIONS | NUMBER(38) | NO | workarea 在最低和最高区间的 multi passes 模式下执行的次数 | +| TOTAL_EXECUTIONS | NUMBER(38) | NO | workarea 总共执行的次数 | +| CON_ID | NUMBER(38) | NO | 租户 ID | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/23.gv-sysstat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/23.gv-sysstat-1.md new file mode 100644 index 000000000..89acb6d7a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/23.gv-sysstat-1.md @@ -0,0 +1,40 @@ +GV$SYSSTAT +=============================== + + + +**功能** +--------------------------- + +该视图用于展示所有服务器上系统级别的一些统计信息。 + +其中: + +* STATISTIC# 表示统计项编号,同一统计项的编号在不同 OBServer 版本中可能会发生变化。 + + + +* STAT_ID 表示统计项 ID,同一统计项的 ID 在不同 OBServer 版本中保证相同。 + + + + + + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|--------------|----------------|--------| +| CON_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 服务器 IP | +| SVR_PORT | NUMBER(38) | NO | 服务器端口号 | +| STATISTIC# | NUMBER(38) | NO | 统计项编号 | +| VALUE | NUMBER(38) | NO | 统计项值 | +| STAT_ID | NUMBER(38) | NO | 统计项 ID | +| NAME | VARCHAR2(64) | NO | 统计项名称 | +| CLASS | NUMBER(38) | NO | 统计项类别 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/24.gv-system_event-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/24.gv-system_event-1.md new file mode 100644 index 000000000..e55845cb0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/24.gv-system_event-1.md @@ -0,0 +1,32 @@ +GV$SYSTEM_EVENT +==================================== + + + +**功能** +--------------------------- + +该视图用于展示所有服务器上租户系统级别的一些等待事件,统计每一类等待事件的发生次数、等待时间、超时次数等。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|--------------|----------------|-----------------| +| CON_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 服务器 IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 服务器端口号 | +| EVENT_ID | NUMBER(38) | NO | 等待事件 ID | +| EVENT | VARCHAR2(64) | NO | 等待事件名称 | +| WAIT_CLASS_ID | NUMBER(38) | NO | 等待事件类别 ID | +| WAIT_CLASS# | NUMBER(38) | NO | 等待事件类别编号 | +| WAIT_CLASS | VARCHAR2(64) | NO | 得到事件类别名称 | +| TOTAL_WAITS | NUMBER(38) | NO | 总等待次数 | +| TOTAL_TIMEOUTS | NUMBER(38) | NO | 等待超时次数 | +| TIME_WAITED | NUMBER(38) | NO | 总等待时间,单位为百分之一秒 | +| AVERAGE_WAIT | NUMBER(38) | NO | 平均等待时间,单位为百分之一秒 | +| TIME_WAITED_MICRO | NUMBER(38) | NO | 总等待时间,单位为微秒 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/25.gv-global_transaction-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/25.gv-global_transaction-1.md new file mode 100644 index 000000000..ddc0835c6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/25.gv-global_transaction-1.md @@ -0,0 +1,32 @@ +GV$GLOBAL_TRANSACTION +========================================== + + + +**功能** +--------------------------- + +显示当前活跃的全局事务的信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|----------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| FORMATID | NUMBER(38) | NO | 全局事务的格式标识符 | +| SVR_IP | VARCHAR2(128) | NO | 服务器 IP | +| SVR_PORT | NUMBER(38) | NO | 服务器端口号 | +| GLOBALID | VARCHAR2(256 ) | NO | 全局事务的标识符 | +| BRANCHID | VARCHAR2(256 ) | NO | 全局事务的分支资格 | +| BRANCHES | NUMBER(38) | NO | 全局事务中的分支机构总数 | +| REFCOUNT | NUMBER(38) | NO | 全局事务的同级数,必须与分支机构相同 | +| PREPARECOUNT | NUMBER | NO | 已准备的全局事务分支机构数 | +| STATE | CHAR(6) | NO | 全局事务分支的状态: * ACTIVE * COLLECTING * FINALIZED * FAILED * RECOVERING * UNASSOCIATED * FORGOTTEN * READY FOR RECOVERY * NO-READONLY FAILED * SIBLING INFO WRITTEN * \[ORACLE COORDINATED\]ACTIVE * \[ORACLE COORDINATED\]COLLECTING * \[ORACLE COORDINATED\]FINALIZED * \[ORACLE COORDINATED\]FAILED * \[ORACLE COORDINATED\]RECOVERING * \[ORACLE COORDINATED\]UNASSOCIATED * \[ORACLE COORDINATED\]FORGOTTEN * \[ORACLE COORDINATED\]READY FOR RECOVERY * \[ORACLE COORDINATED\]NO-READONLY FAILED * \[MULTINODE\]ACTIVE * \[MULTINODE\]COLLECTING * \[MULTINODE\]FINALIZED * \[MULTINODE\]FAILED * \[MULTINODE\]RECOVERING * \[MULTINODE\]UNASSOCIATED * \[MULTINODE\]FORGOTTEN * \[MULTINODE\]READY FOR RECOVERY * \[MULTINODE\]NO-READONLY FAILED * \[MULTINODE\]SIBLING INFO WRITTEN * COMBINATION | +| FLAGS | NUMBER | NO | 状态的数字表示 | +| COUPLING | CHAR(15) | NO | 表示分支是自由(FREE),松散耦合(LOOSELY COUPLED)还是紧密耦合(TIGHTLY COUPLED) | +| CON_ID | VARCHAR2(256) | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/26.gv-open_cursor.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/26.gv-open_cursor.md new file mode 100644 index 000000000..fd0b98bb4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/26.gv-open_cursor.md @@ -0,0 +1,30 @@ +GV$OPEN_CURSOR +=================================== + + + +功能 +----------------------- + +`GV$OPEN_CURSOR` 视图用于展示被缓存在 Plan Cache 中的执行计划的信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|----------------------|--------------|------------|------------------------------------------------| +| SVR_IP | VARCHAR2(46) | NO | 本机的 IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 本机的端口号 | +| SADDR | VARCHAR2(8) | NO | Session 所在的内存地址。 | +| SID | NUMBER(38) | NO | Session ID。 | +| USER_NAME | VARCHAR2(30) | NO | 用户名。 | +| ADDRESS | VARCHAR2(8) | NO | SQL 地址,与 SQL 的 Hash 值一起唯一定位一个 SQL,目前值为 `NULL`。 | +| HASH_VALUE | NUMBER(38) | NO | SQL 的 Hash 值。 | +| SQL_ID | VARCHAR2(32) | NO | SQL ID。 | +| SQL_TEXT | VARCHAR2(60) | NO | SQL 的文本的前 60 个字符。 | +| LAST_SQL_ACTIVE_TIME | DATE | NO | 最后一次执行 SQL 计划的时间。 | +| SQL_EXEC_ID | NUMBER(38) | NO | 如果 SQL 计划正在被执行,则显示对应的 SQL ID。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/27.gv-sstable-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/27.gv-sstable-1.md new file mode 100644 index 000000000..ed4e109b4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/27.gv-sstable-1.md @@ -0,0 +1,43 @@ +GV$SSTABLE +=============================== + + + +功能 +----------------------- + +`GV$SSTABLE` 视图用于展示租户的 SSTable 信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|--------------------------------|---------------|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SVR_IP | VARCHAR2(46) | NO | 服务器的 IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 服务器的端口号 | +| TABLE_TYPE | NUMBER(38) | NO | 表的类型 | +| TABLE_ID | NUMBER(38) | NO | 表 ID | +| TABLE_NAME | VARCHAR2(256) | NO | 表名 | +| TENANT_ID | NUMBER(38) | NO | 租户 ID | +| PARTITION_ID | NUMBER(38) | NO | 分区 ID | +| INDEX_ID | NUMBER(38) | NO | 主表或索引表的 ID | +| BASE_VERSION | NUMBER(38) | NO | 该表中存储数据的 `trans_version` 范围的最小值 | +| MULTI_VERSION_START | NUMBER(38) | NO | 该表中多版本数据的起始 `trans_version` | +| SNAPSHOT_VERSION | NUMBER(38) | NO | 该表中存储数据的 `trans_version` 范围的最大值 | +| START_LOG_TS | NUMBER(38) | NO | 该表中数据的日志时间戳范围的左边界 | +| END_LOG_TS | NUMBER(38) | NO | 该表中数据的日志时间戳范围的右边界 | +| MAX_LOG_TS | NUMBER(38) | NO | 该表中数据的日志时间戳范围的最大值 | +| VERSION | NUMBER(38) | NO | 该表的版本 | +| LOGICAL_DATA_VERSION | NUMBER(38) | NO | 该表的逻辑数据版本 | +| SIZE | NUMBER(38) | NO | 该表的大小 | +| IS_ACTIVE | NUMBER(38) | NO | 该表是否处于活跃状态 | +| REF | NUMBER(38) | NO | 该表引用的计数 | +| WRITE_REF | NUMBER(38) | NO | 该表写引用的计数 | +| TRX_COUNT | NUMBER(38) | NO | 该表上活跃事务的数量 | +| PENDING_LOG_PERSISTING_ROW_CNT | NUMBER(38) | NO | 持久化 Redo Log 的回收数量 | +| UPPER_TRANS_VERSION | NUMBER(38) | NO | 该表中存储数据的 `trans_version` 的上限 | +| CONTAIN_UNCOMMITTED_ROW | NUMBER(38) | NO | 该表是否包含未提交的事务行: * 0:表示该表不包含未提交的事务行 * 1:表示该表包含未提交的事务行 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/28.v-instance.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/28.v-instance.md new file mode 100644 index 000000000..31ce0e94b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/28.v-instance.md @@ -0,0 +1,42 @@ +V$INSTANCE +=============================== + + + +**功能** +--------------------------- + +该视图展示了当前数据库实例的状态。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|--------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| INST_ID | NUMBER | NO | 数据库实例对应的 ID | +| INSTANCE_NUMBER | NUMBER | NO | 用于注册实例的 instance number。目前暂不支持该字段,当前该字段默认为 NULL | +| INSTANCE_NAME | VARCHAR2(16) | NO | 实例的名字。目前暂不支持该字段,当前该字段默认为 NULL | +| HOST_NAME | VARCHAR2(64) | NO | 实例所在的 Server 地址 | +| VERSION | VARCHAR2(17) | NO | 数据库实例的版本 | +| STARTUP_TIME | DATE | NO | 实例的启动时间。目前暂不支持该字段,当前该字段默认为 NULL | +| STATUS | VARCHAR2(12) | NO | 实例的状态。目前暂不支持该字段,当前该字段默认为 NULL | +| PARALLEL | VARCHAR2(3) | NO | 实例是否挂载在一个 cluster database 上,字段值为 YES 或者 NO。目前暂不支持该字段,当前该字段默认为 NULL | +| THREAD# | NUMBER | NO | Redo 线程数。目前暂不支持该字段,当前该字段默认为 NULL | +| ARCHIVER | VARCHAR2(7 | NO | Archiver 日志存储状态,有以下三个状态: * STOPPED * STARTED * FAILED 目前暂不支持该字段,当前该字段默认为 NULL | +| LOG_SWITCH_WAIT | VARCHAR2(15) | NO | 日志切换所等到的事件。目前暂不支持该字段,当前该字段默认为 NULL | +| LOGINS | VARCHAR2(10) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| SHUTDOWN_PENDING | VARCHAR2(3) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| DATABASE_STATUS | VARCHAR2(17) | NO | 数据库的状态 | +| INSTANCE_ROLE | VARCHAR2(18) | NO | 实例的角色: * PIMARY_INSTANCE * SECONDARY_INSTANCE * UNKNWON 目前暂不支持该字段,当前该字段默认为 NULL | +| ACTIVE_STATE | VARCHAR2(9) | NO | 实例的静默状态。目前暂不支持该字段,当前该字段默认为 NULL | +| BLOCKED | VARCHAR2(2) | NO | 是否所有的请求都被阻塞了: * YES * NO 目前暂不支持该字段,当前该字段默认为 NULL | +| CON_ID | NUMBER | NO | 数据所在的 Container ID。目前暂不支持该字段,当前该字段默认为 NULL | +| INSTANCE_MODE | VARCHAR2(11) | NO | 实例的模式: * READ-WRITE * READ-ONLY * READ-MOSTLY 目前暂不支持该字段,当前该字段默认为 NULL | +| EDITION | VARCHAR2(7) | NO | 实例的商业版本。目前暂不支持该字段,当前该字段默认为 NULL | +| FAMILY | VARCHAR2(80) | NO | 仅限内部使用。目前暂不支持该字段,当前该字段默认为 NULL | +| DATABASE_TYPE | VARCHAR2(15) | NO | 数据库实例的类型。目前暂不支持该字段,当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/29.v-memory-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/29.v-memory-1.md new file mode 100644 index 000000000..c5007f1dc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/29.v-memory-1.md @@ -0,0 +1,25 @@ +V$MEMORY +============================= + + + +**功能** +--------------------------- + +展示租户级别的内存统计信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|---------------|----------------|-------------------------------------| +| CON_ID | NUMBER(38) | NO | 租户 ID | +| CONTEXT | VARCHAR2(256) | NO | 内存所属 mod 名称 | +| COUNT | NUMBER | NO | alloc 与 free 的差值,当前该 mod 使用中的内存单元个数 | +| USED | NUMBER | NO | 该 mod 当前使用的内存数值,单位:Byte | +| ALLOC_COUNT | NUMBER | NO | 内存申请的总个数 | +| FREE_COUNT | NUMBER | NO | 内存释放的总个数 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/3.gv-concurrent_limit_sql-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/3.gv-concurrent_limit_sql-1.md new file mode 100644 index 000000000..c0525db70 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/3.gv-concurrent_limit_sql-1.md @@ -0,0 +1,30 @@ +GV$CONCURRENT_LIMIT_SQL +============================================ + + + +功能 +----------- + +展示当前租户的所有限流信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|-----------------|----------------|----------------------------------------| +| TENANT_ID | NUMBER(38) | NO | 租户 ID | +| DATABASE_ID | NUMBER(38) | NO | 数据库 ID | +| OUTLINE_ID | NUMBER(38) | NO | 限流对应的 Outline ID | +| DATABASE_NAME | VARCHAR2(128) | NO | 数据库名称 | +| OUTLINE_NAME | VARCHAR2(128) | NO | 限流对应的 Outline 名称 | +| OUTLINE_CONTENT | VARCHAR2(65536) | NO | 限流对应的 Outline 内容,可以为空 | +| VISIBLE_SIGNATURE | VARCHAR2(65536) | NO | Signature 的反序列化结果,为了便于查看 Signature 的信息 | +| SQL_TEXT | VARCHAR2(65536) | NO | 创建 Outline 时,在子句中指定的 SQL | +| CONCURRENT_NUM | NUMBER(38) | NO | 当前 SQL 限制的并发数 | +| LIMIT_TARGET | VARCHAR2(65536) | NO | 被限流的 SQL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/30.v-memstore-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/30.v-memstore-1.md new file mode 100644 index 000000000..02eb2d4f2 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/30.v-memstore-1.md @@ -0,0 +1,25 @@ +V$MEMSTORE +=============================== + + + +**功能** +--------------------------- + +该视图用于展示当前服务器上所有租户的 Memtable 的内存使用状况。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|------------|----------------|------------------------------| +| TENANT_ID | NUMBER(38) | NO | 租户 ID | +| ACTIVE | NUMBER(38) | NO | 当前活跃的 Memtable 的内存占用大小,单位:字节 | +| TOTAL | NUMBER(38) | NO | 当前所有 Memtable 的内存占用大小,单位:字节 | +| FREEZE_TRIGGER | NUMBER(38) | NO | 触发 Memtable 冻结的内存大小,单位:字节 | +| MEM_LIMIT | NUMBER(38) | NO | Memtable 的内存大小限制,单位:字节 | +| FREEZE_CNT | NUMBER(38) | NO | 冻结次数 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/31.v-memstore_info-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/31.v-memstore_info-1.md new file mode 100644 index 000000000..0cf392124 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/31.v-memstore_info-1.md @@ -0,0 +1,30 @@ +V$MEMSTORE_INFO +==================================== + + + +**功能** +--------------------------- + +该视图用于展示当前服务器上所有租户的所有分区的 memtable 的明细信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|---------------|----------------|----------------| +| CON_ID | NUMBER(38) | NO | 租户 ID | +| PARTITION_ID | NUMBER(38) | NO | 分区 ID | +| VERSION | VARCHAR2(128) | NO | 冻结版本号 | +| BASE_VERSION | NUMBER(38) | NO | 数据的快照版本号的左边界 | +| MULTI_VERSION_START | NUMBER(38) | NO | 最小的老版本数据的快照版本号 | +| SNAPSHOT_VERSION | NUMBER(38) | NO | 数据的快照版本号的右边界 | +| IS_ACTIVE | NUMBER(38) | NO | 是否是活跃的 | +| USED | NUMBER(38) | NO | 使用的内存大小,单位为字节 | +| HASH_ITEMS | NUMBER(38) | NO | Hash 索引中记录的行数 | +| BTREE_ITEMS | NUMBER(38) | NO | Btree 索引中记录的行数 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/32.v-nls_parameters.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/32.v-nls_parameters.md new file mode 100644 index 000000000..446f36294 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/32.v-nls_parameters.md @@ -0,0 +1,68 @@ +V$NLS_PARAMETERS +===================================== + + + +**功能** +--------------------------- + +查看 Session 级别的 NLS 参数。 + +**相关视图** +----------------------------- + +* NLS_INSTANCE_PARAMETERS + + + +* NLS_DATABASE_PARAMETERS + + + +* NLS_SESSION_PARAMETERS + + + + + + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------|-----------------|----------------|--------| +| PARAMETER | VARCHAR2(128) | NO | 参数名称 | +| VALUE | VARCHAR2(65536) | YES | 参数取值 | +| CON_ID | NUMBER | NO | 无实际含义 | + + + +**示例** +--------------------------- + +```sql +obclient> select * from V$NLS_PARAMETERS; ++-------------------------+----------------------------------+--------+ +| PARAMETER | VALUE | CON_ID | ++-------------------------+----------------------------------+--------+ +| NLS_DATE_FORMAT | YYYY-MM-DD HH24:MI:SS | 0 | +| NLS_TIMESTAMP_FORMAT | YYYY-MM-DD HH24:MI:SS.FF | 0 | +| NLS_TIMESTAMP_TZ_FORMAT | YYYY-MM-DD HH24:MI:SS.FF TZR TZD | 0 | +| NLS_LANGUAGE | AMERICAN | 0 | +| NLS_TERRITORY | AMERICA | 0 | +| NLS_SORT | BINARY | 0 | +| NLS_COMP | BINARY | 0 | +| NLS_CHARACTERSET | AL32UTF8 | 0 | +| NLS_NCHAR_CHARACTERSET | AL16UTF16 | 0 | +| NLS_DATE_LANGUAGE | AMERICAN | 0 | +| NLS_LENGTH_SEMANTICS | BYTE | 0 | +| NLS_NCHAR_CONV_EXCP | FALSE | 0 | +| NLS_CALENDAR | GREGORIAN | 0 | +| NLS_NUMERIC_CHARACTERS | ., | 0 | ++-------------------------+----------------------------------+--------+ +14 rows in set (0.01 sec) +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/33.v-ob_sql_workarea_memory_info-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/33.v-ob_sql_workarea_memory_info-1.md new file mode 100644 index 000000000..dbbb553be --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/33.v-ob_sql_workarea_memory_info-1.md @@ -0,0 +1,28 @@ +V$OB_SQL_WORKAREA_MEMORY_INFO +================================================== + + + +**功能** +--------------------------- + +用于查询 SQL workarea总体的一些信息,包括最大可用内存、当前使用内存、当前 hold 内存等。通过该视图可以知道当前租户下 workarea 的使用情况,例如内存利用率等。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|------------|----------------|-------------------------------------------------------------------------------------------------------------------------| +| MAX_WORKAREA_SIZE | NUMBER(38) | NO | 最大 workarea 内存,由参数决定可以使用多少内存。 | +| WORKAREA_HOLD_SIZE | NUMBER(38) | NO | workarea 当前的 hold 内存大小 **说明** 由于具体的使用量无法从内存管理模块获取到,故只能获取 hold 值。 | +| MAX_AUTO_WORKAREA_SIZE | NUMBER(38) | NO | auto 时,预计最大可用内存大小可以简单认为最大可用内存会根据公式 `max_work_area_size - hold + total_mem_used` 进行计算得到,表示当前 workarea 情况下 auto 管理的最大内存大小 | +| MEM_TARGET | NUMBER(38) | NO | 当前 workarea 可用内存的目标大小,与 max_auto_work_area 的区别在于该值是 max_auto_work_area 的一定比例 | +| TOTAL_MEM_USED | NUMBER(38) | NO | 当前 auto 内存使用大小,这里是由 SQL 自动内存管理模块统计的大小,不是真正使用大小 | +| GLOBAL_MEM_BOUND | NUMBER(38) | NO | auto 模式下,全局最大可用内存大小 | +| DRIFT_SIZE | NUMBER(38) | NO | 当前需求内存变化大小,主要用来当波动一定范围,会自动触发重新计算 global bound size | +| WORKAREA_COUNT | NUMBER(38) | NO | 注册的 operator profile 个数 | +| MANUAL_CALC_COUNT | NUMBER(38) | NO | 非定时触发的计算 global bound size 次数 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/34.v-plan_cache_plan_explain-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/34.v-plan_cache_plan_explain-1.md new file mode 100644 index 000000000..5f8098fe4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/34.v-plan_cache_plan_explain-1.md @@ -0,0 +1,36 @@ +V$PLAN_CACHE_PLAN_EXPLAIN +============================================== + + + +**功能** +--------------------------- + +该视图用于展示缓存在当前 Server 的计划缓存中的物理执行计划。 +**说明** + + + +该视图只支持get操作,查询时需要指定 TENANT_ID、LAN_ID 字段。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|----------------|----------------|------------------| +| TENANT_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 端口号 | +| PLAN_ID | NUMBER(38) | NO | 计划的 ID | +| PLAN_DEPTH | NUMBER(38) | NO | Operator 在展示时的深度 | +| PLAN_LINE_ID | NUMBER(38) | NO | Operator 的编号 | +| OPERATOR | VARCHAR2(128) | NO | Operator 的名称 | +| NAME | VARCHAR2(256) | NO | 表的名称 | +| ROWS | NUMBER(38) | NO | 预估的结果行数 | +| COST | NUMBER(38) | NO | 预估的代价 | +| PROPERTY | VARCHAR2(4096) | NO | 对应 Operator 的信息 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/35.v-plan_cache_plan_stat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/35.v-plan_cache_plan_stat-1.md new file mode 100644 index 000000000..1a13fbeb2 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/35.v-plan_cache_plan_stat-1.md @@ -0,0 +1,81 @@ +V$PLAN_CACHE_PLAN_STAT +=========================================== + + + +**功能** +--------------------------- + +该视图记录了当前租户在当前 Server 上的计划缓存中缓存的每一个缓存对象的状态。 +**注意** + + + +该表不仅缓存了 SQL 计划对象,也缓存了 PL 对象,例如匿名块、PL Package 以及 PL Function 等,某些字段仅在特定对象下有效。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------------------|-----------------------------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TENANT_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 机器 IP | +| SVR_PORT | NUMBER(38) | NO | 机器端口号 | +| PLAN_ID | NUMBER(38) | NO | 缓存对象的 ID | +| SQL_ID | VARCHAR2(32) | NO | 缓存对象对应的 SQL ID,如果是 PL 对象,该字段为 NULL | +| TYPE | NUMBER(38) | NO | 对于 SQL 计划缓存,字段表示计划的类型: * 1:表示 local plan * 2:表示 remote plan * 3:表示 distribute plan 对于 PL 对象缓存,字段表示 PL 对象的类型: * 1:表示 Procedure * 2:表示 Function * 3:表示 Package * 4:表示 Anonymous Block | +| IS_BIND_SENSITIVE | NUMBER(38) | NO | 该计划是否需要打开 ACS | +| IS_BIND_AWARE | NUMBER(38) | NO | 该计划已经打开了 ACS | +| DB_ID | NUMBER(38) | NO | 数据库的 ID | +| STATEMENT | VARCHAR2(65536) | NO | 对于 SQL 计划,该字段为参数化后的 SQL 语句;对于匿名块对象,该字段为参数化后的匿名块语句;其他对象该字段无效 | +| QUERY_SQL | VARCHAR2(65536) | NO | 对于 SQL 计划,字段为第一次加载计划时查询的原始 SQL 语句;对于匿名块字段,该字段为参数化后的匿名块语句 | +| SPECIAL_PARAMS | VARCHAR2(4096) | NO | 表示不可参数化的参数值 | +| PARAM_INFOS | VARCHAR2(65536) | NO | 表示参数化信息 | +| SYS_VARS | VARCHAR2(4096) | NO | 影响缓存对象的系统变量的值 | +| PLAN_HASH | NUMBER(38) | NO | SQL 计划的 Hash 值 | +| FIRST_LOAD_TIME | TIMESTAMP(6) WITH LOCAL TIME ZONE | NO | 第一次被加载时间 | +| SCHEMA_VERSION | NUMBER(38) | NO | Schema 版本号 | +| MERGED_VERSION | NUMBER(38) | NO | 当前缓存的计划对应的合并版本号 | +| LAST_ACTIVE_TIME | TIMESTAMP(6) WITH LOCAL TIME ZONE | NO | 上一次被执行时间 | +| AVG_EXE_USEC | NUMBER(38) | NO | 平均执行时间 | +| SLOWEST_EXE_TIME | TIMESTAMP(6) WITH LOCAL TIME ZONE | NO | 最慢执行时间戳 | +| SLOWEST_EXE_USEC | NUMBER(38) | NO | 最慢一次执行耗时 | +| SLOW_COUNT | NUMBER(38) | NO | 当前 SQL 计划成为慢查询的次数 | +| HIT_COUNT | NUMBER(38) | NO | 被命中次数 | +| PLAN_SIZE | NUMBER(38) | NO | 缓存对象占用的内存大小 | +| EXECUTIONS | NUMBER(38) | NO | 执行次数 | +| DISK_READS | NUMBER(38) | NO | 所有执行物理读次数 | +| DIRECT_WRITES | NUMBER(38) | NO | 所有执行写盘的次数 | +| BUFFERS_GETS | NUMBER(38) | NO | 所有执行逻辑读次数 | +| APPLICATION_WATI_TIME | NUMBER(38) | NO | 所有执行所有 application 类事件的总时间 | +| CONCURRENCY_WAIT_TIME | NUMBER(38) | NO | 所有执行所有 concurrency 类事件的总时间 | +| USER_IO_WAIT_TIME | NUMBER(38) | NO | 所有执行所有 user_io 类事件的总时间 | +| ROWS_PROCESSED | NUMBER(38) | NO | 所有执行选择的结果行数或执行更改表中的行数 | +| ELAPSED_TIME | NUMBER(38) | NO | 所有执行接收到请求到执行结束消耗时间 | +| CPU_TIME | NUMBER(38) | NO | 所有执行消耗的 CPU 时间 | +| LARGE_QUERYS | NUMBER(38) | NO | 被判断为大查询的次数 | +| DELAYED_LARGE_QUERYS | NUMBER(38) | NO | 被判断为大查询且被丢入大查询队列的次数 | +| DELAYED_PX_QUERYS | NUMBER(38) | NO | 并行查询被丢回队列重试的次数 | +| OUTLINE_VERSION | NUMBER(38) | NO | Outline 的版本号 | +| OUTLINE_ID | NUMBER(38) | NO | Outline 的 ID,为 -1 表示不是通过绑定 Outline 生成的计划 | +| OUTLINE_DATA | VARCHAR2(65536) | NO | 计划对应的 OUTLINE 信息 | +| HINTS_INFO | VARCHAR2(65536) | NO | SQL 计划的 Hint 信息 | +| HINTS_ALL_WORKED | NUMBER(38) | NO | SQL 计划中的 Hint 是否都已经生效 | +| ACS_SEL_INFO | VARCHAR2(65536) | NO | 当前 ACS 计划对应的选择率空间 | +| TABLE_SCAN | NUMBER(38) | NO | 表示该查询是否为主键扫描 | +| EVOLUTION | NUMBER(38) | NO | 表示该执行计划是否在演进中 | +| EVO_EXECUTIONS | NUMBER(38) | NO | 演进次数 | +| EVO_CPU_TIME | NUMBER(38) | NO | 演进过程中总的执行 CPU 时间 | +| TIMEOUT_COUNT | NUMBER(38) | NO | 超时次数 | +| PS_STMT_ID | NUMBER(38) | NO | prepare statement id | +| SESSID | NUMBER(38) | NO | 缓存对象所在的 Session ID | +| TEMP_TABLES | VARCHAR2(65536) | NO | SQL 计划中包含的临时表表名,如果没有临时表,字段为空 | +| IS_USE_JIT | NUMBER(38) | NO | SQL 计划是否开启了表达式编译执行 | +| OBJECT_TYPE | VARCHAR2(65536) | NO | 缓存对象的类型: * SQL_PLAN * PROCEDURE * FUNCTION * PACKAGE * ANONYMOUS | +| PL_SCHEMA_ID | NUMBER(38) | NO | 对于非匿名块的 PL 对象,该字段为缓存对象的 schema id;对于匿名块,该字段为 prepare statement id;对于 SQL 计划,该字段无意义 | +| IS_BATCHED_MULTI_STMT | NUMBER(38) | NO | 表示是否为 batched multistmt 优化的计划 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/36.v-plan_cache_stat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/36.v-plan_cache_stat-1.md new file mode 100644 index 000000000..2361bf638 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/36.v-plan_cache_stat-1.md @@ -0,0 +1,29 @@ +V$PLAN_CACHE_STAT +====================================== + + + +**功能** +--------------------------- + +该视图记录当前租户在当前 Server 的计划缓存整体的状态。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|------------|----------------|-----------------------------------| +| SQL_NUM | NUMBER(38) | NO | plan_cache 涉及 SQL 的条数 | +| MEM_USED | NUMBER(38) | NO | plan_cache 已经使用的内存 | +| MEM_HOLD | NUMBER(38) | NO | plan_cache 持有的内存 | +| ACCESS_COUNT | NUMBER(38) | NO | 进行 plan_cache 的次数 | +| HIT_COUNT | NUMBER(38) | NO | 命中 plan_cache 的次数 | +| HIT_RATE | NUMBER(38) | NO | plan_cache 的命中率 | +| PLAN_NUM | NUMBER(38) | NO | 计划的个数 | +| MEM_LIMIT | NUMBER(38) | NO | plan_cache 的内存上限 | +| HASH_BUCKET | NUMBER(38) | NO | plan_cache hash map 中的 Bucket 的个数 | +| STMTKEY_NUM | NUMBER(38) | NO | plan_cache 中 stmt_key 的个数 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/37.v-ps_item_info-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/37.v-ps_item_info-1.md new file mode 100644 index 000000000..a05058fd2 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/37.v-ps_item_info-1.md @@ -0,0 +1,30 @@ +V$PS_ITEM_INFO +=================================== + + + +**功能** +--------------------------- + +用于给 prepared statement 提供监控功能,包含 PS Cache 中所有 prepare statement 的基本信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|-----------------|----------------|--------------------------------------| +| SVR_IP | VARCHAR2(32) | NO | 机器 IP | +| SVR_PORT | NUMBER(38) | NO | 机器端口号 | +| STMT_ID | NUMBER(38) | NO | PS Cache 中对应语句的 stmt_id 信息 | +| DB_ID | NUMBER(38) | NO | prepare 语句涉及到的数据库 ID | +| PS_SQL | VARCHAR2(65536) | NO | prepare 的 SQL 信息 | +| PARAM_COUNT | NUMBER(38) | NO | prepare 的参数个数信息 | +| STMT_ITEM_REF_COUNT | NUMBER(38) | NO | stmt_item 的引用计数信息 | +| STMT_INFO_REF_COUNT | NUMBER(38) | NO | stmt_info 的引用计数信息 | +| MEM_HOLD | NUMBER(38) | NO | 该 prepare stmt 占用的内存大小 | +| STMT_TYPE | NUMBER(38) | NO | 该 prepare stmt 的类型信息 | +| CHECKSUM | NUMBER(38) | NO | 该 prepare stmt 的 checksum | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/38.v-ps_stat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/38.v-ps_stat-1.md new file mode 100644 index 000000000..95f2c3857 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/38.v-ps_stat-1.md @@ -0,0 +1,26 @@ +V$PS_STAT +============================== + + + +**功能** +--------------------------- + +监控 PS Cache 的整体状态,包括命中率、内存占用、缓存的 Item 数目。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|--------------|----------------|---------------------| +| SVR_IP | VARCHAR2(32) | NO | 机器 IP | +| SVR_PORT | NUMBER(38) | NO | 机器端口号 | +| STMT_COUNT | NUMBER(38) | NO | PS Cache 中目前缓存了多少语句 | +| HIT_COUNT | NUMBER(38) | NO | PS Cache 总的命中次数 | +| ACCESS_COUNT | NUMBER(38) | NO | 访问 PS Cache 的总次数 | +| MEM_HOLD | NUMBER(38) | NO | PS Cache 占用了多少内存 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/39.v-session_wait-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/39.v-session_wait-1.md new file mode 100644 index 000000000..aa08130f3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/39.v-session_wait-1.md @@ -0,0 +1,38 @@ +V$SESSION_WAIT +=================================== + + + +**功能** +--------------------------- + +该视图用于展示当前服务器上所有 Session 的当前或者上一次等待事件的信息,包括等待事件名称、等待耗时等。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SID | NUMBER(38) | NO | Session ID | +| CON_ID | NUMBER(38) | NO | 租户 ID | +| EVENT | NUMBER(38) | NO | 等待事件名称 | +| P1TEXT | VARCHAR2(64) | NO | 等待事件的第 1 个参数的描述 | +| P1 | NUMBER(38) | NO | 等待事件的第 1 个参数的值 | +| P2TEXT | VARCHAR2(64) | NO | 等待事件的第 2 个参数的描述 | +| P2 | NUMBER(38) | NO | 等待事件的第 2 个参数的值 | +| P3TEXT | VARCHAR2(64) | NO | 等待事件的第 3 个参数的描述 | +| P3 | NUMBER(38) | NO | 等待事件的第 3 个参数的值 | +| WAIT_CLASS_ID | NUMBER(38) | NO | 等待事件的类别 ID | +| WAIT_CLASS# | NUMBER(38) | NO | 等待事件的类别序号 | +| WAIT_CLASS | VARCHAR2(64) | NO | 等待事件的类别名称 | +| STATE | VARCHAR2(19) | NO | 当前等待事件的状态,包含四种状态: * Waiting:Session 正等待这个事件 * Waited unknown time:由于设置了 timed_statistics 值为 false,导致不能得到时间信息。表示发生了等待,但时间很短 * Wait short time:表示发生了等待,但由于时间非常短不超过一个时间单位,所以没有记录 * Waited knnow time:如果 Session 等待然后得到了所需资源,那么将从 waiting 进入本状态 | +| WAIT_TIME_MICRO | NUMBER(38) | NO | 等待时间,单位为微秒。如果当前正在等待,表示已经等待的时长;如果当前没有等待,表示最后一次等待的总等待时长 | +| TIME_REMAINING_MICRO | NUMBER(38) | NO | * \>0:表示最后一次等待时间,单位:毫秒,当前未在等待状态 * 0:表示 Session 正在等待当前的事件 * -1:表示最后一次等待时间小于 1个统计单位,当前未在等待状态 * -2:表示时间统计状态未置为可用,当前未在等待状态 | +| TIME_SINCE_LAST_WAIT_MICRO | NUMBER(38) | NO | 上一次等待结束到现在的时间,单位:毫秒,如果当前正在等待,其值为 0 | + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/4.gv-instance.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/4.gv-instance.md new file mode 100644 index 000000000..3f4ab29e4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/4.gv-instance.md @@ -0,0 +1,43 @@ +GV$INSTANCE +================================ + + + +功能 +----------- + +该视图展示了当前数据库实例的状态。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为NULL** | **描述** | +|------------------|--------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| | | | | +| INST_ID | NUMBER | NO | 数据库实例对应的 ID | +| INSTANCE_NUMBER | NUMBER | NO | 用于注册实例的 instance number。目前暂不支持该字段,且当前该字段默认为 NULL | +| INSTANCE_NAME | VARCHAR2(16) | NO | 实例的名字。目前暂不支持该字段,且当前该字段默认为 NULL | +| HOST_NAME | VARCHAR2(64) | NO | 实例所在的 Server 地址 | +| VERSION | VARCHAR2(17) | NO | 数据库实例的版本 | +| STARTUP_TIME | DATE | NO | 实例的启动时间。目前暂不支持该字段,且当前该字段默认为 NULL | +| STATUS | VARCHAR2(12) | NO | 实例的状态。目前暂不支持该字段,且当前该字段默认为 NULL | +| PARALLEL | VARCHAR2(3) | NO | 实例是否挂载在一个 cluster database 上,字段值为 yes 或者 no。目前暂不支持该字段,且当前该字段默认为 NULL | +| THREAD# | NUMBER | NO | redo 线程数。目前暂不支持该字段,且当前该字段默认为 NULL | +| ARCHIVER | VARCHAR2(7 | NO | Archiver 日志存储状态,有以下三个状态: * STOPPED * STARTED * FAILED 目前暂不支持该字段,且当前该字段默认为 NULL | +| LOG_SWITCH_WAIT | VARCHAR2(15) | NO | 日志切换所等到的事件。目前暂不支持该字段,且当前该字段默认为 NULL | +| LOGINS | VARCHAR2(10) | NO | * ALLOWED * RESTRICTED 目前暂不支持该字段,且当前该字段默认为 NULL | +| SHUTDOWN_PENDING | VARCHAR2(3) | NO | YES 或 NO。目前暂不支持该字段,且当前该字段默认为 NULL | +| DATABASE_STATUS | VARCHAR2(17) | NO | 数据库的状态 | +| INSTANCE_ROLE | VARCHAR2(18) | NO | 实例的角色: * PIMARY_INSTANCE * SECONDARY_INSTANCE * UNKNWON 目前暂不支持该字段,且当前该字段默认为 NULL | +| ACTIVE_STATE | VARCHAR2(9) | NO | 实例的静默状态。目前暂不支持该字段,且当前该字段默认为 NULL | +| BLOCKED | VARCHAR2(2) | NO | 是否所有的请求都被阻塞了 * YES * NO 目前暂不支持该字段,且当前该字段默认为 NULL | +| CON_ID | NUMBER | NO | 数据所在的 Container ID。目前暂不支持该字段,且当前该字段默认为 NULL | +| INSTANCE_MODE | VARCHAR2(11) | NO | 实例的模式: * READ-WRITE * READ-ONLY * READ-MOSTLY 目前暂不支持该字段,且当前该字段默认为 NULL | +| EDITION | VARCHAR2(7) | NO | 实例的商业版本。目前暂不支持该字段,且当前该字段默认为 NULL | +| FAMILY | VARCHAR2(80) | NO | 仅限内部使用。目前暂不支持该字段,且当前该字段默认为 NULL | +| DATABASE_TYPE | VARCHAR2(15) | NO | 数据库实例的类型。目前暂不支持该字段,且当前该字段默认为 NULL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/40.v-session_wait_history-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/40.v-session_wait_history-1.md new file mode 100644 index 000000000..db15955c2 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/40.v-session_wait_history-1.md @@ -0,0 +1,34 @@ +V$SESSION_WAIT_HISTORY +=========================================== + + + +**功能** +--------------------------- + +该视图用于展示当前服务器上所有 Session 的最近 10 次等待事件的信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------------------|--------------|----------------|------------------------| +| SID | NUMBER(38) | NO | Ssession ID | +| CON_ID | NUMBER(38) | NO | 租户 ID | +| SEQ# | NUMBER(38) | NO | 等待事件序列号 | +| EVENT# | NUMBER(38) | NO | 等待事件编号 | +| EVENT | VARCHAR2(64) | NO | 等待事件名称 | +| P1TEXT | VARCHAR2(64) | NO | 等待事件的第一个参数的描述 | +| P1 | NUMBER(38) | NO | 等待事件的第一个参数的值 | +| P2TEXT | VARCHAR2(64) | NO | 等待事件的第二个参数的描述 | +| P2 | NUMBER(38) | NO | 等待事件的第二个参数的值 | +| P3TEXT | VARCHAR2(64) | NO | 等待事件的第三个参数的描述 | +| P3 | NUMBER(38) | NO | 等待事件的第三个参数的值 | +| WAIT_TIME_MICRO | NUMBER(38) | NO | 等待事件的等待时间,单位为毫秒 | +| TIME_SINCE_LAST_WAIT_MICRO | NUMBER(38) | NO | 自上一次等待结束到当前等待的时间,单位为毫秒 | +| WAIT_TIME | NUMBER(38) | NO | 等待事件的等待时间,单位为百分之一秒 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/41.v-sesstat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/41.v-sesstat-1.md new file mode 100644 index 000000000..b543cda15 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/41.v-sesstat-1.md @@ -0,0 +1,25 @@ +V$SESSTAT +============================== + + + +**功能** +--------------------------- + +该视图用于展示 Session 级别的一些统计信息。 + +其中,STATISTIC# 表示统计项编号,可以从 V$STATNAME 中查询到对应统计项编号的统计项名称及其含义。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|------------|----------------|-----------| +| SID | NUMBER(38) | NO | Session 号 | +| CON_ID | NUMBER(38) | NO | 租户 ID | +| STATISTIC# | NUMBER(38) | NO | 统计项编号 | +| VALUE | NUMBER(38) | NO | 统计项值 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/42.v-sql_audit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/42.v-sql_audit-1.md new file mode 100644 index 000000000..eeb24b9e1 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/42.v-sql_audit-1.md @@ -0,0 +1,101 @@ +V$SQL_AUDIT +================================ + + + +**功能** +--------------------------- + +该视图用于展示当前 Server 的每一次 SQL 请求的来源、执行状态等统计信息。该视图是按照租户拆分的,除了系统租户,其他租户不能跨租户查询。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------------|-----------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SVR_IP | VARCHAR2(32) | NO | IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 端口号 | +| REQUEST_ID | NUMBER(38) | NO | 请求的 ID 号 | +| SQL_EXEC_ID | NUMBER(38) | NO | 本次执行的 ID | +| TRACE_ID | NUMBER(38) | NO | 该语句的 trace_id | +| SID | NUMBER(38) | NO | Session 连接 ID | +| CLIENT_IP | VARCHAR2(32) | NO | 发送请求的客户端 IP | +| CLIENT_PORT | NUMBER(38) | NO | 发送请求的客户端端口号 | +| TENANT_ID | NUMBER(38) | NO | 发送请求的租户 ID | +| EFFECTIVE_TENANT_ID | NUMBER(38) | NO | 租户 ID | +| TENANT_NAME | VARCHAR2(64) | NO | 发送请求的租户名称 | +| USER_ID | NUMBER(38) | NO | 发送请求的用户 ID | +| USER_NAME | VARCHAR2(64) | NO | 发送请求的用户名称 | +| USER_CLIENT_IP | VARCHAR2(32) | NO | 发送请求的客户端 IP | +| DB_ID | NUMBER(38) | NO | 数据库 ID | +| DB_NAME | VARCHAR2(128) | NO | 数据库名称 | +| SQL_ID | VARCHAR2(32) | NO | 该 SQL 的 ID | +| QUERY_SQL | VARCHAR2(65536) | NO | 实际的 SQL 语句 | +| PLAN_ID | NUMBER(38) | NO | 执行计划 ID | +| AFFECTED_ROWS | NUMBER(38) | NO | 影响行数 | +| RETURN_ROWS | NUMBER(38) | NO | 返回行数 | +| PARTITION_CNT | NUMBER(38) | NO | 该请求涉及的分区数 | +| RET_CODE | NUMBER(38) | NO | 执行结果返回码 | +| DFO_ID | NUMBER(38) | NO | 并行执行场景下,当前执行的子计划 ID | +| SQC_ID | NUMBER(38) | NO | 并行执行场景下,本地协调器 ID | +| WORKER_ID | NUMBER(38) | NO | 并行执行场景下,工作线程 ID | +| EVENT | VARCHAR2(64) | NO | 最长等待事件名称 | +| P1TEXT | VARCHAR2(64) | NO | 等待事件参数 1 | +| P1 | NUMBER(38) | NO | 等待事件参数 1 的值 | +| P2TEXT | VARCHAR2(64) | NO | 等待事件参数 2 | +| P2 | NUMBER(38) | NO | 等待事件参数 2 的值 | +| P3TEXT | VARCHAR2(64) | NO | 等待事件参数 3 | +| P3 | NUMBER(38) | NO | 等待事件参数 3 的值 | +| LEVEL | NUMBER(38) | NO | 等待事件的级别 | +| WAIT_CLASS_ID | NUMBER(38) | NO | 等待事件所属的 Class ID | +| WAIT_CLASS# | NUMBER(38) | NO | 等待事件所属的 Class 的下标 | +| WAIT_CLASS | VARCHAR2(64) | NO | 等待事件所属的 Class 名称 | +| STATE | VARCHAR2(19) | NO | 等待事件的状态 | +| WAIT_TIME_MICRO | NUMBER(38) | NO | 该等待事件所等待的时间,单位:微秒 | +| TOTAL_WAIT_TIME_MICRO | NUMBER(38) | NO | 执行过程所有等待的总时间,单位:微秒 | +| TOTAL_WAITS | NUMBER(38) | NO | 执行过程总等待的次数 | +| RPC_COUNT | NUMBER(38) | NO | 发送 RPC 个数 | +| PLAN_TYPE | NUMBER(38) | NO | 执行计划类型: * local * remote * distribute | +| IS_INNER_SQL | NUMBER(38) | NO | 是否内部 SQL 请求 | +| IS_EXECUTOR_RPC | NUMBER(38) | NO | 当前请求是否为 RPC 请求 | +| IS_HIT_PLAN | NUMBER(38) | NO | 是否命中 plan_cache | +| REQUEST_TIME | NUMBER(38) | NO | 开始执行时间点 | +| ELAPSED_TIME | NUMBER(38) | NO | 接收到请求到执行结束消耗总时间 | +| NET_TIME | NUMBER(38) | NO | 发送 RPC 到接收到请求的时间 | +| NET_WAIT_TIME | NUMBER(38) | NO | 接收到请求到进入队列的时间 | +| QUEUE_TIME | NUMBER(38) | NO | 请求在队列等待事件 | +| DECODE_TIME | NUMBER(38) | NO | 出队列后 Decode 时间 | +| GET_PLAN_TIME | NUMBER(38) | NO | 开始 Process 到获得计划的时间 | +| EXECUTE_TIME | NUMBER(38) | NO | 计划执行所消耗的时间 | +| APPLICATION_WAIT_TIME | NUMBER(38) | NO | 所有 Application 类事件的总时间 | +| CONCURRENCY_WAIT_TIME | NUMBER(38) | NO | 所有 Concurrency 类事件的总时间 | +| USER_IO_WAIT_TIME | NUMBER(38) | NO | 所有 user_io 类事件的总时间 | +| SCHEDULE_TIME | NUMBER(38) | NO | 所有 Schedule 类事件的时间 | +| ROW_CACHE_HIT | NUMBER(38) | NO | 行缓存命中次数 | +| BLOOM_FILTER_CACHE_HIT | NUMBER(38) | NO | Bloom Filter 缓存命中次数 | +| BLOCK_CACHE_HIT | NUMBER(38) | NO | 块缓存命中次数 | +| BLOCK_INDEX_CACHE_HIT | NUMBER(38) | NO | 块索引缓存命中次数 | +| DISK_READS | NUMBER(38) | NO | 物理读次数 | +| RETRY_CNT | NUMBER(38) | NO | 重试次数 | +| TABLE_SCAN | NUMBER(38) | NO | 判断该请求是否含全表扫描 | +| CONSISTENCY_LEVEL | NUMBER(38) | NO | 一致性级别 | +| MEMSTORE_READ_ROW_COUNT | NUMBER(38) | NO | Memstore 中的读行数 | +| SSSTORE_READ_ROW_COUNT' | NUMBER(38) | NO | Ssstore 中连读的行数 | +| REQUEST_MEMORY_USED | NUMBER(38) | NO | 该请求消耗的内存 | +| EXPECT_WORKER_COUNT | NUMBER(38) | NO | 请求期望的工作线程数 | +| USED_WORKER_COUNT | NUMBER(38) | NO | 请求实际使用的工作线程数 | +| SCHED_INFO | VARCHAR2(16384) | NO | 请求的调度信息 | +| FUSE_ROW_CACHE_HIT | NUMBER(38) | NO | 目前暂不支持该字段,当前该字段默认为 NULL | +| PS_STMT_ID | NUMBER(38) | NO | 请求对应的 Prepare ID | +| TRANSACTION_HASH | NUMBER(38) | NO | 请求对应的事务的 Hash 值 | +| REQUEST_TYPE | NUMBER(38) | NO | 请求对应的类型: * 0:表示非法 * 1:表示是一个内部请求 * 2:表示是一个本地请求,例如,Local 计划 * 3:表示远程请求 * 4:表示分布式请求 * 5:表示 SQL 的 prepare 请求 * 6:表示 SQL 得到 execute stmt 请求 | +| IS_BATCHED_MULTI_STMT | NUMBER(38) | NO | 表示是否进行了 batch multi stmt 的优化 | +| OB_TRACE_INFO | VARCHAR2(4096) | NO | 用户设置的 trace info 信息 | +| PLAN_HASH | NUMBER(38) | NO | 执行计划 Hash 值 | + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/43.v-sql_workarea-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/43.v-sql_workarea-1.md new file mode 100644 index 000000000..b5fbbfe24 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/43.v-sql_workarea-1.md @@ -0,0 +1,41 @@ +V$SQL_WORKAREA +=================================== + + + +**功能** +--------------------------- + +统计之前受 SQL 自动内存管理负责执行过的所有 Operator 的 workarea 统计信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------| +| ADDRESS | RAW(8) | NO | SQL 对应的 Handle 地址,目前未指定值。目前暂不支持该字段,当前该字段默认为 NULL | +| HASH_VALUE | NUMBER | NO | 语句的 Hash Value 值。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_ID | VARCHAR2(32) | NO | SQL 语句的 SQL 唯一标示 | +| CHILD_NUMBER | NUMBER | NO | 该 Cursor 的数量。目前暂不支持该字段,当前该字段默认为 NULL | +| WORKAREA_ADDRESS | RAW(8) | NO | workarea地址 暂不支持该字段,目前该字段默认为 NULL | +| OPERATION_TYPE | VARCHAR2(40) | NO | workarea 操作符类型,例如 Sort、Hash Join、Group by 等 | +| OPERATION_ID | NUMBER(38) | NO | 计划树中识别操作符的唯一标示 | +| POLICY | VARCHAR2(10) | NO | workarea 的策略: * MANUAL * AUTO | +| ESTIMATED_OPTIMAL_SIZE | NUMBER(38) | NO | 在最优情况下执行操作符的估算内存大小,单位:bytes | +| ESTIMATED_ONEPASS_SIZE | NUMBER(38) | NO | one pass 场景下,执行操作符估算内存大小,单位:bytes | +| LAST_MEMORY_USED | NUMBER(38) | NO | 游标在上次执行使用的内存大小,单位:bytes | +| LAST_EXECUTION | VARCHAR2(10) | NO | 上次执行时 workarea 选择的是 optimal、one pass 还是 multi passes | +| LAST_DEGREE | NUMBER(38) | NO | 上次执行并行度 | +| TOTAL_EXECUTIONS | NUMBER(38) | NO | 总共执行使用 workarea 的次数 | +| OPTIMAL_EXECUTIONS | NUMBER(38) | NO | 最优场景下执行的次数 | +| ONEPASS_EXECUTIONS | NUMBER(38) | NO | one pass 场景执行的次数 | +| MULTIPASSES_EXECUTIONS | NUMBER(38) | NO | multi passes 场景执行的次数 | +| ACTIVE_TIME | NUMBER(38) | NO | workarea 活跃时的平均时间,单位:s | +| MAX_TEMPSEG_SIZE | NUMBER(38) | NO | work area使用时最大的临时磁盘空间,单位:bytes;如果是 NULL,则表示未使用临时空间 | +| LAST_TEMPSEG_SIZE | NUMBER(38) | NO | workarea 上次执行时使用的临时磁盘空间;如果是 NULL,则表示未使用临时空间 | +| CON_ID | NUMBER(38) | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/44.v-sql_workarea_active-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/44.v-sql_workarea_active-1.md new file mode 100644 index 000000000..7340cc7dc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/44.v-sql_workarea_active-1.md @@ -0,0 +1,42 @@ +V$SQL_WORKAREA_ACTIVE +========================================== + + + +**功能** +--------------------------- + +当前活跃 Operator 的 workarea 信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------|--------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| SQL_HASH_VALUE | NUMBER | NO | 被执行语句的 Hash 值。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_ID | VARCHAR2(32) | NO | SQL 语句的 SQL 唯一标示 | +| SQL_EXEC_START | DATE | NO | SQL 开始执行时间。目前暂不支持该字段,当前该字段默认为 NULL | +| SQL_EXEC_ID | NUMBER(38) | NO | SQL 执行唯一标示 | +| WORKAREA_ADDRESS | RAW(8) | NO | workarea 地址。目前暂不支持该字段,当前该字段默认为 NULL | +| OPERATION_TYPE | VARCHAR2(40) | NO | workarea操作符类型,例如 Sort、Hash Join、Group by 等 | +| OPERATION_ID | NUMBER(38) | NO | 计划树中识别操作符的唯一标示 | +| POLICY | VARCHAR2(6) | NO | workarea 的策略: * MANUAL * AUTO | +| SID | NUMBER(38) | NO | Session 的唯一标识 | +| QCINST_ID | NUMBER | NO | 查询协调者的实例 ID。目前暂不支持该字段,当前该字段默认为 NULL | +| QCSID | NUMBER | NO | 查询协调者 Session 标识 ID。目前暂不支持该字段,当前该字段默认为 NULL | +| ACTIVE_TIME | NUMBER(38) | NO | workarea 活跃时平均时间,单位:ms | +| WORK_AREA_SIZE | NUMBER | NO | 操作符使用 workarea 最大大小,单位:bytes | +| EXPECT_SIZE | NUMBER | NO | workarea 期望的大小,单位:bytes | +| ACTUAL_MEM_USED | NUMBER(38) | NO | 申请 workarea 的内存量,单位:bytes | +| MAX_MEM_USED | NUMBER(38) | NO | 使用 workarea 最大的内存使用量,单位:bytes | +| NUMBER_PASSES | NUMBER(38) | NO | workarea 在哪个模式下运行: * 0:optimal 模式 * 1:one pass 模式 * \>=2:multi passes 模式 | +| TEMPSEG_SIZE | NUMBER(38) | NO | workarea 使用的临时空间大小,单位:bytes;如果为 NULL,则表示没有发生写临时文件 | +| TABLESPACE | VARCHAR2(20) | NO | 写临时文件的表命名空间;如果为 NULL,表示没有发生写临时文件。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGRFNO# | NUMBER | NO | 写临时文件相关的文件数量;NULL 标示没有发生写临时文件。目前暂不支持该字段,当前该字段默认为 NULL | +| SEGBLK# | NUMBER | NO | workarea 创建临时文件的 block 数量;NULL 表示没有发生写临时文件。目前暂不支持该字段,当前该字段默认为 NULL | +| CON_ID | NUMBER(38) | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/45.v-sql_workarea_histogram-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/45.v-sql_workarea_histogram-1.md new file mode 100644 index 000000000..4ad67e2d5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/45.v-sql_workarea_histogram-1.md @@ -0,0 +1,27 @@ +V$SQL_WORKAREA_HISTOGRAM +============================================= + + + +**功能** +--------------------------- + +展示之前所有 workarea 执行的统计信息,包括在区间 1M~2M 之间全 in-memory 处理的次数、one-pass 次数等。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|------------|----------------|------------------------------------------| +| LOW_OPTIMAL_SIZE | NUMBER(38) | NO | workarea 在 optimal 模式下最低内存量 | +| HIGH_OPTIMAL_SIZE | NUMBER(38) | NO | workarea 在 optimal 模式下最高内存量 | +| OPTIMAL_EXECUTIONS | NUMBER(38) | NO | workarea 在最低和最高区间的最优模式下执行的次数 | +| ONEPASS_EXECUTIONS | NUMBER(38) | NO | workarea 在最低和最高区间的 one pass 模式下执行的次数 | +| MULTIPASSES_EXECUTIONS | NUMBER(38) | NO | workarea 在最低和最高区间的 multi passes 模式下执行的次数 | +| TOTAL_EXECUTIONS | NUMBER(38) | NO | workarea 总共执行的次数 | +| CON_ID | NUMBER(38) | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/46.v-sysstat-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/46.v-sysstat-1.md new file mode 100644 index 000000000..ed7f58aad --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/46.v-sysstat-1.md @@ -0,0 +1,39 @@ +V$SYSSTAT +============================== + + + +**功能** +--------------------------- + +该视图用于展示当前服务器上系统级别的一些统计信息。 + +其中: + +* STATISTIC# 表示统计项编号,同一统计项的编号在不同 OBServer 版本中可能会发生变化。 + + + +* STAT_ID 表示统计项 ID,同一统计项的 ID 在不同 OBServer 版本中保证相同。 + + + + + + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------|--------------|----------------|--------| +| CON_ID | NUMBER(38) | NO | 租户 ID | +| STATISTIC# | NUMBER(38) | NO | 统计项编号 | +| VALUE | NUMBER(38) | NO | 统计项值 | +| STAT_ID | NUMBER(38) | NO | 统计项 ID | +| NAME | VARCHAR2(64) | NO | 统计项名称 | +| CLASS | NUMBER(38) | NO | 统计项类别 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/47.v-system_event-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/47.v-system_event-1.md new file mode 100644 index 000000000..b863ea894 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/47.v-system_event-1.md @@ -0,0 +1,31 @@ +V$SYSTEM_EVENT +=================================== + + + +**功能** +--------------------------- + +该视图用于展示当前服务器上租户系统级别的一些等待事件,统计每一类等待事件的发生次数、等待时间、超时次数等。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|--------------|----------------|-----------------| +| CON_ID | NUMBER(38) | NO | 租户ID | +| EVENT_ID | NUMBER(38) | NO | 等待事件 ID | +| EVENT | VARCHAR2(64) | NO | 等待事件名称 | +| WAIT_CLASS_ID | NUMBER(38) | NO | 等待事件类别 ID | +| WAIT_CLASS# | NUMBER(38) | NO | 等待事件类别编号 | +| WAIT_CLASS | VARCHAR2(64) | NO | 得到事件类别名称 | +| TOTAL_WAITS | NUMBER(38) | NO | 总等待次数 | +| TOTAL_TIMEOUTS | NUMBER(38) | NO | 等待超时次数 | +| TIME_WAITED | NUMBER(38) | NO | 总等待时间,单位为百分之一秒 | +| AVERAGE_WAIT | NUMBER(38) | NO | 平均等待时间,单位为百分之一秒 | +| TIME_WAITED_MICRO | NUMBER(38) | NO | 总等待时间,单位为微秒 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/48.v-version.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/48.v-version.md new file mode 100644 index 000000000..3dc285bb5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/48.v-version.md @@ -0,0 +1,36 @@ +V$VERSION +============================== + + + +**功能** +--------------------------- + +查看数据库产品所有组件的名称和版本信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|-----------------|----------------|-----------| +| BANNER | VARCHAR2(65536) | YES | 产品的名字及版本号 | +| CON_ID | NUMBER | NO | 容器 ID | + + + +示例 +----------------------- + +```sql +obclient> SELECT * FROM V$VERSION; ++---------------------------------------------------------------------------------------------+--------+ +| BANNER | CON_ID | ++---------------------------------------------------------------------------------------------+--------+ +| OceanBase 2.2.30 (r1-f2fc546f0eb229d2c1cb9cf957b481db2b52bb4d) (Built Oct 21 2019 21:23:43) | 0 | ++---------------------------------------------------------------------------------------------+--------+ +1 row in set (0.03 sec) +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/49.v-sql_monitor_statname-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/49.v-sql_monitor_statname-1.md new file mode 100644 index 000000000..527078293 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/49.v-sql_monitor_statname-1.md @@ -0,0 +1,31 @@ +V$SQL_MONITOR_STATNAME +=========================================== + + + +**功能** +--------------------------- + +本表用于解释 GV$SQL_PLAN_MONITOR 的 OTHERSTAT_X_ID 字段中数字的含义。 + +**相关视图或表** +------------------------------- + +GV$SQL_PLAN_MONITOR + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|---------------|----------------|--------------------------| +| CON_ID | NULL | NO | 租户 ID | +| ID | NUMBER(38) | NO | 字段 ID | +| GROUP_ID | NUMBER(38) | NO | 字段分类 ID 。同一类算子会共享一个分类 ID | +| NAME | VARCHAR2(40) | NO | 字段名称 | +| DESCRIPTION | VARCHAR2(200) | NO | 字段详细描述 | +| TYPE | NUMBER | NO | 保留字段 | +| FLAGS | NUMBER | NO | 保留字段 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/5.gv-memory-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/5.gv-memory-1.md new file mode 100644 index 000000000..d898672a5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/5.gv-memory-1.md @@ -0,0 +1,28 @@ +GV$MEMORY +============================== + + + +功能 +----------- + +该视图用于展示所有服务器上每个租户的内存使用状况。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------|----------------|----------------|-------------------------------------| +| CON_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 服务器的 IP 地址 | +| SVR_PORT | NUMBER(38) | NO | 服务器端口号 | +| CONTEXT | VARCHAR2(256) | NO | 内存模块名称 | +| COUNT | decimal(20, 0) | NO | alloc 与 free 的差值,当前该 mod 使用中的内存单元个数 | +| USED | decimal(20, 0) | NO | 该 mod 当前使用的内存数值,单位:Byte | +| ALLOC_COUNT | decimal(20, 0) | NO | 内存申请的总个数 | +| FREE_COUNT | decimal(20, 0) | NO | 内存释放的总个数 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/50.v-restore_point-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/50.v-restore_point-1.md new file mode 100644 index 000000000..2dde4c608 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/50.v-restore_point-1.md @@ -0,0 +1,23 @@ +V$RESTORE_POINT +==================================== + + + +**功能** +--------------------------- + +显示有关还原点的信息。 + +**字段说明** +----------------------------- + + + +| 字段名称 | 类型 | **是否可以为 NULL** | **描述** | +|-----------|-----------------------------------|----------------|----------------| +| TENANT_ID | NUMBER(38) | YES | 租户 ID | +| SCN | NUMBER(38) | NO | 创建还原点时的数据库 SCN | +| TIME | TIMESTAMP(6) WITH LOCAL TIME ZONE | NO | 创建还原点时的时间 | +| NAME | VARCHAR2(512) | YES | 还原点名称 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/51.v-global_transaction.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/51.v-global_transaction.md new file mode 100644 index 000000000..277bc7ce3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/51.v-global_transaction.md @@ -0,0 +1,30 @@ +V$GLOBAL_TRANSACTION +========================================= + + + +**功能** +--------------------------- + +显示当前活跃的全局事务的信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|--------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| FORMATID | NUMBER(38) | NO | 全局事务的格式标识符 | +| GLOBALID | VARCHAR2(256) | NO | 服务器 IP | +| BRANCHID | VARCHAR2(256) | NO | 服务器端口号 | +| BRANCHES | NUMBER(38) | NO | 全局事务的标识符 | +| REFCOUNT | NUMBER(38) | NO | 全局事务的分支资格 | +| PREPARECOUNT | NUMBER | NO | 全局事务中的分支机构总数 | +| STATE | CHAR(6) | NO | 全局事务的同级数,必须与分支机构相同 | +| FLAGS | NUMBER | NO | 已准备的全局事务分支机构数 | +| COUPLING | CHAR(15) | NO | 全局事务分支的状态: * ACTIVE * COLLECTING * FINALIZED * FAILED * RECOVERING * UNASSOCIATED * FORGOTTEN * READY FOR RECOVERY * NO-READONLY FAILED * SIBLING INFO WRITTEN * \[ORACLE COORDINATED\]ACTIVE * \[ORACLE COORDINATED\]COLLECTING * \[ORACLE COORDINATED\]FINALIZED * \[ORACLE COORDINATED\]FAILED * \[ORACLE COORDINATED\]RECOVERING * \[ORACLE COORDINATED\]UNASSOCIATED * \[ORACLE COORDINATED\]FORGOTTEN * \[ORACLE COORDINATED\]READY FOR RECOVERY * \[ORACLE COORDINATED\]NO-READONLY FAILED * \[MULTINODE\]ACTIVE * \[MULTINODE\]COLLECTING * \[MULTINODE\]FINALIZED * \[MULTINODE\]FAILED * \[MULTINODE\]RECOVERING * \[MULTINODE\]UNASSOCIATED * \[MULTINODE\]FORGOTTEN * \[MULTINODE\]READY FOR RECOVERY * \[MULTINODE\]NO-READONLY FAILED * \[MULTINODE\]SIBLING INFO WRITTEN * COMBINATION | +| CON_ID | VARCHAR2(256) | NO | 状态的数字表示 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/52.v-timezone_names.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/52.v-timezone_names.md new file mode 100644 index 000000000..6e851fb47 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/52.v-timezone_names.md @@ -0,0 +1,22 @@ +V$TIMEZONE_NAMES +===================================== + + + +**功能** +--------------------------- + +显示有效的时区名称。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|---------------|----------------|----------------| +| TZNAME | varchar(64) | NO | 时区区域 | +| TZABBREV | varchar(8) | NO | 相对时间缩写(例如,PDT) | +| CON_ID | decimal(38,0) | NO | 租户 ID | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/53.v-nls_parameters-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/53.v-nls_parameters-1.md new file mode 100644 index 000000000..95a538483 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/53.v-nls_parameters-1.md @@ -0,0 +1,22 @@ +V$NLS_PARAMETERS +===================================== + + + +**功能** +--------------------------- + +查看租户级别的 NLS 参数。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-----------|----------------|----------------|-----------------| +| PARAMETER | varchar(128) | NO | 参数名称 | +| VALUE | varchar(65536) | YES | 参数取值 | +| CON_ID | bigint(1) | NO | 容器 ID。目前该字段暂未使用 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/54.v-lock-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/54.v-lock-1.md new file mode 100644 index 000000000..4378facbf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/54.v-lock-1.md @@ -0,0 +1,29 @@ +V$LOCK +=========================== + + + +**功能** +--------------------------- + +展示 OceanBase 数据库的行锁信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------|---------------|----------------|-------------------| +| TABLE_ID | NUMBER(38) | NO | 表 ID | +| ADDR | varchar(512) | NO | 被锁对象的地址 | +| KADDR | NUMBER(38) | NO | 锁地址 | +| SID | NUMBER(38) | NO | 会话持有的 ID | +| TYPE | NUMBER(38) | NO | 0(行锁) | +| LMODE | NUMBER(38) | NO | 0(写锁) | +| REQUEST | NUMBER | YES | Null | +| CTIME | NUMBER(38) | NO | 加锁耗时 | +| BLOCK | NUMBER(38) | NO | 最早被阻塞的 session_id | +| CON_ID | VARCHAR2(256) | NO | 租户 ID | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/55.v-encrypted_tables-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/55.v-encrypted_tables-1.md new file mode 100644 index 000000000..943e5482f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/55.v-encrypted_tables-1.md @@ -0,0 +1,29 @@ +V$ENCRYPTED_TABLES +======================================= + + + +功能 +----------------------- + +V$ENCRYPTED_TABLES 用于展示开启加密功能的表的加密状态。 + +字段说明 +------------------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|------------------|---------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TABLE_ID | NUMBER(38) | NO | 表 ID | +| TABLE_NAME | VARCHAR2(256) | NO | 表名称 | +| TABLESPACE_ID | NUMBER(38) | NO | 表空间 ID | +| ENCRYPTIONALG | VARCHAR2(30) | NO | 加密算法名: * AES-128 * AES-192 * AES-256 * SM4 | +| ENCRYPTED | VARCHAR2(3) | NO | 是否完成加密: * YES * NO | +| ENCRYPTEDKEY | VARCHAR2(32) | NO | 经过主密钥加密后的加密密钥 | +| MASTERKEYID | NUMBER(38) | NO | 主密钥版本 | +| BLOCKS_ENCRYPTED | NUMBER | NO | 加密宏块的数量 | +| BLOCKS_DECRYPTED | NUMBER | NO | 未加密宏块的数量 | +| STATUS | VARCHAR2(10) | NO | 加密状态: * NORMAL:正常状态 * ENCRYPTING:加密中 * DECRYPTING:解密中 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/56.v-encrypted_tablespaces-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/56.v-encrypted_tablespaces-1.md new file mode 100644 index 000000000..8498688f5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/56.v-encrypted_tablespaces-1.md @@ -0,0 +1,27 @@ +V$ENCRYPTED_TABLESPACES +============================================ + + + +功能 +----------------------- + +V$ENCRYPTED_TABLESPACES 用于展示开启加密功能的表空间的加密状态。 + +字段说明 +------------------------- + + + +| **字段名称** | **类型** | **是否可以为空** | **描述** | +|------------------|--------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TABLESPACE_ID | NUMBER(38) | NO | 表空间 ID | +| ENCRYPTIONALG | VARCHAR2(30) | NO | 加密算法名: * AES-128 * AES-192 * AES-256 * SM4 | +| ENCRYPTED | VARCHAR2(3) | NO | 是否完成加密: * YES * NO | +| ENCRYPTEDKEY | VARCHAR2(32) | NO | 经过主密钥加密后的加密密钥 | +| MASTERKEYID | NUMBER(38) | NO | 主密钥版本 | +| BLOCKS_ENCRYPTED | NUMBER | NO | 加密宏块的数量 | +| BLOCKS_DECRYPTED | NUMBER | NO | 未加密宏块的数量 | +| STATUS | VARCHAR2(10) | NO | 加密状态: * NORMAL:正常状态 * ENCRYPTING:加密中 * DECRYPTING:解密中 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/57.v-global_transaction-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/57.v-global_transaction-1.md new file mode 100644 index 000000000..6bc0ca78a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/57.v-global_transaction-1.md @@ -0,0 +1,32 @@ +V$GLOBAL_TRANSACTION +========================================= + + + +功能 +----------- + +该视图用于展示当前服务器上当前活跃的全局事务(主要包括 XA 事务)的信息。 + +字段说明 +------------- + + + +| **字段** | **类型** | **是否可以为NULL** | **说明** | +|--------------|--------------|---------------|------------------------------------------| +| SVR_IP | RAW(64) | NO | 服务器 IP | +| SVR_PORT | NUMBER | NO | 服务器端口号 | +| FORMATID | NUMBER | NO | 全局事务格式标识符 | +| GLOBALID | RAW(64) | NO | 全局事务事务标识符 | +| BRANCHID | RAW(64) | NO | 全局事务分支限定符 | +| BRANCHES | NUMBER | NO | 该全局事务中分支总数 | +| REFCOUNT | NUMBER | NO | 同上 | +| PREPARECOUNT | NUMBER | NO | 该全局事务中已 PREPARED 的分支总数 | +| STATE | VARCHAR2(38) | NO | 该分支的状态 | +| FLAGS | NUMBER | NO | 该分支状态的数字表示 | +| COUPLING | VARCHAR2(15) | NO | 分支间的关系(TIGHTLY COUPLED或者LOOSELY COUPLED) | +| CON_ID | NUMBER | NO | 租户 ID | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/58.v-rsrc_plan.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/58.v-rsrc_plan.md new file mode 100644 index 000000000..c6b973e8e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/58.v-rsrc_plan.md @@ -0,0 +1,27 @@ +V$RSRC_PLAN +================================ + + + +功能 +----------------------- + +`V$RSRC_PLAN` 视图用于展示当前活跃租户的资源管理计划。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|----------------------------|---------------|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ID | NUMBER | NO | 资源计划 ID,全局唯一。 | +| NAME | VARCHAR2(128) | NO | 资源计划名称。 | +| IS_TOP_PLAN | VARCHAR2(5) | NO | 当前资源计划是否为当前设定的顶层计划: * `TRUE`:表示当前资源计划是当前设定的顶层计划 * `FLASE`:表示当前资源计划是当前顶层计划的子计划 目前,OceanBase 数据库中该值固定为 `TRUE`。 | +| CPU_MANAGED | VARCHAR2(3) | NO | 当前资源计划是否设置了参数来管理 CPU 的使用率: * `ON`:已设置 * `OFF`:未设置 目前,OceanBase 数据库中该值固定为 `ON`。 | +| INSTANCE_CAGING | VARCHAR2(3) | NO | 仅用于兼容,目前该值固定为 `NULL`。 | +| PARALLEL_SERVERS_ACTIVE | NUMBER | NO | 仅用于兼容,目前该值固定为 `NULL`。 | +| PARALLEL_SERVERS_TOTAL | NUMBER | NO | 仅用于兼容,目前该值固定为 `NULL`。 | +| PARALLEL_EXECUTION_MANAGED | VARCHAR2(32) | NO | 仅用于兼容,目前该值固定为 `NULL`。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/59.v-open_cursor.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/59.v-open_cursor.md new file mode 100644 index 000000000..7e7366c78 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/59.v-open_cursor.md @@ -0,0 +1,28 @@ +V$OPEN_CURSOR +================================== + + + +功能 +----------------------- + +`V$OPEN_CURSOR` 视图用于展示被缓存在 Plan Cache 中的执行计划的信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|----------------------|--------------|------------|------------------------------------------------| +| SADDR | VARCHAR2(8) | NO | Session 所在的内存地址。 | +| SID | NUMBER(38) | NO | Session ID。 | +| USER_NAME | VARCHAR2(30) | NO | 用户名。 | +| ADDRESS | VARCHAR2(8) | NO | SQL 地址,与 SQL 的 Hash 值一起唯一定位一个 SQL,目前值为 `NULL`。 | +| HASH_VALUE | NUMBER(38) | NO | SQL 的 Hash 值。 | +| SQL_ID | VARCHAR2(32) | NO | SQL ID。 | +| SQL_TEXT | VARCHAR2(60) | NO | SQL 的文本的前 60 个字符。 | +| LAST_SQL_ACTIVE_TIME | DATE | NO | 最后一次执行 SQL 计划的时间。 | +| SQL_EXEC_ID | NUMBER(38) | NO | 如果 SQL 计划正在被执行,则显示对应的 SQL ID。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/6.gv-memstore-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/6.gv-memstore-1.md new file mode 100644 index 000000000..ef5f76da3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/6.gv-memstore-1.md @@ -0,0 +1,28 @@ +GV$MEMSTORE +================================ + + + +功能 +----------- + +该视图用于展示所有服务器上所有租户的 Memtable 的内存使用状况。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|----------------|--------------|----------------|------------------------------| +| CON_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 服务器的 IP | +| SVR_PORT | NUMBER(38) | NO | 服务器端口 | +| ACTIVE | NUMBER(38) | NO | 当前活跃的 Memtable 的内存占用大小,单位为字节 | +| TOTAL | NUMBER(38) | NO | 当前所有 Memtable 的内存占用大小,单位为字节 | +| FREEZE_TRIGGER | NUMBER(38) | NO | 触发 Memtable 冻结的内存大小,单位为字节 | +| MEM_LIMIT | NUMBER(38) | NO | Memtable 的内存大小限制,单位为字节 | +| FREEZE_CNT | NUMBER(38) | NO | Memtable 的冻结次数 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/60.v-sstable-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/60.v-sstable-1.md new file mode 100644 index 000000000..996e1c766 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/60.v-sstable-1.md @@ -0,0 +1,40 @@ +V$SSTABLE +============================== + + + +功能 +----------------------- + +`V$SSTABLE` 视图用于展示租户的 SSTable 信息。 + +字段说明 +------------------------- + + + +| 字段名称 | 类型 | 是否可以为 NULL | 描述 | +|--------------------------------|---------------|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------| +| TABLE_TYPE | NUMBER(38) | NO | 表的类型 | +| TABLE_ID | NUMBER(38) | NO | 表 ID | +| TABLE_NAME | VARCHAR2(256) | NO | 表名 | +| TENANT_ID | NUMBER(38) | NO | 租户 ID | +| PARTITION_ID | NUMBER(38) | NO | 分区 ID | +| INDEX_ID | NUMBER(38) | NO | 主表或索引表的 ID | +| BASE_VERSION | NUMBER(38) | NO | 该表中存储数据的 `trans_version` 范围的最小值 | +| MULTI_VERSION_START | NUMBER(38) | NO | 该表中多版本数据的起始 `trans_version` | +| SNAPSHOT_VERSION | NUMBER(38) | NO | 该表中存储数据的 `trans_version` 范围的最大值 | +| START_LOG_TS | NUMBER(38) | NO | 该表中数据的日志时间戳范围的左边界 | +| END_LOG_TS | NUMBER(38) | NO | 该表中数据的日志时间戳范围的右边界 | +| MAX_LOG_TS | NUMBER(38) | NO | 该表中数据的日志时间戳范围的最大值 | +| VERSION | NUMBER(38) | NO | 该表的版本 | +| SIZE | NUMBER(38) | NO | 该表的大小 | +| IS_ACTIVE | NUMBER(38) | NO | 该表是否处于活跃状态 | +| REF | NUMBER(38) | NO | 该表引用的计数 | +| WRITE_REF | NUMBER(38) | NO | 该表写引用的计数 | +| TRX_COUNT | NUMBER(38) | NO | 该表上活跃事务的数量 | +| PENDING_LOG_PERSISTING_ROW_CNT | NUMBER(38) | NO | 持久化 Redo Log 的回收数量 | +| UPPER_TRANS_VERSION | NUMBER(38) | NO | 该表中存储数据的 `trans_version` 的上限 | +| CONTAIN_UNCOMMITTED_ROW | NUMBER(38) | NO | 该表是否包含未提交的事务行: * 0:表示该表中不包含未提交的事务行 * 1:表示该表中包含未提交的事务行 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/7.gv-memstore_info-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/7.gv-memstore_info-1.md new file mode 100644 index 000000000..5e7d680ca --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/7.gv-memstore_info-1.md @@ -0,0 +1,32 @@ +GV$MEMSTORE_INFO +===================================== + + + +功能 +----------- + +该视图用于展示所有服务器上所有租户的所有分区的 Memtable 的详细信息。 + +字段说明 +------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|---------------------|---------------|----------------|----------------| +| CON_ID | NUMBER(38) | NO | 租户 ID | +| SVR_IP | VARCHAR2(32) | NO | 服务器的 IP | +| SVR_PORT | NUMBER(38) | NO | 服务器端口 | +| TABLE_ID | NUMBER(38) | NO | 表 ID | +| PARTITION_ID | NUMBER(38) | NO | 分区 ID | +| VERSION | VARCHAR2(128) | NO | 冻结版本号 | +| BASE_VERSION | NUMBER(38) | NO | 数据的快照版本号的左边界 | +| MULTI_VERSION_START | NUMBER(38) | NO | 最小的老版本数据的快照版本号 | +| SNAPSHOT_VERSION | NUMBER(38) | NO | 数据的快照版本号的右边界 | +| IS_ACTIVE | NUMBER(38) | NO | 是否是活跃的 | +| USED | NUMBER(38) | NO | 使用的内存大小,单位为字节 | +| HASH_ITEMS | NUMBER(38) | NO | Hash 索引中记录的行数 | +| BTREE_ITEMS | NUMBER(38) | NO | Btree 索引中记录的行数 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/8.gv-ob_sql_workarea_memory_info-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/8.gv-ob_sql_workarea_memory_info-1.md new file mode 100644 index 000000000..a9daa70cd --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/8.gv-ob_sql_workarea_memory_info-1.md @@ -0,0 +1,29 @@ +GV$OB_SQL_WORKAREA_MEMORY_INFO +=================================================== + + + +**功能** +--------------------------- + +表示查询 SQL workarea 总体的一些信息,包括最大可用内存、当前使用内存、当前 hold 内存等。通过该视图可以知道当前租户下 workarea 的使用情况,例如内存利用率等。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|------------------------|------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------| +| MAX_WORKAREA_SIZE | NUMBER(38) | NO | 最大 workarea 内存,由参数决定可以使用多少内存 | +| WORKAREA_HOLD_SIZE | NUMBER(38) | NO | workarea 当前 hold 内存大小 **说明** 由于具体的使用量无法从内存管理模块获取到,故只能获取 hold 值。 | +| MAX_AUTO_WORKAREA_SIZE | NUMBER(38) | NO | auto 时,预计最大可用内存大小 可以简单认为最大可用内存会根据公式 `max_work_area_size - hold + total_mem_used `计算得到,表示当前workarea情况下,auto 管理的最大内存大小 | +| MEM_TARGET | NUMBER(38) | NO | 当前 workarea 可用内存的目标大小,与max_auto_work_area 的区别在于该值是 max_auto_work_area 的一定比例 | +| TOTAL_MEM_USED | NUMBER(38) | NO | 当前 auto 内存的使用大小,这里是由 SQL 自动内存管理模块统计的大小,不是真正使用大小 | +| GLOBAL_MEM_BOUND | NUMBER(38) | NO | auto 模式下,全局最大可用内存大小 | +| DRIFT_SIZE | NUMBER(38) | NO | 当前需求内存变化大小,主要用来当波动一定范围,会自动触发重新计算 global bound size | +| WORKAREA_COUNT | NUMBER(38) | NO | 注册的 operator profile 个数 | +| MANUAL_CALC_COUNT | NUMBER(38) | NO | 非定时触发的计算 global bound size 次数 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/9.gv-outline-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/9.gv-outline-1.md new file mode 100644 index 000000000..020009b9e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/1.system-view-1/2.performance-view-1/9.gv-outline-1.md @@ -0,0 +1,29 @@ +GV$OUTLINE +=============================== + + + +**功能** +--------------------------- + +展示当前租户的 Outline 信息。 + +**字段说明** +----------------------------- + + + +| **字段名称** | **类型** | **是否可以为 NULL** | **描述** | +|-------------------|-----------------|----------------|---------------------------------------| +| TENANT_ID | NUMBER(38) | NO | 租户 ID | +| DATABASE_ID | NUMBER(38) | NO | 数据库 ID | +| OUTLINE_ID | NUMBER(38) | NO | Outline ID | +| DATABASE_NAME | VARCHAR2(128) | NO | 数据库名称 | +| OUTLINE_NAME | VARCHAR2(128) | NO | Outline 名称 | +| VISIBLE_SIGNATURE | VARCHAR2(65536) | NO | Signature 的反序列化结果,为了便于查看signature 的信息 | +| SQL_TEXT | VARCHAR2(65536) | NO | 创建 Outline 时,在 on clause 中指定的 SQL | +| OUTLINE_TARGET | VARCHAR2(65536) | NO | 创建 Outline 时,在 to clause 中指定的 SQL | +| OUTLINE_SQL | VARCHAR2(65536) | NO | 具有完整 Outline 信息的 SQL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/1.overview-of-system-variables-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/1.overview-of-system-variables-1.md new file mode 100644 index 000000000..0120fa04f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/1.overview-of-system-variables-1.md @@ -0,0 +1,35 @@ +系统变量概述 +=========================== + + + +OceanBase 数据库的系统变量主要分为全局变量和 Session 变量: + +* 全局变量:表示 Global 级别的修改,数据库同一租户内的不同用户共享全局变量。全局变量的修改不会随会话的退出而失效。此外,全局变量修改后,对当前已打开的 Session 不生效,需要重新建立 Session 才能生效。 + + + +* Session 变量:表示 Session 级别的修改。当客户端连接到数据库后,数据库会复制全局变量来自动生成 Session 变量。Session 变量的修改仅对当前 Session 生效。 + + + + + + +与系统配置项对比 +----------------------------- + + + +| 对比项 | 系统配置项 | 系统变量 | +|------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 生效范围 | 分为集群、Zone、机器和租户。 | 分为租户的 Global 或 Session 级别。 | +| 生效方式 | * 动态生效:`edit_level` 为`dynamic_effective`。 * 重启生效:`edit_level` 为 `static_effective` 。 | * 设置 Session 级别的变量仅对当前 Session 有效,对其他 Session 无效。 * 设置 Global 级别的变量对当前 Session 无效,需要重新登录建立新的 Session 才会生效。 | +| 修改方式 | * 支持通过 SQL 语句修改,示例如下: ```sql obclient> Alter SYSTEM SET schema_history_expire_time='1h' ``` * 支持通过启动参数修改,示例如下: ```sql cd /home/admin && ./bin/observer -o "schema_history_expire_time='1h'" ``` | 仅支持通过 SQL 语句修改,示例如下: * MySQL 模式 ```sql obclient> SET ob_query_timeout = 20000000; obclient> SET GLOBAL ob_query_timeout = 20000000; ``` * Oracle 模式 ```sql obclient> SET ob_query_timeout = 20000000; obclient> ALTER SYSTEM SET ob_query_timeout = 20000000; ``` | +| 持久化 | 持久化到内部表与配置文件,可以在 `/home/admin/oceanbase/etc/observer.config.bin` 与 `/home/admin/oceanbase/etc/observer.config.bin.history` 文件中查询该配置项。 | 仅 GLOBAL 级别的变量会持久化,SESSION 级别的变量不会进行持久化。 | +| 生命周期 | 长,从进程启动到退出。 | 短,需要租户的 Schema 创建成功以后才生效。 | +| 查询方式 | 可以使用 `SHOW PARAMETERS` 语句查询。 | 可以使用 `SHOW [GLOBAL] VARIABLES` 语句查询。 | + + + +本章主要介绍 OceanBase 数据库中的所有系统变量及其缺省值说明(包括参数含义、取值范围和使用说明等)。系统变量的查看和设置相关操作,请参见 [租户管理变量](t1940574.html#topic-1940574)章节。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/10.collation_connection-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/10.collation_connection-1.md new file mode 100644 index 000000000..828e60b5e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/10.collation_connection-1.md @@ -0,0 +1,18 @@ +collation_connection +========================================= + +collation_connection 用于设置连接使用的字符集和字符序。 + + +| **属性** | **描述** | +|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4_general_ci | +| 取值范围 | * utf8mb4_general_ci * utf8mb4_bin * utf8mb4_unicode_ci * gbk_bin * gbk_chinese_ci * gb18030_bin * gb18030_chinese_ci * utf16_general_ci * utf16_bin * utf16_unicode_ci * binary | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | +| 是否可以为空 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/100.ob_reserved_meta_memory_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/100.ob_reserved_meta_memory_percentage-1.md new file mode 100644 index 000000000..3fda67f04 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/100.ob_reserved_meta_memory_percentage-1.md @@ -0,0 +1,15 @@ +ob_reserved_meta_memory_percentage +======================================================= + +ob_reserved_meta_memory_percentage 用于设置租户预留内存的比例,主要存储 Meta 相关的结构信息。 + + +| **属性** | **描述** | +|---------|----------| +| 参数类型 | int | +| 默认值 | 10 | +| 取值范围 | \[1,100) | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/101.nls_date_format.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/101.nls_date_format.md new file mode 100644 index 000000000..1d77bfb58 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/101.nls_date_format.md @@ -0,0 +1,15 @@ +nls_date_format +==================================== + +nls_date_format 用于控制 date 类型转 str 的格式,以及 str 隐式转 date 的格式。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | DD-MON-RR | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/102.nls_timestamp_format.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/102.nls_timestamp_format.md new file mode 100644 index 000000000..fc25d7176 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/102.nls_timestamp_format.md @@ -0,0 +1,15 @@ +nls_timestamp_format +========================================= + +nls_timestamp_format 用于控制 timestamp 或 timestamp ltz 类型转 str 的格式,以及 str 隐式转 timestamp 或 timestamp ltz 的格式。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | DD-MON-RR HH.MI.SSXFF AM | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/103.nls_timestamp_tz_format.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/103.nls_timestamp_tz_format.md new file mode 100644 index 000000000..f815e1230 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/103.nls_timestamp_tz_format.md @@ -0,0 +1,15 @@ +nls_timestamp_tz_format +============================================ + +nls_timestamp_tz_format 用于控制 timestamp tz 类型转 str 的格式,以及 str 隐式转 timestamp tz 的格式。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | DD-MON-RR HH.MI.SSXFF AM TZR | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/104.nls_language.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/104.nls_language.md new file mode 100644 index 000000000..2cff5941f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/104.nls_language.md @@ -0,0 +1,16 @@ +nls_language +================================= + +nls_language 表示数据库国际化支持中的默认语言,用于提示信息、日期、月份名以及 NLS_SORT 和NLS_DATE_LANGUAGE 的默认值。 + + +| **属性** | **描述** | +|---------|---------| +| 参数类型 | varchar | +| 默认值 | AMERICA | +| 取值范围 | AMERICA | +| 生效范围 | SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/105.nls_territory.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/105.nls_territory.md new file mode 100644 index 000000000..42ba77275 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/105.nls_territory.md @@ -0,0 +1,16 @@ +nls_territory +================================== + +nls_territory 表示数据库国际化支持中的当前地域,与 nls_language 结合使用。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | AMERICA | +| 取值范围 | AMERICA | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/106.nls_sort.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/106.nls_sort.md new file mode 100644 index 000000000..6b4b08e59 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/106.nls_sort.md @@ -0,0 +1,17 @@ +nls_sort +============================= + +nls_sort 表示字符串值的排序规则。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | BINARY | +| 取值范围 | BINARY | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/107.nls_comp.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/107.nls_comp.md new file mode 100644 index 000000000..d23e74b47 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/107.nls_comp.md @@ -0,0 +1,17 @@ +nls_comp +============================= + +nls_comp 表示字符串值的比较规则。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | BINARY | +| 取值范围 | BINARY | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/108.nls_characterset.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/108.nls_characterset.md new file mode 100644 index 000000000..9d66215d1 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/108.nls_characterset.md @@ -0,0 +1,18 @@ +nls_characterset +===================================== + +nls_characterset 表示数据库默认字符集,用于 CHAR、VARCHAR2、LONG、CLOB 等数据类型。 + + +| **属性** | **描述** | +|----------|----------| +| 参数类型 | varchar | +| 默认值 | AL32UTF8 | +| 取值范围 | AL32UTF8 | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/109.nls_nchar_characterset.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/109.nls_nchar_characterset.md new file mode 100644 index 000000000..4b06c0e6d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/109.nls_nchar_characterset.md @@ -0,0 +1,17 @@ +nls_nchar_characterset +=========================================== + +nls_nchar_characterset 表示数据库默认字符集,用于 NCHAR、NVARCHAR2、NCLOB 等数据类型。 + + +| **属性** | **描述** | +|----------|-----------| +| 参数类型 | varchar | +| 默认值 | AL16UTF16 | +| 取值范围 | AL16UTF16 | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/11.collation_database-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/11.collation_database-1.md new file mode 100644 index 000000000..896b93e2c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/11.collation_database-1.md @@ -0,0 +1,16 @@ +collation_database +======================================= + +collation_database 设置创建数据库默认字符集和字符序。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4_general_ci | +| 取值范围 | * utf8mb4_general_ci * utf8mb4_bin * utf8mb4_unicode_ci * gbk_bin * gbk_chinese_ci * gb18030_bin * gb18030_chinese_ci * utf16_general_ci * utf16_bin * utf16_unicode_ci * binary | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否可以为空 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/110.nls_date_language.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/110.nls_date_language.md new file mode 100644 index 000000000..4a138fd84 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/110.nls_date_language.md @@ -0,0 +1,16 @@ +nls_date_language +====================================== + +nls_date_language 表示数据库国际化支持中的日期默认语言。用于 TO_DATE 和 TO_CHAR 输入或返回的日期、月份、上下午、公元前后等信息。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | AMERICAN | +| 取值范围 | AMERICAN | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/111.nls_length_semantics.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/111.nls_length_semantics.md new file mode 100644 index 000000000..ba5bb2864 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/111.nls_length_semantics.md @@ -0,0 +1,17 @@ +nls_length_semantics +========================================= + +nls_length_semantics 表示 char、varchar2 类型 的 length 语义。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | BYTE | +| 取值范围 | * BYTE * CHAR | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/112.nls_calendar.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/112.nls_calendar.md new file mode 100644 index 000000000..183353125 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/112.nls_calendar.md @@ -0,0 +1,16 @@ +nls_calendar +================================= + +nls_calendar 用于控制数据库使用的日历系统。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | GREGORIAN | +| 取值范围 | GREGORIAN | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/113.nls_nchar_conv_excp.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/113.nls_nchar_conv_excp.md new file mode 100644 index 000000000..0b944928e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/113.nls_nchar_conv_excp.md @@ -0,0 +1,17 @@ +nls_nchar_conv_excp +======================================== + +nls_nchar_conv_excp 用于控制 NCHAR/NVARCHAR2 与 CHAR/VARCHAR2 之间转换丢失数据时是否报错。 + + +| **属性** | **描述** | +|----------|-------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | FALSE | +| 取值范围 | * TRUE:表示报错 * FALSE:表示不报错 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/114.nls_numeric_characters.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/114.nls_numeric_characters.md new file mode 100644 index 000000000..3df205dfc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/114.nls_numeric_characters.md @@ -0,0 +1,16 @@ +nls_numeric_characters +=========================================== + +nls_numeric_characters 用于控制 number 和字符串转换中字符串中小数分隔符和千分位分隔符的字符。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/115.tracefile_identifier-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/115.tracefile_identifier-1.md new file mode 100644 index 000000000..56c383e0e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/115.tracefile_identifier-1.md @@ -0,0 +1,17 @@ +tracefile_identifier +========================================= + +tracefile_identifier 用于在日志中增加指定内容,便于筛选行迭代跟踪日志。 + + +| **属性** | **描述** | +|---------|---------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | NULL | +| 生效范围 | SESSION | +| 是否参与序列化 | 是 | + + + +使用 TRACING、STAT 两个 HINT 能够指示执行器在算子执行过程中打印每一行内容,为了让这些内容易于搜索识别,可以使用 tracefile_identifier 指定一个字符串,例如 `XXXYYYZZZ` 、 `MY_TRACE` 等和行内容一起输出到日志中,易于搜索。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/116.transaction_isolation-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/116.transaction_isolation-1.md new file mode 100644 index 000000000..d5d9be484 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/116.transaction_isolation-1.md @@ -0,0 +1,15 @@ +transaction_isolation +========================================== + +transaction_isolation 用于设置事务的隔离级别。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | READ-COMMITTED | +| 取值范围 | * READ-UNCOMMITTED * READ-COMMITTED * REPEATABLE-READ * SERIALIZABLE | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/117.ob_trx_lock_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/117.ob_trx_lock_timeout-1.md new file mode 100644 index 000000000..3e82ea3c3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/117.ob_trx_lock_timeout-1.md @@ -0,0 +1,15 @@ +ob_trx_lock_timeout +======================================== + +ob_trx_lock_timeout 用于设置事务的等锁超时时长,单位为微秒。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | -1 | +| 取值范围 | 有效取值范围:\[0,+∞) | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/118.ob_trace_info-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/118.ob_trace_info-1.md new file mode 100644 index 000000000..08339e179 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/118.ob_trace_info-1.md @@ -0,0 +1,15 @@ +ob_trace_info +================================== + +ob_trace_info 用于透传 trace 信息,该信息最终可透持久化到 REDO 日志中。 + + +| **属性** | **描述** | +|--------|-------------------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | 字符串长度为\[0, 4096\] | +| 生效范围 | SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/119.secure_file_priv-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/119.secure_file_priv-1.md new file mode 100644 index 000000000..1e5168218 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/119.secure_file_priv-1.md @@ -0,0 +1,35 @@ +secure_file_priv +===================================== + +secure_file_priv 控制导入或导出到文件时可以访问的路径。仅 DBA 可以设置该变量,其他人无法设置。 + + +| **属性** | **描述** | +|-----------|---------| +| 参数类型 | varchar | +| 默认值 | NULL | +| 取值范围 | ALL | +| 生效范围 | GLOBAL | +| 是否影响计划的生成 | 是 | +| 是否可为空 | 是 | + + + +对于该变量的值: + +* 如果设置为空串,则表示没有限制,任意路径均可以访问。 + + + +* 如果设置为路径名,则仅该路径下的文件可以被导入或导出。 + + + +* 如果设置为 `NULL`,则表示导入、导出被禁用。 + + + + + + +新建租户时,默认值将被设为 `NULL`,即导入、导出被禁用。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/12.collation_server-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/12.collation_server-1.md new file mode 100644 index 000000000..5b2575988 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/12.collation_server-1.md @@ -0,0 +1,16 @@ +collation_server +===================================== + +collation_server 用于设置服务器默认字符集和字符序。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4_general_ci | +| 取值范围 | * utf8mb4_general_ci * utf8mb4_bin * utf8mb4_unicode_ci * gbk_bin * gbk_chinese_ci * gb18030_bin * gb18030_chinese_ci * utf16_general_ci * utf16_bin * utf16_unicode_ci * binary | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否可以为空 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/120.ob_pl_block_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/120.ob_pl_block_timeout-1.md new file mode 100644 index 000000000..a4f1445ce --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/120.ob_pl_block_timeout-1.md @@ -0,0 +1,15 @@ +ob_pl_block_timeout +======================================== + +ob_pl_block_timeout 用于设置 PL 的最大超时时间,单位 us。 + + +| 属性 | 描述 | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 3216672000000000 | +| 取值范围 | \[0, 9223372036854775807\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/121.performance_schema-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/121.performance_schema-1.md new file mode 100644 index 000000000..f783416bc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/121.performance_schema-1.md @@ -0,0 +1,15 @@ +performance_schema +======================================= + +performance_schema 用于向客户端声明是否支持 performance 信息的查询。 + + +| 属性 | 描述 | +|--------|-----------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | OFF | +| 取值范围 | * ON:支持 * OFF:不支持 | +| 生效范围 | GLOBAL | +| 是否重启生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/122.transaction_read_only-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/122.transaction_read_only-1.md new file mode 100644 index 000000000..b8c65696f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/122.transaction_read_only-1.md @@ -0,0 +1,23 @@ +transaction_read_only +========================================== + +transaction_read_only 配置项用于控制是否只允许开启只读事务。 +**注意** + + + +当前该变量暂未启用,即设置后不会生效。 + + +| 属性 | 描述 | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | False | +| 取值范围 | * True * False | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是,即远程执行、分布式执行场景下,变量会参与序列化 | +| 是否重启生效 | 否 | + + + +当 transaction_read_only 设置为 `True` 时,不允许执行 DML 语句。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/123.nls_currency.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/123.nls_currency.md new file mode 100644 index 000000000..13e5bbbc6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/123.nls_currency.md @@ -0,0 +1,16 @@ +nls_currency +================================= + +`nls_currency` 用于设置数字格式元素 `L` 的本地货币符号。 + + +| 属性 | 描述 | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | $ | +| 取值范围 | N/A | +| 生效范围 | * Global * Session | +| 是否参与序列化 | 是,即远程执行、分布式执行场景下,变量会参与序列化. | +| 是否重启生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/124.nls_iso_currency.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/124.nls_iso_currency.md new file mode 100644 index 000000000..66ad6cb6a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/124.nls_iso_currency.md @@ -0,0 +1,16 @@ +nls_iso_currency +===================================== + +`nls_iso_currency` 用于设置数字格式元素 `C` 的本地货币符号。 + + +| 属性 | 描述 | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | AMERICA | +| 取值范围 | N/A | +| 生效范围 | * Global * Session | +| 是否参与序列化 | 是,即远程执行、分布式执行场景下,变量会参与序列化。 | +| 是否重启生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/125.nls_dual_currency.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/125.nls_dual_currency.md new file mode 100644 index 000000000..e0bb2e691 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/125.nls_dual_currency.md @@ -0,0 +1,16 @@ +nls_dual_currency +====================================== + +`nls_dual_currency` 用于设置数字格式元素 `U` 的本地货币符号。 + + +| 属性 | 描述 | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | $ | +| 取值范围 | N/A | +| 生效范围 | * Global * Session | +| 是否参与序列化 | 是,即远程执行、分布式执行场景下,变量会参与序列化。 | +| 是否重启生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/126.resource_manager_plan-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/126.resource_manager_plan-1.md new file mode 100644 index 000000000..a6c64aafa --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/126.resource_manager_plan-1.md @@ -0,0 +1,17 @@ +resource_manager_plan +========================================== + +`resource_manager_plan` 用于激活资源管理计划,以适当的参数限制不同负载使用 CPU 的额度。 + + +| 属性 | 描述 | +|--------|---------------| +| 参数类型 | varchar | +| 默认值 | "" | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否重启生效 | 否,设置后 10s 内生效 | + + + +租户内的普通线程和并行执行线程会相互抢占 CPU 资源,通过为租户指定资源隔离计划,可以控制资源抢占策略,限制资源的使用量。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/13.interactive_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/13.interactive_timeout-1.md new file mode 100644 index 000000000..7026fb806 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/13.interactive_timeout-1.md @@ -0,0 +1,14 @@ +interactive_timeout +======================================== + +interactive_timeout 用于设置服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在 mysql_real_connect() 中使用 CLIENT_INTERACTIVE 选项的客户端。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 28800 | +| 取值范围 | \[1, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/14.last_insert_id-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/14.last_insert_id-1.md new file mode 100644 index 000000000..49e5caf01 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/14.last_insert_id-1.md @@ -0,0 +1,14 @@ +last_insert_id +=================================== + +last_insert_id 用于返回本 Session 最后一次插入的自增字段值。 + + +| **属性** | **描述** | +|--------|-----------------------------| +| 参数类型 | unit | +| 默认值 | 0 | +| 取值范围 | \[0, 18446744073709551615\] | +| 生效范围 | SESSION | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/15.max_allowed_packet-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/15.max_allowed_packet-1.md new file mode 100644 index 000000000..4c39d7e6c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/15.max_allowed_packet-1.md @@ -0,0 +1,23 @@ +max_allowed_packet +======================================= + +max_allowed_packet 用于设置最大网络包大小,单位是 Byte。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 4194304 | +| 取值范围 | \[1024,1073741824\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + + +**说明** + + + +该变量不能通过 `ALTER SESSION SET xxx = yyy; `语句的方式使其仅在当前 Session 生效,只能通过 `SET GLOBAL xxx = yyy` 语句这种全局生效的修改方式。 使用时一般客户端与 Server 端均需要调整。 + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/16.sql_mode-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/16.sql_mode-1.md new file mode 100644 index 000000000..f6583d061 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/16.sql_mode-1.md @@ -0,0 +1,14 @@ +sql_mode +============================= + +sql_mode 用于设置 SQL 模式,不同的 SQL 模式对于插入等行为有很大影响。 + + +| **属性** | **描述** | +|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | STRICT_ALL_TABLES | +| 取值范围 | * STRICT_ALL_TABLES * STRICT_TRANS_TABLES * ONLY_FULL_GROUP_BY * PAD_CHAR_TO_FULL_LENGTH | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/17.time_zone-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/17.time_zone-1.md new file mode 100644 index 000000000..401b26265 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/17.time_zone-1.md @@ -0,0 +1,15 @@ +time_zone +============================== + +time_zone 用于设置当前租户会话使用的时区,支持 `'+08:00' `的 offset 形式和 `Asia/Shanghai `的地域形式取值。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | +8:00 | +| 取值范围 | -12:59 \~ +13:00 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/18.tx_isolation-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/18.tx_isolation-1.md new file mode 100644 index 000000000..be72aefe6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/18.tx_isolation-1.md @@ -0,0 +1,16 @@ +tx_isolation +================================= + +tx_isolation 用于设置事务隔离级别。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | READ-COMMITTED | +| 取值范围 | * READ-UNCOMMITTED * READ-COMMITTED * REPEATABLE-READ * SERIALIZABLE | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/19.version_comment-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/19.version_comment-1.md new file mode 100644 index 000000000..eb6204219 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/19.version_comment-1.md @@ -0,0 +1,16 @@ +version_comment +==================================== + +version_comment 用于设置 OBServer 的版本信息。 + + +| **属性** | **描述** | +|--------|-----------------| +| 参数类型 | varchar | +| 默认值 | OceanBase 1.0.0 | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/2.auto_increment_increment-2.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/2.auto_increment_increment-2.md new file mode 100644 index 000000000..35abfa223 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/2.auto_increment_increment-2.md @@ -0,0 +1,16 @@ +auto_increment_increment +============================================= + +auto_increment_increment 用于设置自增步长,仅用于 MySQL 客户端登录。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | uint | +| 默认值 | 1 | +| 取值范围 | \[1, 65535\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/20.wait_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/20.wait_timeout-1.md new file mode 100644 index 000000000..fb3413d91 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/20.wait_timeout-1.md @@ -0,0 +1,16 @@ +wait_timeout +================================= + +wait_timeout 用于设置服务器关闭非交互连接之前等待活动的秒数。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 28800 | +| 取值范围 | \[1, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + + +在会话启动时,会根据全局 wait_timeout 的值或全局 interactive_timeout 的值来初始化会话 wait_timeout 的值,具体根据全局 wait_timeout 的值还是全局 interactive_timeout 的值取决于客户端类型。客户端类型由 `mysql_real_connect()` 的连接选项 CLIENT_INTERACTIVE 定义。 interactive_timeout 变量相关信息请参见 **[](gi9a68)** [interactive_timeout](/zh-CN/14.reference-guide-oracle-mode/2.system-variable-1/13.interactive_timeout-1.md)。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/21.binlog_row_image-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/21.binlog_row_image-1.md new file mode 100644 index 000000000..6d6b69b81 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/21.binlog_row_image-1.md @@ -0,0 +1,25 @@ +binlog_row_image +===================================== + +binlog_row_image 用于控制是否记录全列日志。 + +全列日志与非全列日志的定义如下: + +对于 update/delete 的 DML 语句,如果 OBServer 同时记录了所有列的新值和旧值,则称之为全列日志;如果 OBServer 只记录了新值而没有旧值,则为非全列日志。 + + +| **属性** | **描述** | +|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | FULL | +| 取值范围 | * FULL:表示记录所有列 * MINIMAL:表示只记录 DML 操作中修改的列,提升主从复制吞吐量,减少 binlog 大小、网络资源和服务器内存占用 * NOBLOB:目前暂不支持 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与消息序列化 | 是 | +| 是否影响 SQL 执行计划生成 | 是 | + + +**说明** + + + +通过 `SET GLOBAL binlog_row_image= 'xxx' `命令修改变量后,不会影响已连接的 Session,包括发起修改的 Session。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/22.character_set_filesystem-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/22.character_set_filesystem-1.md new file mode 100644 index 000000000..41342b809 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/22.character_set_filesystem-1.md @@ -0,0 +1,15 @@ +character_set_filesystem +============================================= + +character_set_filesystem 用于设置文件系统字符集类型。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | BINARY | +| 取值范围 | BINARY | +| 生效范围 | * GLOBAL * SESSION | +| 是否可以为空 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/23.connect_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/23.connect_timeout-1.md new file mode 100644 index 000000000..8a1f54b06 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/23.connect_timeout-1.md @@ -0,0 +1,14 @@ +connect_timeout +==================================== + +connect_timeout 用于设置连接超时时间,单位为微妙。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 10 | +| 取值范围 | \[2, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/24.datadir-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/24.datadir-1.md new file mode 100644 index 000000000..e59f9c1bb --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/24.datadir-1.md @@ -0,0 +1,20 @@ +datadir +============================ + +datadir 用于设置数据存储的本地磁盘路径。 +**说明** + + + +该变量仅用于兼容,OceanBase 数据库当前暂未实现该变量的功能。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | /usr/local/mysql/data/ | +| 取值范围 | N/A | +| 生效范围 | * GLOBAL * SESSION | +| 是否可修改 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/25.debug_sync-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/25.debug_sync-1.md new file mode 100644 index 000000000..59ee95e64 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/25.debug_sync-1.md @@ -0,0 +1,21 @@ +debug_sync +=============================== + +debug_sync 用于在 debug 时设置同步点,与 MySQL 兼容。 +**说明** + + + +只有 debug_sync_timeout 配置项的值不为 0 时,该变量的设置才有效。 + + +| **属性** | **描述** | +|--------|------------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | 无 | +| 生效范围 | SESSION | +| 是否可见 | 否,所有租户均不可见 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/26.div_precision_increment-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/26.div_precision_increment-1.md new file mode 100644 index 000000000..404cdab52 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/26.div_precision_increment-1.md @@ -0,0 +1,17 @@ +div_precision_increment +============================================ + +div_precision_increment 用于设置除法结果精度在被除数精度基础上的增量,是 MySQL 兼容功能。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 4 | +| 取值范围 | \[0, 30\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/27.group_concat_max_len-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/27.group_concat_max_len-1.md new file mode 100644 index 000000000..da9aac0a7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/27.group_concat_max_len-1.md @@ -0,0 +1,15 @@ +group_concat_max_len +========================================= + +group_concat_max_len 用于设置允许的 GROUP_CONCAT() 函数结果的最大长度,单位为字节。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | uint | +| 默认值 | 1024 | +| 取值范围 | \[4, 18446744073709551615\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/28.identity-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/28.identity-1.md new file mode 100644 index 000000000..c38800d96 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/28.identity-1.md @@ -0,0 +1,15 @@ +identity +============================= + +identity 和变量 last_insert_id 是同义词,可以通过 `select @@identity` 查询。 + + +| **属性** | **描述** | +|--------|-----------------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0, 18446744073709551615\] | +| 生效范围 | SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/29.lower_case_table_names-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/29.lower_case_table_names-1.md new file mode 100644 index 000000000..66f3aeac1 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/29.lower_case_table_names-1.md @@ -0,0 +1,21 @@ +lower_case_table_names +=========================================== + +lower_case_table_names 用于设置是否对大小写敏感。 + + +| **属性** | **描述** | +|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 1 | +| 取值范围 | * 0:表示表名将按指定存储,并且比较区分大小写 * 1:表示表名以小写形式存储在磁盘上,并且比较不区分大小写 * 2:表示表名按指定存储,但以小写形式进行比较 | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | +| 是否可修改 | 否,仅在 OBServer 启动的命令行上指定,启动后不能再通过 SQL 语句修改。 | + + +**说明** + + + +该变量仅在 MySQL 模式下对 DataBase 和 Table 对象名生效。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/3.auto_increment_offset-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/3.auto_increment_offset-1.md new file mode 100644 index 000000000..408714a20 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/3.auto_increment_offset-1.md @@ -0,0 +1,15 @@ +auto_increment_offset +========================================== + +auto_increment_offset 用于确定 AUTO_INCREMENT 列值的起点。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | uint | +| 默认值 | 1 | +| 取值范围 | \[1, 65535\] | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/30.net_read_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/30.net_read_timeout-1.md new file mode 100644 index 000000000..05c768e12 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/30.net_read_timeout-1.md @@ -0,0 +1,32 @@ +net_read_timeout +===================================== + +net_read_timeout 用于中断读之前等待连接的其它数据的秒数。 +**说明** + + + +该变量仅用于兼容,OceanBase 数据库当前暂未实现该变量的功能。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 30 | +| 取值范围 | \[1, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + + +其中: + +* 当服务器从客户端读数时,net_read_timeout 指控制何时中断的超时值。 + + + +* 当服务器向客户端写时,net_write_timeout 指控制何时中断的超时值。 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/31.net_write_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/31.net_write_timeout-1.md new file mode 100644 index 000000000..7d96ee1d0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/31.net_write_timeout-1.md @@ -0,0 +1,32 @@ +net_write_timeout +====================================== + +net_write_timeout 用于设置中断写之前等待块写入连接的秒数。 +**说明** + + + +该变量仅用于兼容,OceanBase 数据库当前暂未实现该变量的功能。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 60 | +| 取值范围 | \[1, 31536000\] | +| 生效范围 | * GLOBAL * SESSION | + + + +其中: + +* 当服务器从客户端读数时,net_read_timeout 指控制何时中断的超时值。 + + + +* 当服务器向客户端写时,net_write_timeout 指控制何时中断的超时值。 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/32.read_only-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/32.read_only-1.md new file mode 100644 index 000000000..312eefb09 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/32.read_only-1.md @@ -0,0 +1,19 @@ +read_only +============================== + +read_only 用于设置租户是否为只读模式。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 1:租户为只读模式 * 0:租户为读写模式 | +| 生效范围 | GLOBAL | + + +**说明** + + + +设置后,会影响该租户下的所有普通用户,不影响 root 权限用户。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/33.sql_auto_is_null-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/33.sql_auto_is_null-1.md new file mode 100644 index 000000000..f63fd6bbc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/33.sql_auto_is_null-1.md @@ -0,0 +1,28 @@ +sql_auto_is_null +===================================== + +sql_auto_is_null 会被一些特殊的驱动程序,例如 ODBC 使用,用于获取最后插入行的自增列值。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | OFF | +| 取值范围 | * OFF * ON | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + +当 sql_auto_is_null 为 `ON` 时,与下面两条语句等价: + +```sql +// CREATE TABLE t1 (auto_inc_column auto_increment, j int); +obclient> SELECT * FROM t1 WHERE auto_inc_column is null; + +obclient> SELECT * FROM t1 WHERE auto_inc_column = last_insert_id(); +``` + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/34.sql_select_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/34.sql_select_limit-1.md new file mode 100644 index 000000000..941771c26 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/34.sql_select_limit-1.md @@ -0,0 +1,16 @@ +sql_select_limit +===================================== + +sql_select_limit 用于设置一个 select 查询允许返回的最大行数。如果一个 select 中包含了 limit 语句,那么 limit 的值比 sql_select_limit 的优先级高,默认不限制 select 返回的行数。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 9223372036854775807 | +| 取值范围 | \[0, 9223372036854775807\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/35.timestamp-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/35.timestamp-1.md new file mode 100644 index 000000000..5178c843f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/35.timestamp-1.md @@ -0,0 +1,15 @@ +timestamp +============================== + +TIMESTAMP 是时间戳,单位为秒,该变量影响 `select now(6) `的结果。 + + +| **属性** | **描述** | +|--------|--------------------| +| 参数类型 | numeric | +| 默认值 | 0 | +| 取值范围 | \[0, 253402272000) | +| 生效范围 | SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/36.tx_read_only-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/36.tx_read_only-1.md new file mode 100644 index 000000000..1ef72cb2d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/36.tx_read_only-1.md @@ -0,0 +1,20 @@ +tx_read_only +================================= + +tx_read_only 用于设置是否为只读事务。 + + +| **属性** | **描述** | +|---------|-------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | * 1:只读事务 * 0:不是只读事务 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + +**说明** + + + +设置后,仅影响该用户,不影响其他用户。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/37.version-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/37.version-1.md new file mode 100644 index 000000000..65e715b47 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/37.version-1.md @@ -0,0 +1,16 @@ +version +============================ + +version 用于设置服务器的版本号。 + + +| **属性** | **描述** | +|--------|---------| +| 参数类型 | varchar | +| 默认值 | 5.6.25 | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/38.sql_warnings-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/38.sql_warnings-1.md new file mode 100644 index 000000000..f46123253 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/38.sql_warnings-1.md @@ -0,0 +1,15 @@ +sql_warnings +================================= + +sql_warnings 用于在出现告警时控制单行 INSERT 语句是否生成信息字符串。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | OFF | +| 取值范围 | * ON:生成一个信息字符串 * OFF:不生成信息字符串 | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/39.max_user_connections-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/39.max_user_connections-1.md new file mode 100644 index 000000000..40ac4b7f0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/39.max_user_connections-1.md @@ -0,0 +1,19 @@ +max_user_connections +========================================= + +max_user_connections 用于指定单个用户可以向 OBServer 建立的连接数,设置为 0 时表示不限制连接数。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0, 4294967295\] | +| 生效范围 | * GLOBAL * SESSION | + + +**说明** + + + +该变量不能通过 `alter session set xxx = yyy; `语句的方式使其仅在当前 Session 生效,只能通过 `set global xxx = yyy` 语句的方式使全局生效。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/4.autocommit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/4.autocommit-1.md new file mode 100644 index 000000000..52a5be13e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/4.autocommit-1.md @@ -0,0 +1,16 @@ +autocommit +=============================== + +autocommit 用于设置是否自动提交事务。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 1:自动提交 * 0:不自动提交 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/40.init_connect-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/40.init_connect-1.md new file mode 100644 index 000000000..d666b2c5e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/40.init_connect-1.md @@ -0,0 +1,14 @@ +init_connect +================================= + +init_connect 用于设置服务器为每个连接的客户端执行的字符串,该字符串由一条或多条 SQL 语句组成,用分号分隔。 + + +| **属性** | **描述** | +|--------|---------| +| 参数类型 | varchar | +| 默认值 | N/A | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/41.license-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/41.license-1.md new file mode 100644 index 000000000..ebefcc82b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/41.license-1.md @@ -0,0 +1,16 @@ +license +============================ + +license 用于设置 license 的类型。 + + +| **属性** | **描述** | +|--------|---------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/42.net_buffer_length-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/42.net_buffer_length-1.md new file mode 100644 index 000000000..b2200aa2c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/42.net_buffer_length-1.md @@ -0,0 +1,19 @@ +net_buffer_length +====================================== + +net_buffer_length 用于设置 OBServer 能接受的 SQL Query 的大小。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 16384 | +| 取值范围 | \[1024, 1048576\] | +| 生效范围 | * GLOBAL * SESSION | + + +**说明** + + + +该变量不能通过 `alter session set xxx = yyy; `语句的方式使其仅在当前 Session 生效,只能通过 `set global xxx = yyy` 语句的方式使全局生效。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/43.system_time_zone-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/43.system_time_zone-1.md new file mode 100644 index 000000000..91cd4f6d3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/43.system_time_zone-1.md @@ -0,0 +1,17 @@ +system_time_zone +===================================== + +system_time_zone 用于设置服务器机器系统时区。 + + +| **属性** | **描述** | +|---------|-------------------------------------------| +| 参数类型 | varchar | +| 默认值 | CST | +| 取值范围 | N/A | +| 生效范围 | GLOBAL | +| 是否可修改 | 否,仅在 OBServer 启动的命令行上指定,启动后不能再通过 SQL 语句修改 | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/44.query_cache_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/44.query_cache_size-1.md new file mode 100644 index 000000000..694129dbf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/44.query_cache_size-1.md @@ -0,0 +1,15 @@ +query_cache_size +===================================== + +query_cache_size 用于设置分配给存储历史查询结果的内存,即尚未使用的内存,单位为 Byte。 + + +| **属性** | **描述** | +|--------|-----------------------------| +| 参数类型 | uint | +| 默认值 | 1048576 | +| 取值范围 | \[0, 18446744073709551615\] | +| 生效范围 | GLOBAL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/45.query_cache_type-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/45.query_cache_type-1.md new file mode 100644 index 000000000..e099f15de --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/45.query_cache_type-1.md @@ -0,0 +1,15 @@ +query_cache_type +===================================== + +query_cache_type 用于查询缓存类型。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | OFF | +| 取值范围 | * OFF:不缓存或检索结果。 * ON:缓存除了 `SELECT SQL_NO_CACHE ...`查询的所有结果。 * DEMAND:只缓存 `SELECT SQL_CACHE ... `查询的结果。 | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/46.sql_quote_show_create-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/46.sql_quote_show_create-1.md new file mode 100644 index 000000000..6fd327afe --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/46.sql_quote_show_create-1.md @@ -0,0 +1,14 @@ +sql_quote_show_create +========================================== + +sql_quote_show_create 用于设置是否为 `SHOW CREATE TABLE` 和 `SHOW CREATE DATABASE` 语句启动引用标识符。 + + +| **属性** | **描述** | +|--------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | true | +| 取值范围 | * true:启用 * false:不启用 | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/47.max_sp_recursion_depth-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/47.max_sp_recursion_depth-1.md new file mode 100644 index 000000000..c5733675b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/47.max_sp_recursion_depth-1.md @@ -0,0 +1,15 @@ +max_sp_recursion_depth +=========================================== + +max_sp_recursion_depth 用于设置可以递归调用任一指定存储过程的最大层次。默认值为 0 ,表示当前存储过程不可递归调用。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 255\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/48.ob_proxy_partition_hit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/48.ob_proxy_partition_hit-1.md new file mode 100644 index 000000000..6202c17a2 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/48.ob_proxy_partition_hit-1.md @@ -0,0 +1,17 @@ +ob_proxy_partition_hit +=========================================== + +ob_proxy_partition_hit 用于设置 OBProxy 是否将 SQL 语句请求的数据发送到这些数据主 Partition 所在的 OBServer 上。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 1:是 * 0:否 | +| 生效范围 | SESSION | +| 是否可修改 | 否 | +| 是否可见 | 否,所有租户均不可见 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/49.ob_log_level-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/49.ob_log_level-1.md new file mode 100644 index 000000000..c422db784 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/49.ob_log_level-1.md @@ -0,0 +1,15 @@ +ob_log_level +================================= + +ob_log_level 用于设置 Session 级的日志级别,如果不指定则使用系统中的日志级别。 + + +| **属性** | **描述** | +|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | disabled | +| 取值范围 | * trace * info * warn * error | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/5.character_set_client-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/5.character_set_client-1.md new file mode 100644 index 000000000..2e6b8f576 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/5.character_set_client-1.md @@ -0,0 +1,17 @@ +character_set_client +========================================= + +character_set_client 用于设置客户端发送语句的字符集。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | * utf8mb4 * binary * gbk | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否可以为空 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/50.ob_max_parallel_degree-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/50.ob_max_parallel_degree-1.md new file mode 100644 index 000000000..a8ec77e74 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/50.ob_max_parallel_degree-1.md @@ -0,0 +1,15 @@ +ob_max_parallel_degree +=========================================== + +ob_max_parallel_degree 用于设置每次请求最大的并发数。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 16 | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/51.ob_query_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/51.ob_query_timeout-1.md new file mode 100644 index 000000000..f46f5e0ad --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/51.ob_query_timeout-1.md @@ -0,0 +1,16 @@ +ob_query_timeout +===================================== + +ob_query_timeout 用于设置查询超时时间,单位是微秒。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 10000000 | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/52.ob_read_consistency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/52.ob_read_consistency-1.md new file mode 100644 index 000000000..c5f6cbcd3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/52.ob_read_consistency-1.md @@ -0,0 +1,17 @@ +ob_read_consistency +======================================== + +ob_read_consistency 用于设置读一致性级别。 + + +| **属性** | **描述** | +|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | 3 | +| 取值范围 | * 0:空字符串 * 1:FROZEN * 2:WEAK * 3:STRONG | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/53.ob_enable_transformation-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/53.ob_enable_transformation-1.md new file mode 100644 index 000000000..ebd72673c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/53.ob_enable_transformation-1.md @@ -0,0 +1,17 @@ +ob_enable_transformation +============================================= + +ob_enable_transformation 用于设置是否开启 SQL 优化器的改写功能。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不开启 * 1:开启 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/54.ob_trx_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/54.ob_trx_timeout-1.md new file mode 100644 index 000000000..beeb5641f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/54.ob_trx_timeout-1.md @@ -0,0 +1,16 @@ +ob_trx_timeout +=================================== + +ob_trx_timeout 用于设置事务超时时间,单位为微秒。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 100000000 | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/55.ob_enable_plan_cache-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/55.ob_enable_plan_cache-1.md new file mode 100644 index 000000000..a4b2a8eef --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/55.ob_enable_plan_cache-1.md @@ -0,0 +1,16 @@ +ob_enable_plan_cache +========================================= + +ob_enable_plan_cache 用于设置是否打开 Plan Cache。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:关闭 * 1:打开 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/56.ob_enable_index_direct_select-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/56.ob_enable_index_direct_select-1.md new file mode 100644 index 000000000..5f75ca1c4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/56.ob_enable_index_direct_select-1.md @@ -0,0 +1,17 @@ +ob_enable_index_direct_select +================================================== + +ob_enable_index_direct_select 用于设置是否允许用户直接查询索引表。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不允许 * 1:允许 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/57.ob_proxy_set_trx_executed-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/57.ob_proxy_set_trx_executed-1.md new file mode 100644 index 000000000..d6b46da94 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/57.ob_proxy_set_trx_executed-1.md @@ -0,0 +1,17 @@ +ob_proxy_set_trx_executed +============================================== + +ob_proxy_set_trx_executed 用于设置用户是否通过 OBProxy 发送 `START TRANSACTION Syntax` 给 OBServer。 + + +| **属性** | **描述** | +|--------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不发送 * 1:发送 | +| 生效范围 | SESSION | +| 是否可修改 | 否 | +| 是否可见 | 否,所有租户均不可见 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/58.ob_enable_aggregation_pushdown-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/58.ob_enable_aggregation_pushdown-1.md new file mode 100644 index 000000000..eac829e7f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/58.ob_enable_aggregation_pushdown-1.md @@ -0,0 +1,16 @@ +ob_enable_aggregation_pushdown +=================================================== + +ob_enable_aggregation_pushdown 用于设置是否允许聚合操作下压。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不允许 * 1:允许 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/59.ob_last_schema_version-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/59.ob_last_schema_version-1.md new file mode 100644 index 000000000..129c4f8d4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/59.ob_last_schema_version-1.md @@ -0,0 +1,16 @@ +ob_last_schema_version +=========================================== + +ob_last_schema_version 用于设置该 Session 中最新使用的 Schema 版本号。 + +当 Proxy 的同一个连接对应到多个 Server 时,需要使用该系统变量进行 Schema 同步,故该变量只在 Session 级别生效。 + + +| **属性** | **描述** | +|--------|----------------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 9223372036854775807\] | +| 生效范围 | SESSION | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/6.character_set_connection-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/6.character_set_connection-1.md new file mode 100644 index 000000000..6749765c0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/6.character_set_connection-1.md @@ -0,0 +1,17 @@ +character_set_connection +============================================= + +character_set_connection 用于设置收到语句后应转换的字符集。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | * utf8mb4 * binary * gbk | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否可以为空 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/60.ob_global_debug_sync-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/60.ob_global_debug_sync-1.md new file mode 100644 index 000000000..e03ea533a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/60.ob_global_debug_sync-1.md @@ -0,0 +1,15 @@ +ob_global_debug_sync +========================================= + +ob_global_debug_sync 用于 debug 时设置同步点,与 debug_sync 不同,设置此变量会影响所有 Session。只有 debug_sync_timeout 配置项的值不为 0 时,该设置才有效。 + + +| **属性** | **描述** | +|--------|------------| +| 参数类型 | varchar | +| 默认值 | 空字符串 | +| 取值范围 | 无 | +| 生效范围 | SESSION | +| 是否可见 | 否,所有租户均不可见 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/61.ob_proxy_global_variables_version-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/61.ob_proxy_global_variables_version-1.md new file mode 100644 index 000000000..8d3e6561b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/61.ob_proxy_global_variables_version-1.md @@ -0,0 +1,18 @@ +ob_proxy_global_variables_version +====================================================== + +ob_proxy_global_variables_version 用于设置 OBServer 返回给 OBproxy 所需的全局变量的最新版本信息。 + + +| **属性** | **描述** | +|--------|-----------------| +| 参数类型 | int | +| 默认值 | 5 | +| 取值范围 | \[0, INT64_MAX) | +| 生效范围 | SESSION | +| 是否可修改 | 否 | +| 是否可见 | 否,所有租户均不可见 | + + + +执行 `select @@ob_proxy_global_variables_version` 语句时将返回当前全局变量的最新版本号。默认值为 0,用户不可修改。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/62.ob_enable_trace_log-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/62.ob_enable_trace_log-1.md new file mode 100644 index 000000000..13727d894 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/62.ob_enable_trace_log-1.md @@ -0,0 +1,16 @@ +ob_enable_trace_log +======================================== + +ob_enable_trace_log 用于设置是否使用 trace 日志。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不使用 * 1:使用 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/63.ob_enable_hash_group_by-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/63.ob_enable_hash_group_by-1.md new file mode 100644 index 000000000..3ac93e381 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/63.ob_enable_hash_group_by-1.md @@ -0,0 +1,17 @@ +ob_enable_hash_group_by +============================================ + +ob_enable_hash_group_by 用于设置是否打开 Hash Group by 的路径。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不允许 * 1:允许 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/64.ob_enable_blk_nestedloop_join-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/64.ob_enable_blk_nestedloop_join-1.md new file mode 100644 index 000000000..512e67c65 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/64.ob_enable_blk_nestedloop_join-1.md @@ -0,0 +1,17 @@ +ob_enable_blk_nestedloop_join +================================================== + +ob_enable_blk_nestedloop_join 用于设置是否允许打开 block nested loop join。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不允许 * 1:允许 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/65.ob_bnl_join_cache_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/65.ob_bnl_join_cache_size-1.md new file mode 100644 index 000000000..65bd8c90e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/65.ob_bnl_join_cache_size-1.md @@ -0,0 +1,16 @@ +ob_bnl_join_cache_size +=========================================== + +ob_bnl_join_cache_size 用于设置 batch nest loop join 一次 cache 多少数据做一次 batch。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 10485760 | +| 取值范围 | \[1, 9223372036854775807\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/66.ob_org_cluster_id-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/66.ob_org_cluster_id-1.md new file mode 100644 index 000000000..7e700e857 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/66.ob_org_cluster_id-1.md @@ -0,0 +1,18 @@ +ob_org_cluster_id +====================================== + +ob_org_cluster_id 用于设置 OceanBase 集群的 CLUSTER_ID。 + +通常情况下不需要设置 ob_org_cluster_id 变量,OceanBase 数据库生成日志(clog)时会使用缺省值(即每一个 OceanBase 集群的 CLUSTER_ID)。DRC 在复制数据写入目标集群时,需要在 Session 中将该变量设置为日志中所带的 CLUSTER_ID,以免数据被循环复制。 + + +| **属性** | **描述** | +|---------|-------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 4294967295\] | +| 生效范围 | SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/67.ob_plan_cache_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/67.ob_plan_cache_percentage-1.md new file mode 100644 index 000000000..5ffa012b3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/67.ob_plan_cache_percentage-1.md @@ -0,0 +1,15 @@ +ob_plan_cache_percentage +============================================= + +ob_plan_cache_percentage 用于设置计划缓存可以使用的租户内存资源的百分比。 + + +| **属性** | **描述** | +|---------|------------| +| 参数类型 | int | +| 默认值 | 5 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/68.ob_plan_cache_evict_high_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/68.ob_plan_cache_evict_high_percentage-1.md new file mode 100644 index 000000000..95be9ac06 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/68.ob_plan_cache_evict_high_percentage-1.md @@ -0,0 +1,16 @@ +ob_plan_cache_evict_high_percentage +======================================================== + +ob_plan_cache_evict_high_percentage 用于设置触发计划缓存逐出的计划缓存限制的内存使用百分比。 + + +| **属性** | **描述** | +|---------|------------| +| 参数类型 | int | +| 默认值 | 90 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/69.ob_plan_cache_evict_low_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/69.ob_plan_cache_evict_low_percentage-1.md new file mode 100644 index 000000000..6bed8d75c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/69.ob_plan_cache_evict_low_percentage-1.md @@ -0,0 +1,15 @@ +ob_plan_cache_evict_low_percentage +======================================================= + +ob_plan_cache_evict_low_percentage 用于设置停止计划缓存逐出的计划缓存限制的内存使用百分比。 + + +| **属性** | **描述** | +|---------|------------| +| 参数类型 | int | +| 默认值 | 50 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/7.character_set_results-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/7.character_set_results-1.md new file mode 100644 index 000000000..a82715aa8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/7.character_set_results-1.md @@ -0,0 +1,16 @@ +character_set_results +========================================== + +character_set_results 用于设置服务器在将结果集或错误消息发送回客户端之前应转换为的字符集。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | * utf8mb4 * binary * gbk | +| 生效范围 | * GLOBAL * SESSION | +| 是否可以为空 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/70.recyclebin-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/70.recyclebin-1.md new file mode 100644 index 000000000..f8b24190f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/70.recyclebin-1.md @@ -0,0 +1,16 @@ +recyclebin +=============================== + +recyclebin 用于设置是否开启回收站功能。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不开启 * 1:开启 | +| 生效范围 | * GLOBAL * SESSION | + + + +启用回收站后,删除的表及其依赖对象将放置在回收站中;当禁用回收站时,删除的表及其依赖对象不会放置在回收站中,会直接删除。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/71.ob_capability_flag-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/71.ob_capability_flag-1.md new file mode 100644 index 000000000..8199ccc37 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/71.ob_capability_flag-1.md @@ -0,0 +1,17 @@ +ob_capability_flag +======================================= + +ob_capability_flag 是 OBServer 能够提供的能力,用于和 Proxy 连接时进行能力协商,告知 Proxy 当前 OBServer 支持哪些功能,不支持哪些功能。 + + +| **属性** | **描述** | +|--------|----------------------------| +| 参数类型 | uint | +| 默认值 | 0 | +| 取值范围 | \[0,18446744073709551615\] | +| 生效范围 | SESSION | +| 是否可修改 | 否 | +| 是否可见 | 否,对所有租户均不可见 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/72.ob_stmt_parallel_degree-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/72.ob_stmt_parallel_degree-1.md new file mode 100644 index 000000000..bfde17660 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/72.ob_stmt_parallel_degree-1.md @@ -0,0 +1,17 @@ +ob_stmt_parallel_degree +============================================ + +ob_stmt_parallel_degree 用于设置查询的并行度,即可以并行运行的任务数。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 1 | +| 取值范围 | \[1, 10240\] | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/73.is_result_accurate-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/73.is_result_accurate-1.md new file mode 100644 index 000000000..4a9cc53f7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/73.is_result_accurate-1.md @@ -0,0 +1,16 @@ +is_result_accurate +======================================= + +当查询带有 topk 提示时,is_result_accurate 表示结果是否正确。 + + +| **属性** | **描述** | +|---------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不正确 * 1:正确 | +| 生效范围 | SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/74.error_on_overlap_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/74.error_on_overlap_time-1.md new file mode 100644 index 000000000..981dcad35 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/74.error_on_overlap_time-1.md @@ -0,0 +1,16 @@ +error_on_overlap_time +========================================== + +error_on_overlap_time 是动态参数,用于设置夏令时重叠区时间发生歧义时是否作报错处理。 + + +| **属性** | **描述** | +|---------|-------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | OFF | +| 取值范围 | * ON:进行报错处理 * OFF:不进行报错处理 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/75.ob_compatibility_mode-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/75.ob_compatibility_mode-1.md new file mode 100644 index 000000000..92739c65d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/75.ob_compatibility_mode-1.md @@ -0,0 +1,17 @@ +ob_compatibility_mode +========================================== + +ob_compatibility_mode 用于指定租户的兼容模式。该系统变量只能在创建租户时指定,租户创建好之后则无法修改。 + + +| **属性** | **描述** | +|---------|---------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | MYSQL | +| 取值范围 | * MYSQL:表示兼容 MYSQL * ORACLE:表示兼容 ORACLE | +| 生效范围 | * GLOBAL * SESSION | +| 是否可修改 | 否 | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/76.ob_create_table_strict_mode-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/76.ob_create_table_strict_mode-1.md new file mode 100644 index 000000000..7c4f5dc27 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/76.ob_create_table_strict_mode-1.md @@ -0,0 +1,14 @@ +ob_create_table_strict_mode +================================================ + +`ob_create_table_strict_mode` 是动态变量,用于设置建表的严格模式。 + + +| **属性** | **描述** | +|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 1:表示会严格按照 Locality 建立副本,任何副本建立失败,则建表失败。 * 0:表示全类型副本至少有 1 个,Paxos 成员组副本达到多数,则建表成功。 | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/77.ob_sql_work_area_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/77.ob_sql_work_area_percentage-1.md new file mode 100644 index 000000000..5f06a240e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/77.ob_sql_work_area_percentage-1.md @@ -0,0 +1,14 @@ +ob_sql_work_area_percentage +================================================ + +ob_sql_work_area_percentage 用于 SQL 执行的租户内存百分比限制。 + + +| **属性** | **描述** | +|--------|------------| +| 参数类型 | int | +| 默认值 | 5 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/78.ob_safe_weak_read_snapshot-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/78.ob_safe_weak_read_snapshot-1.md new file mode 100644 index 000000000..f38df2d26 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/78.ob_safe_weak_read_snapshot-1.md @@ -0,0 +1,17 @@ +ob_safe_weak_read_snapshot +=============================================== + +ob_safe_weak_read_snapshot 用于 Proxy 向数据库同步弱读一致性读快照。 + + +| **属性** | **描述** | +|---------|----------------------------| +| 参数类型 | int | +| 默认值 | 1 | +| 取值范围 | \[0, 9223372036854775807\] | +| 生效范围 | SESSION | +| 是否参与序列化 | 是 | +| 是否可见 | 否,对所有租户均不可见 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/79.ob_route_policy-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/79.ob_route_policy-1.md new file mode 100644 index 000000000..7664cca2d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/79.ob_route_policy-1.md @@ -0,0 +1,16 @@ +ob_route_policy +==================================== + +ob_route_policy 用于设置 OBProxy 或 Java 客户端与 OBServer 内部重试的路由策略。 + + +| **属性** | **描述** | +|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | 1 | +| 取值范围 | * 1:READONLY_ZONE_FIRST * 2:ONLY_READONLY_ZONE * 3:UNMERGE_ZONE_FIRST * 4:UNMERGE_FOLLOWER_FIRST | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/8.character_set_server-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/8.character_set_server-1.md new file mode 100644 index 000000000..262c56957 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/8.character_set_server-1.md @@ -0,0 +1,15 @@ +character_set_server +========================================= + +character_set_server 用于设置服务器字符集。 + + +| **属性** | **描述** | +|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | * utf8mb4 * binary * gbk * gb18030 * utf16 | +| 生效范围 | * GLOBAL * SESSION | +| 是否可以为空 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/80.ob_enable_transmission_checksum-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/80.ob_enable_transmission_checksum-1.md new file mode 100644 index 000000000..62a27b7b3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/80.ob_enable_transmission_checksum-1.md @@ -0,0 +1,16 @@ +ob_enable_transmission_checksum +==================================================== + +ob_enable_transmission_checksum 用于设置 Proxy 和 Server 之间是否进行数据包校验和,设置后实时生效。 + + +| **属性** | **描述** | +|---------|--------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不进行校验和 * 1:进行校验和 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/81.foreign_key_checks-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/81.foreign_key_checks-1.md new file mode 100644 index 000000000..8000b7556 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/81.foreign_key_checks-1.md @@ -0,0 +1,17 @@ +foreign_key_checks +================== + +foreign_key_checks 用于设置是否在 DML 中检查外建约束。 + +| **属性** | **描述** | +|---------|------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:不检查外键约束 * 1:检查外键约束 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + +**说明** + +说明:该变量设置后,仅对 DML 操作有效,DDL 操作不受影响。 + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/82.ob_enable_truncate_flashback-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/82.ob_enable_truncate_flashback-1.md new file mode 100644 index 000000000..54dcc1c8c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/82.ob_enable_truncate_flashback-1.md @@ -0,0 +1,15 @@ +ob_enable_truncate_flashback +================================================= + +ob_enable_truncate_flashback 用于设置是否启用表截断的闪回。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 0 | +| 取值范围 | * 0:不启用 * 1:启用 | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/83.ob_tcp_invited_nodes-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/83.ob_tcp_invited_nodes-1.md new file mode 100644 index 000000000..d0ad7eda5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/83.ob_tcp_invited_nodes-1.md @@ -0,0 +1,14 @@ +ob_tcp_invited_nodes +========================================= + +`ob_tcp_invited_nodes` 用于设置租户的 IP 白名单,支持百分号(%) 、短横线(_) 和 IP(多个 IP 之间用逗号分隔),支持 IP 列表匹配、掩码匹配和模糊匹配。 + + +| **属性** | **描述** | +|--------|---------------| +| 参数类型 | varchar | +| 默认值 | 127.0.0.1,::1 | +| 取值范围 | 字符串长度小于 1024 | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/84.sql_throttle_current_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/84.sql_throttle_current_priority-1.md new file mode 100644 index 000000000..29e18e2cf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/84.sql_throttle_current_priority-1.md @@ -0,0 +1,15 @@ +sql_throttle_current_priority +================================================== + +sql_throttle_current_priority 用于设置限流优先级,只有 sql_throttle_current_priority 小于 sql_throttle_priority 的那些 Session 上的请求才会被限流。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 100 | +| 取值范围 | 无取值范围,推荐值100 | +| 生效范围 | * GLOBAL * SESSION | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/85.sql_throttle_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/85.sql_throttle_priority-1.md new file mode 100644 index 000000000..3c372cc7f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/85.sql_throttle_priority-1.md @@ -0,0 +1,20 @@ +sql_throttle_priority +========================================== + +sql_throttle_priority 用于设置限流优先级。只有 sql_throttle_current_priority 小于 sql_throttle_priority 的那些 Session 上的请求才会被限流。 + + +| **属性** | **描述** | +|--------|---------------------------------------------------| +| 参数类型 | int | +| 默认值 | -1 | +| 取值范围 | 无取值范围,实际使用时与 sql_throttle_current_priority 的取值相关 | +| 生效范围 | GLOBAL | + + +**说明** + + + +如果查询的优先级小于此值,则可能不允许执行查询。 + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/86.sql_throttle_rt-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/86.sql_throttle_rt-1.md new file mode 100644 index 000000000..d0b2a89fe --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/86.sql_throttle_rt-1.md @@ -0,0 +1,15 @@ +sql_throttle_rt +==================================== + +sql_throttle_rt 用于指定 RT 值,单位为微秒。如果查询的 RT 值不小于该值,则不允许执行该查询。 + + +| **属性** | **描述** | +|--------|-----------------| +| 参数类型 | numeric | +| 默认值 | -1 | +| 取值范围 | 无取值范围,与实际业务负载相关 | +| 生效范围 | GLOBAL | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/87.sql_throttle_network-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/87.sql_throttle_network-1.md new file mode 100644 index 000000000..7fc734b2b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/87.sql_throttle_network-1.md @@ -0,0 +1,14 @@ +sql_throttle_network +========================================= + +sql_throttle_network 用于指定请求排队时间,如果请求排队时间大于或等于该值,则不允许执行查询。 + + +| **属性** | **描述** | +|--------|---------------| +| 参数类型 | numeric | +| 默认值 | -1 | +| 取值范围 | 与系统负载相关,单位 us | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/88.auto_increment_cache_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/88.auto_increment_cache_size-1.md new file mode 100644 index 000000000..ce6fb7475 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/88.auto_increment_cache_size-1.md @@ -0,0 +1,16 @@ +auto_increment_cache_size +============================================== + +auto_increment_cache_size 用于设置缓存的自增值个数。 + + +| **属性** | **描述** | +|---------|------------------| +| 参数类型 | int | +| 默认值 | 1000000 | +| 取值范围 | \[1, 100000000\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/89.ob_enable_jit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/89.ob_enable_jit-1.md new file mode 100644 index 000000000..711f388dc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/89.ob_enable_jit-1.md @@ -0,0 +1,17 @@ +ob_enable_jit +================================== + +ob_enable_jit 用于设置 JIT 执行引擎模式。 + + +| **属性** | **描述** | +|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | OFF | +| 取值范围 | * OFF:当前 Session 不开启表达式编译执行。 * AUTO:当前 Session 表达式编译执行只有在 SQL 执行平均 RT 大于 1s 时才开启。 * FORCE:当前 Session 强制开启表达式编译执行功能。 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | +| 是否影响计划生成 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/9.character_set_system-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/9.character_set_system-1.md new file mode 100644 index 000000000..376bcb466 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/9.character_set_system-1.md @@ -0,0 +1,15 @@ +character_set_system +========================================= + +character_set_system 设置服务器使用的字符集。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | string | +| 默认值 | utf8mb4 | +| 取值范围 | utf8mb4 | +| 生效范围 | * GLOBAL * SESSION | +| 是否可以修改 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/90.ob_timestamp_service-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/90.ob_timestamp_service-1.md new file mode 100644 index 000000000..44e74cfad --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/90.ob_timestamp_service-1.md @@ -0,0 +1,15 @@ +ob_timestamp_service +========================================= + +ob_timestamp_service 用于指定使用何种时间戳服务。 + + +| **属性** | **描述** | +|---------|-------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | enum | +| 默认值 | GTS | +| 取值范围 | * LTS * GTS * HA_GTS | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/91.plugin_dir-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/91.plugin_dir-1.md new file mode 100644 index 000000000..3e2105e8e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/91.plugin_dir-1.md @@ -0,0 +1,14 @@ +plugin_dir +=============================== + +plugin_dir 用于设置存放插件 DLL 的路径。 + + +| **属性** | **描述** | +|--------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | varchar | +| 默认值 | ./plugin_dir/ | +| 取值范围 | NULL | +| 生效范围 | * GLOBAL * SESSION | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/92.undo_retention-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/92.undo_retention-1.md new file mode 100644 index 000000000..f8552efe4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/92.undo_retention-1.md @@ -0,0 +1,39 @@ +undo_retention +=================================== + +`undo_retention` 表示系统应保留的多版本数据范围,单位为秒,在转储时控制多版本数据的回收。 + + +| **属性** | **描述** | +|--------|-------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 2^32^) | +| 生效范围 | GLOBAL | + + + +OceanBase 数据库转储的数据会保留多个版本的历史数据行,您可以通过 `undo_retention `来控制转储中保留的多版本数据范围。 + +其中: + +* 当 `undo_retention` 的值为 `0` 时,表示未开启多版本转储,即转储文件仅保留当前最新版本的行数据。 + + + + + + + + +* 当 `undo_retention` 的值大于 `0` 时,表示开启多版本转储,并且转储文件保留这段时间(多少秒)以内的多版本行数据。 + + + + + +**注意** + + + +租户开启多版本转储后,大版本合并会保留对应的增量转储文件,但 Major SSTable 中不会存放多版本数据。建议该参数不要设置过大,防止因参数过大而导致保留的 SSTable 数量超限。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/93.ob_sql_audit_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/93.ob_sql_audit_percentage-1.md new file mode 100644 index 000000000..99d400b05 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/93.ob_sql_audit_percentage-1.md @@ -0,0 +1,15 @@ +ob_sql_audit_percentage +============================================ + +ob_sql_audit_percentage 用于设置 SQL Audit 内存上限占当前租户内存的百分比。 + + +| **属性** | **描述** | +|---------|------------| +| 参数类型 | int | +| 默认值 | 10 | +| 取值范围 | \[0, 100\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/94.ob_enable_sql_audit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/94.ob_enable_sql_audit-1.md new file mode 100644 index 000000000..0cdd4f11e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/94.ob_enable_sql_audit-1.md @@ -0,0 +1,17 @@ +ob_enable_sql_audit +======================================== + +ob_enable_sql_audit 用于控制当前租户是否开启 SQL Audit 功能。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | true | +| 取值范围 | * true:表示开启 * false:表示关闭 | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + + +enable_sql_audit 为 false 时,全部的租户均不会开启 sql audit 功能。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/95.optimizer_use_sql_plan_baselines-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/95.optimizer_use_sql_plan_baselines-1.md new file mode 100644 index 000000000..210b522d7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/95.optimizer_use_sql_plan_baselines-1.md @@ -0,0 +1,15 @@ +optimizer_use_sql_plan_baselines +===================================================== + +`optimizer_use_sql_plan_baselines` 用于控制优化器是否会使用 Plan Baseline 计划。 + + +| **属性** | **描述** | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:表示在新生成计划时,不再考虑 Plan Baseline 中的计划,直接使用优化器生成新计划并执行。 * 1: 表示在新生成计划时,优化器会优先使用Plan Baseline 计划,对于新的不同计划则验证通过后才使用。 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/96.optimizer_capture_sql_plan_baselines-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/96.optimizer_capture_sql_plan_baselines-1.md new file mode 100644 index 000000000..fe45e4f0c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/96.optimizer_capture_sql_plan_baselines-1.md @@ -0,0 +1,15 @@ +optimizer_capture_sql_plan_baselines +========================================================= + +`optimizer_capture_sql_plan_baselines` 用于控制是否自动捕获新计划到 Plan Baseline。 + + +| **属性** | **描述** | +|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | bool | +| 默认值 | 1 | +| 取值范围 | * 0:表示不自动捕获新计划到 plan baseline中。 * 1:表示对于新生成的计划,如果该 SQL 没有对应的 Plan Baseline,则将该计划加入到 SQL Plan Baseline, 已有 Plan Baseline 且与新计划不同, 则会触发计划演进进行验证,确定是否需要将新计划替换老的 Plan Baseline。 | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/97.parallel_max_servers-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/97.parallel_max_servers-1.md new file mode 100644 index 000000000..6bbcb43d6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/97.parallel_max_servers-1.md @@ -0,0 +1,16 @@ +parallel_max_servers +========================================= + +parallel_max_servers 用于设置每个 Server 上并行执行(Parallel eXecution,PX)线程池的大小。 + + +| **属性** | **描述** | +|---------|-------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 1800\] | +| 生效范围 | GLOBAL | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/98.parallel_servers_target-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/98.parallel_servers_target-1.md new file mode 100644 index 000000000..e202a2493 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/98.parallel_servers_target-1.md @@ -0,0 +1,14 @@ +parallel_servers_target +============================================ + +parallel_servers_target 用于设置每个 Server 上的大查询排队条件。当并行执行(Parallel eXecution,PX)线程池中有指定的空闲线程数时才调度新查询。 + + +| **属性** | **描述** | +|--------|----------------------------| +| 参数类型 | int | +| 默认值 | 0 | +| 取值范围 | \[0, 9223372036854775807\] | +| 生效范围 | GLOBAL | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/99.ob_trx_idle_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/99.ob_trx_idle_timeout-1.md new file mode 100644 index 000000000..5887fedf3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/2.system-variable-1/99.ob_trx_idle_timeout-1.md @@ -0,0 +1,16 @@ +ob_trx_idle_timeout +======================================== + +ob_trx_idle_timeout 用于设置事务空闲超时时间,即事务中两条语句之间的执行间隔超过该值时超时,单位为微秒。 + + +| **属性** | **描述** | +|---------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | int | +| 默认值 | 120s | +| 取值范围 | \[100s,+∞) | +| 生效范围 | * GLOBAL * SESSION | +| 是否参与序列化 | 是 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/1.system-configuration-items-overview-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/1.system-configuration-items-overview-1.md new file mode 100644 index 000000000..dfbb974e3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/1.system-configuration-items-overview-1.md @@ -0,0 +1,71 @@ +系统配置项概述 +============================ + +OceanBase 数据库的配置项对应 OceanBase 数据库的集群参数,通过配置项可以控制集群的负载均衡、合并时间、合并方式、资源分配和模块开关等。 + +生效方式 +------------------------- + +配置项一般分为动态生效和重启生效两种方式,大部分配置项为动态生效方式,即不需要重启 OBServer 即可生效。 + +参数级别 +------------------------- + +OceanBase 数据库的配置项分为集群级别和租户级别。 + +查询某个配置项为集群级别还是租户级别的方法如下: + +```sql +obclient> SHOW PARAMETERS LIKE 'max_syslog_file_count'; ++-------+----------+----------------+----------+-----------------------+-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +| zone | svr_type | svr_ip | svr_port | name | data_type | value | info + | section | scope | source | edit_level | ++-------+----------+----------------+----------+-----------------------+-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +| zone2 | observer | +xx.xx.xx.xx + | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +| zone2 | observer | xx.xx.xx.xx | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +| zone3 | observer | xx.xx.xx.xx | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +| zone1 | observer | xx.xx.xx.xx | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +| zone1 | observer | xx.xx.xx.xx | 2882 | max_syslog_file_count | NULL | 0 | specifies the maximum number of the log files that can co-exist before the log file recycling kicks in. Each log file can occupy at most 256MB disk space. When this value is set to 0, no log file will be removed. Range: [0, +∞) in integer | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | ++-------+----------+----------------+----------+-----------------------+-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ +5 rows in set (0.02 sec) +``` + + + +其中,`scope` 列对应的值为 `CLUSTER` 表示该配置项为集群级别;如果 `scope` 列对应的值为 `TENANT`,则表示该配置项为租户级别。 + +管理权限 +------------------------- + +配置项的管理遵循以下管理规则: + +* 系统租户可以查看和设置所有其他租户(包括系统租户)的配置项。 + + + +* 普通租户只能查看和设置本租户的配置项。 + + + + + + +当 OBServer 启动后,如果未指定配置项,则系统会使用指定配置项的默认值。更多配置项的查看和设置操作请参见 [集群参数管理](/zh-CN/6.administrator-guide/3.basic-database-management/1.oceanbase-cluster-management/7.cluster-parameter-management/1.overview-of-cluster-parameter-management.md) 章节。 + +与系统变量对比 +---------------------------- + + + +| 对比项 | 系统配置项 | 系统变量 | +|------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 生效范围 | 分为集群、Zone、机器和租户。 | 分为租户的 Global 或 Session 级别。 | +| 生效方式 | * 动态生效:`edit_level` 为`dynamic_effective`。 * 重启生效:`edit_level` 为 `static_effective` 。 | * 设置 Session 级别的变量仅对当前 Session 有效,对其他 Session 无效。 * 设置 Global 级别的变量对当前 Session 无效,需要重新登录建立新的 Session 才会生效。 | +| 修改方式 | * 支持通过 SQL 语句修改,示例如下: ```sql obclient> Alter SYSTEM SET schema_history_expire_time='1h' ``` * 支持通过启动参数修改,示例如下: ```sql cd /home/admin && ./bin/observer -o "schema_history_expire_time='1h'" ``` | 仅支持通过 SQL 语句修改,示例如下: * MySQL 模式 ```sql obclient> SET ob_query_timeout = 20000000; obclient> SET GLOBAL ob_query_timeout = 20000000; ``` * Oracle 模式 ```sql obclient> SET ob_query_timeout = 20000000; obclient> ALTER SYSTEM SET ob_query_timeout = 20000000; ``` | +| 持久化 | 持久化到内部表与配置文件,可以在 `/home/admin/oceanbase/etc/observer.config.bin` 与 `/home/admin/oceanbase/etc/observer.config.bin.history` 文件中查询该配置项。 | 仅 GLOBAL 级别的变量会持久化,SESSION 级别的变量不会进行持久化。 | +| 生命周期 | 长,从进程启动到退出。 | 短,需要租户的 Schema 创建成功以后才生效。 | +| 查询方式 | 可以使用 `SHOW PARAMETERS` 语句查询。 | 可以使用 `SHOW [GLOBAL] VARIABLES` 语句查询。 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/10.balancer_timeout_check_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/10.balancer_timeout_check_interval-1.md new file mode 100644 index 000000000..612730057 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/10.balancer_timeout_check_interval-1.md @@ -0,0 +1,14 @@ +balancer_timeout_check_interval +==================================================== + +balancer_timeout_check_interval 用于设置检查负载均衡等后台任务超时的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 1m,表示 1 分钟 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/100.index_clog_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/100.index_clog_cache_priority-1.md new file mode 100644 index 000000000..aaa377718 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/100.index_clog_cache_priority-1.md @@ -0,0 +1,15 @@ +index_clog_cache_priority +============================================== + +index_clog_cache_priority 用于设置事务日志索引在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/101.index_info_block_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/101.index_info_block_cache_priority-1.md new file mode 100644 index 000000000..cccf2103e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/101.index_info_block_cache_priority-1.md @@ -0,0 +1,14 @@ +index_info_block_cache_priority +==================================================== + +index_info_block_cache_priority 用于设置块索引在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/102.internal_sql_execute_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/102.internal_sql_execute_timeout-1.md new file mode 100644 index 000000000..297a7eb21 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/102.internal_sql_execute_timeout-1.md @@ -0,0 +1,14 @@ +internal_sql_execute_timeout +================================================= + +internal_sql_execute_timeout 用于设置系统内部 DML 请求的时间间隔。 + + +| **属性** | **描述** | +|------------------|-------------------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[1000us, 10min\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/103.large_query_worker_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/103.large_query_worker_percentage-1.md new file mode 100644 index 000000000..1f467551a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/103.large_query_worker_percentage-1.md @@ -0,0 +1,15 @@ +large_query_worker_percentage +================================================== + +large_query_worker_percentage 用于设置预留给处理大查询的工作线程百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 30 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/104.large_query_threshold-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/104.large_query_threshold-1.md new file mode 100644 index 000000000..93cd07ad4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/104.large_query_threshold-1.md @@ -0,0 +1,15 @@ +large_query_threshold +========================================== + +large_query_threshold 用于设置查询执行时间的阈值。超过时间的请求可能被暂停,暂停后自动被判断为大查询,执行大查询调度策略。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 5s | +| 取值范围 | \[1ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/105.leak_mod_to_check-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/105.leak_mod_to_check-1.md new file mode 100644 index 000000000..713e9b9c4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/105.leak_mod_to_check-1.md @@ -0,0 +1,15 @@ +leak_mod_to_check +====================================== + +leak_mod_to_check 用于内存泄露检查,是属于内部调试的功能。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | none | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/106.lease_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/106.lease_time-1.md new file mode 100644 index 000000000..f97f0f66a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/106.lease_time-1.md @@ -0,0 +1,16 @@ +lease_time +=============================== + +lease_time 用于设置心跳租约时长。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 10s | +| 取值范围 | \[1s, 5min\] | +| 是否重启 OBServer 生效 | 否 | + + + +RootService 在心跳租约时长内未收到 OBServer 的心跳信息,则认为 OBServer 为脱机状态。 一般不建议修改该配置项。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/107.location_cache_cpu_quota-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/107.location_cache_cpu_quota-1.md new file mode 100644 index 000000000..2d800884d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/107.location_cache_cpu_quota-1.md @@ -0,0 +1,14 @@ +location_cache_cpu_quota +============================================= + +location_cache_cpu_quota 用于设置位置缓存模块使用的 CPU 配额。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 5 | +| 取值范围 | \[0, 10\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/108.location_cache_expire_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/108.location_cache_expire_time-1.md new file mode 100644 index 000000000..98bff25e6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/108.location_cache_expire_time-1.md @@ -0,0 +1,15 @@ +location_cache_expire_time +=============================================== + +location_cache_expire_time 用于设置分区位置缓存中分区位置信息的过期时长。不建议修改。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 600s | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/109.location_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/109.location_cache_priority-1.md new file mode 100644 index 000000000..ec415af95 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/109.location_cache_priority-1.md @@ -0,0 +1,15 @@ +location_cache_priority +============================================ + +location_cache_priority 用于设置位置缓存在系统缓存服务中的优先级。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 1000 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/11.balancer_task_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/11.balancer_task_timeout-1.md new file mode 100644 index 000000000..b1f91723f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/11.balancer_task_timeout-1.md @@ -0,0 +1,14 @@ +balancer_task_timeout +========================================== + +balancer_task_timeout 用于设置负载均衡等后台任务的超时时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 20m,表示 20 分钟 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/110.location_cache_refresh_min_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/110.location_cache_refresh_min_interval-1.md new file mode 100644 index 000000000..63ab8d15c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/110.location_cache_refresh_min_interval-1.md @@ -0,0 +1,15 @@ +location_cache_refresh_min_interval +======================================================== + +location_cache_refresh_min_interval 用于设置位置缓存刷新请求的最小间隔,防止产生过多刷新请求造成系统压力过大。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[0s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/111.location_fetch_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/111.location_fetch_concurrency-1.md new file mode 100644 index 000000000..16401c614 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/111.location_fetch_concurrency-1.md @@ -0,0 +1,14 @@ +location_fetch_concurrency +=============================================== + +location_fetch_concurrency 用于设置单机 location_cache 刷新的最大并发数。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 20 | +| 取值范围 | \[1, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/112.location_refresh_thread_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/112.location_refresh_thread_count-1.md new file mode 100644 index 000000000..8a60091fe --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/112.location_refresh_thread_count-1.md @@ -0,0 +1,15 @@ +location_refresh_thread_count +================================================== + +location_refresh_thread_count 用于设置 OBServer 从 RootService 中获取分区位置信息的线程数量。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 4 | +| 取值范围 | \[2, 64\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/113.log_archive_checkpoint_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/113.log_archive_checkpoint_interval-1.md new file mode 100644 index 000000000..0f6faf054 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/113.log_archive_checkpoint_interval-1.md @@ -0,0 +1,14 @@ +log_archive_checkpoint_interval +==================================================== + +log_archive_checkpoint_interval 用于设置冷数据的日志归档检查点的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[5s, 1h\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/114.log_archive_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/114.log_archive_concurrency-1.md new file mode 100644 index 000000000..3524cd692 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/114.log_archive_concurrency-1.md @@ -0,0 +1,14 @@ +log_archive_concurrency +============================================ + +log_archive_concurrency 用于设置日志归档的并发度。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/115.log_restore_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/115.log_restore_concurrency-1.md new file mode 100644 index 000000000..c157c8673 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/115.log_restore_concurrency-1.md @@ -0,0 +1,14 @@ +log_restore_concurrency +============================================ + +log_restore_concurrency 用于设置恢复日志的并发度。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/116.major_freeze_duty_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/116.major_freeze_duty_time-1.md new file mode 100644 index 000000000..3cba8505c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/116.major_freeze_duty_time-1.md @@ -0,0 +1,15 @@ +major_freeze_duty_time +=========================================== + +major_freeze_duty_time 用于设置每日定时冻结和合并的触发时刻。 + + +| **属性** | **描述** | +|------------------|------------------| +| 参数类型 | 时刻 | +| 默认值 | 02:00 | +| 取值范围 | \[00:00, 23:59\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/117.max_kept_major_version_number-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/117.max_kept_major_version_number-1.md new file mode 100644 index 000000000..2c69ae0ab --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/117.max_kept_major_version_number-1.md @@ -0,0 +1,15 @@ +max_kept_major_version_number +================================================== + +max_kept_major_version_number 用于设置数据保留的冻结版本数量。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[1, 16\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/118.max_string_print_length-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/118.max_string_print_length-1.md new file mode 100644 index 000000000..1d760670b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/118.max_string_print_length-1.md @@ -0,0 +1,15 @@ +max_string_print_length +============================================ + +max_string_print_length 用于设置打印系统日志时,单行日志最大长度。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 500 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/119.max_syslog_file_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/119.max_syslog_file_count-1.md new file mode 100644 index 000000000..ea70390f6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/119.max_syslog_file_count-1.md @@ -0,0 +1,16 @@ +max_syslog_file_count +========================================== + +max_syslog_file_count 用于设置在回收日志文件之前可以容纳的日志文件数量。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +每个日志文件最多可以占用 256 MB 的磁盘空间。 当该配置项的值为 0 时,不会删除任何日志文件。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/12.balancer_tolerance_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/12.balancer_tolerance_percentage-1.md new file mode 100644 index 000000000..511b10ff0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/12.balancer_tolerance_percentage-1.md @@ -0,0 +1,14 @@ +balancer_tolerance_percentage +================================================== + +balancer_tolerance_percentage 用于设置负载均衡策略中,租户内多个 UNIT 间磁盘不均衡程度的宽容度,如果在均值 + 或 - 宽容度范围之内,不会触发执行均衡动作。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/120.merge_stat_sampling_ratio-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/120.merge_stat_sampling_ratio-1.md new file mode 100644 index 000000000..ae79ad3c0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/120.merge_stat_sampling_ratio-1.md @@ -0,0 +1,14 @@ +merge_stat_sampling_ratio +============================================== + +merge_stat_sampling_ratio 用于设置合并时候数据列统计信息的采样率。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/121.major_compact_trigger-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/121.major_compact_trigger-1.md new file mode 100644 index 000000000..82ca308b8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/121.major_compact_trigger-1.md @@ -0,0 +1,16 @@ +major_compact_trigger +========================================== + +major_compact_trigger 用于设置多少次小合并触发一次全局合并。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 5 | +| 取值范围 | \[0, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 major_compact_trigger 配置项的取值为 0 时,表示关闭小合并。该配置项与配置项 minor_freeze_times 的功能相同。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/122.memory_chunk_cache_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/122.memory_chunk_cache_size-1.md new file mode 100644 index 000000000..56d8f1d35 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/122.memory_chunk_cache_size-1.md @@ -0,0 +1,16 @@ +memory_chunk_cache_size +============================================ + +memory_chunk_cache_size 用于设置内存分配器缓存的内存块容量。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 0M | +| 取值范围 | \[0M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +当 memory_chunk_cache_size 配置项的值为 0 时,表示系统自适应。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/123.memory_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/123.memory_limit-1.md new file mode 100644 index 000000000..0cb45a9c7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/123.memory_limit-1.md @@ -0,0 +1,48 @@ +memory_limit +================================= + +memory_limit 表示可用的总内存大小。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 0 | +| 取值范围 | \[0M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +memory_limit 的默认值为 0。如果该值不为 0,则系统会忽略 memory_limit_percentage 的设置而优先使用 memory_limit 配置的值。例如,一台物理机的内存为 100 G,memory_limit_percentage 设置为 80,表示使用 80% 的内存,而 memory_limit 参数设置为 90G,则实际物理机上 OceanBase 数据库可分配的内存使用 memory_limit 的配置,即 90 G。 + +使用注意事项: + +* memory_limit 的默认单位为 MB。 + + 例如,`memory_limit='40G' `表示设置 OceanBase 数据库进程的使用内存上限是40 GB。由于默认单位为 MB,则 `memory_limit=40960 `与 `memory_limit='40G' `设置的值相同。 + + +* memory_limit 的值目前无上限。如果设置的内存最大上限超过了实际的物理内存总和,则会导致系统中其他按总内存计算的值偏大。 + + + +* 如果希望限制运行中的 OceanBase 数据库的内存大小,可以直接修改 memory_limit 的值,使其达到预期。设置后,后台参数 Reload 线程会使其动态生效,无需重启。但是在设置时,需要保证 memory_limit 的值小于系统总 hold 值。 + + + **注意** + + + + `memory_limit `的值必须大于 OBServer 实际已使用的内存。 + + 查询当前已使用的内存数(单位:GB)的方法如下: + + ```sql + obclient> SELECT value/1024/1024/1024 used_gb FROM v$sysstat WHERE name LIKE '%observer memory%' AND con_id = 1 AND stat_id=140008 AND name='observer memory used size'; + ``` + + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/124.memory_limit_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/124.memory_limit_percentage-1.md new file mode 100644 index 000000000..69168b64c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/124.memory_limit_percentage-1.md @@ -0,0 +1,15 @@ +memory_limit_percentage +============================================ + +memory_limit_percentage 用于设置系统总可用内存大小占总内存大小的百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[10, 90\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/125.memory_reserved-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/125.memory_reserved-1.md new file mode 100644 index 000000000..520b243dd --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/125.memory_reserved-1.md @@ -0,0 +1,15 @@ +memory_reserved +==================================== + +memory_reserved 用于设置系统预留内存的大小。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 容量单位 | +| 默认值 | 500M | +| 取值范围 | \[10M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/126.merge_thread_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/126.merge_thread_count-1.md new file mode 100644 index 000000000..69965508f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/126.merge_thread_count-1.md @@ -0,0 +1,16 @@ +merge_thread_count +======================================= + +`merge_thread_count` 用于设置每日合并工作的线程数。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 256\] | +| 是否重启 OBServer 生效 | 否 | + + + +该配置项的值为 `0` 时,合并的工作进程数的计算方式为 `min{10,cpu_cnt*0.3}`,其中 `cpu_cnt` 为系统 CPU 的数量。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/127.merger_check_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/127.merger_check_interval-1.md new file mode 100644 index 000000000..0db8acc3b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/127.merger_check_interval-1.md @@ -0,0 +1,15 @@ +merger_check_interval +========================================== + +merger_check_interval 用于设置合并状态检查线程的调度间隔。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 10m,表示 10 分钟 | +| 取值范围 | \[10s, 60m\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/128.merger_completion_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/128.merger_completion_percentage-1.md new file mode 100644 index 000000000..df43011cf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/128.merger_completion_percentage-1.md @@ -0,0 +1,15 @@ +merger_completion_percentage +================================================= + +merger_completion_percentage 用于设置合并完成副本数的百分比阈值,达到该阈值则认为本轮合并完成调度。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[5, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/129.merger_switch_leader_duration_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/129.merger_switch_leader_duration_time-1.md new file mode 100644 index 000000000..9c8e996f6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/129.merger_switch_leader_duration_time-1.md @@ -0,0 +1,15 @@ +merger_switch_leader_duration_time +======================================================= + +merger_switch_leader_duration_time 用于设置每日合并时批量切主的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 3m,表示 3 分钟 | +| 取值范围 | \[0s, 30\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/13.balancer_emergency_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/13.balancer_emergency_percentage-1.md new file mode 100644 index 000000000..33b88539f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/13.balancer_emergency_percentage-1.md @@ -0,0 +1,15 @@ +balancer_emergency_percentage +================================================== + +balancer_emergency_percentage 用于设置 UNIT 负载阈值,即当 UNIT 负载超过该阈值时,允许开启副本向外迁移,即使在合并期间也执行负载均衡。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/130.merger_warm_up_duration_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/130.merger_warm_up_duration_time-1.md new file mode 100644 index 000000000..fc5160917 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/130.merger_warm_up_duration_time-1.md @@ -0,0 +1,15 @@ +merger_warm_up_duration_time +================================================= + +merger_warm_up_duration_time 用于设置合并时,新版基线数据的预热时间。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s, 60m\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/131.max_px_worker_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/131.max_px_worker_count-1.md new file mode 100644 index 000000000..79fe90bf9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/131.max_px_worker_count-1.md @@ -0,0 +1,15 @@ +max_px_worker_count +======================================== + +max_px_worker_count 用于设置 SQL 并行查询引擎使用的最大线程数。 + + +| **属** **性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 64 | +| 取值范围 | \[0, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/132.migration_disable_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/132.migration_disable_time-1.md new file mode 100644 index 000000000..b3eb26810 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/132.migration_disable_time-1.md @@ -0,0 +1,15 @@ +migration_disable_time +=========================================== + +migration_disable_time 用于设置因磁盘满等原因导致某个节点数据迁入失败时的暂停迁入时长。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 3600s | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/133.min_observer_version-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/133.min_observer_version-1.md new file mode 100644 index 000000000..1c94be0ed --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/133.min_observer_version-1.md @@ -0,0 +1,15 @@ +min_observer_version +========================================= + +`min_observer_version` 用于设置本集群最低的 OBServer 应用程序版本号。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | 3.1.0 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/134.minor_deferred_gc_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/134.minor_deferred_gc_time-1.md new file mode 100644 index 000000000..966dcf0f6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/134.minor_deferred_gc_time-1.md @@ -0,0 +1,15 @@ +minor_deferred_gc_time +=========================================== + +minor_deferred_gc_time 用于设置合并之后 SSTable 延迟回收的时间间隔。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s, 24h\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/135.minor_freeze_times-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/135.minor_freeze_times-1.md new file mode 100644 index 000000000..512d341ff --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/135.minor_freeze_times-1.md @@ -0,0 +1,19 @@ +minor_freeze_times +======================================= + +minor_freeze_times 用于设置多少次小合并触发一次全局合并。值为 0 时,表示关闭小合并。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 5 | +| 取值范围 | \[0, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +minor_freeze_times 配置项与 major_compact_trigger 配置项具有相同功能。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/136.minor_warm_up_duration_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/136.minor_warm_up_duration_time-1.md new file mode 100644 index 000000000..267ecdd4c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/136.minor_warm_up_duration_time-1.md @@ -0,0 +1,16 @@ +minor_warm_up_duration_time +================================================ + +minor_warm_up_duration_time 用于设置小合并产生新转储文件的预热时间。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[0s, 60m\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 minor_warm_up_duration_time 配置项的值为 0s 时,表示不进行预热。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/137.mysql_port-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/137.mysql_port-1.md new file mode 100644 index 000000000..b9a7d5346 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/137.mysql_port-1.md @@ -0,0 +1,15 @@ +mysql_port +=============================== + +mysql_port 用于设置 SQL 服务协议端口号。 + + +| **属性** | **描述** | +|------------------|-----------------| +| 参数类型 | 整型 | +| 默认值 | 2880 | +| 取值范围 | \[1025, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/138.minor_merge_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/138.minor_merge_concurrency-1.md new file mode 100644 index 000000000..4cf41f71c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/138.minor_merge_concurrency-1.md @@ -0,0 +1,14 @@ +minor_merge_concurrency +============================================ + +minor_merge_concurrency 用于设置小合并时的并发线程数。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 64\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/139.multiblock_read_gap_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/139.multiblock_read_gap_size-1.md new file mode 100644 index 000000000..c00f22438 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/139.multiblock_read_gap_size-1.md @@ -0,0 +1,14 @@ +multiblock_read_gap_size +============================================= + +multiblock_read_gap_size 用于设置一次 IO 聚合读取块缓存的最大容量。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 容量单位 | +| 默认值 | 0K | +| 取值范围 | \[0k, 2M\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/14.balance_blacklist_failure_threshold-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/14.balance_blacklist_failure_threshold-1.md new file mode 100644 index 000000000..8e953d73e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/14.balance_blacklist_failure_threshold-1.md @@ -0,0 +1,14 @@ +balance_blacklist_failure_threshold +======================================================== + +balance_blacklist_failure_threshold 用于设置副本迁移等后台任务连续失败次数的阈值。副本迁移等后台任务连续失败次数超过该阈值后,将被放入黑名单。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 5 | +| 取值范围 | \[0, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/140.multiblock_read_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/140.multiblock_read_size-1.md new file mode 100644 index 000000000..eb2d0f9f2 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/140.multiblock_read_size-1.md @@ -0,0 +1,15 @@ +multiblock_read_size +========================================= + +multiblock_read_size 用于设置读取数据时 IO 聚合大小。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 容量单位 | +| 默认值 | 128k | +| 取值范围 | \[0K, 2M\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/141.micro_block_merge_verify_level-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/141.micro_block_merge_verify_level-1.md new file mode 100644 index 000000000..859ae6602 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/141.micro_block_merge_verify_level-1.md @@ -0,0 +1,14 @@ +micro_block_merge_verify_level +=================================================== + +micro_block_merge_verify_level 用于设置合并时宏块的校验级别。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | * 0:表示不做校验 * 1:表示验证编码算法,将读取编码后的微块以确保数据正确 * 2:表示验证编码和压缩算法,除编码验证外,还将对压缩块进行解压缩以确保数据正确 * 3:表示验证编码,压缩算法和丢失写保护 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/142.migrate_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/142.migrate_concurrency-1.md new file mode 100644 index 000000000..ed2291ef5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/142.migrate_concurrency-1.md @@ -0,0 +1,14 @@ +migrate_concurrency +======================================== + +migrate_concurrency 用于控制控制内部数据迁移的并发度。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[0, 64\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/143.minor_compact_trigger-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/143.minor_compact_trigger-1.md new file mode 100644 index 000000000..7b09cfec9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/143.minor_compact_trigger-1.md @@ -0,0 +1,16 @@ +minor_compact_trigger +========================================== + +minor_compact_trigger 用于控制分层转储触发向下一层下压的阈值。当该层的 Mini SSTable 总数达到设定的阈值时,所有 SSTable 都会被下压到下一层,组成新的 Minor SSTable。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[0, 16\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 minor_compact_trigger 的值为 0 时,OceanBase 数据库仍会进行分层转储,即此时 MemTable 仍然会 Dump 为 Mini SSTable,但后续会立即调度下压合并生成新的 Minor SSTable,替代原有的 Minor SSTable。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/144.memstore_limit_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/144.memstore_limit_percentage-1.md new file mode 100644 index 000000000..876ee244b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/144.memstore_limit_percentage-1.md @@ -0,0 +1,20 @@ +memstore_limit_percentage +============================================== + +memstore_limit_percentage 用于设置租户使用 memstore 的内存占其总可用内存的百分比。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 50 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + + +memstore_limit_percentage 配置项用于计算 Memstore_limit 的值: + +memstore_limit_percentage = memstore_limit / min_memory + +其中,min_memory 为创建租户时指定的值。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/145.net_thread_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/145.net_thread_count-1.md new file mode 100644 index 000000000..4c27f58d7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/145.net_thread_count-1.md @@ -0,0 +1,16 @@ +net_thread_count +===================================== + +net_thread_count 用于设置网络 I/O 线程数。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 12 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 net_thread_count 配置项值为 8 时,表示 RPC 和 MySQL 的 libeasy 的 I/O 线程各为 8 个线程。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/146.obconfig_url-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/146.obconfig_url-1.md new file mode 100644 index 000000000..794a606dd --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/146.obconfig_url-1.md @@ -0,0 +1,15 @@ +obconfig_url +================================= + +obconfig_url 用于设置 OBConfig 服务的 URL 地址。OBServer 从指定 URL 获取 RootService 的地址。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/147.ob_enable_batched_multi_statement-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/147.ob_enable_batched_multi_statement-1.md new file mode 100644 index 000000000..00ea52931 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/147.ob_enable_batched_multi_statement-1.md @@ -0,0 +1,14 @@ +ob_enable_batched_multi_statement +====================================================== + +ob_enable_batched_multi_statement 用于设置是否启用批处理多条语句的功能。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False:不启用 * True:启用 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/148.partition_table_check_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/148.partition_table_check_interval-1.md new file mode 100644 index 000000000..709ce7b0e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/148.partition_table_check_interval-1.md @@ -0,0 +1,15 @@ +partition_table_check_interval +=================================================== + +partition_table_check_interval 用于设置 OBServer 从分区表中删除不存在的副本的时间间隔。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 30m,表示 30 分钟 | +| 取值范围 | \[1m, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/149.partition_table_scan_batch_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/149.partition_table_scan_batch_count-1.md new file mode 100644 index 000000000..3191bd294 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/149.partition_table_scan_batch_count-1.md @@ -0,0 +1,15 @@ +partition_table_scan_batch_count +===================================================== + +partition_table_scan_batch_count 用于设置批量读取分区表信息的数量。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 999 | +| 取值范围 | \[1, 65536\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/15.balance_blacklist_retry_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/15.balance_blacklist_retry_interval-1.md new file mode 100644 index 000000000..c0fdbee49 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/15.balance_blacklist_retry_interval-1.md @@ -0,0 +1,15 @@ +balance_blacklist_retry_interval +===================================================== + +balance_blacklist_retry_interval 用于设置副本迁移等后台任务被放入黑名单后的重试时间间隔。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 30m,表示 30 分钟 | +| 取值范围 | \[0s, 180m\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/150.plan_cache_evict_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/150.plan_cache_evict_interval-1.md new file mode 100644 index 000000000..58952d0f7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/150.plan_cache_evict_interval-1.md @@ -0,0 +1,15 @@ +plan_cache_evict_interval +============================================== + +plan_cache_evict_interval 用于设置执行计划缓存的淘汰时间间隔。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[0s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/151.px_task_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/151.px_task_size-1.md new file mode 100644 index 000000000..737452cbc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/151.px_task_size-1.md @@ -0,0 +1,15 @@ +px_task_size +================================= + +px_task_size 用于设置 SQL 并行查询引擎每个任务处理的数据量大小。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 2M | +| 取值范围 | \[2M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/152.px_workers_per_cpu_quota-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/152.px_workers_per_cpu_quota-1.md new file mode 100644 index 000000000..f37ddc478 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/152.px_workers_per_cpu_quota-1.md @@ -0,0 +1,14 @@ +px_workers_per_cpu_quota +============================================= + +px_workers_per_cpu_quota 用于设置并行执行工作线程数的比例。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[0, 20\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/153.replica_safe_remove_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/153.replica_safe_remove_time-1.md new file mode 100644 index 000000000..d21577a75 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/153.replica_safe_remove_time-1.md @@ -0,0 +1,15 @@ +replica_safe_remove_time +============================================= + +replica_safe_remove_time 用于设置已删除副本可以被清理的安全保留时间。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 2h | +| 取值范围 | \[1m, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/154.resource_hard_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/154.resource_hard_limit-1.md new file mode 100644 index 000000000..54686e811 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/154.resource_hard_limit-1.md @@ -0,0 +1,30 @@ +resource_hard_limit +======================================== + +resource_hard_limit 用于分配 unit 。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[1, 10000\] | +| 是否重启 OBServer 生效 | 否 | + + + +resource_hard_limit 与 resource_soft_limit 配置项一起配合使用。 + +* 如果 Server 的资源占用比少于 resource_soft_limit,则按 best_fit 来分配 Unit; + + + +* 如果 Server 的资源占用比大于 resource_soft_limit,则按照 leaset_load 来分配 Unit。 + + + + + + +在分配 CPU 和内存等资源时,资源总量是实际数量乘以该百分比的值。最终 Server 资源占比不能超过 resource_hard_limit。 + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/155.resource_soft_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/155.resource_soft_limit-1.md new file mode 100644 index 000000000..da9624b90 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/155.resource_soft_limit-1.md @@ -0,0 +1,16 @@ +resource_soft_limit +======================================== + +resource_soft_limit 用于设置是否开启 Unit 均衡。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 整型 | +| 默认值 | 50 | +| 取值范围 | \[1, 10000\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 resource_soft_limit 配置项取值小于 100 时, 表示 Unit 均衡开关打开;当时 resource_soft_limit 配置项取值大于等于 100 时,表示 Unit 均衡开关关闭。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/156.rootservice_async_task_queue_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/156.rootservice_async_task_queue_size-1.md new file mode 100644 index 000000000..15cb38db8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/156.rootservice_async_task_queue_size-1.md @@ -0,0 +1,15 @@ +rootservice_async_task_queue_size +====================================================== + +rootservice_async_task_queue_size 用于设置 RootService 内部异步任务队列的大小。 + + +| **属性** | **描述** | +|------------------|---------------| +| 参数类型 | 整型 | +| 默认值 | 16384 | +| 取值范围 | \[8, 131072\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/157.rootservice_async_task_thread_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/157.rootservice_async_task_thread_count-1.md new file mode 100644 index 000000000..092f4dd11 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/157.rootservice_async_task_thread_count-1.md @@ -0,0 +1,15 @@ +rootservice_async_task_thread_count +======================================================== + +rootservice_async_task_thread_count 用于设置 RootService 内部异步任务使用的线程池大小。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 4 | +| 取值范围 | \[1, 10\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/158.rootservice_list-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/158.rootservice_list-1.md new file mode 100644 index 000000000..5a8ddff94 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/158.rootservice_list-1.md @@ -0,0 +1,15 @@ +rootservice_list +===================================== + +rootservice_list 用于显示 RootService 及其副本所在的机器列表。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/159.rootservice_ready_check_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/159.rootservice_ready_check_interval-1.md new file mode 100644 index 000000000..34331a145 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/159.rootservice_ready_check_interval-1.md @@ -0,0 +1,15 @@ +rootservice_ready_check_interval +===================================================== + +rootservice_ready_check_interval 用于设置 RootService 启动后等待和检查集群状态的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------------| +| 参数类型 | 时间类型 | +| 默认值 | 3s | +| 取值范围 | \[100000us, 1m\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/16.backup_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/16.backup_concurrency-1.md new file mode 100644 index 000000000..31c5f3233 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/16.backup_concurrency-1.md @@ -0,0 +1,15 @@ +backup_concurrency +======================================= + +backup_concurrency 用于设置备份时写文件系统的并发数量。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/160.row_compaction_update_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/160.row_compaction_update_limit-1.md new file mode 100644 index 000000000..7c78c40da --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/160.row_compaction_update_limit-1.md @@ -0,0 +1,15 @@ +row_compaction_update_limit +================================================ + +row_compaction_update_limit 用于设置触发内存中行内数据合并的修改次数。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 6 | +| 取值范围 | \[1, 6400\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/161.row_purge_thread_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/161.row_purge_thread_count-1.md new file mode 100644 index 000000000..ab333bb25 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/161.row_purge_thread_count-1.md @@ -0,0 +1,15 @@ +row_purge_thread_count +=========================================== + +row_purge_thread_count 用于设置执行内存中行内数据合并的最大工作线程数。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 4 | +| 取值范围 | \[1, 64\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/162.rpc_port-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/162.rpc_port-1.md new file mode 100644 index 000000000..1f4c3c2e0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/162.rpc_port-1.md @@ -0,0 +1,14 @@ +rpc_port +============================= + +rpc_port 用于设置远程访问的协议端口号。 + + +| **属性** | **描述** | +|------------------|-----------------| +| 参数类型 | 整型 | +| 默认值 | 2500 | +| 取值范围 | \[1025, 65535\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/163.rpc_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/163.rpc_timeout-1.md new file mode 100644 index 000000000..f1b83fb0c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/163.rpc_timeout-1.md @@ -0,0 +1,15 @@ +rpc_timeout +================================ + +rpc_timeout 用于设置集群内部请求的超时时间。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 时间类型 | +| 默认值 | 2s | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/164.restore_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/164.restore_concurrency-1.md new file mode 100644 index 000000000..bc37b4303 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/164.restore_concurrency-1.md @@ -0,0 +1,15 @@ +restore_concurrency +======================================== + +restore_concurrency 用于设置从备份恢复租户数据时的最大并发度。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 512\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/165.rootservice_memory_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/165.rootservice_memory_limit-1.md new file mode 100644 index 000000000..0ca6a8cbf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/165.rootservice_memory_limit-1.md @@ -0,0 +1,15 @@ +rootservice_memory_limit +============================================= + +rootservice_memory_limit 用于设置 RootService 的最大内存容量限制。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 2G | +| 取值范围 | \[2G, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/166.rebuild_replica_data_lag_threshold-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/166.rebuild_replica_data_lag_threshold-1.md new file mode 100644 index 000000000..2b7135082 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/166.rebuild_replica_data_lag_threshold-1.md @@ -0,0 +1,17 @@ +rebuild_replica_data_lag_threshold +======================================================= + +rebuild_replica_data_lag_threshold 用于设置备副本的事务日志和主副本差距的阈值,当超过该阈值时,会触发副本重建。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 容量单位 | +| 默认值 | 50GB | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +rebuild_replica_data_lag_threshold 配置项的值为 0 时,表示不触发副本重建。 + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/167.schema_history_expire_time.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/167.schema_history_expire_time.md new file mode 100644 index 000000000..aedd0c8d0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/167.schema_history_expire_time.md @@ -0,0 +1,14 @@ +schema_history_expire_time +=============================================== + +schema_history_expire_time 用于设置元数据历史数据过期时间。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 7d,d 表示天 | +| 取值范围 | \[1h, 30d\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/168.ssl_client_authentication-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/168.ssl_client_authentication-1.md new file mode 100644 index 000000000..57c270888 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/168.ssl_client_authentication-1.md @@ -0,0 +1,19 @@ +ssl_client_authentication +============================================== + +ssl_client_authentication 用于设置是否开启 SSL 连接功能。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False:不开启 * True:开启 | +| 是否重启 OBServer 生效 | 是 | + + +**注意** + + + +ssl_client_authentication 配置后,仅在服务器重新启动所有 ca、cert、key 等文件后才生效。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/169.server_check_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/169.server_check_interval-1.md new file mode 100644 index 000000000..550cf3001 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/169.server_check_interval-1.md @@ -0,0 +1,15 @@ +server_check_interval +========================================== + +server_check_interval 用于设置 Server 表一致性检查的时间间隔。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/17.backup_dest-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/17.backup_dest-1.md new file mode 100644 index 000000000..0e7963013 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/17.backup_dest-1.md @@ -0,0 +1,19 @@ +backup_dest +================================ + +backup_dest 用于设置基线备份和日志归档的路径。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + +**注意** + + + +备份进行过程中不可修改 backup_dest 配置项。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/170.server_data_copy_in_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/170.server_data_copy_in_concurrency-1.md new file mode 100644 index 000000000..75c1eb948 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/170.server_data_copy_in_concurrency-1.md @@ -0,0 +1,15 @@ +server_data_copy_in_concurrency +==================================================== + +server_data_copy_in_concurrency 用于设置单个节点迁入数据的最大并发数。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[1, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/171.server_data_copy_out_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/171.server_data_copy_out_concurrency-1.md new file mode 100644 index 000000000..5f7ada349 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/171.server_data_copy_out_concurrency-1.md @@ -0,0 +1,15 @@ +server_data_copy_out_concurrency +===================================================== + +server_data_copy_out_concurrency 用于设置单个节点迁出数据的最大并发数。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[1, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/172.server_permanent_offline_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/172.server_permanent_offline_time-1.md new file mode 100644 index 000000000..2fb33f5d9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/172.server_permanent_offline_time-1.md @@ -0,0 +1,38 @@ +server_permanent_offline_time +================================================== + +server_permanent_offline_time 用于设置节点心跳中断的时间阈值,即节点心跳中断多久后认为其被永久下线,永久下线的节点上的数据副本需要被自动补足。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 3600s | +| 取值范围 | \[20s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +通过设置该配置项,可以避免不必要的副本复制,仅当副本丢失超出该时长后系统才启动永久下线节点上数据副本的复制。 + +该配置项的适用场景及建议值如下: + +* OceanBase 数据库版本升级场景:建议将该配置项的值设置为 `72h` + + **说明** + + + + 在使用 OCP V2.3.5 及以上版本对 OceanBase 数据库 V2.1.2 及以上版本进行升级时,系统会自动将该配置项的值设置为 `72h`。 + + +* OBServer 硬件更换场景:建议将该配置项的值设置为 `4h` + + + +* OBServer 清空上线场景:建议将该配置项的值设置为 `10m`,使集群快速上线 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/173.stack_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/173.stack_size-1.md new file mode 100644 index 000000000..72359f755 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/173.stack_size-1.md @@ -0,0 +1,15 @@ +stack_size +=============================== + +stack_size 用于设置程序函数调用栈的大小。 + + +| **属性** | **描述** | +|------------------|---------------| +| 参数类型 | 容量单位 | +| 默认值 | 1M | +| 取值范围 | \[512K, 20M\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/174.server_balance_critical_disk_waterlevel-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/174.server_balance_critical_disk_waterlevel-1.md new file mode 100644 index 000000000..dec0aa5f8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/174.server_balance_critical_disk_waterlevel-1.md @@ -0,0 +1,15 @@ +server_balance_critical_disk_waterlevel +============================================================ + +server_balance_critical_disk_waterlevel 用于设置磁盘空间的负载均衡功能的水位线。当磁盘水位线超过阈值时,负载均衡策略将倾向于优先考虑磁盘均衡。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/175.server_balance_disk_tolerance_percent-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/175.server_balance_disk_tolerance_percent-1.md new file mode 100644 index 000000000..b98b3b1da --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/175.server_balance_disk_tolerance_percent-1.md @@ -0,0 +1,15 @@ +server_balance_disk_tolerance_percent +========================================================== + +server_balance_disk_tolerance_percent 用于设置节点间磁盘负载均衡策略中不均衡程度的容忍度。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/176.system_memory-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/176.system_memory-1.md new file mode 100644 index 000000000..9a3c1b170 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/176.system_memory-1.md @@ -0,0 +1,19 @@ +system_memory +================================== + +`system_memory` 用于设置系统预留的内存容量。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 30G | +| 取值范围 | \[0M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + +**注意** + + + +系统预留内存不能分配给普通租户使用。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/177.server_balance_cpu_mem_tolerance_percent-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/177.server_balance_cpu_mem_tolerance_percent-1.md new file mode 100644 index 000000000..8557a6efc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/177.server_balance_cpu_mem_tolerance_percent-1.md @@ -0,0 +1,15 @@ +server_balance_cpu_mem_tolerance_percent +============================================================= + +server_balance_cpu_mem_tolerance_percent 在节点负载均衡策略中,用于设置 CPU 和内存资源不均衡的容忍度。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 5 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/178.server_cpu_quota_max-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/178.server_cpu_quota_max-1.md new file mode 100644 index 000000000..236faa2e8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/178.server_cpu_quota_max-1.md @@ -0,0 +1,14 @@ +server_cpu_quota_max +========================================= + +server_cpu_quota_max 用于设置系统可以使用的最大 CPU 配额。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 5 | +| 取值范围 | \[0, 16\] | +| 是否重启 OBServer 生效 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/179.server_cpu_quota_min-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/179.server_cpu_quota_min-1.md new file mode 100644 index 000000000..f6cf061dc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/179.server_cpu_quota_min-1.md @@ -0,0 +1,14 @@ +server_cpu_quota_min +========================================= + +server_cpu_quota_min 用于设置系统可以使用的最小 CPU 配额,系统会自动预留。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 2.5 | +| 取值范围 | \[0, 16\] | +| 是否重启 OBServer 生效 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/18.backup_net_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/18.backup_net_limit-1.md new file mode 100644 index 000000000..09d944a74 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/18.backup_net_limit-1.md @@ -0,0 +1,15 @@ +backup_net_limit +===================================== + +backup_net_limit 用于设置集群备份的总带宽。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 0M | +| 取值范围 | \[0M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/180.sql_audit_memory_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/180.sql_audit_memory_limit-1.md new file mode 100644 index 000000000..829164d3c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/180.sql_audit_memory_limit-1.md @@ -0,0 +1,15 @@ +sql_audit_memory_limit +=========================================== + +sql_audit_memory_limit 用于设置 SQL 审计数据可占用的最大内存。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 容量单位 | +| 默认值 | 3G | +| 取值范围 | \[64M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/181.sys_bkgd_io_high_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/181.sys_bkgd_io_high_percentage-1.md new file mode 100644 index 000000000..ccbca6e8e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/181.sys_bkgd_io_high_percentage-1.md @@ -0,0 +1,15 @@ +sys_bkgd_io_high_percentage +================================================ + +sys_bkgd_io_high_percentage 用于设置系统后台 IO 最高占用百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 90 | +| 取值范围 | \[1, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/182.sys_bkgd_io_low_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/182.sys_bkgd_io_low_percentage-1.md new file mode 100644 index 000000000..5e5fc01b7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/182.sys_bkgd_io_low_percentage-1.md @@ -0,0 +1,16 @@ +sys_bkgd_io_low_percentage +=============================================== + +sys_bkgd_io_low_percentage 用于设置系统后台 IO 最少占用的百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 sys_bkgd_io_low_percentage 的值为 0 时,系统根据环境自动配置比例。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/183.sys_bkgd_io_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/183.sys_bkgd_io_timeout-1.md new file mode 100644 index 000000000..efea2d4f2 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/183.sys_bkgd_io_timeout-1.md @@ -0,0 +1,14 @@ +sys_bkgd_io_timeout +======================================== + +sys_bkgd_io_timeout 系统后台 IO 请求超时时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 120s | +| 取值范围 | \[5s, 600s\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/184.sys_bkgd_net_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/184.sys_bkgd_net_percentage-1.md new file mode 100644 index 000000000..3b7894f6f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/184.sys_bkgd_net_percentage-1.md @@ -0,0 +1,15 @@ +sys_bkgd_net_percentage +============================================ + +sys_bkgd_net_percentage 用于设置后台系统任务可占用网络带宽百分比。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 60 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/185.sys_bkgd_migration_change_member_list_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/185.sys_bkgd_migration_change_member_list_timeout-1.md new file mode 100644 index 000000000..9d396901a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/185.sys_bkgd_migration_change_member_list_timeout-1.md @@ -0,0 +1,15 @@ +sys_bkgd_migration_change_member_list_timeout +================================================================== + +sys_bkgd_migration_change_member_list_timeout 用于设置副本迁移时变更 Paxos 成员组操作的超时时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 1h | +| 取值范围 | \[0s, 24 h\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/186.sys_bkgd_migration_retry_num-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/186.sys_bkgd_migration_retry_num-1.md new file mode 100644 index 000000000..388ee5f42 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/186.sys_bkgd_migration_retry_num-1.md @@ -0,0 +1,15 @@ +sys_bkgd_migration_retry_num +================================================= + +sys_bkgd_migration_retry_num 用于设置副本迁移失败时最多重试次数。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 3 | +| 取值范围 | \[3, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/187.syslog_level-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/187.syslog_level-1.md new file mode 100644 index 000000000..4e51eaa4b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/187.syslog_level-1.md @@ -0,0 +1,15 @@ +syslog_level +================================= + +syslog_level 用于设置系统日志级别。 + + +| **属性** | **描述** | +|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | INFO | +| 取值范围 | * DEBUG * TRACE * INFO * WARN * USER_ERR * ERROR\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/188.switchover_process_thread_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/188.switchover_process_thread_count-1.md new file mode 100644 index 000000000..0fb06b5f6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/188.switchover_process_thread_count-1.md @@ -0,0 +1,15 @@ +switchover_process_thread_count +==================================================== + +switchover_process_thread_count 用于设置主备库切换相关线程池的大小。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 6 | +| 取值范围 | \[1, 1000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/189.system_cpu_quota-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/189.system_cpu_quota-1.md new file mode 100644 index 000000000..ad5c30f5d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/189.system_cpu_quota-1.md @@ -0,0 +1,15 @@ +system_cpu_quota +===================================== + +system_cpu_quota 用于设置系统租户可使用的 CPU 配额。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 10 | +| 取值范围 | \[0, 16\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/19.backup_recovery_window-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/19.backup_recovery_window-1.md new file mode 100644 index 000000000..254a1bfcb --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/19.backup_recovery_window-1.md @@ -0,0 +1,19 @@ +backup_recovery_window +=========================================== + +backup_recovery_window 用于设置备份数据可以恢复的时间。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +备份数据恢复的时间单位为天,默认值为 0,表示不自动清理。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/190.sys_cpu_limit_trigger-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/190.sys_cpu_limit_trigger-1.md new file mode 100644 index 000000000..31a664b67 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/190.sys_cpu_limit_trigger-1.md @@ -0,0 +1,15 @@ +sys_cpu_limit_trigger +========================================== + +sys_cpu_limit_trigger 用于设置 CPU 利用率阈值,即当 CPU 利用率超过该阈值时,将暂停系统后台任务的执行。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[50, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/191.syslog_io_bandwidth_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/191.syslog_io_bandwidth_limit-1.md new file mode 100644 index 000000000..9c0823dd2 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/191.syslog_io_bandwidth_limit-1.md @@ -0,0 +1,15 @@ +syslog_io_bandwidth_limit +============================================== + +syslog_io_bandwidth_limit 用于设置系统日志所能占用的磁盘 IO 带宽上限,超过带宽上限容量的系统日志将被丢弃。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 容量单位 | +| 默认值 | 30MB | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/192.tablet_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/192.tablet_size-1.md new file mode 100644 index 000000000..ee18f238e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/192.tablet_size-1.md @@ -0,0 +1,16 @@ +tablet_size +================================ + +tablet_size 用于设置分区内部并行处理(合并、查询等)时每个分片的大小。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 容量单位 | +| 默认值 | 128M | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +tablet_size 的默认取值必须为 2M 的倍数,数值为 0 时,表示不采用分区内并行处理。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/193.tableapi_transport_compress_func-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/193.tableapi_transport_compress_func-1.md new file mode 100644 index 000000000..886c6c568 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/193.tableapi_transport_compress_func-1.md @@ -0,0 +1,15 @@ +tableapi_transport_compress_func +===================================================== + +`tableapi_transport_compress_func` 用于设置 tableAPI 查询结果传输使用的压缩算法。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | none | +| 取值范围 | * none * lz4_1.0 * snappy_1.0 * zlib_1.0 * zstd_1.0 * zstd 1.3.8 | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/194.tenant_task_queue_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/194.tenant_task_queue_size-1.md new file mode 100644 index 000000000..2d011e30d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/194.tenant_task_queue_size-1.md @@ -0,0 +1,15 @@ +tenant_task_queue_size +=========================================== + +tenant_task_queue_size 用于设置每个租户的请求队列大小。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 65536 | +| 取值范围 | \[1024, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/195.tenant_groups-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/195.tenant_groups-1.md new file mode 100644 index 000000000..ac54b479d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/195.tenant_groups-1.md @@ -0,0 +1,15 @@ +tenant_groups +================================== + +tenant_groups 用于设置负载均衡策略中使用的租户组。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/196.trace_log_slow_query_watermark-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/196.trace_log_slow_query_watermark-1.md new file mode 100644 index 000000000..5b912d9da --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/196.trace_log_slow_query_watermark-1.md @@ -0,0 +1,15 @@ +trace_log_slow_query_watermark +=================================================== + +trace_log_slow_query_watermark 用于设置查询的执行时间阈值,如果查询的执行时间超过该阈值,则被认为是慢查询,慢查询的追踪日志会被打印到系统日志中。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[1ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/197.trace_log_sampling_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/197.trace_log_sampling_interval-1.md new file mode 100644 index 000000000..11d55592c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/197.trace_log_sampling_interval-1.md @@ -0,0 +1,16 @@ +trace_log_sampling_interval +================================================ + +trace_log_sampling_interval 用于设置定期打印跟踪日志信息的时间。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 10ms | +| 取值范围 | \[0ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +当 enable_record_trace_log 设置为 false 时,由 trace_log_sampling_interval 决定打印慢查询和白名单信息的时间间隔。enable_record_trace_log 配置项相关信息请参见 [enable_record_trace_log](/zh-CN/14.reference-guide-oracle-mode/3.system-configuration-items-1/66.enable_record_trace_log-1.md)。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/198.trx_2pc_retry_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/198.trx_2pc_retry_interval-1.md new file mode 100644 index 000000000..cb9f0a210 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/198.trx_2pc_retry_interval-1.md @@ -0,0 +1,15 @@ +trx_2pc_retry_interval +=========================================== + +trx_2pc_retry_interval 用于设置两阶段提交失败时候自动重试的时间间隔。 + + +| **属性** | **描述** | +|------------------|-----------------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[1ms, 5000ms\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/199.trx_force_kill_threshold-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/199.trx_force_kill_threshold-1.md new file mode 100644 index 000000000..c0a503951 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/199.trx_force_kill_threshold-1.md @@ -0,0 +1,15 @@ +trx_force_kill_threshold +============================================= + +trx_force_kill_threshold 用于设置因冻结或切主需要杀事务时的最长等待时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[1ms, 10s\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/2.redundancy_level-not-available-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/2.redundancy_level-not-available-1.md new file mode 100644 index 000000000..9aa3514b6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/2.redundancy_level-not-available-1.md @@ -0,0 +1,33 @@ +redundancy_level(暂勿使用) +=========================================== + + + +redundancy_level 用于设置 OceanBase 数据库内置本地磁盘 RAID 特性。 + + +| **属性** | **描述** | +|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | NORMAL | +| 取值范围 | * EXTERNAL * NORMAL * HIGH | +| 是否重启 OBServer 生效 | 否 | + + + +redundancy_level 配置参数取值含义如下: + +* EXTERNAL 表示使用外部冗余 + + + +* NORMAL 表示允许一个磁盘故障 + + + +* HIGH 表示如果磁盘数量足够,则允许两个磁盘故障 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/20.backup_region-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/20.backup_region-1.md new file mode 100644 index 000000000..21b0303bc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/20.backup_region-1.md @@ -0,0 +1,15 @@ +backup_region +================================== + +backup_region 用于设置用户建议执行备份的地域。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/200.tde_method-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/200.tde_method-1.md new file mode 100644 index 000000000..3eea30a43 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/200.tde_method-1.md @@ -0,0 +1,14 @@ +tde_method +=============================== + +tde_method 用于设置透明表空间加密的方式。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | none | +| 取值范围 | * none:表示无法使用透明表空间加密 * internal:表示透明加密采用内部表的形式 * bkmi:表示透明加密采用外部 bkmi 的形式 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/201.token_reserved_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/201.token_reserved_percentage-1.md new file mode 100644 index 000000000..2469985de --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/201.token_reserved_percentage-1.md @@ -0,0 +1,14 @@ +token_reserved_percentage +============================================== + +token_reserved_percentage 在控制租户 CPU 调度中,用于设置每次预留多少比例的空闲 token 数给租户。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 30 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/202.unit_balance_resource_weight-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/202.unit_balance_resource_weight-1.md new file mode 100644 index 000000000..b37aeb712 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/202.unit_balance_resource_weight-1.md @@ -0,0 +1,28 @@ +unit_balance_resource_weight +================================================= + +unit_balance_resource_weight 用于设置 UNIT 均衡策略中使用的资源权重,一般不需要手工配置。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + +**注意** + + + +* 默认值为空。 如果设置,所有权重的总和必须为100。 + + + +* 当打开 enable_unit_balance_resource_weight 时, unit_balance_resource_weight 配置才能生效。 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/203.user_block_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/203.user_block_cache_priority-1.md new file mode 100644 index 000000000..87daded34 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/203.user_block_cache_priority-1.md @@ -0,0 +1,15 @@ +user_block_cache_priority +============================================== + +user_block_cache_priority 用于设置数据块缓存在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/204.user_row_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/204.user_row_cache_priority-1.md new file mode 100644 index 000000000..786cc953c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/204.user_row_cache_priority-1.md @@ -0,0 +1,14 @@ +user_row_cache_priority +============================================ + +user_row_cache_priority 用于设置基线数据行缓存在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/205.user_tab_col_stat_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/205.user_tab_col_stat_cache_priority-1.md new file mode 100644 index 000000000..70afeda3d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/205.user_tab_col_stat_cache_priority-1.md @@ -0,0 +1,15 @@ +user_tab_col_stat_cache_priority +===================================================== + +user_tab_col_stat_cache_priority 用于设置统计数据缓存在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/206.user_iort_up_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/206.user_iort_up_percentage-1.md new file mode 100644 index 000000000..77e76835c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/206.user_iort_up_percentage-1.md @@ -0,0 +1,14 @@ +user_iort_up_percentage +============================================ + +user_iort_up_percentage 用于设置用户磁盘 IO 时延阈值,即用户磁盘 IO 时延超过该阈值后,系统后台 IO 任务将被限流。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/207.use_large_pages-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/207.use_large_pages-1.md new file mode 100644 index 000000000..fc786f4a0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/207.use_large_pages-1.md @@ -0,0 +1,14 @@ +use_large_pages +==================================== + +use_large_pages 用于管理数据库使用的内存大页。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | false | +| 取值范围 | * false * true * only | +| 是否重启 OBServer 生效 | 是 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/208.virtual_table_location_cache_expire_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/208.virtual_table_location_cache_expire_time-1.md new file mode 100644 index 000000000..81bd81276 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/208.virtual_table_location_cache_expire_time-1.md @@ -0,0 +1,15 @@ +virtual_table_location_cache_expire_time +============================================================= + +virtual_table_location_cache_expire_time 用于设置虚拟表的位置信息缓存过期时间。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 8s | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/209.workers_per_cpu_quota-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/209.workers_per_cpu_quota-1.md new file mode 100644 index 000000000..40365c9c0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/209.workers_per_cpu_quota-1.md @@ -0,0 +1,29 @@ +workers_per_cpu_quota +========================================== + +`workers_per_cpu_quota` 用于设置分配给每个 CPU 配额的工作线程数量。 + + +| **属性** | **描述** | +|-------------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[2, 20\] | +| 是否重启 OBServer 生效 | 否 | + + + +租户中可同时处理的线程数由 `cpu_quota_concurrency` 与 `workers_per_cpu_quota` 2 个配置项控制,且设置时需要满足 `workers_per_cpu_quota > cpu_quota_concurrency`。 + +其中: + +* `workers_per_cpu_quota` 表示租户在每个 CPU 上能分配的最大工作线程数。 + + + +* `cpu_quota_concurrency` 表示租户在每个 CPU 上活跃的工作线程数,也即并发数。`cpu_quota_concurrency` 配置项的详细信息,请参见 [cpu_quota_concurrency](/zh-CN/14.reference-guide-oracle-mode/3.system-configuration-items-1/35.cpu_quota_concurrency-1.md)。 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/21.builtin_db_data_verify_cycle-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/21.builtin_db_data_verify_cycle-1.md new file mode 100644 index 000000000..d37712a1b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/21.builtin_db_data_verify_cycle-1.md @@ -0,0 +1,15 @@ +builtin_db_data_verify_cycle +================================================= + +builtin_db_data_verify_cycle 用于设置数据坏块自检周期,单位为天。当值为 0 时表示不检查。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 20 | +| 取值范围 | \[0, 360\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/210.wait_leader_batch_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/210.wait_leader_batch_count-1.md new file mode 100644 index 000000000..ee0e09623 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/210.wait_leader_batch_count-1.md @@ -0,0 +1,15 @@ +wait_leader_batch_count +============================================ + +wait_leader_batch_count 用于设置 RootService 每次发送切主命令的最大分区个数。 + + +| **属性** | **描述** | +|------------------|---------------| +| 参数类型 | 整型 | +| 默认值 | 1024 | +| 取值范围 | \[128, 5000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/211.writing_throttling_maximum_duration-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/211.writing_throttling_maximum_duration-1.md new file mode 100644 index 000000000..25261e9f5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/211.writing_throttling_maximum_duration-1.md @@ -0,0 +1,15 @@ +writing_throttling_maximum_duration +======================================================== + +write_throttling_maximum_duration 通过控制内存分配进度,控制写入速度。即指定在触发写入限速后,剩余 memstore 内存分配完所需的时间。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 1h | +| 取值范围 | \[1s, 3d\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/212.writing_throttling_trigger_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/212.writing_throttling_trigger_percentage-1.md new file mode 100644 index 000000000..d1d2bf80c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/212.writing_throttling_trigger_percentage-1.md @@ -0,0 +1,16 @@ +writing_throttling_trigger_percentage +========================================================== + +write_throttling_trigger_percentage 用于设置写入速度的阈值。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + +当 memstore 已使用的内存达到该阈值时,触发写入限速。当该配置项的值为 100 时,表示关闭写入限速机制。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/213.weak_read_version_refresh_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/213.weak_read_version_refresh_interval-1.md new file mode 100644 index 000000000..76a10556b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/213.weak_read_version_refresh_interval-1.md @@ -0,0 +1,20 @@ +weak_read_version_refresh_interval +======================================================= + +weak_read_version_refresh_interval 用于设置弱一致性读版本号的刷新周期,影响弱一致性读数据的延时。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 50ms | +| 取值范围 | \[0ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +weak_read_version_refresh_interval 值为 0 时,表示不再刷新弱一致性读版本号,不提供单调读功能。 + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/214.workarea_size_policy-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/214.workarea_size_policy-1.md new file mode 100644 index 000000000..38cc4fa97 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/214.workarea_size_policy-1.md @@ -0,0 +1,14 @@ +workarea_size_policy +========================================= + +`workarea_size_policy` 用于设置手动或者自动调整 SQL 工作区大小的策略。 + + +| **属性** | **描述** | +|------------------|-----------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | AUTO | +| 取值范围 | * MANUAL:表示手动调整 * AUTO:表示自动调整 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/215.zone-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/215.zone-1.md new file mode 100644 index 000000000..b7b7023c2 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/215.zone-1.md @@ -0,0 +1,15 @@ +zone +========================= + +zone 用于设置节点所在的 Zone 的名字。该配置项一般不需要配置。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/216.zone_merge_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/216.zone_merge_concurrency-1.md new file mode 100644 index 000000000..78ca4a0bf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/216.zone_merge_concurrency-1.md @@ -0,0 +1,15 @@ +zone_merge_concurrency +=========================================== + +zone_merge_concurrency 用于设置在合并时,支持多少个 Zone 并发。当值为 0 时,由系统根据部署情况自动选择最佳并发度。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/217.zone_merge_order-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/217.zone_merge_order-1.md new file mode 100644 index 000000000..30b44c83f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/217.zone_merge_order-1.md @@ -0,0 +1,14 @@ +zone_merge_order +===================================== + +zone_merge_order 用于设置 Zone 的轮转合并顺序。不指定时,由系统自动决定。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/218.zone_merge_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/218.zone_merge_timeout-1.md new file mode 100644 index 000000000..63606d178 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/218.zone_merge_timeout-1.md @@ -0,0 +1,15 @@ +zone_merge_timeout +======================================= + +zone_merge_timeout 用于设置单个 zone 的合并超时时间。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 3h | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/219.ob_ssl_invited_common_names-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/219.ob_ssl_invited_common_names-1.md new file mode 100644 index 000000000..539a3dd67 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/219.ob_ssl_invited_common_names-1.md @@ -0,0 +1,41 @@ +ob_ssl_invited_common_names +================================================ + +ob_ssl_invited_common_names 用于记录当前租户运行的应用身份列表,该身份来自 SSL 双向认证中 Client 端证书 subject 中的 `cn` 字段(common name)。 + + +| 属性 | 描述 | +|------------------|------| +| 参数类型 | 字符串 | +| 默认值 | NONE | +| 取值范围 | 无 | +| 是否重启 OBServer 生效 | 否 | + + + +在用户登录 Server 的密码校验完成后,检查如果同时满足以下三个条件,则限制登录: + +* Client 开启了 SSL,并且 Client 端的 CA、证书或私钥使用的是双向认证。 + + + +* Server 端配置了应用白名单,即白名单不为空。 + + + +* Client 证书 subject 的 `cn` 字段不在白名单内。 + + + + + + +若以上三个条件任何一个都不满足,则白名单检查失效,忽略检查。 + +使用示例如下: + +```sql +obclient> ALTER SYSTEM SET ob_ssl_invited_common_names = 'ALIPAY'; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/22.bf_cache_miss_count_threshold-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/22.bf_cache_miss_count_threshold-1.md new file mode 100644 index 000000000..676a1d3c3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/22.bf_cache_miss_count_threshold-1.md @@ -0,0 +1,15 @@ +bf_cache_miss_count_threshold +================================================== + +bf_cache_miss_count_threshold 用于控制 bloomfilter cache 的触发次数,当宏块未命中次数达到该值时,创建 bloomfilter 缓存。值为 0 时表示关闭。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/220.ssl_external_kms_info-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/220.ssl_external_kms_info-1.md new file mode 100644 index 000000000..37fbb07ea --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/220.ssl_external_kms_info-1.md @@ -0,0 +1,119 @@ +ssl_external_kms_info +========================================== + +ssl_external_kms_info 配置项用于记录 OceanBase 数据库 SSL 功能运行依赖的一些信息,通过 json 字符串方式记录不同 SSL 使用方式下依赖的相关配置,json 中至少包含类型 ssl_mode 字段。 + + +| 属性 | 描述 | +|------------------|------| +| 参数类型 | 字符串 | +| 默认值 | 空字符串 | +| 取值范围 | 无 | +| 是否重启 OBServer 生效 | 否 | + + + +使用说明: + +* 该配置项的默认值为空字符串。当 SSL 开关打开后,SSL 使用密钥将取值默认路径下的默认文件。 + + + +* 该配置项取值必须为有效 json,否则配置项设置会检查失败。 + + + +* 该配置项当前仅 ssl_mode 的取值有两种:file 和 bkmi。 + + * 指定为 file 时, json 字符串中不需要其他内容。 + + + + * 指定为 bkmi 时,运行时向 bkmi 获取 SSL 文件,本地不持久化存储。同时,json 字符串还需要提供完整的应用名、bkmi url、bkmi 根证书、身份秘钥、身份秘钥口令、SSL 私钥名称、SSL 私钥版本号、SSL 证书名称等。并且这些信息确实有效可用,即能通过这些从 bkmi 中获取私钥和证书,否则会报响应错误码。 + + + + + + + + + +为了支持外部其他各自的证书颁发体系,ssl_external_kms_info 还可以定制扩展为其他内容 json 串。 + +示例如下: + +```sql +obclient> ALTER SYSTEM SET external_ssl_info = ' +{ +"ssl_mode":"file" +}'; + +obclient> ALTER SYSTEM SET external_ssl_info = ' +{ +"ssl_mode":"bkmi", +"kms_host":"http://bkmi.test.alipay.net/bkmi/api", +"root_cert": +"-----BEGIN CERTIFICATE----- +MIIDqTCCApGgAwIBAgIHBXbH+VUEQTANBgkqhkiG9w0BAQsFADBaMSwwKgYDVQQD +DCNBbnQgRmluYW5hY2lhbCBJbnRyYW5ldCBDQSBSb290IFJTQTEXMBUGA1UECgwO +QW50IEZpbmFuYWNpYWwxETAPBgNVBAsMCEludHJhbmV0MB4XDTE4MDkyNjE1MzUz +N1oXDTQ4MDkyNjE1MzUzN1owWjEsMCoGA1UEAwwjQW50IEZpbmFuYWNpYWwgSW50 +cmFuZXQgQ0EgUm9vdCBSU0ExFzAVBgNVBAoMDkFudCBGaW5hbmFjaWFsMREwDwYD +VQQLDAhJbnRyYW5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJlz +hgCvUVB7wE4/V4Oj9Gq0Qji5dlIF2AyQ/L6xG/aM2cXmhxm7hhschhb6ERgf5z70 +lX5G22XLkH97mkZbX19aCH6xMmvVUaWpKpC1vrW+ZL8nLzWl8UXVONgqa1NvkIz2 +qUJNdGVgFXaSlH4EaK9FzklpHj1uo8KJdC6m33z8eoFpLREycbSkxISATseQF1y0 +WhpvZ0qB6aRft7OM4B1G0tu1+dlZ3Sh6rrCwR+yCw8vfYR4cUA9e8WFU7YciuTXK +l/1q3LfzU8LCe0Gtv29Ahk8Zb6lG7/XHwHG8diuKvyq4qlTNp/SjCJbuUx6RSBjD +zP1nRacRuKrxI9ybZ8MCAwEAAaN0MHIwHwYDVR0jBBgwFoAUmtzqDGWl1NWKvUAi +yR877VbODwAwHQYDVR0OBBYEFJrc6gxlpdTVir1AIskfO+1Wzg8AMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA8GA1UdJQQIMAYGBFUdJQAwDQYJKoZI +hvcNAQELBQADggEBAEa4NJ8y4OJLpbCC7SCGrGGTJ+ssbVIJdji21F3dn5yIPQfd +M/PM84y2cy6Tp9cvaDjOtagZ2e1Et5TeGZHiUeqlAjWDtY5lgGvJ80VwpxAUDhKn +LGfSMZo1v1gKKVxgh+iaof2L1UCtep5ETsYKeXLkgWsHYBFzqBlhiAZGuQVzaH7T +I66rtw6gOAmJuWoJlJyhVxg0vCgcl0ExaK3LRhkodzGHIonyaEtRCynpgJ4DmIjH +1I7OVqjdHhdt98U2A8oZVNcuwHLkfyXIC6Iu3GVs5IsQudiQwTW/kIOR+Chvu/lC +b/VmGj0MhvmYYc494vWdcNcfED/HPNshio66aiU= +-----END CERTIFICATE----- +", +"private_key": +"-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-128-CBC,D1CE2F7C3BD77CB130E563CDECB4AB5E +NyTth6D4/xeeQ59tn7pGDBhxbGaAsQpTowATdRRnK3Xn4M7lFo1khTUgfKL+eKPz +5RRf85LfIl4P8/VCgpEsExnaIR/M5FoP3vYIMy3u9cyowG3ioMaQ1ZA/zFdq8jWb +4H5/GL8Zi7B/nj8dCy7L1gLC5KOpGZLq3wvyxHMl5+X5fbHvb9KJjsW2eFPL9KEI +yKMRpXET7F0JIBNVHKMX+cUvzXLxH1klHRYSzAWfvoW+wXweKveSvn7wFAxoBjsk +UtnQ/tZvdfqOYMyfwfb4yNGaQjvN0pfYKWvGu1mqajpPNVJ96n9onArV40I7/Q2D +51eDFQ8op/0sygZiU1rurTQnvrvZnvgASrqIDdUQBPJaYLQmDIxc7Wo1Qr6cFKMv +kLNCihBNMar5+LsigyTdb+0VlwgcYtVMUlh8O282LqC11NkVJfAAvDYxZq+SFF1a +hm7D0n9DFT4A2eeXerwNXyk2fAaw8KX12TpXWanRaB1NW2cX9XmzjMQuk04xNLVK +DDMHKUDctBBvYHaBAjkUQT2smRH4ETosiQHcI91iuj2DZ6u/T0uUG3N7gHV3KSOX +DWUBtr/Xok9YuBICJ4gE/tIvH4gaqAqSEWb9TeeSCrX5VdQw03tPWUYKcr9M08Zj +LOMFdlmMOhRbmsglZy9/D+HVShp343DoZqKIO1A1aGYrzDV6izwI1K1an1ugOF3X +2czjyeuMtcz2ZFEhuGYekRiTx+ifu2scRnx2vndi9+RESUhh37BeseQgsENIsaw+ +5SVJlRgxk8N2hSiA8AWAJ/xpgyhYNL3KjAfh2tfH+jUtrN48kaa4JPeYykpk2kDi +OwQD0VhxjAT0ggyeBDbVNat+0w42i9oxpafBx2pCAbnK+WDnnLbUzgobz296fkO1 +H0UUqKBmi28Jntq3ubbg989LRH3VdvOXFvvgI3k2nqKLjzSCZt4MkAH+fo6cFtTf +q2S+geomeYBCGCSF/bgmk1Q/o9e2qPU4XuYcbM0T2ALwW4vYqv9DmORAfXZV/pg4 +myt1tgsnsUig5UMNIW/g7Q9hnVFzUjOKRwLff+sGKhXwmNHKpJVGaWNaESJ0YAAe +ESMMOrEW5kiqRqIbZx52NVwb85rb6ozkm8vR4ApLNNqQ/ylAd4H3zA3bByXn3uTx +7tfksErzsD8seL3yvQV5hkbB8PkQIXCTyL+zbp4+bNk8v3zj9/7BRqpQl0eMJ4oS +0vjkYgzkhBsQY3tvRH3PkodUy1yhc+1ZOjOcmX4lAMW1+vP5XsESM+GESDp3Czp6 +DlfiHbAlGBouWisY63hQtxVQtOboLzWmXwBGv2ENCf5NdW8tT2rWdxVcWOCW/1YE +dZ3/Q43GK0rqQw/j6MN4xOY7JuiBftZiBkLv57UIxUH1owIMR501QLnhq7Olgz+V +Edli5gWpO6OFNGYFhHc8B4FmTq+UUX4bdya/ajbVL/JWH6fjBJsvculQaJGV+Po6 +0Ythfdurd/V0H/s9IkA3XGGckN+XacKpsgr+25kAG5SrdnnZkTVeg1+O/VHiupQw +OkKlD717/MrLYCZvy2D30oCTDF33VUOxSusc9zeJP29ye+WuNG3gX9CVaYbx1I2d +-----END RSA PRIVATE KEY-----", +"PRIVATE_KEY_PHRASE":"123456", +"SCENE":"ANT", +"CALLER":"ob_ssl_crypt", +"CERT_NAME":"ob_yanhua_test", +"PRIVATE_KEY_NAME":"ob_yanhua_test-app-id-authn-RSA-2048-private", +"KEY_VERSION":"1" +}'; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/221.ob_event_history_recycle_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/221.ob_event_history_recycle_interval-1.md new file mode 100644 index 000000000..96e7b0610 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/221.ob_event_history_recycle_interval-1.md @@ -0,0 +1,15 @@ +ob_event_history_recycle_interval +====================================================== + +ob_event_history_recycle_interval 用于控制历史事件的回收间隔。 + + +| 属性 | 描述 | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 7d,表示 7 天 | +| 取值范围 | \[1d, 180d\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/222.backup_backup_dest-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/222.backup_backup_dest-1.md new file mode 100644 index 000000000..317632cb4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/222.backup_backup_dest-1.md @@ -0,0 +1,14 @@ +backup_backup_dest +======================================= + +backup_backup_dest 用于设置备份数据备份的目的端。 + + +| 属性 | 描述 | +|------------------|-------| +| 参数类型 | 字符串类型 | +| 默认值 | 空字符串 | +| 取值范围 | 无 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/223.backup_log_archive_checkpoint_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/223.backup_log_archive_checkpoint_interval-1.md new file mode 100644 index 000000000..dd4cb2efa --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/223.backup_log_archive_checkpoint_interval-1.md @@ -0,0 +1,14 @@ +backup_log_archive_checkpoint_interval +=========================================================== + +backup_log_archive_checkpoint_interval 用于设置备份数据备份 archivelog 的时间间隔。 + + +| 属性 | 描述 | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 0 | +| 取值范围 | \[0s, 24h\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/224.plsql_ccflags-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/224.plsql_ccflags-1.md new file mode 100644 index 000000000..6d74b487c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/224.plsql_ccflags-1.md @@ -0,0 +1,29 @@ +plsql_ccflags +================================== + +plsql_ccflags 用于定义 PL 编译器的编译常量。 + + +| 属性 | 描述 | +|------------------|-----------------| +| 参数类型 | 字符串类型 | +| 默认值 | 空字符串 | +| 取值范围 | 符合 PL 编译器规范的字符串 | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +该配置项可以任意定义变量,建议用于控制条件编译。 + +使用示例如下: + +```sql +obclient> ALTER SESSION SET PLSQL_CCFLAGS = 'DeBug:TRUE'; + +obclient> ALTER SYSTEM SET PLSQL_CCFLAGS = 'DeBug:TRUE'; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/225.plsql_code_type-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/225.plsql_code_type-1.md new file mode 100644 index 000000000..6eaab2f8a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/225.plsql_code_type-1.md @@ -0,0 +1,22 @@ +plsql_code_type +==================================== + +plsql_code_type 用于指定 PL/SQL 代码的编译类型。 + + +| 属性 | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | NATIVE | +| 取值范围 | * INTERPETED:解析型 * NATIVE:二进制可执行 | +| 是否重启 OBServer 生效 | 否 | + + + +使用示例如下: + +```sql +obclient> ALTER SESSION SET plsql_code_type='INTERPRETED'; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/226.plsql_debug-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/226.plsql_debug-1.md new file mode 100644 index 000000000..2e296d95c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/226.plsql_debug-1.md @@ -0,0 +1,22 @@ +plsql_debug +================================ + +plsql_debug 用于指定是否编译成 debug 版本。 + + +| 属性 | 描述 | +|------------------|------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True:是 * False:否 | +| 是否重启 OBServer 生效 | 否 | + + + +使用示例如下: + +```sql +obclient> ALTER SESSION SET plsql_debug=false; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/227.plsql_optimize_level-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/227.plsql_optimize_level-1.md new file mode 100644 index 000000000..ed53e85dc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/227.plsql_optimize_level-1.md @@ -0,0 +1,22 @@ +plsql_optimize_level +========================================= + +plsql_optimize_level 用于指定编译优化级别。 + + +| 属性 | 描述 | +|------------------|------------------------------------| +| 参数类型 | 整数类型 | +| 默认值 | 1 | +| 取值范围 | 0:表示不开启优化 1:表示开启优化 | +| 是否重启 OBServer 生效 | 否 | + + + +使用示例如下: + +```sql +obclient> ALTER SESSION SET plsql_optimize_level=1; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/228.plsql_v2_compatibility-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/228.plsql_v2_compatibility-1.md new file mode 100644 index 000000000..c9d2a8c4a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/228.plsql_v2_compatibility-1.md @@ -0,0 +1,22 @@ +plsql_v2_compatibility +=========================================== + +plsql_v2_compatibility 用于指定 Oracle 8 的兼容功能。 + + +| 属性 | 描述 | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True:兼容 * False:不兼容 | +| 是否重启 OBServer 生效 | 否 | + + + +使用示例如下: + +```sql +obclient> ALTER SESSION SET plsql_v2_compatibility=false; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/229.plsql_warnings-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/229.plsql_warnings-1.md new file mode 100644 index 000000000..35ed11853 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/229.plsql_warnings-1.md @@ -0,0 +1,74 @@ +plsql_warnings +=================================== + +`plsql_warnings` 用于控制 PL/SQL 编译器的报错行为,可以指定某类型或某个 `warning` 码的状态为` enable`、`disable` 或 `error`。 + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | varchar | +| 默认值 | ENABLE:ALL | +| 取值范围 | 符合规范的字符串 | +| 是否重启 OBServer 生效 | 否 | + + + +使用语法如下: + +```sql +PLSQL_WARNINGS = 'value_clause' [, 'value_clause' ] +value_clause::= +{ ENABLE | DISABLE | ERROR }: +{ ALL +| WARN +| DEBUG +| { integer +| (integer [, integer ] ...) +} +} +``` + + + +其中: + +* `ENABLE`:表示打开指定的 Warnings。 + + + +* `DISABLE`:表示关闭指定的 Warnings。 + + + +* `ERROR`:表示将指定的 Warning 作为 Errors。 + + + +* `ALL`:表示应用到所有的 Warning Messages。 + + + +* `DEBUG`:表示应用到 Debug。 + + + +* `WARN`:表示应用到 Warning。 + + + + + + +使用示例如下: + +```sql +PLSQL_WARNINGS = 'ENABLE:DEBUG', 'DISABLE:WARN'; + +PLSQL_WARNINGS = 'DISABLE:ALL'; + +PLSQL_WARNINGS = 'DISABLE:5000', 'ENABLE:5001','ERROR:5002'; + +PLSQL_WARNINGS = 'ENABLE:(5000,5001,5002)','DISABLE:(6000,6001)'; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/23.bf_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/23.bf_cache_priority-1.md new file mode 100644 index 000000000..2bbefc20a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/23.bf_cache_priority-1.md @@ -0,0 +1,15 @@ +bf_cache_priority +====================================== + +bf_cache_priority 用于设置 Bloom Filter 缓存优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/230.recyclebin_object_expire_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/230.recyclebin_object_expire_time-1.md new file mode 100644 index 000000000..6568294e0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/230.recyclebin_object_expire_time-1.md @@ -0,0 +1,59 @@ +recyclebin_object_expire_time +================================================== + +recyclebin_object_expire_time 用于自动 Purge 回收站中过期的 Schema对象。 + +描述 +----------------------- + + + +| 属性 | 描述 | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +recyclebin_object_expire_time 配置项的取值说明如下: + +* 当其值为 0s 时,表示关闭自动 Purge 回收站功能。 + + + +* 当其值为非 0s 时,表示回收一段时间前进入回收站的 Schema 对象。 + + + + + + +示例 +----------------------- + +* 关闭自动 Purge 回收站功能 + + ```sql + obclient> ALTER SYSTEM SET recyclebin_object_expire_time = "0s"; + ``` + + + + + + + + +* 打开自动 Purge 回收站功能,并回收 7 天前进入回收站的 Schema 对象 + + ```sql + obclient> ALTER SYSTEM SET recyclebin_object_expire_time = "7d"; + ``` + + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/231.log_archive_batch_buffer_limit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/231.log_archive_batch_buffer_limit-1.md new file mode 100644 index 000000000..d4d468758 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/231.log_archive_batch_buffer_limit-1.md @@ -0,0 +1,27 @@ +log_archive_batch_buffer_limit +=================================================== + +当物理备份开启时,log_archive_batch_buffer_limit 用于控制日志归档单机的最大内存使用量。 + +描述 +----------------------- + + + +| 属性 | 描述 | +|------------------|-----------| +| 参数类型 | 容量类型 | +| 默认值 | 1G | +| 取值范围 | \[2M, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +示例 +----------------------- + +```sql +obclient> ALTER SYSTEM SET log_archive_batch_buffer_limit = 1GB; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/232.clog_disk_utilization_threshold-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/232.clog_disk_utilization_threshold-1.md new file mode 100644 index 000000000..21e0ceedd --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/232.clog_disk_utilization_threshold-1.md @@ -0,0 +1,27 @@ +clog_disk_utilization_threshold +==================================================== + +clog_disk_utilization_threshold 配置项用于控制 clog 或 ilog 磁盘空间复用的水位值。 + +描述 +----------------------- + + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 80 | +| 取值范围 | \[10, 100) | +| 是否重启 OBServer 生效 | 否 | + + + +示例 +----------------------- + +```sql +obclient> ALTER SYSTEM SET clog_disk_utilization_threshold=80; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/233.backup_backup_archive_log_batch_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/233.backup_backup_archive_log_batch_count-1.md new file mode 100644 index 000000000..5c79f1dc8 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/233.backup_backup_archive_log_batch_count-1.md @@ -0,0 +1,14 @@ +backup_backup_archive_log_batch_count +========================================================== + +backup_backup_archive_log_batch_count 用于设置备份备份日志的任务的批次数量。 + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0,1024\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/234.backup_backup_archivelog_retry_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/234.backup_backup_archivelog_retry_interval-1.md new file mode 100644 index 000000000..7adca5fe0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/234.backup_backup_archivelog_retry_interval-1.md @@ -0,0 +1,14 @@ +backup_backup_archivelog_retry_interval +============================================================ + +backup_backup_archivelog_retry_interval 用于设置备份备份日志的任务的重试间隔。 + + +| 属性 | 描述 | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s,1h\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/235.backup_backupset_batch_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/235.backup_backupset_batch_count-1.md new file mode 100644 index 000000000..20f5df2de --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/235.backup_backupset_batch_count-1.md @@ -0,0 +1,14 @@ +backup_backupset_batch_count +================================================= + +backup_backupset_batch_count 用于设置备份备份基线的任务的批次数量。 + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0,1024\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/236.backup_backupset_retry_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/236.backup_backupset_retry_interval-1.md new file mode 100644 index 000000000..0c1ff8169 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/236.backup_backupset_retry_interval-1.md @@ -0,0 +1,14 @@ +backup_backupset_retry_interval +==================================================== + +backup_backupset_retry_interval 用于设置备份备份基线的任务的重试间隔。 + + +| 属性 | 描述 | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 0s | +| 取值范围 | \[0s,1h\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/237.open_cursors-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/237.open_cursors-1.md new file mode 100644 index 000000000..2d8500e3d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/237.open_cursors-1.md @@ -0,0 +1,14 @@ +open_cursors +================================= + +open_cursors 用于限制单个 Session 可以同时打开的游标数量。 + + +| 属性 | 描述 | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 50 | +| 取值范围 | \[0,65535\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/238.fast_recovery_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/238.fast_recovery_concurrency-1.md new file mode 100644 index 000000000..0d4913a2d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/238.fast_recovery_concurrency-1.md @@ -0,0 +1,14 @@ +fast_recovery_concurrency +============================================== + +`fast_recovery_concurrency` 用于控制 RootService 调度的快速恢复任务在 OBServer 上执行的并发数。 + + +| 属性 | 描述 | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[1,1000\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/239.clog_ofs_usage_limit_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/239.clog_ofs_usage_limit_size-1.md new file mode 100644 index 000000000..352992daa --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/239.clog_ofs_usage_limit_size-1.md @@ -0,0 +1,25 @@ +clog_ofs_usage_limit_size +============================================== + +`clog_ofs_usage_limit_size` 用于控制单台 OBServer 存储 Clog 日志文件的最大空间使用量。 + + +| 属性 | 描述 | +|------------------|---------| +| 参数类型 | 容量类型 | +| 默认值 | 2TB | +| 取值范围 | \[0,+∞) | +| 是否重启 OBServer 生效 | 否 | + + + +`clog_usage_limit_size` 用于控制单台 OBServer 中 Clog 日志文件使用空间的上限,当 Clog 日志文件的使用空间超出上限后,需要及时回收 Clog 日志文件。 + +示例 +----------------------- + +```sql +obclient> ALTER SYSTEM SET clog_usage_limit_size = 2TB; +``` + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/24.cache_wash_threshold-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/24.cache_wash_threshold-1.md new file mode 100644 index 000000000..205e59ae4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/24.cache_wash_threshold-1.md @@ -0,0 +1,15 @@ +cache_wash_threshold +========================================= + +cache_wash_threshold 用于设置触发缓存清理的容量阈值。如果内存空间小于指定值时,内存空间将被清理。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 容量单位 | +| 默认值 | 4GB | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/240.ofs_list-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/240.ofs_list-1.md new file mode 100644 index 000000000..f477be02e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/240.ofs_list-1.md @@ -0,0 +1,18 @@ +ofs_list +============================= + +`ofs_list` 保存了每个 Zone 的 OFS 列表,主要用于 OFS(Object File System)部署模式下,`__all_core_table` 副本选主时跨 Zone 读取其他 Zone 内 `__all_core_table` 副本的地址。 + + +| 属性 | 描述 | +|---------------------|--------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | 部署时 OFS 的列表 | +| 取值范围 | 格式为: `[zone]@[ofs_url];` | +| 是否重启 OBServer 生效 | 否 | + + + +OceanBase 数据库在 OFS 三 Zone 的部署模式下,单个 Zone 的存储会对应 OFS 的一个 Zone。Zone 内的数据文件在 OBServer 间是共享的。因此,单个 Zone 内的 `__all_core_table` 副本不再与某个 OBServer 绑定。每个 Zone 内成功加载了 `__all_core_table` 数据文件的 OBServer,会将自己的 Server IP 和 Port,通过重命名的方式注册到 Zone 内某个唯一文件的文件名中。例如,`z1` 内的 OBServer `127.1.2.3:45` 加载了 `__all_core_table` 副本,那么它会在对应的 OFS Zone 目录下,重命名为文件:`/appname/zone_data/core_table_127.1.2.3:45`。这样,在集群启动初期,`__all_core_table` 三副本在进行选主时,各副本可以通过解析其他 Zone 内的 `core_table` 文件名,获取其他副本的 OBServer 列表,然后发起投票。 + +集群启动前,`ofs_list` 默认从每台 OBServer 自身的 `config` 文件中读取值。在修改该配置项的值时,需要执行有效性检查,防止 OFS 地址出错。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/25.clog_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/25.clog_cache_priority-1.md new file mode 100644 index 000000000..4895aca35 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/25.clog_cache_priority-1.md @@ -0,0 +1,14 @@ +clog_cache_priority +======================================== + +clog_cache_priority 用于设置事务日志占用缓存的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/26.clog_sync_time_warn_threshold-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/26.clog_sync_time_warn_threshold-1.md new file mode 100644 index 000000000..fda006d3c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/26.clog_sync_time_warn_threshold-1.md @@ -0,0 +1,15 @@ +clog_sync_time_warn_threshold +================================================== + +clog_sync_time_warn_threshold 用于设置事务日志同步耗时告警阈值,同步耗时超过该值产生 WARN 日志。 + + +| **属性** | **描述** | +|------------------|------------------| +| 参数类型 | 时间类型 | +| 默认值 | 100ms | +| 取值范围 | \[1ms, 10000ms\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/27.clog_disk_usage_limit_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/27.clog_disk_usage_limit_percentage-1.md new file mode 100644 index 000000000..c9278b345 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/27.clog_disk_usage_limit_percentage-1.md @@ -0,0 +1,15 @@ +clog_disk_usage_limit_percentage +===================================================== + +clog_disk_usage_limit_percentage 用于设置事务日志的磁盘 I/O 最大使用百分比。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 95 | +| 取值范围 | \[80, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/28.clog_transport_compress_all-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/28.clog_transport_compress_all-1.md new file mode 100644 index 000000000..377f5bd2c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/28.clog_transport_compress_all-1.md @@ -0,0 +1,14 @@ +clog_transport_compress_all +================================================ + +clog_transport_compress_all 用于设置事务日志传输时是否压缩。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False * True | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/29.clog_transport_compress_func-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/29.clog_transport_compress_func-1.md new file mode 100644 index 000000000..fcdf74263 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/29.clog_transport_compress_func-1.md @@ -0,0 +1,15 @@ +clog_transport_compress_func +================================================= + +`clog_transport_compress_func` 用于设置事务日志内部传输时使用的压缩算法。 + + +| **属性** | **描述** | +|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | lz4_1.0 | +| 取值范围 | * none * lz4_1.0 * snappy_1.0 * zlib_1.0 * zstd_1.0 * stream_lz4_1.0 * stream_zstd_1.0 * zstd_1.3.8 * stream_zstd_1.3.8 | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/3.auto_leader_switch_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/3.auto_leader_switch_interval-1.md new file mode 100644 index 000000000..2336b3c05 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/3.auto_leader_switch_interval-1.md @@ -0,0 +1,17 @@ +auto_leader_switch_interval +================================================ + +auto_leader_switch_interval 用于设置自动切主后台线程工作间隔时间。 + + +| **属性** | **描述** | +|----------------|----------| +| 参数类型 | 时间类型 | +| 默认值 | 30s | +| 取值范围 | \[1s,+∞) | +| 是否需要重启OBserver | 否 | + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/30.clog_persistence_compress_func-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/30.clog_persistence_compress_func-1.md new file mode 100644 index 000000000..09fe64160 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/30.clog_persistence_compress_func-1.md @@ -0,0 +1,15 @@ +clog_persistence_compress_func +=================================================== + +clog_persistence_compress_func 用于设置事务日志落盘压缩算法。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | lz4_1.0 | +| 取值范围 | * none * lz4_1.0 * zstd_1.0 * zstd_1.3.8 | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/31.clog_max_unconfirmed_log_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/31.clog_max_unconfirmed_log_count-1.md new file mode 100644 index 000000000..36f9b7926 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/31.clog_max_unconfirmed_log_count-1.md @@ -0,0 +1,15 @@ +clog_max_unconfirmed_log_count +=================================================== + +clog_max_unconfirmed_log_count 用于设置事务模块中未确认日志的最大数量。 + + +| **属性** | **描述** | +|------------------|----------------| +| 参数类型 | 整型 | +| 默认值 | 1500 | +| 取值范围 | \[100, 50000\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/32.cluster-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/32.cluster-1.md new file mode 100644 index 000000000..bc71789e4 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/32.cluster-1.md @@ -0,0 +1,15 @@ +cluster +============================ + +cluster 用于设置本 OceanBase 集群名。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 字符串 | +| 默认值 | obcluster | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/33.cluster_id-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/33.cluster_id-1.md new file mode 100644 index 000000000..067083b44 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/33.cluster_id-1.md @@ -0,0 +1,15 @@ +cluster_id +=============================== + +cluster_id 用于设置本 OceanBase 集群 ID。 + + +| **属性** | **描述** | +|------------------|-------------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[1, 4294901759\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/34.cpu_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/34.cpu_count-1.md new file mode 100644 index 000000000..f32d477c6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/34.cpu_count-1.md @@ -0,0 +1,14 @@ +cpu_count +============================== + +cpu_count 用于设置系统 CPU 总数。如果设置为 0,系统将自动检测 CPU 数量。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/35.cpu_quota_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/35.cpu_quota_concurrency-1.md new file mode 100644 index 000000000..895f183cf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/35.cpu_quota_concurrency-1.md @@ -0,0 +1,35 @@ +cpu_quota_concurrency +========================================== + +cpu_quota_concurrency 用于设置租户的每个 CPU 配额所允许的最大并发数。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 4 | +| 取值范围 | \[1, 10\] | +| 是否重启 OBServer 生效 | 否 | + + + +租户中可同时处理的线程数由 cpu_quota_concurrency 与 workers_per_cpu_quota 2个配置项控制,且设置时需要满足: + +`workers_per_cpu_quota > cpu_quota_concurrency` + +* `workers_per_cpu_quota`表示租户在每个cpu上能分配的最大 worker 数 + + workers_per_cpu_quota 配置项详细信息,请参见 [workers_per_cpu_quota](/zh-CN/14.reference-guide-oracle-mode/3.system-configuration-items-1/209.workers_per_cpu_quota-1.md)。 + + +* `cpu_quota_concurrency`表示租户在每个cpu上活跃的 worker 数,也即并发数 + + + + + +**说明** + + + +当物理机 CPU 足够多时,可以适当调大 `cpu_quota_concurrency `的值;如果物理机 CPU 较少,则调大`cpu_quota_concurrency `的值会存在风险。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/36.cpu_reserved-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/36.cpu_reserved-1.md new file mode 100644 index 000000000..db0b3b9c5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/36.cpu_reserved-1.md @@ -0,0 +1,14 @@ +cpu_reserved +================================= + +cpu_reserved 用于设置系统预留的 CPU 数量,其余 CPU 将被 OceanBase 数据库独占使用。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 2 | +| 取值范围 | \[0, 15\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/37.config_additional_dir-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/37.config_additional_dir-1.md new file mode 100644 index 000000000..6faf1bbe6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/37.config_additional_dir-1.md @@ -0,0 +1,15 @@ +config_additional_dir +========================================== + +config_additional_dir 用于设置本地存储配置文件的多个目录,为了冗余存储多份配置文件。 + + +| **属性** | **描述** | +|------------------|-------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串列表 | +| 默认值 | * etc2 * etc3 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/38.data_copy_concurrency-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/38.data_copy_concurrency-1.md new file mode 100644 index 000000000..64fb27f72 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/38.data_copy_concurrency-1.md @@ -0,0 +1,15 @@ +data_copy_concurrency +========================================== + +data_copy_concurrency 用于设置系统中并发执行的数据迁移复制任务的最大并发数。 + + +| **属性** | **描述** | +|--------|----------| +| 参数类型 | 整型 | +| 默认值 | 20 | +| 取值范围 | \[1, +∞) | +| 是否需要重启 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/39.data_dir-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/39.data_dir-1.md new file mode 100644 index 000000000..29c6bb938 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/39.data_dir-1.md @@ -0,0 +1,15 @@ +data_dir +============================= + +data_dir 用于设置存储 sstable 等数据的目录。 + + +| **属性** | **描述** | +|--------|--------| +| 参数类型 | 字符串 | +| 默认值 | store | +| 取值范围 | NULL | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/4.auto_delete_expired_backup-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/4.auto_delete_expired_backup-1.md new file mode 100644 index 000000000..b711d294f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/4.auto_delete_expired_backup-1.md @@ -0,0 +1,14 @@ +auto_delete_expired_backup +=============================================== + +auto_delete_expired_backup 用于设置是否开启自动删除过期备份的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False * True | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/40.datafile_disk_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/40.datafile_disk_percentage-1.md new file mode 100644 index 000000000..d5b6419d3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/40.datafile_disk_percentage-1.md @@ -0,0 +1,15 @@ +datafile_disk_percentage +============================================= + +datafile_disk_percentage 表示占用 data_dir 所在磁盘(磁盘 data_dir 所在磁盘将被OceanBase 数据库系统初始化用于存储数据)总空间的百分比。 + + +| **属性** | **描述** | +|--------|----------| +| 参数类型 | 整型 | +| 默认值 | 90 | +| 取值范围 | \[5,99\] | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/41.dtl_buffer_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/41.dtl_buffer_size-1.md new file mode 100644 index 000000000..1655cd909 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/41.dtl_buffer_size-1.md @@ -0,0 +1,15 @@ +dtl_buffer_size +==================================== + +dtl_buffer_size 用于设置 SQL 数据传输模块使用的缓存大小。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 容量单位 | +| 默认值 | 64K | +| 取值范围 | \[4K, 2 M\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/42.datafile_size-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/42.datafile_size-1.md new file mode 100644 index 000000000..4df9e68fd --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/42.datafile_size-1.md @@ -0,0 +1,15 @@ +datafile_size +================================== + +datafile_size 用于设置数据文件的大小。一般不需要设置。 + + +| **属性** | **描述** | +|--------|-----------| +| 参数类型 | 容量单位 | +| 默认值 | 0M | +| 取值范围 | \[0M, +∞) | +| 是否可修改 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/43.debug_sync_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/43.debug_sync_timeout-1.md new file mode 100644 index 000000000..ec229d132 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/43.debug_sync_timeout-1.md @@ -0,0 +1,20 @@ +debug_sync_timeout +======================================= + +debug_sync_timeout 用于打开 debug sync 调试开关,并设置其超时时间。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 时间类型 | +| 默认值 | 0 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +debug_sync_timeout 的值为 0 时,表示关闭 debug sync 调试。 + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/44.default_compress_func-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/44.default_compress_func-1.md new file mode 100644 index 000000000..c76047370 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/44.default_compress_func-1.md @@ -0,0 +1,15 @@ +default_compress_func +========================================== + +`default_compress_func` 用于设置表数据的默认压缩算法,也可以在建表的时候指定其他压缩算法。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | zstd_1.3.8 | +| 取值范围 | * none * lz4_1.0 * snappy_1.0 * zlib_1.0 * zstd_1.0 * zstd_1.3.8 | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/45.default_compress-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/45.default_compress-1.md new file mode 100644 index 000000000..fb4e48c56 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/45.default_compress-1.md @@ -0,0 +1,15 @@ +default_compress +===================================== + +default_compress 用于设置在 Oracle 模式下,建表时使用的默认压缩策略。 + + +| **属性** | **描述** | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串类型 | +| 默认值 | ARCHIVE | +| 取值范围 | * NOCOMPRESS * BASIC * OLTP * QUERY * ARCHIVE | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/46.default_progressive_merge_num-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/46.default_progressive_merge_num-1.md new file mode 100644 index 000000000..8b725f269 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/46.default_progressive_merge_num-1.md @@ -0,0 +1,35 @@ +default_progressive_merge_num +================================================== + +default_progressive_merge_num 用于设置新建一张表时默认的渐进合并次数。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 60 | +| 取值范围 | \[0, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + +OceanBase 数据库支持对表数据进行渐进合并,即在对表执行需要重写数据的 DDL 操作后,可以将表数据的重写分散到多次合并中,一次合并中只进行部分数据的重写。您可以通过表级属性`progressive_merge_num`来控制合并行为,也可以通过`default_progressive_merge_num`配置项来设置新建一张表时默认的渐进合并次数。 + +当您未对新建表指定`progressive_merge_num`属性时,系统会将表级属性`progressive_merge_num`的值设置为`default_progressive_merge_num`的值。 + +`progressive_merge_num`属性的取值含义如下: + +* 0 :表示执行渐进合并,且渐进合并的次数为 100。 + + + +* 1:表示强制执行全量合并,不执行渐进合并。 + + + +* 大于 1 :表示发生 Schema 变更时按照指定轮次做渐进合并。 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/47.default_row_format-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/47.default_row_format-1.md new file mode 100644 index 000000000..77fb71bd7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/47.default_row_format-1.md @@ -0,0 +1,15 @@ +default_row_format +======================================= + +default_row_format 用于设置在 MySQL 模式下,建表时使用的默认行格式。 + + +| **属性** | **描述** | +|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | DYNAMIC | +| 取值范围 | * REDUNDANT * COMPAT * DYNAMIC * COMPRESSED | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/48.devname-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/48.devname-1.md new file mode 100644 index 000000000..d057c1801 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/48.devname-1.md @@ -0,0 +1,15 @@ +devname +============================ + +devname 用于设置服务进程绑定的网卡设备名。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串 | +| 默认值 | bond0 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/49.data_disk_usage_limit_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/49.data_disk_usage_limit_percentage-1.md new file mode 100644 index 000000000..7353ca0cd --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/49.data_disk_usage_limit_percentage-1.md @@ -0,0 +1,15 @@ +data_disk_usage_limit_percentage +===================================================== + +data_disk_usage_limit_percentage 用于设置数据文件最大可以写入的百分比,超过这个阈值后,禁止数据迁入。 + + +| **属性** | **描述** | +|------------------|-------------| +| 参数类型 | 整型 | +| 默认值 | 90 | +| 取值范围 | \[50, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/5.autoinc_cache_refresh_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/5.autoinc_cache_refresh_interval-1.md new file mode 100644 index 000000000..951df1862 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/5.autoinc_cache_refresh_interval-1.md @@ -0,0 +1,15 @@ +autoinc_cache_refresh_interval +=================================================== + +autoinc_cache_refresh_interval 用于设置自增列缓存的刷新间隔。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 3600s | +| 取值范围 | \[100ms, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/50.disk_io_thread_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/50.disk_io_thread_count-1.md new file mode 100644 index 000000000..bd3341fc3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/50.disk_io_thread_count-1.md @@ -0,0 +1,14 @@ +disk_io_thread_count +========================================= + +disk_io_thread_count 用于设置磁盘 IO 线程数。必须为偶数。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 8 | +| 取值范围 | \[2, 32\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/51.dead_socket_detection_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/51.dead_socket_detection_timeout-1.md new file mode 100644 index 000000000..c7dcb2779 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/51.dead_socket_detection_timeout-1.md @@ -0,0 +1,27 @@ +dead_socket_detection_timeout +================================================== + +dead_socket_detection_timeout 用于设置检测失效 Socket 的时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 10s | +| 取值范围 | \[0s, 2h\] | +| 是否重启 OBServer 生效 | 否 | + + + +其中: + +* 当 dead_socket_detection_timeout 的值为 0 时,表示禁用 Socket 级故障检测。 + + + +* 当 dead_socket_detection_timeout 的值大于 0 时,表示启用 Socket 级故障检测,且当发送端有数据超过 设置的时间还未收到对方的应答,则认为当前 Socket 不可用。 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/52.enable_clog_persistence_compress-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/52.enable_clog_persistence_compress-1.md new file mode 100644 index 000000000..205523e06 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/52.enable_clog_persistence_compress-1.md @@ -0,0 +1,15 @@ +enable_clog_persistence_compress +===================================================== + +enable_clog_persistence_compress 用于设置是否开启事务日志落盘压缩。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | false | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/53.election_cpu_quota-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/53.election_cpu_quota-1.md new file mode 100644 index 000000000..f4acd44ec --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/53.election_cpu_quota-1.md @@ -0,0 +1,15 @@ +election_cpu_quota +======================================= + +election_cpu_quota 用于设置给副本选举相关的后台工作分配的 CPU 配额。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 双精度浮点数 | +| 默认值 | 3 | +| 取值范围 | \[0, 10\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/54.enable_one_phase_commit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/54.enable_one_phase_commit-1.md new file mode 100644 index 000000000..6fbdbef33 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/54.enable_one_phase_commit-1.md @@ -0,0 +1,15 @@ +enable_one_phase_commit +============================================ + +enable_one_phase_commit 用于设置是否开启事务提交一阶段优化的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/55.enable_sys_unit_standalone-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/55.enable_sys_unit_standalone-1.md new file mode 100644 index 000000000..674ba5977 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/55.enable_sys_unit_standalone-1.md @@ -0,0 +1,35 @@ +enable_sys_unit_standalone +=============================================== + +enable_sys_unit_standalone 用于设置系统租户的 Unit 是否独占节点。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + +当该配置项设置为`True`时,会产生以下影响: + +* 在创建资源池或增加资源池数量时,需要考虑系统租户的 Unit,即不能将普通租户的 Unit 与系统租户的 Unit 部署在同一个 Server 上。 + + + +* 系统会将与系统租户的 Unit 在同一个 Server 上的其他 Unit 迁移走。 + + + +* 永久下线或删除 Server 时,系统会先迁移系统租户的 Unit,再迁移其他租户的 Unit,且其他租户的 Unit 不能与系统租户的 Unit 在同一个 Server 上。 + + + +* 在进行 Tenant groups 均衡时,系统会将系统租户 Unit 所在的 Server 从 tenant groups 的可用机器中过滤掉,即 Tenant groups 的 Unit 会平铺到除了系统租户 Unit 所在 Server 的其他 Server上去。 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/56.enable_pg-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/56.enable_pg-1.md new file mode 100644 index 000000000..dbdf2fe7b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/56.enable_pg-1.md @@ -0,0 +1,14 @@ +enable_pg +============================== + +enable_pg 用于设置是否开启分区组功能。 + + +| 属性 | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/57.enable_smooth_leader_switch-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/57.enable_smooth_leader_switch-1.md new file mode 100644 index 000000000..bb67d6ccb --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/57.enable_smooth_leader_switch-1.md @@ -0,0 +1,14 @@ +enable_smooth_leader_switch +================================================ + +enable_smooth_leader_switch 是平滑切主特性的开关。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/58.election_blacklist_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/58.election_blacklist_interval-1.md new file mode 100644 index 000000000..507af114f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/58.election_blacklist_interval-1.md @@ -0,0 +1,21 @@ +election_blacklist_interval +================================================ + +election_blacklist_interval 用于设置主副本被废除后不允许再被选为主的时间间隔。 + + +| 属性 | 描述 | +|------------------|-------------| +| 参数类型 | 时间类型 | +| 默认值 | 1800s | +| 取值范围 | \[0s, 24h\] | +| 是否重启 OBServer 生效 | 否 | + + + +OceanBase 数据库通过 election_blacklist_interval 配置项实现了黑名单功能。当 Leader 主动发生卸任后,从当前时间开始计时,在 election_blacklist_interval 配置项设置的时间内,该副本保证不会再被改选为 Leader,即该副本加入了选举黑名单。 +**注意** + + + +仅当主副本发生主动卸任,且 observer 进程不重启时,该副本才会加入黑名单。observer 进程重启后,黑名单状态会丢失。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/59.enable_election_group-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/59.enable_election_group-1.md new file mode 100644 index 000000000..d40a6ee3a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/59.enable_election_group-1.md @@ -0,0 +1,15 @@ +enable_election_group +========================================== + +enable_election_group 用于设置是否打开选举组策略。 + + +| 属性 | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/6.audit_sys_operations-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/6.audit_sys_operations-1.md new file mode 100644 index 000000000..fe9edcb3f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/6.audit_sys_operations-1.md @@ -0,0 +1,15 @@ +audit_sys_operations +========================================= + +audit_sys_operations 用于设置是否追踪系统用户的操作行为。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * False * True | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/60.enable_auto_leader_switch-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/60.enable_auto_leader_switch-1.md new file mode 100644 index 000000000..82d3aadff --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/60.enable_auto_leader_switch-1.md @@ -0,0 +1,14 @@ +enable_auto_leader_switch +============================================== + +enable_auto_leader_switch 用于设置是否开启自动切主。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/61.enable_global_freeze_trigger-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/61.enable_global_freeze_trigger-1.md new file mode 100644 index 000000000..6ecdd3713 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/61.enable_global_freeze_trigger-1.md @@ -0,0 +1,22 @@ +enable_global_freeze_trigger +================================================= + +enable_global_freeze_trigger 用于设置是否开启自动触发全局冻结。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + + +**说明** + + + +该配置项保持保持默认值即可,不推荐使用。 + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/62.enable_manual_merge-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/62.enable_manual_merge-1.md new file mode 100644 index 000000000..90f1ac25a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/62.enable_manual_merge-1.md @@ -0,0 +1,16 @@ +enable_manual_merge +======================================== + +enable_manual_merge 用于设置是否开启手工合并。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + +enable_manual_merge 用于 DBA 管理错峰是否暂停,只有在 enable_manual_merge 为 True 时,max_merge_duration_time 才有效。如果这个值为 True,则认为 DBA 关闭自动合并。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/63.enable_merge_by_turn-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/63.enable_merge_by_turn-1.md new file mode 100644 index 000000000..b4b598e3d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/63.enable_merge_by_turn-1.md @@ -0,0 +1,15 @@ +enable_merge_by_turn +========================================= + +enable_merge_by_turn 用于设置是否开启轮转合并策略。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/64.enable_perf_event-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/64.enable_perf_event-1.md new file mode 100644 index 000000000..ad2b65667 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/64.enable_perf_event-1.md @@ -0,0 +1,15 @@ +enable_perf_event +====================================== + +enable_perf_event 用于设置是否开启性能事件的信息收集功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/65.enable_rebalance-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/65.enable_rebalance-1.md new file mode 100644 index 000000000..1298d152d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/65.enable_rebalance-1.md @@ -0,0 +1,14 @@ +enable_rebalance +===================================== + +enable_rebalance 用于设置是否开启自动负载均衡的功能。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True:开启 * False:不开启 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/66.enable_record_trace_log-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/66.enable_record_trace_log-1.md new file mode 100644 index 000000000..43e17ecd9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/66.enable_record_trace_log-1.md @@ -0,0 +1,14 @@ +enable_record_trace_log +============================================ + +enable_record_trace_log 用于设置是否记录追踪日志。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True:表示只要出现错误,就一定打印 trace log。 * False:表示每隔 trace_log_sampling_interval 会打印一次慢查询或白名单错误码日志。 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/67.enable_record_trace_id-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/67.enable_record_trace_id-1.md new file mode 100644 index 000000000..c6402456e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/67.enable_record_trace_id-1.md @@ -0,0 +1,15 @@ +enable_record_trace_id +=========================================== + +enable_record_trace_id 用于设置是否记录应用端设置的追踪 ID。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/68.enable_early_lock_release-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/68.enable_early_lock_release-1.md new file mode 100644 index 000000000..13df54c6b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/68.enable_early_lock_release-1.md @@ -0,0 +1,14 @@ +enable_early_lock_release +============================================== + +enable_early_lock_release 用于设置是否开启提前解行锁的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/69.enable_rereplication-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/69.enable_rereplication-1.md new file mode 100644 index 000000000..2fea277e7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/69.enable_rereplication-1.md @@ -0,0 +1,19 @@ +enable_rereplication +========================================= + +enable_rereplication 用于设置是否开启自动补副本的功能。 + + +| 属性 | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + +**说明** + + + +如果不开启 enable_rereplication,即使分区的副本数小于设置的 ob_default_replica_num,也不会进行复制。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/7.audit_trail-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/7.audit_trail-1.md new file mode 100644 index 000000000..baa0b18ba --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/7.audit_trail-1.md @@ -0,0 +1,15 @@ +audit_trail +================================ + +audit_trail 用于设置是否启用数据库审核。 + + +| 属性 | 描述 | +|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 字符串 | +| 默认值 | NONE | +| 取值范围 | * NONE * OS * DB * DB,EXTENDED * DB_EXTENDED | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/70.enable_rich_error_msg-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/70.enable_rich_error_msg-1.md new file mode 100644 index 000000000..99f22366e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/70.enable_rich_error_msg-1.md @@ -0,0 +1,14 @@ +enable_rich_error_msg +========================================== + +enable_rich_error_msg 用于设置是否在客户端消息中添加服务器地址、时间、追踪 ID 等调试信息。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True:表示会在错误消息前添加 OBServer 的 `ip:port`、出错时间和日志 Trace ID。 * False:表示保持文本错误消息内容不变。 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/71.enable_rootservice_standalone-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/71.enable_rootservice_standalone-1.md new file mode 100644 index 000000000..98a8b2b7a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/71.enable_rootservice_standalone-1.md @@ -0,0 +1,14 @@ +enable_rootservice_standalone +================================================== + +enable_rootservice_standalone 用于设置是否让系统租户和 RootService 独占 OBServer 节点。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/72.enable_sql_audit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/72.enable_sql_audit-1.md new file mode 100644 index 000000000..8f6ffe73d --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/72.enable_sql_audit-1.md @@ -0,0 +1,14 @@ +enable_sql_audit +===================================== + +enable_sql_audit 用于设置是否开启 SQL 审计功能。 + + +| **属性** | **描述** | +|------------------|---------------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True:开启 * False:不开启 | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/73.enable_sql_operator_dump-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/73.enable_sql_operator_dump-1.md new file mode 100644 index 000000000..6935acecf --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/73.enable_sql_operator_dump-1.md @@ -0,0 +1,14 @@ +enable_sql_operator_dump +============================================= + +enable_sql_operator_dump 用于设置是否允许 SQL 处理过程的中间结果写入磁盘以释放内存。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/74.enable_async_syslog-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/74.enable_async_syslog-1.md new file mode 100644 index 000000000..6607a7d16 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/74.enable_async_syslog-1.md @@ -0,0 +1,15 @@ +enable_async_syslog +======================================== + +enable_async_syslog 用于设置是否启用系统日志异步写。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/75.enable_syslog_recycle-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/75.enable_syslog_recycle-1.md new file mode 100644 index 000000000..51c4ce73a --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/75.enable_syslog_recycle-1.md @@ -0,0 +1,15 @@ +enable_syslog_recycle +========================================== + +enable_syslog_recycle 用于设置是否开启回收系统日志的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/76.enable_syslog_wf-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/76.enable_syslog_wf-1.md new file mode 100644 index 000000000..065e17e43 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/76.enable_syslog_wf-1.md @@ -0,0 +1,15 @@ +enable_syslog_wf +===================================== + +enable_syslog_wf 用于设置是否把 WARN 以上级别的系统日志打印到一个单独的日志文件中。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/77.enable_upgrade_mode-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/77.enable_upgrade_mode-1.md new file mode 100644 index 000000000..3309eed15 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/77.enable_upgrade_mode-1.md @@ -0,0 +1,16 @@ +enable_upgrade_mode +======================================== + +enable_upgrade_mode 用于设置是否开启升级模式。在升级模式中,会暂停部分系统后台功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + +在升级前,对于需要禁止的功能(例如, DDL 操作),您可以统一通过该系统配置项来控制,使升级流程更简单。升级前将 enable_upgrade_mode 设置为 True,升级后将其设置为 False。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/78.enable_separate_sys_clog-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/78.enable_separate_sys_clog-1.md new file mode 100644 index 000000000..61a5577e6 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/78.enable_separate_sys_clog-1.md @@ -0,0 +1,15 @@ +enable_separate_sys_clog +============================================= + +enable_separate_sys_clog 用于设置是否把系统事务日志与用户事务日志分开存储。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/79.enable_ddl-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/79.enable_ddl-1.md new file mode 100644 index 000000000..f8a9164a9 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/79.enable_ddl-1.md @@ -0,0 +1,15 @@ +enable_ddl +=============================== + +enable_ddl 用于设置是否允许执行 DDL。 + + +| **属性** | 描述 | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/8.balancer_idle_time-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/8.balancer_idle_time-1.md new file mode 100644 index 000000000..0897aa7b3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/8.balancer_idle_time-1.md @@ -0,0 +1,14 @@ +balancer_idle_time +======================================= + +balancer_idle_time 用于设置负载均衡等后台任务线程空闲时的唤醒间隔时间。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 5m,表示 5 分钟 | +| 取值范围 | \[10s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/80.enable_major_freeze-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/80.enable_major_freeze-1.md new file mode 100644 index 000000000..e89e565c3 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/80.enable_major_freeze-1.md @@ -0,0 +1,15 @@ +enable_major_freeze +======================================== + +enable_major_freeze 用于设置是否开启自动全局冻结的功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | True | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/81.enable_rebuild_on_purpose-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/81.enable_rebuild_on_purpose-1.md new file mode 100644 index 000000000..c5f5a1d19 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/81.enable_rebuild_on_purpose-1.md @@ -0,0 +1,14 @@ +enable_rebuild_on_purpose +============================================== + +enable_rebuild_on_purpose 在备副本日志落后过多时,设置是否开启主动触发副本重建操作。 + + +| **属性** | **描** **述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/82.enable_log_archive-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/82.enable_log_archive-1.md new file mode 100644 index 000000000..26f90c225 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/82.enable_log_archive-1.md @@ -0,0 +1,15 @@ +enable_log_archive +======================================= + +enable_log_archive 用于设置是否开启日志归档功能。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/83.enable_monotonic_weak_read-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/83.enable_monotonic_weak_read-1.md new file mode 100644 index 000000000..87032236e --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/83.enable_monotonic_weak_read-1.md @@ -0,0 +1,15 @@ +enable_monotonic_weak_read +=============================================== + +enable_monotonic_weak_read 用于设置是否开启单调读。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/84.external_kms_info-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/84.external_kms_info-1.md new file mode 100644 index 000000000..6859db8ee --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/84.external_kms_info-1.md @@ -0,0 +1,16 @@ +external_kms_info +====================================== + +external_kms_info 用于存储一些密钥管理信息。 + + +| **属性** | **描述** | +|------------------|--------| +| 参数类型 | 字符串类型 | +| 默认值 | 空值 | +| 取值范围 | NULL | +| 是否重启 OBServer 生效 | 否 | + + + +使用外部密钥管理中心时,external_kms_info 将存储一些密钥管理信息。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/85.freeze_trigger_percentage-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/85.freeze_trigger_percentage-1.md new file mode 100644 index 000000000..52018975c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/85.freeze_trigger_percentage-1.md @@ -0,0 +1,16 @@ +freeze_trigger_percentage +============================================== + +freeze_trigger_percentage 用于设置触发全局冻结的租户使用内存阈值。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 70 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + + +详细信息请参见 [enable_global_freeze_trigger](/zh-CN/14.reference-guide-oracle-mode/3.system-configuration-items-1/61.enable_global_freeze_trigger-1.md)。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/86.flush_log_at_trx_commit-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/86.flush_log_at_trx_commit-1.md new file mode 100644 index 000000000..2872d46d0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/86.flush_log_at_trx_commit-1.md @@ -0,0 +1,31 @@ +flush_log_at_trx_commit +============================================ + +flush_log_at_trx_commit 用于设置事务提交时写事务日志策略。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[0, 2\] | +| 是否重启 OBServer 生效 | 否 | + + + +flush_log_at_trx_commit 配置项的取值含义如下: + +* 取值为 0 表示不等待日志写入缓冲区。 + + + +* 取值为 1 表示等待日志写入磁盘。 + + + +* 取值为 2 表示等待日志写入缓冲区而不等落盘。 + + + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/87.fuse_row_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/87.fuse_row_cache_priority-1.md new file mode 100644 index 000000000..c800bb60f --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/87.fuse_row_cache_priority-1.md @@ -0,0 +1,14 @@ +fuse_row_cache_priority +============================================ + +fuse_row_cache_priority 用于设置融合行缓存在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 1 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/88.force_refresh_location_cache_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/88.force_refresh_location_cache_interval-1.md new file mode 100644 index 000000000..8da7686e0 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/88.force_refresh_location_cache_interval-1.md @@ -0,0 +1,14 @@ +force_refresh_location_cache_interval +========================================================== + +force_refresh_location_cache_interval 用于设置刷新位置缓存的最大时间间隔。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 2h,表示 2 小时 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/89.force_refresh_location_cache_threshold-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/89.force_refresh_location_cache_threshold-1.md new file mode 100644 index 000000000..195ec0025 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/89.force_refresh_location_cache_threshold-1.md @@ -0,0 +1,15 @@ +force_refresh_location_cache_threshold +=========================================================== + +force_refresh_location_cache_threshold 用于设置刷新位置缓存时每秒最多刷新次数的阈值,超过该阈值会被限流。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 100 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/9.balancer_log_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/9.balancer_log_interval-1.md new file mode 100644 index 000000000..a0e31d595 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/9.balancer_log_interval-1.md @@ -0,0 +1,15 @@ +balancer_log_interval +========================================== + +balancer_log_interval 用于负载均衡等后台任务线程打印统计日志的间隔时间。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 时间类型 | +| 默认值 | 1m,表示 1 分钟 | +| 取值范围 | \[1s, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/90.get_leader_candidate_rpc_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/90.get_leader_candidate_rpc_timeout-1.md new file mode 100644 index 000000000..56e43194b --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/90.get_leader_candidate_rpc_timeout-1.md @@ -0,0 +1,15 @@ +get_leader_candidate_rpc_timeout +===================================================== + +get_leader_candidate_rpc_timeout 用于设置自动切主策略获取切主候选者的内部请求超时时间。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 9s | +| 取值范围 | \[2s, 180s\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/91.global_major_freeze_residual_memory-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/91.global_major_freeze_residual_memory-1.md new file mode 100644 index 000000000..be9684716 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/91.global_major_freeze_residual_memory-1.md @@ -0,0 +1,21 @@ +global_major_freeze_residual_memory +======================================================== + +global_major_freeze_residual_memory 用于设置触发全局冻结的剩余内存阈值。即当剩余内存小于这个百分比时,触发全局冻结。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 40 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + + +global_major_freeze_residual_memory 配置项是百分比,百分比基数是 memory_limit - system_memory,即除去为 OceanBase 数据库内部 500 租户预留的内存。已经冻结的 memstore 在 merge 完成后,内存就可以释放,所以冻结的 memstore 占用的内存在这里被看作是 active_memstore 可以使用的内存,blockcache 可以挤占的那部分内存也被看作是 memstore 可以使用的内存。 +**说明** + + + +global_major_freeze_residual_memory 配置项取值需要比 global_write_halt_residual_memory 大,否则全局 freeze trigger 实际不生效,只能依靠 tenant 触发全局冻结。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/92.global_write_halt_residual_memory-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/92.global_write_halt_residual_memory-1.md new file mode 100644 index 000000000..e3351b679 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/92.global_write_halt_residual_memory-1.md @@ -0,0 +1,16 @@ +global_write_halt_residual_memory +====================================================== + +global_write_halt_residual_memory 用于设置触发暂停普通租户写入(sys 租户不受影响)的全局剩余内存阈值。即当全局剩余内存小于这个百分比时,暂停普通租户写入(sys 租户不受影响)。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 整型 | +| 默认值 | 30 | +| 取值范围 | \[1, 99\] | +| 是否重启 OBServer 生效 | 否 | + + + +global_write_halt_residual_memory 配置项的值为百分比,百分比基数为 memory_limit - system_memory,即除去为 OceanBase 数据库内部 500 租户预留的内存。计算剩余内存的时候,blockcache 可以挤占的那部分内存看作 memstore 可以使用的内存。 diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/93.ignore_replay_checksum_error-1-2.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/93.ignore_replay_checksum_error-1-2.md new file mode 100644 index 000000000..3d1896acb --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/93.ignore_replay_checksum_error-1-2.md @@ -0,0 +1,14 @@ +ignore_replay_checksum_error +================================================= + +ignore_replay_checksum_error 用于设置是否忽略回放事务日志时发生的校验和错误。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/94.gts_refresh_interval-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/94.gts_refresh_interval-1.md new file mode 100644 index 000000000..4712e80da --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/94.gts_refresh_interval-1.md @@ -0,0 +1,14 @@ +gts_refresh_interval +========================================= + +gts_refresh_interval 用于获取刷新全局时间戳服务的时间间隔。 + + +| **属性** | **描述** | +|------------------|--------------| +| 参数类型 | 时间类型 | +| 默认值 | 100us | +| 取值范围 | \[10us, 1s\] | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/95.global_index_build_single_replica_timeout-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/95.global_index_build_single_replica_timeout-1.md new file mode 100644 index 000000000..7184408f5 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/95.global_index_build_single_replica_timeout-1.md @@ -0,0 +1,15 @@ +global_index_build_single_replica_timeout +============================================================== + +global_index_build_single_replica_timeout 用于建全局索引时,设置每个副本构建的超时时间。 + + +| **属性** | **描述** | +|------------------|-----------| +| 参数类型 | 时间类型 | +| 默认值 | 48h | +| 取值范围 | \[1h, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/96.high_priority_net_thread_count-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/96.high_priority_net_thread_count-1.md new file mode 100644 index 000000000..177428803 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/96.high_priority_net_thread_count-1.md @@ -0,0 +1,15 @@ +high_priority_net_thread_count +=================================================== + +high_priority_net_thread_count 用于设置高优先级网络线程数,值为 0 时,表示关闭该功能。 + + +| **属性** | **描述** | +|------------------|------------| +| 参数类型 | 整型 | +| 默认值 | 0 | +| 取值范围 | \[0, 100\] | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/97.ignore_replica_checksum_error-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/97.ignore_replica_checksum_error-1.md new file mode 100644 index 000000000..fe87015f7 --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/97.ignore_replica_checksum_error-1.md @@ -0,0 +1,14 @@ +ignore_replica_checksum_error +================================================== + +ignore_replica_checksum_error 用于设置是否忽略多副本间校验和检查发生的错误。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/98.ignore_replay_checksum_error-1-2-3.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/98.ignore_replay_checksum_error-1-2-3.md new file mode 100644 index 000000000..3d1896acb --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/98.ignore_replay_checksum_error-1-2-3.md @@ -0,0 +1,14 @@ +ignore_replay_checksum_error +================================================= + +ignore_replay_checksum_error 用于设置是否忽略回放事务日志时发生的校验和错误。 + + +| **属性** | **描述** | +|------------------|--------------------------------------------------------------------------------------------------------| +| 参数类型 | 布尔类型 | +| 默认值 | False | +| 取值范围 | * True * False | +| 是否重启 OBServer 生效 | 否 | + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/99.index_cache_priority-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/99.index_cache_priority-1.md new file mode 100644 index 000000000..77c5efbfc --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/3.system-configuration-items-1/99.index_cache_priority-1.md @@ -0,0 +1,15 @@ +index_cache_priority +========================================= + +index_cache_priority 用于设置索引在缓存系统中的优先级。 + + +| **属性** | **描述** | +|------------------|----------| +| 参数类型 | 整型 | +| 默认值 | 10 | +| 取值范围 | \[1, +∞) | +| 是否重启 OBServer 生效 | 否 | + + + diff --git a/docs/docs/docs-cn/14.reference-guide-oracle-mode/4.reserved-keywords-1.md b/docs/docs/docs-cn/14.reference-guide-oracle-mode/4.reserved-keywords-1.md new file mode 100644 index 000000000..6139aa14c --- /dev/null +++ b/docs/docs/docs-cn/14.reference-guide-oracle-mode/4.reserved-keywords-1.md @@ -0,0 +1,62 @@ +预留关键字 +========================== + + + +目前,OceanBase 数据库 Oracle 模式下的预留关键字如下所示。 + + +|------------|------------|------------|-----------|---------| +| A ||||| +| ACCESS | ADD | ALL | ALTER | AND | +| ANY | AS | ASC | AUDIT || +| B ||||| +| BETWEEN | BY |||| +| C ||||| +| CHAR | CHECK | CLUSTER | COLUMN | COMMENT | +| COMPRESS | CONNECT | CREATE | CURRENT | CASE | +| CONNECT_BY_ROOT ||||| +| D ||||| +| DATE | DECIMAL | DEFAULT | DELETE | DESC | +| DISTINCT | DROP | DUAL ||| +| E ||||| +| ELSE | EXCLUSIVE | EXISTS ||| +| F ||||| +| FILE | FLOAT | FOR | FROM || +| G ||||| +| GRANT | GROUP |||| +| H ||||| +| HAVING ||||| +| I ||||| +| IDENTIFIED | IMMEDIATE | IN | INCREMENT | INDEX | +| INITIAL | INSERT | INTEGER | INTERSECT | INTO | +| IS ||||| +| L ||||| +| LEVEL | LIKE | LOCK | LONG || +| M ||||| +| MAXEXTENTS | MINUS | MODE | MODIFY || +| N ||||| +| NOAUDIT | NOCOMPRESS | NOT | NOTFOUND | NOWAIT | +| NULL | NUMBER |||| +| O ||||| +| OF | OFFLINE | ON | ONLINE | OPTION | +| OR | ORDER |||| +| P ||||| +| PCTFREE | PRIOR | PRIVILEGES | PUBLIC | RAW | +| R ||||| +| RENAME | RESOURCE | REVOKE | ROW | ROWID | +| ROWLABEL | ROWNUM | ROWS ||| +| S ||||| +| START | SELECT | SESSION | SET | SHARE | +| SIZE | SMALLINT | SUCCESSFUL | SYNONYM | SYSDATE | +| SQL_CALC_FOUND_ROWS ||||| +| T ||||| +| TABLE | THEN | TO | TRIGGER || +| U ||||| +| UID | UNION | UNIQUE | UPDATE | USER | +| V ||||| +| VALIDATE | VALUES | VARCHAR | VARCHAR2 | VIEW | +| W ||||| +| WHENEVER | WHERE | WITH ||| + + diff --git a/docs/docs/docs-cn/15.community-contribution/1.how-to-contribute.md b/docs/docs/docs-cn/15.community-contribution/1.how-to-contribute.md new file mode 100644 index 000000000..bfb7674ed --- /dev/null +++ b/docs/docs/docs-cn/15.community-contribution/1.how-to-contribute.md @@ -0,0 +1,162 @@ +如何贡献 +========================= + +OceanBase 数据库是一个开源的项目。欢迎您贡献代码或文档。本文介绍如何为该项目做贡献。 + +开始之前 +------------------------- + +欢迎您为 OceanBase 数据库贡献代码或文档。在您开始贡献之前,您需要签署贡献者许可协议(Contributor Licence Agreement,简称 CLA)。详细信息,参考 [什么是 CLA](https://en.wikipedia.org/wiki/Contributor_License_Agreement)。点击 [OceaBase CLA](https://cla-assistant.io/oceanbase/oceanbase?pullRequest=108),点击 **Sign in with GitHub to agree** 按钮签署协议。 + +贡献指南 +------------------------- + +按照以下步骤提交 Pull Request(简称 PR): +**注意** + +本节介绍如何为 `master` 分支创建 PR。为其他分支创建 PR 的步骤与此类似。 + +**步骤 1:Fork 项目仓库** + +1. 访问项目的 [GitHub 地址](https://github.com/oceanbase/oceanbase)。 + + + +2. 点击 Fork 按钮创建远程分支。 + + + + + + +**步骤2:克隆分支到本地** + +1. 定义工作目录。 + + ```bash + # 定义工作目录 + working_dir=$HOME/Workspace + ``` + + + +2. 配置 GitHub 用户名。 + + ```bash + user={GitHub账户名} + ``` + + + +3. 克隆代码。 + + ```bash + # 克隆代码 + mkdir -p $working_dir + cd $working_dir + git clone git@github.com:$user/oceanbase.git + # 或: git clone https://github.com/$user/oceanbase.git + + # 添加上游分支 + cd $working_dir/oceanbase + git remote add upstream git@github.com:oceanbase/oceanbase.git + # 或: git remote add upstream https://github.com/oceanbase/oceanbase.git + + # 为上游分支设置 no_push + git remote set-url --push upstream no_push + + # 确认远程分支有效 + git remote -v + ``` + + + + + + +**步骤 3:创建新分支** + +1. 更新本地 `master` 分支。 + + ```bash + cd $working_dir/oceanbase + git fetch upstream + git checkout master + git rebase upstream/master + ``` + + + +2. 基于本地 `master` 分支创建新分支。 + + ```bash + git checkout -b new-branch-name + ``` + + + + + + +**步骤 4:开发** + +在 `new-branch-name` 上开发并保存更改。 + +**步骤 5:提交更改** + +```bash +# 检查本地文件状态 +git status + +# 添加您希望提交的文件 +# 如果您希望提交所有更改,直接使用 `git add .` +git add ... +git commit -m "commit-message: update the xx" +``` + + + +**步骤 6:保持开发分支与上游分支同步** + +```bash +# 在开发分支执行以下操作 +git fetch upstream +git rebase upstream/master +``` + + + +**步骤 7:推送更改至远程分支** + +```bash +# 在开发分支执行以下操作 +git push -u origin new-branch-name +``` + + + +**步骤 8:创建 PR** + +1. 访问您 Fork 的仓库。 + + + +2. 单击 `new-branch-name` 分支旁的 `Compare & pull request` 按钮。 + + + + + + + + + + + + + + + + + + diff --git a/docs/docs/docs-cn/15.community-contribution/2.code-style.md b/docs/docs/docs-cn/15.community-contribution/2.code-style.md new file mode 100644 index 000000000..ce50a1444 --- /dev/null +++ b/docs/docs/docs-cn/15.community-contribution/2.code-style.md @@ -0,0 +1,6 @@ +代码风格 +========================= + +本文档介绍 OceanBase 数据库的代码风格。 + +OceanBase 数据库代码风格,参考 [OceanBase 数据库代码规范](https://open.oceanbase.com/docs/oceanbase-code-style-guide/oceanbase-code-style-guide/V3.1.0/introduction)。 diff --git a/docs/docs/docs-cn/15.community-contribution/3.pull-request-and-commit-specifications.md b/docs/docs/docs-cn/15.community-contribution/3.pull-request-and-commit-specifications.md new file mode 100644 index 000000000..e6bb2210d --- /dev/null +++ b/docs/docs/docs-cn/15.community-contribution/3.pull-request-and-commit-specifications.md @@ -0,0 +1,70 @@ +Pull Request 与 Commit 信息规范 +=============================================== + +本文介绍 Pull Request(简称 PR)和 Commit 信息规范,适用于所有 OceanBase 仓库。 所有提交至 OceanBase 仓库的 commit 均必须遵循以下准则。 + +Commit 信息规范 +-------------------------------- + +```bash +(): // scope is optional, subject is must + + // optional + +