技术原理
核心机制
DATABASE LINK查询远程表基本流程的时序图如图1所示。
接口介绍
DATABASE LINK主要使用的系统视图如表1所示,具体描述请参见《参考》中“系统表和系统视图 > 系统视图 > DATABASE LINK”章节。
| 视图名 | 视图说明 |
|---|---|
| GS_DB_LINKS | 显示DATABASE LINK对象的相关信息,用户可以查看属于自己和PUBLIC级别的DATABASE LINK信息。 |
| V$DBLINK | 该视图数据取自于GS_DB_LINKS,但只记录在本次session中曾被使用过或正在使用的DATABASE LINK信息。默认只有管理员用户可以查看该视图。 |
DATABASE LINK主要使用的系统函数如表2所示,具体描述请参见《参考》中“SQL参考 > 函数和操作符 > DATABASE LINK函数”章节。
| 函数名 | 函数说明 |
|---|---|
| close_database_link(dblink_name name) | 通过DBLink名称主动关闭当前session下该DBLink的连接。 |
| 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等信息,非管理员用户不显示。 |
| gs_ora_get_handle_alloc(dblink_oid oid) | 通过DBLink的OID,获取该DBLink通过OCI使用的内存大小,单位为字节。 |
| gs_ora_get_handle_alloc_all() | 获取每个节点的环境句柄,所有DBLink通过OCI使用的内存大小计算总和,单位为字节。 |
| gs_ora_connection_status(dblink_oid oid) | 通过DBLink的OID,获取该DBLink在当前session下的连接状态。 |
| is_dblink_in_use(dblink_oid oid) | 通过DBLink的OID,获取该DBLink是否被使用。 |
| dblink_has_updatasent (dblink_oid oid) | 判断当前事务中是否使用OID对应的DATABASE LINK进行发送了DML语句且未提交。 |
| is_dblink_in_transaction(dblink_oid oid) | 通过DBLink的OID,获取该DBLink是否正在事务中。 |
DATABASE LINK主要使用的系统表如表3所示,具体描述请参见《参考》中“系统表和系统视图 > 系统表 > DATABASE LINK”章节。

