描述

该语句仅支持使用 SQL_TEXT 创建的 Outline,可用于添加绑定 Outline 和限流规则。

格式

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时,严格要求stmttarget_stmt在去掉 Hint 后完全匹配。

示例

通过 ALTER OUTLINE 来添加限流规则。

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 来添加执行计划。

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​同时匹配。