返回首页

gbase数据、南大通用产品文档:GBase8s在辅助服务器成为主服务器后恢复 SD 集群

更新日期:2024年09月11日

如果在原始主服务器发生故障后,SD 集群中的辅助服务器成为主服务器,那么可以使用
脚本来重新建立原始主服务器,然后将当前主服务器转换回辅助服务器。
在该示例中,主服务器 srv_pri 故障转移至 SD 辅助服务器 srv_sds_sec。此时,主服务器
是 srv_sds_sec,并且集群中的所有辅助服务器现在都指向 srv_sds_sec。要将集群复原
至 srv_pri 执行故障转移之前的状态,请遵循以下步骤:
1. 如果必要,请在 srv_pri 的 onconfig 文件中设置以下参数:
SDS_ENABLE 1

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 484 -
SDS_PAGING ,
SDS_TEMPDBS ,,,,
dbsname 值必须唯一。此外,dbsname 必须在所有现有的数据库空间、BLOB 空间
和智能大对象空间空间中唯一,包括从主服务器继承的临时空间(可能已禁用)。
如果有多个 SD 辅助服务器,dbsname 值对于每个服务器必须唯一,且不得与其
他任何 SD 辅助服务器或主服务器共享。请参阅设置共享磁盘辅助服务器,以获
取有关设置这些参数的信息。
2. 通过在 srv_pri 上运行 oninit 命令,将 srv_pri 初始化为 SD 辅助服务器。
3. 手动对 srv_pri 执行故障转移以便使其成为主服务器:
onmode –d make primary srv_pri
以上命令从集群中除去 srv_sds_sec,并使 srv_pri 成为主服务器。
4. 通过在 srv_sds_sec 上运行 oninit 命令,将 srv_sds_sec 复原为 SD 辅助服务器。

7 分布式数据

ReleaseConnect() 函数仅在 Windows(TM) 环境中可用。
它释放或终止显式的连接,

清除所有分配了的内存。

重要: 对于与 Version 5.01 GBase 8s ESQL/C 相兼容的 Windows(TM) 应用程序,
GBase 8s ESQL/C 支持 ReleaseConnect() 连接库函数。当您编写新的 Windows(TM) 环境的
GBase 8s ESQL/C 应用程序时,
请使用 SQL DISCONNECT 语句来终止建立了的显式的连
接。

语法
void *ReleaseConnect ( void *CnctHndl )
CnctHndl
由前面的 GetConnect() 调用返回的连接句柄。

用法
ReleaseConnect() 函数映射到简单的 SQL DISCONNECT 语句(没有 ALL、
CURRENT 或 DEFAULT 选项的)。 ReleaseConnect() 调用自身等同于下列 SEL 语句:

EXEC SQL disconnect db_connection;

在此示例中,
db_connection 是 is the name of an existing connection that the GetConnect()
函数已建立的现有连接的名称。 您将此 db_connection 名称作为参数传递至
ReleaseConnect();它是所需要的连接的连接句柄。

例如,下列代码片段使用 ReleaseConnect() 来关闭缺省的数据库服务器上的至
stores7 数据库的显式的连接:
void *cnctHndl;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 860 -


cnctHndl = GetConnect();
EXEC SQL database stores7;


EXEC SQL close database;
cnctHndl = ReleaseConnect( cnctHndl );

对于 GetConnect() 已建立了的每一连接,请调用 ReleaseConnect() 一次。在
ReleaseConnect() 函数终止当前的连接之前,
它关闭任何打开的数据库。
如果在当前连接中
任何事务是打开的,则它失败。

在调用 ReleaseConnect() 之前,以 SQL CLOSE DATABASE 语句显式地关闭数据库
是一种好的编程实践。

重要: 由于 ReleaseConnect() 函数映射至 DISCONNECT 语句,因此它设置
SQLCODE 和 SQLSTATE 状态代码,来指示该连接终止请求成功还是失败。此行为不同
于 Windows(TM) 的 Version 5.01 GBase 8s ESQL/C 中的 ReleaseConnect(),此函数不在其
中设置 SQLCODE 和 SQLSTATE 值。

ReleaseConnect() 函数与 DISCONNECT 语句的不同之处在于,它取得连接名称。
ReleaseConnect() 使用存储在连接句柄中的内部生成的名称;您必须至此此句柄作为
ReleaseConnect() 调用的参数。
仅对于不带有 AS 子句的 CONNECT 语句已建立了的连接,
DISCONNECT 语句才使用内部生成的连接名称;如果该连接有(CONNECT 语句的 AS
子句指定的)用户定义的连接名称,则 DISCONNECT 使用此名称。

返回代码
CnctHndl
如果 ReleaseConnect() 已返回了传递给它的连接句柄相匹配的连接句柄,则对它的调
用成功。

文字就是一个数字、字符、字符串、或布尔值。它本身是数据不是对数据的引用。文
字也不是用标识符来标识,当然也不是计算出来的。例,123,’abc’是字面量,而1+2不
是。
变量分为数值变量、字符变量、字符串变量和布尔变量。
l
字符串和字符文字是大小敏感的
l
空白字符也被考虑
l
‘0’和‘9’不同于数值0-9,然而可系统以将他们转换为整数,所以可以应用于算术
表达式中
l
有0个字符的文字的值为NULL,成为空字符串,他与BOOLEAN的NULL是不同的