返回首页

gbase数据、南大通用产品文档:GBase8sUDR 定义例程

更新日期:2024年09月11日

UDR 定义例程是内置例程,使用户能够执行各种任务,以开发或修改 GBase 8s
的外部用户定义例程,或者启用 GBase Data Server 驱动程序 JDBC 和 SQL 过
程来访问 GBase 8s 和 DB2 数据库通过分布式关系数据库架构(DRDA)协议。
这些是内置 UDR 定义例程:

ifx_replace_module( )

ifx_unload_module( )

jvpcontrol( )

sqlj.alter_java_path( )

sqlj.install_jar( )

sqlj.remove_jar( )

sqlj.replace_jar( )

sqlj.setUDTextName( )

sqlj.unsetUDTextName( )

sysibm.Metadata( )

sysibm.SQLCAMessage( )

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1712
授权使用 UDR 定义例程
如果 IFX_EXTEND_ROLE 配置参数设置为 'On' 或 1,则使用操作共享对象的
内置例程的授权仅对数据库服务器管理员和 DBSA 授予 EXTEND 角色的用户可
用。缺省情况下启用 IFX_EXTEND_ROLE。
对于不需要此安全功能的数据库,请参阅 GBase 8s 管理员参考手册 中的
IFX_EXTEND_ROLE 的描述,以获取有关 DBSA 如果通过重置来禁用此配置参
数的信息。有关将 EXTEND 角色授予单个用户或 PUBLIC 组的语法,请参阅授
予 EXTEND 角色主题。
IFX_REPLACE_MODULE 函数
IFX_REPLACE_MODULE 函数将使用 C 语言编写的 UDR 的加载共享对象文件替换
为具有不同名称或位置的新版本。如果 IFX_EXTEND_ROLE 配置参数设置为
'On' 或 1,则使用此功能的授权仅对数据库服务器管理员(DBSA)和 DBSA
已授予 EXTEND 角色的用户可用。
IFX_REPLACE_MODULE 函数

参数
描述
限制
语法
new_module
要替换 old_module 指定
的共享对象文件的新共享
对象文件的完整路径名
共享对象文件必须与指定
的路径名一起存在,其长
度不能超过 255 个字节
引用字
符串
old_module
要用 new_module 指定共
享对象文件替换的共享对
象文件的完整路径名
共享对象文件必须与指定
的路径名一起存在,其长
度不能超过 255 个字节
引用字
符串
IFX_REPLACE_MODULE 函数是 DBA 特权函数,它返回的整数值表示共享对象文件
替换操作的状态:

零(0)表示成功

负整数表示错误
不要使用 IFX_REPLACE_MODULE 函数重载相同名称的模块。如果发送到
IFX_REPLACE_MODULE 的旧的和新的模块的全名一样,则会发生预期外的结果。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1713
IFX_REPLACE_MODULE 完成执行后,数据库服务器会老化 old_module 共享
对象文件;即,IFX_REPLACE_MODULE 函数之后的所有语句将使用
new_module 共享对象文件中的 UDR,并且当使用它的任何语句完成是,旧模块
将会被卸载。因此,在短时间内,old_module 和 new_module 共享对象文件都可
以驻留在内存中。如果此老化行为是不受欢迎的,请使用
IFX_UNLOAD_MODULE 函数完全卸载共享对象文件。
在 UNIX™ 上,例如,假设您希望替换 circle.so 共享库,它包含以 C
语言编写的 UDR。如果此库的旧版本驻留在 /usr/apps/opaque_types
目录,新版本在 /usr/apps/shared_libs 目录中,则使用下列
EXECUTE FUNCTION 语句执行 IFX_REPLACE_MODULE 函数:
EXECUTE FUNCTION ifx_replace_module(
"/usr/apps/opaque_types/circle.so",
"/usr/apps/shared_libs/circle.so", "C");
在 Windows™ 上,例如,假设您希望替换 circle.dll 动态链接库,其包含 C
UDR。如果此库的旧版本驻留在 C:\usr\apps\opaque_types 目录,新版本在
C:\usr\apps\DLLs 目录,则使用下列 EXECUTE FUNCTION 语句执行
IFX_REPLACE_MODULE 函数:
EXECUTE FUNCTION ifx_replace_module(
"C:\usr\apps\opaque_types\circle.dll",
"C:\usr\apps\DLLs\circle.dll", "C");
要在 GBase 8s ESQL/C 应用程序中执行 IFX_REPLACE_MODULE 函数,您必
须将此函数与游标相关联。
有关如何使用 IFX_REPLACE_MODULE 替换共享对象文件的更多信息,请参
阅 GBase 8s 用户定义的例程和数据类型开发者指南 中如何设计 UDR 的章节。
有关如何使用 IFX_UNLOAD_MODULE 函数的信息,请参阅
IFX_UNLOAD_MODULE 函数 一节。
IFX_UNLOAD_MODULE 函数
IFX_UNLOAD_MODULE 函数从共享内存卸载以 C 语言编写的 UDR 的共享对象文
件。
IFX_UNLOAD_MODULE 函数

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1714

参数
描述
限制
语法
module_name
要卸载文件
的完整路径

共享对象文件必须存在并且未被使
用。路径名最大长度为 255 字节。
引用字符

IFX_UNLOAD_MODULE 函数是所有者特权函数,其所有者是用户 gbasedbt。它返回
的整数值表示共享对象文件卸载操作的状态:

零(0)表示成功

负整数表示错误
IFX_UNLOAD_MODULE 函数只能卸载未使用的共享对象文件;也就是说,当
没有执行的 SQL 语句(在任何数据库中)使用指定的共享对象文件中的任何
UDR 时。如果共享对象文件中的任何 UDR 当前正在使用,则
IFX_UNLOAD_MODULE 引发错误。
在 UNIX™ 上,例如,假设您希望卸载 circle.so 共享库,包含 C UDR。如果
此库驻留在 /usr/apps/opaque_types 目录,可以使用以下 EXECUTE
FUNCTION 语句执行 IFX_UNLOAD_MODULE 函数:
EXECUTE FUNCTION ifx_unload_module
("/usr/apps/opaque_types/circle.so", "C");
在 Windows™ 上,例如,假设希望卸载 circle.dll 动态链接库,包含 C
UDR。如果该库在 C:\usr\apps\opaque_types 目录中,您可以使用以下
EXECUTE FUNCTION 语句执行 IFX_UNLOAD_MODULE 函数:
EXECUTE FUNCTION ifx_unload_module
("C:\usr\apps\opaque_types\circle.dll", "C");
有关如何使用 IFX_REPLACE_MODULE( ) 和 IFX_UNLOAD_MODULE( )
UDR 定义例程的更多信息,请参阅 GBase 8s 用户定义的例程和数据类型开发者
指南 和 GBase 8s DataBlade API 程序员指南。

两阶段落实协议在执行事务期间发生系统或介质故障的情况下提供自动恢复机制。两阶段
落实协议确保所有参与的数据库服务器接收并执行同一操作(落实或回滚事务),而不论
是否有本地或网络故障。
如果有任何数据库服务器无法落实它这一部分的事务,那么一定会阻止参与该事务的所有
数据库服务器落实各自的工作。
何时使用两阶段落实协议
数据库服务器对任何在多个数据库服务器上修改数据的事务自动使用两阶段落实协议。
例如,假设连接了三台名为 australia、italy 和 france 的数据库服务器,如下图所示。
图: 已连接的数据库服务器

如果运行以下示例中显示的命令,那么结果是在三台不同的数据库服务器上执行一次更新
和两次插入。
CONNECT TO stores_demo@italy
BEGIN WORK

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 489 -
UPDATE stores_demo:manufact SET manu_code = 'SHM' WHERE
manu_name = 'Shimara'
INSERT INTO stores_demo@france:manufact VALUES ('SHM', 'Shimara', '30')
INSERT INTO stores_demo@australia:manufact VALUES ('SHM', 'Shimara',
'30')
COMMIT WORK
两阶段落实概念
每个全局事务均有一个协调者和一个或多个参与者,定义如下:

