最大SQL长度限制(max_sql_size)
📄字数 646
👁️阅读量 加载中...
引入版本
v12.0.0
功能描述
最大SQL长度限制(单位:MB)。
参数属性
| 属性 | 属性值 |
|---|---|
| 参数类型 | INTEGER |
| 默认值 | 2 |
| 取值范围 | [1, 1024] |
| 影响范围 | 系统级 |
| 修改方式 | 在线修改,立即生效 |
使用场景说明
- SQL 长度超过 max_sql_size,系统会拒绝 SQL 处理请求并上报 E19196 异常。
- max_sql_size 是系统内部可处理的 SQL 请求字符串长度阈值,系统 COMMAND.LOG 和 ERROR.LOG 日志针对 SQL 的记载能力只有 16KB,超过 16KB 的 SQL 在记载日志时会被截断。
- 开启预处理(prepare)语句补齐(supple_prepare_sql = true),SYSDBA.SYS_SESSIONS 的 SQL 字段记载能力只有 4KB,超过 4KB 的 SQL 部分会被截断。
提示
当数据库参数 max_malloc_once(单次内存分配上限)和 max_sql_size(SQL语句长度限制)设置过大,且用户提交超长SQL时,若服务器物理内存不足,可能导致OOM或进程异常退出。
示例
sql
-- 在线修改 max_sql_size
SQL> SET max_sql_size TO 2;
-- 在线查看 max_sql_size
SQL> SHOW max_sql_size;
/*
* 场景一:
* 1. max_sql_size = 1;
* 2. auto_commit = true;
*/
SQL> CREATE TABLE t1(c1 INTEGER, c2 VARCHAR);
SQL> INSERT INTO t1 VALUES(1, 'ab-xxx-xxx');INSERT INTO ... -- 执行长度超过 1MB 的多语句 SQL,结果报错 E19196 异常。