返回首页

gbase数据、南大通用产品文档:GBase8cALTER SUBSCRIPTION

更新日期:2024年09月11日

功能描述
ALTER SUBSCRIPTION 可以修改在CREATE SUBSCRIPTION 中指定的订阅属性。
注意事项
订阅的所有者才能执行ALTER SUBSCRIPTION,并且新的所有者必须是系统管理员。
语法格式
更新订阅的连接信息。
ALTER SUBSCRIPTION name CONNECTION 'conninfo'
更新订阅的发布端的发布名称。
ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...]
激活订阅。
ALTER SUBSCRIPTION name ENABLE
更新CREATE SUBSCRIPTION 中定义的属性。
ALTER SUBSCRIPTION name SET ( subscription_parameter [= value] [, ... ] )
更新订阅的属主。
ALTER SUBSCRIPTION name OWNER TO new_owner
修改订阅的名称。
ALTER SUBSCRIPTION name RENAME TO new_name
参数说明

name

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
749
要修改属性的订阅的名称。

CONNECTION 'conninfo'
该子句修改最初由CREATE SUBSCRIPTION 设置的连接属性。

ENABLE (boolean)
指定订阅是否应该主动复制,或者是否应该只是设置,但尚未启动。默认值是true。

SET ( subscription_parameter [= value] [, … ] )
该子句修改原先由CREATE SUBSCRIPTION 设置的参数。允许的选项是slot_name 和
synchronous_commit。

如果创建订阅时设置enabled 为false,则slot_name 将被强制设置为NONE,即空
值,即使用户指定了slot_name 的值,复制槽也不存在。

将enabled 参数的值由false 改为true,
即启用订阅时,
将会连接发布端创建复制槽,
此时如果用户未指定slot_name 参数的值,
则会使用默认值,
即对应的订阅的名称。

当enabled 为true,
即订阅处于正常使用状态,
不能修改slot_name 为空,
但可以修
改复制槽的名称为其他非空合法名称。

new_owner
订阅的新所有者的用户名。

new_name
订阅的新名称。
示例
请参见示例。
相关命令
CREATE SUBSCRIPTION,DROP SUBSCRIPTION

链接参数
表6-12 链接参数

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
124
参数
描述
host
要链接的主机名。如果主机名以斜杠开头,则它声明使用Unix 域套接
字通讯而不是TCP/IP 通讯;该值就是套接字文件所存储的目录。如果
没有声明host,
那么默认是与位于/tmp 目录
(或者安装数据库的时候声
明的套接字目录)里面的Unix-域套接字链接。在没有Unix 域套接字
的机器上,默认与localhost 链接。
接受以‘,’分割的字符串来指定多个主机名,支持指定多个主机名。
hostaddr
与之链接的主机的IP地址,
是标准的IPv4地址格式,
比如,172.28.40.9。
如果机器支持IPv6,那么也可以使用IPv6 的地址。如果声明了一个非
空的字符串,那么使用TCP/IP 通讯机制。
接受以‘,’分割的字符串来指定多个IP 地址,支持指定多个IP 地址。
使用hostaddr 取代host 可以让应用避免一次主机名查找,这一点对于
那些有时间约束的应用来说可能是非常重要的。
不过,
GSSAPI 或SSPI
认证方法要求主机名(host)。因此,应用下面的规则:

如果声明了不带hostaddr 的host 那么就强制进行主机名查找。

如果声明中没有host,hostaddr 的值给出服务器网络地址;如果认
证方法要求主机名,那么链接尝试将失败。

