首批通过分布式安全可靠测评,为关键业务系统打造
创建 DBLink
更新时间:2026-07-15 20:56:58
OceanBase 数据库的 DBLink 功能实现了跨数据源访问的能力,您可以在本地数据库上访问远端数据库。
当前,对于 OceanBase 数据库的 Oracle 模式,支持创建 OceanBase 数据库的 Oracle 租户到其他 OceanBase 数据库的 Oracle 租户以及 OceanBase 数据库的 Oracle 租户到 Oracle 数据库的 DBLink。
前提条件
创建 DBLink 的用户需要具备 CREATE DATABASE LINK 或 CREATE PUBLIC DATABASE LINK 权限。为用户授权的相关操作请参见 直接授予权限。
创建 OceanBase 数据库到 OceanBase 数据库的 DBLink
如果要访问远端的 OceanBase 数据库,可以创建 OceanBase 数据库的 Oracle 租户到其他 OceanBase 数据库的 Oracle 租户的 DBLink。
创建 DBLink 需要指定 DBLink 名称并且提供远端数据库的用户名、租户名、密码、IP 地址、端口号以及访问类型等信息。DBLink 写数据功能中有一个反向 Link 特性,反向 Link 特性主要用于远端数据库访问本地数据库的对象,对象包括表、视图和同义词等。如果需要使用反向 Link 特性,则在创建 DBLink 时需要提供本地数据库的用户名、租户名、密码、IP 地址、端口号等信息。
Oracle 模式下创建 OceanBase 数据库 Oracle 租户到其他 OceanBase 数据库 Oracle 租户的 DBLink 的 SQL 语法如下:
obclient> CREATE DATABASE LINK dblink_name CONNECT TO user@tenant IDENTIFIED BY remote_password [OB] HOST 'ip:port' [CLUSTER "cluster_name"]
[MY_NAME local_user@local_tenant IDENTIFIED BY local_password HOST 'local_ip:local_port' [CLUSTER "local_cluster_name"]];
相关参数说明如下:
dblink_name:DBLink 的名称,长度不超过 128 个字符。user:远端 OceanBase 数据库的用户名。tenant:远端 OceanBase 数据库的租户名。remote_password:远端 OceanBase 数据库用户名的登录密码。密码中如果有@#!等除数字、字母以外的其他特殊字符时,需要使用双引号将密码括起来避免报语法错误。OB:可选,表示指定访问的远端数据库的类型为 OceanBase。您也可以不指定该参数,默认访问的远端数据库类型即为 OceanBase。
ip:指定远端 OceanBase 数据库的 IP 地址。IP 地址可以指定为集群的 OBProxy 的 IP 地址,或者也可以指定为集群中某个 OBServer 节点的 IP 地址。当 IP 地址为指定 OBServer 节点的 IP 地址时,要求本地数据库与指定 OBServer 节点之间的网络是可以互通的。
说明
除了 IP 地址外,OceanBase 数据库还支持域名地址。例如,
example.com:port。您可以根据实际环境,使用相应的域名地址来连接远端的数据库。port:指定远端 OceanBase 数据库的端口号。端口号可以指定为集群的 Proxy 的端口号(默认为 2883),或者也可以指定为集群中某个 OBServer 节点的 SQL 端口号(默认为 2881)。当端口号为指定 OBServer 节点的 SQL 端口号时,要求本地数据库与指定 OBServer 服务器之间的网络是可以互通的。
cluster_name:远端 OceanBase 数据库对应的集群的名称。仅当 IP 和端口号为集群的 Proxy 的 IP 和端口号,且 Proxy 是由 ConfigUrl 方式部署时,才需要指定集群名称。由于集群名称对大小写敏感,集群名称需要使用双引号括起来。说明
在部署集群的 Proxy(例如 ODP) 时,有以下两种部署方式:
- ConfigUrl 部署方式:表示在启动 OBProxy 时,通过在命令中指定
obproxy_config_server_url参数项来查询获取 OceanBase 集群的 RootServer 信息的方式。 - RsList 部署方式:表示在启动 OBProxy 时,通过在命令中指定
-r参数来指定 OceanBase 集群的 RootServer 信息的方式。
- ConfigUrl 部署方式:表示在启动 OBProxy 时,通过在命令中指定
[MY_NAME local_user@local_tenant IDENTIFIED BY local_password HOST 'local_ip:local_port' [CLUSTER "local_cluster_name"]]:可选,本地数据库的用户名、租户名、密码、IP 地址、端口号以及集群信息,如果需要在 DBLink 写数据功能中使用反向 Link 特性,则需要填写该信息。local_user:本地数据库的用户名。local_tenant:本地数据库所属的租户名。local_password:本地数据库用户的登录密码,密码中如果有@#!等除数字、字母以外的其他特殊字符时,需要使用双引号将密码括起来避免报语法出错。local_ip:本地数据库集群中某个 OBServer 服务器的 IP 地址。local_port:本地数据库集群中某个 OBServer 服务器的 SQL 端口号。OBServer 服务器的 SQL 端口号默认为 2881。local_cluster_name:本地 OceanBase 数据库对应的集群的名称。仅当 IP 和端口号为集群的 Proxy 的 IP 和端口号,且 Proxy 是由 ConfigUrl 方式部署时,才需要指定集群名称。集群名称需要使用双引号括起来。
示例如下:
创建连接到远端 OceanBase 数据库的 DBLink,且 IP 地址和端口号为指定 OBServer 服务器的 IP 地址和端口号。
obclient> CREATE DATABASE LINK ob_dblink CONNECT TO ob_user@oracle IDENTIFIED BY ****** OB HOST 'xx.xx.xx.xx:2881'; Query OK, 1 row affected创建连接到远端 OceanBase 的 DBLink,且 IP 地址和端口号为集群的 Proxy 的 IP 地址和端口号,同时 Proxy 由 ConfigUrl 方式部署。
obclient> CREATE DATABASE LINK ob_dblink_proxy CONNECT TO ob_user@oracle IDENTIFIED BY ****** OB HOST 'xx.xx.xx.xx:2883' CLUSTER "ob410"; Query OK, 1 row affected注意
在填写集群名称时,需要加双引号,防止集群名称的字母被升格为大写字母。
创建连接到远端 OceanBase 数据库带有反向 Link 特性的 DBLINK,名称为
ob_dblink_reverse_link。obclient> CREATE DATABASE LINK ob_dblink_reverse_link CONNECT TO ob_user2@oracle IDENTIFIED BY ****** OB HOST 'xx.xx.xx.xx:2881' MY_NAME local_ob_user@oracle IDENTIFIED BY ****** HOST 'xx.xx.xx.xx:2881'; Query OK, 1 row affected
创建 OceanBase 数据库到 Oracle 数据库的 DBLink
如果要访问远端的 Oracle 数据库,您可以创建 OceanBase 数据库的 Oracle 租户到 Oracle 数据库的 DBLink。
创建 DBLink 需要指定 DBLink 名称并且提供远端数据库的用户名、租户名、密码、IP 地址、端口号以及访问类型等信息。DBLink 写数据功能中有一个反向 Link 特性,反向 Link 特性主要用于远端数据库访问本地数据库的对象,对象包括表、视图和同义词等。OceanBase 数据库到 Oracle 数据库的 DBLink 暂不支持反向 Link 特性。
创建 OceanBase 数据库到 Oracle 数据库的 DBLink 的 SQL 语法如下:
obclient> CREATE DATABASE LINK dblink_name CONNECT TO user@oracle IDENTIFIED BY remote_password OCI HOST 'ip:port/oracle_service_name';
语句使用说明:
dblink_name:DBLink 的名称,长度不超过 128 个字符。user:远端 Oracle 数据库的用户名。oracle:连接 Oracle 数据库时,该值始终为 oracle。remote_password:远端 Oracle 数据库用户的登录密码。密码中如果有@#!等除数字、字母以外的其他特殊字符时,需要使用双引号将密码括起来避免报语法出错。OCI:表示指定访问的远端数据库的类型为 Oracle。如果不指定该参数,则默认访问的远端数据库类型为 OceanBase。ip:指定远端 Oracle 数据库实例的 IP 地址。说明
除了 IP 地址外,OceanBase 数据库还支持域名地址。例如,
example.com:port。您可以根据实际环境,使用相应的域名地址来连接远端的数据库。port:指定远端 Oracle 数据库实例的端口号。oracle_service_name:远端 Oracle 数据库服务的名称。
创建连接到远端 Oracle 数据库的 DBLink 的示例如下:
obclient> CREATE DATABASE LINK orcl_dblink CONNECT TO orcl_user@oracle IDENTIFIED BY ****** OCI HOST 'xx.xx.xx.xx:1521/ORCL';
Query OK, 1 row affected
相关文档
更多 DBLink 相关的操作,请参见以下信息: