OceanBase 数据库的 DBLink 功能实现了跨数据源访问的能力,您可以在本地数据库上访问远端数据库。当前仅 Oracle 模式支持 DBLink 功能。
创建 OceanBase 数据库到 OceanBase 数据库的 DBLink
如果要访问远端的 OceanBase 数据库,您可以创建 OceanBase 数据库 Oracle 租户到其他 OceanBase 数据库 Oracle 租户的 DBLink。
创建 DBLink 的 SQL 语法如下:
obclient> CREATE DATABASE LINK dblink_name CONNECT TO user@tenant IDENTIFIED BY password [OB] HOST 'ip:port' [CLUSTER cluster_name];
复制
语句使用说明:
执行该语句的用户需要具备
CREATE DATABASE LINK
权限。为用户授权的相关操作请参见 修改用户权限。dblink_name
:DBLink 的名称,长度不超过 128 个字符。user
:远端 OceanBase 数据库的用户名。tenant
:远端 OceanBase 数据库的租户名。当前仅支持 Oracle 租户。password
:远端 OceanBase 数据库用户名的登录密码。OB
:表示指定访问的远端数据库的类型为 OceanBase。您也可以不指定该参数,默认访问的远端数据库类型即为 OceanBase。
ip
:指定远端 OceanBase 数据库的 IP 地址。IP 地址可以指定为集群的 OBProxy 的 IP 地址,或者也可以指定为集群中某个 OBServer 的 IP 地址。当 IP 地址为指定 OBServer 的 IP 地址时,要求本地数据库与指定 OBServe之间的网络是可以互通的。
port
:指定远端 OceanBase 数据库的端口号。端口号可以指定为集群的 Proxy 的端口号,或者也可以指定为集群中某个 OBServer 的端口号。当端口号为指定 OBServer 的端口号时,要求本地数据库与指定 OBServer 之间的网络是可以互通的。
cluster_name
:远端 OceanBase 数据库对应的集群的名称。仅当 IP 和端口号为集群的 Proxy 的 IP 和端口号,且 Proxy 是由 ConfigUrl 方式部署时,才需要指定集群名称。说明
在部署 OBProxy 时,有以下两种部署方式:
ConfigUrl 部署方式:表示在启动 OBProxy 时,通过在命令中指定
obproxy_config_server_url
参数项来查询获取 OceanBase 集群的 RootServer 信息的方式。RsList 部署方式:表示在启动 OBProxy 时,通过在命令中指定
-r
参数来指定 OceanBase 集群的 RootServer 信息的方式。
示例如下:
创建连接到远端 OceanBase 数据库的 DBLink,且 IP 地址和端口号为指定 OBServer 的 IP 地址和端口号。
obclient> CREATE DATABASE LINK ob_dblink CONNECT TO ob_user@oracle IDENTIFIED BY 1** OB HOST '10.10.10.1:12345';
复制创建连接到远端 OceanBase 的 DBLink,且 IP 地址和端口号为集群的 Proxy 的 IP 地址和端口号,同时 Proxy 由 ConfigUrl 方式部署。
obclient> CREATE DATABASE LINK ob_dblink_proxy CONNECT TO ob_user@oracle IDENTIFIED BY 1** OB HOST '10.10.10.2:30084' CLUSTER "ob323";
复制注意
在填写集群名称时,需要加双引号,防止集群名称的字母被升格为大写字母。
通过 DBLink 访问远端数据库中的数据
您可以通过 SELECT... FROM 表名@DBLink 名
来查询远端数据库中的数据,当前暂不支持通过 DBLink 修改、插入或删除数据。
SQL 语句如下:
SELECT select_expr_list FROM table_name@dblink_name WHERE where_conditions; select_expr_list: table_name.* | table_alias_name.* | expr [[AS] column_alias_name]
复制
语句使用说明:
select_expr_list
:指定待查询的表达式或列名,不同的列之间用英文逗号(,)隔开,星号(*)表示所有列。table_name.*
:指定从指定的表、视图中选择所有的列。table_alias_name.*
:指定表、视图的别名。expr [[AS] column_alias_name]
:指定查询列或表达式的别名,AS
为可选。
table_name@dblink_name
:指定待查询的远端数据库的表,多个数据库之间用英文逗号(,)隔开。where_conditions
:指定筛选条件,查询结果中仅包含满足条件的数据,为可选项。
示例:
通过名为
my_link
的 DBLink 查询远端数据库中表tbl1
的数据。obclient> SELECT * FROM tbl1@my_link;
复制
更多 DBLink 相关的查询语句,请参见 SIMPLE SELECT。
删除 DBLink
您可以删除不需要使用的 DBLink。语法如下:
obclient> DROP DATABASE LINK dblink_name;
复制
语句使用说明:
执行该语句的用户需要具备
DROP DATABASE LINK
权限。为用户授权的相关操作请参见 修改用户权限。dblink_name
表示待删除的 DBLink 的名称。
示例如下:
obclient> DROP DATABASE LINK ob_dblink; Query OK, 1 row affected
复制