协调者可指导全局事务的解决方案。它决定全局事务是必须落实还是必须停止。
两阶段落实协议始终将协调者的角色分配至当前数据库服务器。在单个事务期
间,协调者的角色无法更改。 在何时使用两阶段落实协议 中的样本事务中,协
调者是 italy。如果您将该示例中的第一行更改为以下语句,那么两阶段落实协议
将协调者的角色分配至 france:
CONNECT TO stores_demo@france
使用 onstat -x 选项显示分布式事务的协调者。有关更多信息,请参阅监视全局事
务。

每个参与者指示一个事务分支的执行,事务分支是涉及单个本地数据库的那部分
全局事务。全局事务在以下情况中包含几个事务分支:

应用程序使用多个进程为全局事务工作

多个远程应用程序为同一全局事务工作
在何时使用两阶段落实协议 中,参与者是 france 和 australia。协调者数据库服务
器 italy 也起着参与者的作用,因为它也在进行更新。
两阶段落实协议依赖两种通信,消息和逻辑日志记录:

消息在协调者和每个参与者之间传递。 来自协调者的消息包括事务标识号和指示
信息(如 prepare to commit、commit 或 roll back)。来自每个参与者的消息包括事
务状态和所采取操作的报告(如 can commit 或 cannot commit、committed 或 rolled
back)。

事务的逻辑日志记录保留在磁盘或磁带上以确保即使在参与的数据库服务器(参
与者或协调者)上发生故障时的数据完整性和一致性。
有关更多的详细信息,请参阅两阶段落实和逻辑日志记录。
两阶段落实协议的阶段

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 490 -
在两阶段落实事务中,协调者将所有数据修改指示信息(例如,插入)发送至所有参与
者。然后,协调者启动两阶段落实协议。两阶段落实协议分两部分,预落实阶段和后决策
阶段。
预落实阶段
在预落实阶段期间,协调者和参与者执行以下对话:
协调者
协调者指导每个参与者数据库服务器准备落实事务。
参与者
每个参与者通知协调者它是否可落实其事务分支。
协调者
协调者根据每个参与者的响应来决定落实还是回滚事务。它仅当所有参与者指示
它们可以落实各自的事务分支时才决定落实。如果有任何参与者指示它尚未准备
好落实其事务分支(或如果它未响应),那么协调者将决定结束全局事务。
后决策阶段
在后决策阶段期间,协调者和参与者执行以下对话:
协调者
协调者将落实记录或回滚记录写入协调者的逻辑日志,然后指示每个参与者数据
库服务器落实或回滚事务。
参与者
如果协调者发出落实消息,那么参与者通过将落实记录写入逻辑日志并将消息发
送至协调者(确认事务已落实)来落实事务。 如果协调者发出回滚消息,那么参
与者回滚事务,但不向协调者发送确认。
协调者
如果协调者发出消息以落实事务,它将在结束全局事务前一直等待以接收来自各
参与者的确认。如果协调者发出消息以回滚事务,它将不等待参与者的确认。
两阶段落实协议如何处理故障
两阶段落实协议设计为用可保留所有参与的数据库服务器上的数据完整性的方式来处理系
统和介质故障。如果发生故障,两阶段落实协议执行自动恢复。
自动恢复处理的故障类型
以下事件可能导致协调线程或参与者线程终止或挂起,因此需要自动恢复:

协调者的系统故障

参与者的系统故障

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

网络故障

管理员终止协调线程