如果同时声明了host 和hostaddr,
那么hostaddr 的值作为服务器网
络地址。host 的值将被忽略,除非认证方法需要它,在这种情况下
它将被用作主机名。
须知
要注意如果host 不是网络地址hostaddr 处的服务器名,那么认证很有
可能失败。
如果主机名(host)和主机地址都没有,那么libpq 将使用一个本地的
Unix 域套接字进行链接;或者是在没有Unix 域套接字的机器上,它将
尝试与localhost 链接。
port
主机服务器的端口号,或者在Unix 域套接字链接时的套接字扩展文件
名。
接受以‘,’分割的字符串来指定多个端口号,支持指定多个端口号。
user
要链接的用户名,缺省是与运行该应用的用户操作系统名同名的用户。
dbname
数据库名,缺省和用户名相同。
password
如果服务器要求口令认证,所用的口令。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
125
connect_tim eout
链接的最大等待时间,以秒计(用十进制整数字符串书写),0 或者不
声明表示无穷。不建议把链接超时的值设置得小于2 秒。
client_enco ding
为这个链接设置client_encoding 配置参数。除了对应的服务器选项接
受的值,你可以使用auto 从客户端中的当前环境中确定正确的编码
(Unix 系统上是LC_CTYPE 环境变量)。
tty
忽略(以前,该参数指定了发送服务器调试输出的位置)。
options
添加命令行选项以在运行时发送到服务器。
application_ name
为application_name 配置参数指定一个值,表明当前用户身份。
fallback_ap
plication_na me
为application_name 配置参数指定一个后补值。如果通过一个连接参数
或PGAPPNAME 环境变量没有为application_name 给定一个值,将使
用这个值。
在希望设置一个默认应用名但不希望它被用户覆盖的一般工
具程序中指定一个后补值很有用。
keepalives
控制客户端侧的TCP 保持激活是否使用。
缺省值是1,
意思为打开,但
是如果不想要保持激活,你可以更改为0,意思为关闭。通过Unix 域
套接字做的链接忽略这个参数。
keepalives_i dle
在TCP 应该发送一个保持激活的信息给服务器之后,控制不活动的秒
数。0 值表示使用系统缺省。通过Unix 域套接字做的链接或者如果禁
用了保持激活则忽略这个参数。
keepalives_i
nterval
在TCP 保持激活信息没有被应该传播的服务器承认之后,控制秒数。0
值表示使用系统缺省。通过Unix 域套接字做的链接或者如果禁用了保
持激活则忽略这个参数。
keepalives_c ount
添加命令行选项以在运行时发送到服务器。例如,设置为-c
comm_debug_mode=off 设置guc 参数comm_debug_mode 参数的会话的
值为off。
rw_timeout
设置客户端连接读写超时时间。
sslmode
启用SSL 加密的方式:

disable:不使用SSL 安全连接。

allow:如果数据库服务器要求使用,则可以使用SSL 安全加密连
接,但不验证数据库服务器的真实性。

prefer:如果数据库支持,那么首选使用SSL 安全加密连接,但不
验证数据库服务器的真实性。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
126

require:
必须使用SSL 安全连接,
但是只做了数据加密,
而并不验
证数据库服务器的真实性。

verify-ca:
必须使用SSL 安全连接,
当前windows odbc 不支持cert

方式认证。

verify-full:
必须使用SSL 安全连接,
当前windows odbc 不支持cert
方式认证。
sslcompress ion
如果设置为1(默认),SSL 连接之上传送的数据将被压缩(这要求
OpenSSL 版本为0.9.8 或更高)。如果设置为0,压缩将被禁用(这要
求OpenSSL 版本为1.0.0 或更高)。如果建立的是一个没有SSL 的连
接,这个参数会被忽略。如果使用的OpenSSL 版本不支持该参数,它
也会被忽略。压缩会占用CUP 时间,但是当瓶颈为网络时可以提高吞
吐量。如果CPU 性能是限制因素,禁用压缩能够改进响应时间和吞吐
量。
sslcert
这个参数指定客户端SSL 证书的文件名,它替换默认的~/.postgresql/
postgresql.crt。如果没有建立SSL 连接,这个参数会被忽略。
sslkey
这个参数指定用于客户端证书的密钥位置。
它能指定一个会被用来替代
默认的~/.postgresql/postgresql.key 的文件名,或者它能够指定一个从外
部“引擎”(引擎是OpenSSL 的可载入模块)得到的密钥。一个外部
引擎说明应该由一个冒号分隔的引擎名称以及一个引擎相关的关键标
识符组成。如果没有建立SSL 连接,这个参数会被忽略。
sslrootcert
这个参数指定一个包含SSL 证书机构(CA)证书的文件名称。如果该
文件存在,服务器的证书将被验证是由这些机构之一签发。默认值是
~/.postgresql/root.crt。
sslcrl
这个参数指定SSL 证书撤销列表(CRL)的文件名。列在这个文件中
的证书如果存在,在尝试认证该服务器证书时会被拒绝。默认值是
~/.postgresql/root.crl。
requirepeer
这个参数指定服务器的操作系统用户,例如requirepeer=postgres。当建
立一个Unix 域套接字连接时,如果设置了这个参数,客户端在连接开
始时检查服务器进程是否运行在指定的用户名之下。
如果发现不是,

