暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

数据库对象管理Oracle模式管理DBLink

2023-04-13
238

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
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论