DATABASE LINK函数
- close_database_link(dblink_name name)
描述:通过DBLink名称主动关闭当前session下该DBLink的连接,不允许关闭存在活跃事务的dblink。
表1 close_database_link(dblink_name name)参数说明 名称
类型
输入/输出
描述
dblink_name
name
输入
DBLink的名称。
close_database_link
boolean
输出
关闭DATABASE LINK结果(t: 成功, f: 失败)。
示例:
gaussdb=# SELECT close_database_link('xxx'); close_database_link --------------------- t (1 row) gaussdb=# BEGIN; BEGIN gaussdb=# SELECT * FROM t1@dblink; c1 | c2 | c3 ----+----+---- 1 | | (1 row) gaussdb=# INSERT INTO t1@dblink VALUES (2,0,0); INSERT 0 1 gaussdb=# SELECT * FROM t1@dblink; c1 | c2 | c3 ----+----+---- 1 | | 2 | 0 | 0 (2 rows) gaussdb=# SELECT close_database_link('dblink'); ERROR: Dblink dblink is in use. CONTEXT: referenced column: close_database_link gaussdb=# END; ROLLBACK
- gs_ora_diag(dblink_name name DEFAULT NULL::name)
描述:该函数只能获取连接Oracle库的DBLink对应的信息。通过DBLink名称获取gs_ora_fdw版本、GaussDB版本、Oracle数据库客户端版本以及Oracle数据库服务端版本信息。当参数为NULL时,如果查询用户是管理员用户还会返回ORACLE_HOME、ORACLE_SID、TNS_ADMIN、TWO_TASK、 LDAP_ADMIN等信息,非管理员用户不显示。
表2 gs_ora_diag(dblink_name name DEFAULT NULL::name)参数说明 名称
类型
输入/输出
描述
dblink_name
name
输入
DBLink的名称。
gs_ora_diag
text
输出
该DBLink的diag信息。
示例:
--管理员用户。 gaussdb=# SELECT gs_ora_diag('xxx'); gs_ora_diag -------------------------------------------------------------------------------------- gs_ora_fdw 1.0.0, GaussDB 9.2.4, Oracle client 19.24.0.0.0, Oracle server 19.0.0.0.0 (1 row) gaussdb=# SELECT gs_ora_diag(); gs_ora_diag ---------------------------------------------------------------------------------------------------------------------------------------------------- gs_ora_fdw 1.0.0, GaussDB 9.2.4, Oracle client 19.24.0.0.0, ORACLE_HOME=/xxx/instantclient_19_24, TNS_ADMIN=/xxx/instantclient_19_24/network/admin (1 row) --普通用户。 gaussdb=# SELECT gs_ora_diag('xxx'); gs_ora_diag -------------------------------------------------------------------------------------- gs_ora_fdw 1.0.0, GaussDB 9.2.4, Oracle client 19.24.0.0.0, Oracle server 19.0.0.0.0 (1 row) gaussdb=# SELECT gs_ora_diag(); gs_ora_diag ------------------------------------------------------------ gs_ora_fdw 1.0.0, GaussDB 9.2.4, Oracle client 19.24.0.0.0 (1 row)
- gs_ora_get_handle_alloc(dblink_oid oid)
描述:通过DBLink的OID,获取该DBLink通过OCI使用的内存大小,单位为字节。
表3 gs_ora_get_handle_alloc(dblink_oid oid)参数说明 名称
类型
输入/输出
描述
dblink_oid
oid
输入
指定的DBLink的OID。
gs_ora_get_handle_alloc
numeric
输出
DBLink通过OCI使用的内存大小,单位为字节。
示例:gaussdb=# SELECT gs_ora_get_handle_alloc(xxx); gs_ora_get_handle_alloc -------------------------- 151224 (1 row) - gs_ora_get_handle_alloc_all()
描述:获取每个节点的环境句柄,所有DBLink通过OCI使用的内存大小计算总和,单位为字节。
表4 gs_ora_get_handle_alloc_all()参数说明 名称
类型
输入/输出
描述
gs_ora_get_handle_alloc_all
numeric
输出
所有DBLink通过OCI使用的内存大小计算总和,单位为字节。
示例:gaussdb=# SELECT gs_ora_get_handle_alloc_all(); gs_ora_get_handle_alloc_all ------------------------------ 429000 (1 row) - gs_ora_connection_status(dblink_oid oid)
描述:通过DBLink的OID,获取该DBLink在当前session下的连接状态。
表5 gs_ora_connection_status(dblink_oid oid)参数说明 名称
类型
输入/输出
描述
dblink_oid
oid
输入
指定的DBLink的OID。
gs_ora_connection_status
text
输出
该DBLink在当前session下的连接状态(CONNECTED: 连接, LOST: 未连接)。
示例:
gaussdb=# SELECT gs_ora_connection_status(xxx); gs_ora_connection_status ----------------------------- CONNECTED (1 row) - gs_ora_fdw_handler()
描述:外部数据封装器oracle_fdw的处理函数,函数功能为返回一个fdw_handler结构体,其中包含指向回调函数的指针。
入参:无
返回值类型:fdw_handler
- gs_ora_fdw_validator(option text[], dblink_oid oid)
描述:外部数据封装器gs_ora_fdw的检查函数,用来检查提供给gs_ora_fdw的通用选项。如果选项或选项值无效或缺失,则报错。
表6 gs_ora_fdw_validator(option text[], dblink_oid oid)参数说明 名称
类型
输入/输出
描述
dblink_oid
oid
输入
指定的DBLink的OID。
option
text[]
输入
DBLink的OPTION选项。
返回值类型:void
- is_dblink_in_use(dblink_oid oid)
描述:通过DBLink的OID,获取该DBLink是否被使用。
表7 is_dblink_in_use(dblink_oid oid)参数说明 名称
类型
输入/输出
描述
dblink_oid
oid
输入
指定的DBLink的OID。
is_dblink_in_use
bool
输出
该DBLink的使用状态。
示例:
gaussdb=# SELECT is_dblink_in_use(xxx); is_dblink_in_use ----------------------------- f (1 row) - dblink_has_updatasent (dblink_oid oid)
描述:判断当前事务中是否已使用OID对应的DATABASE LINK发送了DML语句且未提交。
表8 dblink_has_updatasent (dblink_oid oid)参数说明 名称
类型
输入/输出
描述
dblink_oid
oid
输入
指定的DBLink的OID。
dblink_has_updatasent
bool
输出
该DBLink是否已发送DML语句且处于未提交阶段。
示例:
gaussdb=# SELECT dblink_has_updatasent(xxx); dblink_has_updatasent ----------------------------- f (1 row) - is_dblink_in_transaction(dblink_oid oid)
描述:通过DBLink的OID,获取该DBLink是否正在事务中。
表9 is_dblink_in_transaction(dblink_oid oid)参数说明 名称
类型
输入/输出
描述
dblink_oid
oid
输入
指定的DBLink的OID。
is_dblink_in_transaction
bool
输出
该DBLink是否在事务中。
示例:
gaussdb=# SELECT is_dblink_in_transaction(xxx); is_dblink_in_transaction ----------------------------- f (1 row)