连接会被一个错误中断。这个参数能被用来提供与TCP/IP 连接上SSL
证书相似的服务器认证(注意,如果Unix 域套接字在/tmp 或另一个公
共可写的位置,
任何用户能启动一个在那里侦听的服务器。
使用这个参
数来保证你连接的是一个由可信用户运行的服务器)

这个选项只在实
现了peer 认证方法的平台上受支持。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
127
krbsrvname
当用GSSAPI 认证时,要使用的Kerberos 服务名。为了让Kerberos 认
证成功,这必须匹配在服务器配置中指定的服务名。
gsslib
用于GSSAPI 认证的GSS 库。只用在Windows 上。设置为gssapi 可强
制libpq 用GSSAPI 库来代替默认的SSPI 进行认证。
service
用于附加参数的服务名。它指定保持附加连接参数的pg_service.conf
中的一个服务名。
这允许应用只指定一个服务名,
这样连接参数能被集
中维护。
authtype
不再使用“authtype”,因此将其标记为“不显示”。我们将其保留在
数组中,
以免拒绝旧应用程序中的conninfo 字符串,
这些应用程序可能
仍在尝试设置它。
remote_nod ename
指定连接本地节点的远端节点名称。
localhost
指定在一个连接通道中的本地地址。
localport
指定在一个连接通道中的本地端口。
fencedUdfR
PCMode
控制fenced UDF RPC 协议是使用unix 域套接字或特殊套接字文件名。
缺省值是0,意思为关闭,使用unix domain socket 模式,文件类型为
“ .s.PGSQL.%d ” ,但是要使用fenced udf
,文件类型
为.s.fencedMaster_unixdomain,可以更改为1,意思为开启。
replication
这个选项决定是否该连接应该使用复制协议而不是普通协议。这是
PostgreSQL 的复制连接以及pg_basebackup 之类的工具在内部使用的协
议,但也可以被第三方应用使用。支持下列值,大小写无关:

true、on、yes、1:连接进入到物理复制模式。

database:连接进入到逻辑复制模式,连接到dbname 参数中指定
的数据库。

false、off、no、0:该连接是一个常规连接,这是默认行为。在物
理或者逻辑复制模式中,仅能使用简单查询协议。
backend_ve rsion
传递到远端的后端版本号。
prototype
设置当前协议级别,默认:PROTO_TCP。
enable_ce
控制是否允许客户端连接全密态数据库。默认0,如果需要开启,则修
改为1。
connection_ info
Connection_info 是一个包含driver_name、driver_version、driver_path

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
128
和os_user 的json 字符串。
如果不为NULL,使用connection_info 忽略connectionExtraInf 如果为
NULL,生成与libpq 相关的连接信息字符串,当
connectionExtraInf 为false 时connection_info 只有driver_name 和
driver_version。
connectionE
xtraInf
设置connection_info 是否存在扩展信息,默认值为0,如果包含其他信
息,则需要设置为1。
target_sessi
on_attrs
设定连接的主机的类型。主机的类型和设定的值一致时才能连接成功。
target_session_attrs 的设置规则如下:

any(默认值):可以对所有类型的主机进行连接。

read-write:当连接的主机允许可读可写时,才进行连接。

read-only:仅对可读的主机进行连接。

primary:仅对主备系统中的主机能进行连接。

standby: 仅对主备系统中的备机进行连接。

prefer-standby:首先尝试找到一个备机进行连接。如果对hosts 列
表的所有机器都连接失败,那么尝试“any”模式进行连接。

Numerical month value can not be determined from date string based on DBDATE
发生此错误是由于指定的日期字符串不具有 DBDATE 格式字符串所需的有效的数值月份
指示符。例如,如果 DBDATE 设置为 Y2MD-,但是您指定的日期字符串表示形式
为 98-blah-15,这是错误的,因为 blah 是一个无效的数值月份表示形式。
要修复此问题,请修改此日期字符串,使其包含基于 DBDATE 格式字符串设置的有效的数
值月份(从 1 到 12)。