返回首页

gbase数据、南大通用产品文档:GBase8sonmode P: 动态地启动、停止或重启监听线程

更新日期:2024年09月11日

在不中断现有连接的情况下,可以使用 onmode -P 命令动态地启动、停止或重启当前
SOCTCP 或 TLITCP 网络端口的监听线程。
语法:


GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 372 -

元素
用途
关键注意事项
start
不中断现有连接的情况
下,启动新的 SOCTCP 或
TLITCP 网络端口的监听
线程
该监听线程的定义必须存在于此服务器的
sqlhosts 文件中。如果不存在,您必须在动态
地启动监听线程之前添加它
stop
不中断现有连接的情况
下,停止当前 SOCTCP 或
TLITCP 网络端口的监听
线程
该监听线程的定义必须存在于此服务器的
sqlhosts 文件中
restart
不中断现有连接的情况
下,重新启动当前 SOCTCP
或 TLITCP 网络端口的监
听线程
该监听线程的定义必须存在于此服务器的
sqlhosts 文件中
server_name
要启动、停止或重启的数
据库服务器名称


这些命令不能修改 sqlhosts 文件。
这些命令有等同的带有 start listen 、stop listen 或 restart listen 参数的 SQL管理 API 函
数。
示例
下列命令显示停止并重启名为 ids_serv1 的服务器的监听线程:
onmode -P restart ids_serv1

GBase 8c 提供gs_encrypt 工具,
为输入的明文字符串进行加密操作。
支持AES128、
SM4
算法。操作如下:
(1)
使用如下命令连接数据库。
gsql -d postgres -p 5432
postgres 为需要连接的数据库名称,5432 为数据库CN 节点的端口号。连接成功后,系
统显示类似如下信息:

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
185
gsql ((GBase8c 3.0.0BXX build d28887c9) compiled at 2022-05-13 11:31:40 commit 0 last mr
55 )
Non-SSL connection (SSL connection is recommended when requiring high-security) Type
"help" for help.
gbase=#
(2)
准备需要加密的表和数据。表test0 中存放以sm4 加密的字符串,test1 中存放以aes128
加密的字符串。
postgres=# create table test0(name varchar(100));
postgres=# create table test1(name varchar(100));
(3)
插入加密数据

使用SM4 算法:
postgres=# insert into test0 values (gs_encrypt('name1','2023Gbase','sm4'));
其中gs_encrypt(encryptstr,keystr,encrypttype)函数用于对字符串encryptstr 进行加密,
keystr 为密钥关键字,长度范围为8~16 字节,至少包含3 种字符(大写字母、小写字母、
数字、特殊字符)。encrypttype 为加密算法,可以是aes128 或sm4。

使用aes128 算法:
postgres=# insert into test1 values (gs_encrypt('name2','2023Gbase','aes128'));
#或使用gs_encryp_aes128 函数
postgres=# insert into test1 values (gs_encrypt_aes128('name3','2023Gbase'));
其中gs_encrypt_aes128(encryptstr,keystr)函数以keystr 为密钥对encryptstr 字符串进行
aes128 算法加密,返回加密后的字符串。等效于gs_encrypt(encryptstr,keystr,aes128)。
(4)
查询

直接查询表中数据,显示加密后的字符串。
postgres=# select name from test0;
name
------------------------------
n9+qK12bhDdt57TJjqZMLoJnDUrX
(1 row)
postgres=# select name from test1;
name
----------------------------------------------------------------------------------------------
nI2FTtGNk4NUmetJv6cFzDEn7pBG7XYJ+Xv0jmB052VUN5sw1C5z4/hbUWi1hWXc6sut5Z
KzNfGRSFxNDqZeFoIjDJg=

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
186
nI2FTtGNk4NUmetJv6cFzBCKSd1KNugkJZF0OidENU3BVwHrSzc6rhQb7v3AqaC/n/S38++
6lo2NG0Bi8nqPr+z3dI4=
(2 rows)

通过指定密钥关键字,解密查询显示解密后的真实字符。
# 指定sm4 算法解密,正确显示以sm4 算法加密的字符串。
postgres=# select gs_decrypt(name,'2023Gbase','sm4') from test0;
gs_decrypt
--------------------------------------
name1
(1 row)
# 指定aes128 算法解密,正确显示以aes128 算法加密的字符串。
postgres=# select gs_decrypt(name,'2023Gbase','aes128') from test1;
gs_decrypt
------------
name2
name3
(2 rows)
#或
postgres=# select gs_decrypt_aes128(name,'2023Gbase') from test1;
gs_decrypt_aes128
-------------------
name2
name3
(2 rows)
其中gs_decrypt(decryptstr,keystr,decrypttype)函数根据decrypttype,以keystr 为密钥对
decrypt 字符串进行解密,返回解密后的字符串。解密使用的decrypttype 及keystr 必须保证
与加密时使用的encrypttype 及keystr 一致才能正常解密。keystr 不得为空。decrypttype 可以
是aes128 或sm4。
gs_decrypt_aes128(decryptstr,keystr)以keystr 为密钥对decrypt 字符串进行aes128 算法解
密,
返回解密后的字符串。
解密使用的keystr 必须保证与加密时使用的keystr 一致才能正常
解密。keystr 不得为空。

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

指定转义标识符
示例
示例1:指定单个转义标识符为“c”。
示例中所用的表及数据:
DROP TABLE IF EXISTS gs;
CREATE TABLE gs (a int DEFAULT NULL, b varchar(20) DEFAULT
NULL);
INSERT INTO gs values(1,'qwer'),(2,'asdf');
导出SQL 语句:
gbase> SELECT * FROM gs INTO OUTFILE '/home/gbase/temp/gs_e.txt'
FIELDS ESCAPED BY 'c';
Query OK, 2 rows affected
查看导出文件:
$ cat gs_e.txt
1
qwer
2
asdf
示例2:指定转义标识符为多个字符时报错。
示例中所用的表及数据:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1233
DROP TABLE IF EXISTS gs;
CREATE TABLE gs (a int DEFAULT NULL, b varchar(20) DEFAULT
NULL);
INSERT INTO gs values(1,'qwer'),(2,'asdf');
导出SQL 语句:
gbase> SELECT * FROM gs INTO OUTFILE '/home/gbase/temp/gs_e.txt'
FIELDS ESCAPED BY '6c@#';
ERROR 1149 (42000): FIELDS ESCAPED STRING must be only one character