ALTER SESSION

ALTER SESSION 为当前会话设置和清除会话级别的配置参数值。要识别会话级别参数,请查询系统表 CONFIGURATION_PARAMETERS

语法

ALTER SESSION {
    SET [PARAMETER] parameter‑name=value[,...]
    | CLEAR { [PARAMETER] parameter‑name[,...] | PARAMETER ALL }
    | SET UDPARAMETER [ FOR libname ] key=value[,...]
    | CLEAR UDPARAMETER { [ FOR libname ] key[,...] | ALL }
}

参数

SET [PARAMETER]
将一个或多个配置参数设置为指定值。
CLEAR [PARAMETER]
清除在当前会话中设置的更改的指定配置参数。
CLEAR PARAMETER ALL
清除在当前会话中设置的更改的所有会话级别配置参数。
SET UDPARAMETER
设置一个或多个用户定义的会话参数 (key=value),以与 UDx 结合使用。键值大小限制如下:
  • 从客户端设置:128 个字符

  • 从 UDx 端设置:无限制

可以通过包含子句 FOR libname 将 SET 操作的范围限制为单个库。例如:

=> ALTER SESSION SET UDPARAMETER FOR securelib username='alice';

如果指定一个库,则只有该库可以访问参数的值。使用此限制来保护包含敏感数据(例如凭据)的参数。

CLEAR UDPARAMETER
清除通过以下选项之一指定的用户定义参数:
  • [FOR libname] key[,...]:清除 key 指定的参数,(可选)这些参数的范围被限制为库 libname

  • ALL:清除当前会话中的所有用户定义参数。

特权

示例

设置和清除参数

  • 强制所有支持隔离模式的 UDx 在隔离模式下运行,即使其定义指定了 NOT FENCED 也是如此:

    => ALTER SESSION SET ForceUDxFencedMode = 1;
    ALTER SESSION
    
  • 在会话级别清除 ForceUDxFencedMode。其值将被重置为其默认值 0

    => ALTER SESSION CLEAR ForceUDxFencedMode;
    ALTER SESSION
    => SELECT parameter_name, current_value, default_value FROM configuration_parameters WHERE  parameter_name = 'ForceUDxFencedMode';
       parameter_name   | current_value | default_value
    --------------------+---------------+---------------
     ForceUDxFencedMode | 0             | 0
    (1 row)
    
  • 清除在此会话中设置的更改的所有会话级别配置参数:

    => ALTER SESSION CLEAR PARAMETER ALL;
    ALTER SESSION
    

设置和清除用户定义的参数

  • 将库 MyLibrary 中的用户定义参数 RowCount 的值设置为 25。

    => ALTER SESSION SET UDPARAMETER FOR MyLibrary RowCount = 25;
    ALTER SESSION
    
  • 清除会话级别的 RowCount

    => ALTER SESSION CLEAR UDPARAMETER FOR MyLibrary RowCount;
    ALTER SESSION