管理员终止参与者线程
管理员在自动恢复中的角色
自动恢复中管理员的唯一角色是在系统或网络故障后将协调者和/或参与者恢复联机。
重要: 慢速网络无法触发自动恢复。除非协调者系统发生故障、网络发生故障或管理员
终止协调线程,否则此处描述的恢复机制均不会生效。
协调者故障的自动恢复机制
如果协调线程发生故障,各参与者数据库服务器必须决定在其落实或回滚事务之前还是在
其回滚事务之后启动自动恢复。此职责是假定结束的优化的一部分。 (请参阅假定结束
的优化。)
参与者故障的自动恢复机制
无论何时参与者线程预落实了在两阶段落实协议可完成之前就终止的一项工作,就会发生
参与者恢复。参与者恢复的目标是根据协调者作出的决定来完成两阶段落实协议。
根据协调者是决定落实还是回滚全局事务,参与者恢复可由协调者或者参与者驱动。
重要: 要在跨服务器事务打开的同时支持下级服务器关闭或重新启动之后的自动恢复,
sqlhosts 文件必须为可能启动分布式操作的每个数据库服务器包含一个条目。在自动恢复
期间,协调者的名称从逻辑日志恢复,且下级服务器与协调者重新连接以完成该事务。由
于协调者总是使用自己的 onconfig 文件的 DBSERVERNAME 配置参数中的名称来向各
参与者标识它自己,因此协调者的 DBSERVERNAME 设置必须是参与者都已知的因特网
协议连接名称,但是也可使用正确的连接协议,为协调者和下级服务器之间的连接至少定
义一个 DBSERVERALIASES 设置。下级服务器必须能够使用协调者的
DBSERVERNAME 设置或 DBSERVERALIASES 设置连接到该协调者。
假定结束的优化
假定结束的优化是描述两阶段落实协议如何处理事务回滚的术语。
回滚是按以下方式处理的。当协调者确定事务必须回滚时,它发送消息给所有的参与者以
回滚它们的工作片段。 协调者不会等待该消息的确认,而是继续进行以关闭事务并将其
从共享内存中除去。如果参与者尝试确定该事务的状态,即查明事务已落实还是已回滚
(例如:在参与者恢复期间)- 它将在共享内存中找不到任何事务状态。参与者必定将
此解释为表示事务已回滚。

