
# ALTER EXCEPT RULE
#### 功能描述
修改一个异常规则集合，可以修改一组规则集中的任意一个或者多个具体的规则阈值。
#### 注意事项
使用ALTER语法添加某个新规则阈值时，WITH参数中原来的其他的规则会保留，并不是全部清空覆盖。例如原来一组规则中只有一条规则：作业排队阻塞的最大时间blocktime = 100秒，通过以下语法新添加一条作业执行最大时间elapsedtime为1000秒，则最终的规则包含2条，可参见以下示例。
#### 语法格式
```
ALTER EXCEPT RULE except_rule_name
      WITH (
           | BLOCKTIME = VALUE,
           | CPUTIME = VALUE,
           | ELAPSEDTIME = VALUE, 
           | CPUSKEWPERCENT = VALUE,
           | SPILLSIZE = VALUE,
           | BROADCASTSIZE = VALUE,
           | MEMSIZE = VALUE,
           | CPUAVGPERCENT = VALUE,
           | BANDWIDTH = VALUE,
           | ACTION = ['abort' | 'penalty']
           );
```
#### 参数说明
表1ALTER EXCEPT RULE参数说明 
| 参数             | 描述                     | 取值范围                                                                                                                                        |
|:---|:---|:---|
| rule_name      | 异常规则集名称。               | 字符串，需符合[标识符命名规范](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.html#ZH-CN_TOPIC_0000002202094021__section1475018612353)。 |
| blocktime      | 作业排队阻塞的最大时间。单位：秒。      | 数值型，-1，1\~INT64_MAX。                                                                                                                        |
| elapsedtime    | 作业执行的最大时间。单位：秒。        | 数值型，-1，1\~INT64_MAX。                                                                                                                        |
| allcputime     | 作业运行中使用的最大CPU时间。单位：秒。  | 数值型，-1，1\~INT64_MAX。                                                                                                                        |
| cpuskewpercent | 作业执行时的CPU使用倾斜率。单位：百分比。 | 数值型，-1，1\~100。                                                                                                                              |
| cpuavgpercent  | 作业执行时的平均CPU使用率。单位：百分比。 | 数值型，-1，1\~100。                                                                                                                              |
| spillsize      | 作业执行的最大下盘大小。单位：MB。     | 数值型，-1，1\~INT64_MAX。                                                                                                                        |
| broadcastsize  | 作业执行的最大广播大小。单位：MB。     | 数值型，-1，1\~INT64_MAX。                                                                                                                        |
| memsize        | 作业执行使用的最大内存大小。单位：MB。   | 数值型，-1，1\~INT64_MAX。                                                                                                                        |
| bandwidth      | 作业执行可使用的最大网络带宽。单位：MB。  | 数值型，-1，1\~INT64_MAX。                                                                                                                        |
   
#### 示例
创建异常规则except_rule1。
```
CREATE EXCEPT RULE except_rule_1 WITH (blocktime=2000, spillsize=3000, action=abort);
```
修改异常规则except_rule1的blocktime规则阈值为3000秒，下盘空间为4000MB。
```
ALTER EXCEPT RULE except_rule_1 WITH (blocktime=3000, spillsize=4000);
```
通过**[PG_EXCEPT_RULE](https://support.huaweicloud.com/devg-dws/dws_04_1201.html)**系统表，可以查看异常规则已修改成功。
```
SELECT * FROM PG_EXCEPT_RULE WHERE name = 'except_rule_1';
```
![](https://support.huaweicloud.com/sqlreference-911-dws/figure/zh-cn_image_0000002471319732.png "点击放大")
同时，需要再叠加一条新规则，作业执行的最大时间elapsedtime为2000秒。
```
ALTER EXCEPT RULE except_rule_1 WITH (elapsedtime=2000);
```
再次查看异常规则，已修改成功。**注意，原先的规则会保留，并不是清空。**
```
SELECT * FROM PG_EXCEPT_RULE WHERE name = 'except_rule_1';
```
![](https://support.huaweicloud.com/sqlreference-911-dws/figure/zh-cn_image_0000002471320058.png "点击放大")
创建一个资源池并绑定异常规则集except_rule_1。
```
DROP resource pool IF EXISTS resource_pool_a1;
CREATE resource pool resource_pool_a1 WITH (except_rule='except_rule_1');
```
解除资源池resource_pool_a1绑定的异常规则集。
```
ALTER resource pool resource_pool_a1 WITH (except_rule='None');
```
#### 相关链接
[CREATE EXCEPT RULE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0281.html)，[DROP EXCEPT RULE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0282.html)
