更新时间:2025-07-10 GMT+08:00
分享

ALTER SERVER

功能描述

增加、修改和删除外部服务器的定义。

现有外部服务器(server)可以使用pg_foreign_server系统表查询。

注意事项

  • 只有服务器的所有者有权限执行ALTER SERVER命令,系统管理员默认拥有此权限。
  • 要更改服务器的所有者,必须是外部服务器的OWNER并且也是新的所有者角色的直接或者间接成员,且必须对外部服务器的外部数据封装器有USAGE权限。

语法格式

  • 修改外部服务的参数。
    1
    2
    ALTER SERVER server_name [ VERSION 'new_version' ]
        [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ];
    
  • 修改外部服务的所有者。
    1
    2
    ALTER SERVER server_name 
        OWNER TO new_owner;
    
  • 修改外部服务的名称。
    1
    2
    ALTER SERVER server_name 
        RENAME TO new_name;
    
  • 刷新HDFS配置文件。
    1
    ALTER SERVER server_name REFRESH OPTIONS;
    

参数说明

表1 ALTER SERVER参数说明

参数

描述

取值范围

server_name

需要修改的外部服务的名称。

已存在的外部服务器名。

new_version

新的外部服务器版本。

-

OPTIONS

更改服务器的选项。ADD、SET和DROP指定要执行的操作。OPTIONS选项未指定时默认为ADD操作。

对于HDFS Server目前只支持SET操作,ADD/DROP操作现有版本不支持。语法中SET和DROP操作语法依然保留,以便后续扩展使用。

option和value为对应操作的参数可参考表2

new_owner

外部服务器的新所有者。

有效的用户名。

new_name

外部服务器的新名称。

字符串,需符合标识符命名规范

REFRESH OPTIONS

刷新HDFS的配置文件缓存信息,在配置文件有变动时执行,若不执行可能会访问报错。

该参数用于更新hdfs server配置缓存,不能与其相关的HDFS外表访问并发。

-

表2 修改外部服务器所支持的OPTIONS参数说明

参数

描述

取值范围

address

OBS服务的终端节点(Endpoint)。

HDFS集群的主备节点所在的IP地址以及端口。

说明:
  • 对于HDFS server,address必须存在,所以ADD和DROP操作不被允许。
  • address目前只支持点分十进制格式的IPv4格式,且address字符串中不能出现空格,多组address以逗号作为分隔符。ip和port之间使用“:”来区分。HDFS集群中ip、port组对推荐设置两组,分别对应HDFS NameNode主备节点的address。
  • 当server类型为DLI时,address为DLI服务上数据所存储的OBS address。

-

hdfscfgpath

HDFS集群的配置文件。

说明:
  • 若HDFS为安全模式时,hdfscfgpath是必选项,否则为可选项。
  • 若设置hdfscfgpath时,path仅能设置一个。

-

fed

表示dfs_fdw连接的是HDFS为联邦模式。

取值rbf,表示HDFS为联邦rbf方式。

说明:

该参数8.1.2及以上版本支持;8.0.0基线版本下,仅8.0.0.10及以上版本支持。

-

encrypt

是否对数据进行加密,该参数仅支持在type为OBS时设置。默认值为off。

  • on表示对数据进行加密。
  • off表示不对数据进行加密。

access_key

OBS访问协议对应的AK值(OBS云服务界面由用户获取),创建外表时AK值会加密保存到数据库的元数据表中。该参数仅支持type为OBS时设置。

-

secret_access_key

OBS访问协议对应的SK值(OBS云服务界面由用户获取),创建外表时SK值会加密保存到数据库的元数据表中。该参数仅支持type为OBS时设置。

-

dli_address

DLI服务的终端节点,即endpoint。该参数仅支持type为DLI时设置。

-

dli_access_key

DLI访问协议对应的AK值(DLI云服务界面由用户获取),创建外表时AK值会保存到数据库的元数据表中。该参数仅支持type为DLI时设置。

-

dli_secret_access_key

DLI访问协议对应的SK值(DLI云服务界面由用户获取),创建外表时SK值会加密保存到数据库的元数据表中。该参数仅支持type为DLI时设置。

-

region

此参数表示OBS服务的IP地址或者域名信息。该参数仅支持type为OBS时设置。

-

dbname

用于协同分析、跨集群互联互通,表示将要连接的远端集群的数据库名称。

-

username

用于协同分析、跨集群互联互通,表示将要连接的远端集群的用户名。

-

password

用于协同分析、跨集群互联互通,表示将要连接的远端集群的用户名密码。

-

syncsrv

仅用于跨集群互联互通,表示数据同步过程中使用到的GDS服务,设置方式与GDS外表的location属性相同。该参数仅8.1.2及以上版本支持。

-

示例

创建外部服务器hdfs_server,其中hdfs_fdw为数据库中存在的foreign data wrapper。

1
2
3
4
5
CREATE SERVER hdfs_server FOREIGN DATA WRAPPER HDFS_FDW OPTIONS 
   (address '10.10.0.100:25000,10.10.0.101:25000',
    hdfscfgpath '/opt/hadoop_client/HDFS/hadoop/etc/hadoop', 
    type 'HDFS'
) ;

修改外部服务器hdfs_server的address选项。

1
ALTER SERVER hdfs_server OPTIONS ( SET address '10.10.0.110:25000,10.10.0.120:25000');

修改外部服务器hdfs_server的hdfscfgpath选项。

1
ALTER SERVER hdfs_server OPTIONS ( SET hdfscfgpath '/opt/bigdata/hadoop');

相关链接

CREATE SERVERDROP SERVER

相关文档