2017-06-01 09:28:07.346 [EXECTR][INFO ][S:125][Q:96]:--#--Begin a async API
mode--#--
2017-06-01 09:28:07.346 [EXECTR][INFO ][S:125][Q:96]:A plan Begin ...
2017-06-01 09:28:07.346 [EXECTR][INFO ][S:125][Q:96]:Current plan [0x7fff3d583520]
has 0 scalar subquery.
2017-06-01 09:28:07.346 [EXECTR][INFO ][S:125][Q:96]:Current plan [0x7fff3d583520]
has 0 from subquery.
2017-06-01 09:28:07.347 [EXECTR][INFO ][S:125][Q:96]:Current plan [0x7fff3d583520]
has 0 union subquery.

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1619
2017-06-01 09:28:07.347 [EXEC_P][INFO ][S:125][Q:96]:Current plan [0x7fff3d583520]
has 3 steps.
2017-06-01 09:28:07.347 [EXEC_P][INFO ][S:125][Q:96]:## STEP: 0 ...
2017-06-01 09:28:07.347 [EXECTR][INFO ][S:125][Q:96]:Current plan [0x7fff3d583520]
has 0 uncorrelated subquery.
2017-06-01 09:28:07.347 [EXECTR][INFO ][S:125][Q:96]:Distribution Info,
/[8a:P1C1]
2017-06-01 09:28:07.347 [EXECTR][INFO ][S:125][Q:96]:---Step detail: hash
redistribute the table in gbase.
2017-06-01 09:28:07.349 [EXECTR][INFO ][S:125][Q:96]:Create table by 'create as
select' mode
2017-06-01 09:28:07.349 [EXECTR][INFO ][S:125][Q:96]:Create table by 'create as
select' mode
2017-06-01 09:28:07.350 [EXECTR][INFO ][S:125][Q:96]:Create table by 'create as
select' mode
2017-06-01 09:28:07.350 [EXECTR][INFO ][S:125][Q:96]:Passed tasks to async API,
good luck!
2017-06-01 09:28:07.351 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.173,
SQL:CREATE TABLE `gctmpdb`._tmp_rht_2902894784_125_t2_1_1496210470_s_n1 AS SELECT
/*192.168.6.173_125_10_2017-06-01_09:28:07*/ /*+ TID('5') */ `test.td_t`.`a` AS
`a`, `test.td_t`.`b` AS `b`, `test.td_t`.`c` AS `c` FROM `test`.`td_t_n1`
`test.td_t` LIMIT 0 ; commit.
2017-06-01 09:28:07.355 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.174,
SQL:CREATE TABLE `gctmpdb`._tmp_rht_2902894784_125_t2_1_1496210470_s_n2 AS SELECT
/*192.168.6.173_125_10_2017-06-01_09:28:07*/ /*+ TID('5') */ `test.td_t`.`a` AS
`a`, `test.td_t`.`b` AS `b`, `test.td_t`.`c` AS `c` FROM `test`.`td_t_n2`
`test.td_t` LIMIT 0 ; commit.
2017-06-01 09:28:07.356 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.175,
SQL:CREATE TABLE `gctmpdb`._tmp_rht_2902894784_125_t2_1_1496210470_s_n3 AS SELECT
/*192.168.6.173_125_10_2017-06-01_09:28:07*/ /*+ TID('5') */ `test.td_t`.`a` AS
`a`, `test.td_t`.`b` AS `b`, `test.td_t`.`c` AS `c` FROM `test`.`td_t_n3`
`test.td_t` LIMIT 0 ; commit.
2017-06-01 09:28:07.361 [EXECTR][INFO ][S:125][Q:96]:
-----------------+----Node Performance----+---------------
+-Type-+-------Node------+-Port-+---Elapsed---+--Status--+
| T | 192.168.6.175 | 5050 | 0 s | Finish |

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1620
| T | 192.168.6.174 | 5050 | 0 s | Finish |
| T | 192.168.6.173 | 5050 | 0 s | Finish |
+------+-----------------+------+-------------+----------+
2017-06-01 09:28:07.362 [EXECTR][INFO ][S:125][Q:96]:Passed tasks to async API,
good luck!
2017-06-01 09:28:07.365 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.173,
SQL:SELECT /*192.168.6.173_125_10_2017-06-01_09:28:07*/ /*+ TID('5') */
`test.td_t`.`a` AS `a`, `test.td_t`.`b` AS `b`, `test.td_t`.`c` AS `c` FROM
`test`.`td_t_n1` `test.td_t` target into server (HOST
'192.168.6.173,192.168.6.174,192.168.6.175', PORT 5050, USER 'root', PASSWORD '',
DATABASE 'gctmpdb', TABLE
'_tmp_rht_2902894784_125_t2_1_1496210470_s_n1,_tmp_rht_2902894784_125_t2_1_1496
210470_s_n2,_tmp_rht_2902894784_125_t2_1_1496210470_s_n3', COMMENT 'group 0,
distribution 1, hash_map 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0
1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1
2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0
1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1
2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
2017-06-01 09:28:07.374 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.174,
SQL:SELECT /*192.168.6.173_125_10_2017-06-01_09:28:07*/ /*+ TID('5') */
`test.td_t`.`a` AS `a`, `test.td_t`.`b` AS `b`, `test.td_t`.`c` AS `c` FROM
`test`.`td_t_n2` `test.td_t` target into server (HOST
'192.168.6.173,192.168.6.174,192.168.6.175', PORT 5050, USER 'root', PASSWORD '',
DATABASE 'gctmpdb', TABLE
'_tmp_rht_2902894784_125_t2_1_1496210470_s_n1,_tmp_rht_2902894784_125_t2_1_1496
210470_s_n2,_tmp_rht_2902894784_125_t2_1_1496210470_s_n3', COMMENT 'group 0,
distribution 1, hash_map 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0
1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1
2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0
1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1
2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
2017-06-01 09:28:07.379 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.175,
SQL:SELECT /*192.168.6.173_125_10_2017-06-01_09:28:07*/ /*+ TID('5') */
`test.td_t`.`a` AS `a`, `test.td_t`.`b` AS `b`, `test.td_t`.`c` AS `c` FROM
`test`.`td_t_n3` `test.td_t` target into server (HOST
'192.168.6.173,192.168.6.174,192.168.6.175', PORT 5050, USER 'root', PASSWORD '',
DATABASE 'gctmpdb', TABLE
'_tmp_rht_2902894784_125_t2_1_1496210470_s_n1,_tmp_rht_2902894784_125_t2_1_1496
210470_s_n2,_tmp_rht_2902894784_125_t2_1_1496210470_s_n3', COMMENT 'group 0,

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1621
distribution 1, hash_map 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0
1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1
2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0
1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1
2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
2017-06-01 09:28:07.394 [EXECTR][INFO ][S:125][Q:96]:
-----------------+----Node Performance----+---------------
+-Type-+-------Node------+-Port-+---Elapsed---+--Status--+
| T | 192.168.6.173 | 5050 | 0 s | Finish |
| T | 192.168.6.175 | 5050 | 0 s | Finish |
| T | 192.168.6.174 | 5050 | 0 s | Finish |
+------+-----------------+------+-------------+----------+
2017-06-01 09:28:07.394 [EXECTR][INFO ][S:125][Q:96]:Passed tasks to async API,
good luck!
2017-06-01 09:28:07.395 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.173,
SQL:flush temporary commit
`gctmpdb`._tmp_rht_2902894784_125_t2_1_1496210470_s_n1.
2017-06-01 09:28:07.399 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.174,
SQL:flush temporary commit
`gctmpdb`._tmp_rht_2902894784_125_t2_1_1496210470_s_n2.
2017-06-01 09:28:07.401 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.175,
SQL:flush temporary commit
`gctmpdb`._tmp_rht_2902894784_125_t2_1_1496210470_s_n3.
2017-06-01 09:28:07.407 [EXECTR][INFO ][S:125][Q:96]:
-----------------+----Node Performance----+---------------
+-Type-+-------Node------+-Port-+---Elapsed---+--Status--+
| T | 192.168.6.175 | 5050 | 0 s | Finish |
| T | 192.168.6.174 | 5050 | 0 s | Finish |
| T | 192.168.6.173 | 5050 | 0 s | Finish |
+------+-----------------+------+-------------+----------+
2017-06-01 09:28:07.407 [EXEC_P][INFO ][S:125][Q:96]:## STEP: 1 ...
2017-06-01 09:28:07.407 [EXECTR][INFO ][S:125][Q:96]:Current plan [0x7fff3d583520]
has 0 uncorrelated subquery.
2017-06-01 09:28:07.407 [EXECTR][INFO ][S:125][Q:96]:Distribution Info, /[8a:P1]
2017-06-01 09:28:07.407 [EXECTR][INFO ][S:125][Q:96]:---Step detail: 8a to client,
query to all gnode
2017-06-01 09:28:07.408 [EXECTR][INFO ][S:125][Q:96]:Result redirected to insert
table ......
2017-06-01 09:28:07.408 [EXECTR][INFO ][S:125][Q:96]:Distribution of insert table:
1
2017-06-01 09:28:07.409 [EXECTR][INFO ][S:125][Q:96]:Passed tasks to async API,
good luck!
2017-06-01 09:28:07.411 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.173,
SQL:SET SELF SCN = 23;.
2017-06-01 09:28:07.413 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.174,
SQL:SET SELF SCN = 23;
2017-06-01 09:28:07.414 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.175,
SQL:SET SELF SCN = 23;.
2017-06-01 09:28:07.415 [EXECTR][INFO ][S:125][Q:96]:
-----------------+----Node Performance----+---------------
+-Type-+-------Node------+-Port-+---Elapsed---+--Status--+

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1622
| T | 192.168.6.175 | 5050 | 0 s | Finish |
| T | 192.168.6.174 | 5050 | 0 s | Finish |
| T | 192.168.6.173 | 5050 | 0 s | Finish |
+------+-----------------+------+-------------+----------+
2017-06-01 09:28:07.415 [LOCK][INFO ][S:125][Q:96]:unlocked: test.td_t
2017-06-01 09:28:07.417 [LOCK][INFO ][S:125][Q:96]:acquired WRITE lock:
test.td_s.09B5BEEC-1EF7-4FA6-9850-C4217A781E0F
2017-06-01 09:28:07.429 [EXECTR][INFO ][S:125][Q:96]:Passed tasks to async API,
good luck!
2017-06-01 09:28:07.433 [EXECTR][INFO ][S:125][Q:96]:Set failover!
2017-06-01 09:28:07.433 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.173,
SQL:SELECT /*192.168.6.173_125_10_2017-06-01_09:28:07*/ /*+ TID('5') */
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n1`.`a` AS `a`,
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n1`.`b` AS `b`,
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n1`.`c` AS `c` FROM
`gctmpdb`._tmp_rht_2902894784_125_t2_1_1496210470_s_n1 INNER JOIN
`test`.`td_s_n1` `test.td_s` ON (`test.td_s`.`a` =
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n1`.`a`) target into server (HOST
'192.168.6.173,192.168.6.174', PORT 5050, USER 'root', PASSWORD '', DATABASE 'test',
TABLE 'td_s_n1', COMMENT 'table_host 0 0 1, scn 23, distribution 1' ).
2017-06-01 09:28:07.434 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.174,
SQL:SELECT /*192.168.6.173_125_10_2017-06-01_09:28:07*/ /*+ TID('5') */
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n2`.`a` AS `a`,
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n2`.`b` AS `b`,
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n2`.`c` AS `c` FROM
`gctmpdb`._tmp_rht_2902894784_125_t2_1_1496210470_s_n2 INNER JOIN
`test`.`td_s_n2` `test.td_s` ON (`test.td_s`.`a` =
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n2`.`a`) target into server (HOST
'192.168.6.174,192.168.6.175', PORT 5050, USER 'root', PASSWORD '', DATABASE 'test',
TABLE 'td_s_n2', COMMENT 'table_host 0 0 1, scn 23, distribution 1' ).
2017-06-01 09:28:07.434 [SQLDISP][INFO ][S:125][Q:96]:Target:192.168.6.175,
SQL:SELECT /*192.168.6.173_125_10_2017-06-01_09:28:07*/ /*+ TID('5') */
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n3`.`a` AS `a`,
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n3`.`b` AS `b`,
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n3`.`c` AS `c` FROM
`gctmpdb`._tmp_rht_2902894784_125_t2_1_1496210470_s_n3 INNER JOIN
`test`.`td_s_n3` `test.td_s` ON (`test.td_s`.`a` =
`_tmp_rht_2902894784_125_t2_1_1496210470_s_n3`.`a`) target into server (HOST
'192.168.6.175,192.168.6.173', PORT 5050, USER 'root', PASSWORD '', DATABASE 'test',
TABLE 'td_s_n3', COMMENT 'table_host 0 0 1, scn 23, distribution 1' ).
2017-06-01 09:28:07.456 [EXECTR][INFO ][S:125][Q:96]:
-----------------+----Node Performance----+---------------
+-Type-+-------Node------+-Port-+---Elapsed---+--Status--+
| T | 192.168.6.175 | 5050 | 0 s | Finish |
| T | 192.168.6.174 | 5050 | 0 s | Finish |
| T | 192.168.6.173 | 5050 | 0 s | Finish |

GBase 8a MPP Cluster 产品手册
6 附录
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1623
+------+-----------------+------+-------------+----------+
2017-06-01 09:28:07.457 [EXEC_P][INFO ][S:125][Q:96]:## STEP: 2 ...
2017-06-01 09:28:07.457 [EXECTR][INFO ][S:125][Q:96]:Current plan [0x7fff3d583520]
has 0 uncorrelated subquery.
2017-06-01 09:28:07.457 [EXECTR][INFO ][S:125][Q:96]:---Enter Insert step...
2017-06-01 09:28:07.457 [EXECTR][INFO ][S:125][Q:96]:===========DML valid nodes
from query===========
2017-06-01 09:28:07.457 [EXECTR][INFO ][S:125][Q:96]:|| n1 | 192.168.6.173,