5
博客oceanbase oracle 创建 dblink

oceanbase oracle 创建 dblink-c7电子娱乐

本文绝大部分内容是参照oceanbase 官方文档,在官方文档中加以个人经验总结,如有侵权,请告知后会删除!

dblink基本介绍

oceanbase 数据库的 dblink 功能实现了跨数据源访问的能力,您可以在本地数据库上访问远端数据库。

对于 oceanbase 数据库的 oracle 模式支持两种创建dblink的方式,支持创建 oceanbase 数据库的 oracle 租户到其他 oceanbase 数据库的 oracle 租户以及 oceanbase 数据库的 oracle 租户到 oracle 数据库的 dblink

前提条件

创建 dblink 的用户需要具备 create database link create public database link 权限。执行相关命令:

# grant create database link to username;

创建dblink的两种方式

1.      使用obproxy ip 2883 端口方式

2.      使用observer 2881 端口方式

3.      反向dblink

总结:在不知道创建obproxy 方式的情况下,使用相关命令创建dblink 可以先省略cluster 参数,尝试是否可以连接,如果不能连接,再使用cluster 参数,注意cluster 参数对大小写敏感,需要使用双引号!

反向dblink,参照文档的意思是远程数据库访问本地数据库的一种方式,相当于访问的目标数据库创建一个dblink 访问本地数据库。需要实验验证理解是否一致。

如果要访问远端的 oceanbase 数据库,可以创建 oceanbase 数据库的 oracle 租户到其他 oceanbase 数据库的 oracle 租户的 dblink

创建 dblink 需要指定 dblink 名称并且提供远端数据库的用户名、租户名、密码、ip 地址、端口号以及访问类型等信息。dblink 写数据功能中有一个反向 link 特性,反向 link 特性主要用于远端数据库访问本地数据库的对象,对象包括表、视图和同义词等。如果需要使用反向 link 特性,则在创建 dblink 时需要提供本地数据库的用户名、租户名、密码、ip 地址、端口号等信息。

oracle 模式下创建 oceanbase 数据库 oracle 租户到其他 oceanbase 数据库 oracle 租户的 dblink sql 语法如下:

obclient>createdatabase link dblink_name connecttouser@tenant identified by 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_namedblink 的名称,长度不超过 128 个字符。
  • user:远端 oceanbase 数据库的用户名。
  • tenant:远端 oceanbase 数据库的租户名。
  • password:远端 oceanbase 数据库用户名的登录密码。密码中如果有 @#! 等除数字、字母以外的其他特殊字符时,需要使用双引号将密码括起来避免报语法错误。
  • ob:可选,表示指定访问的远端数据库的类型为 oceanbase

您也可以不指定该参数,默认访问的远端数据库类型即为 oceanbase

  • ip:指定远端 oceanbase 数据库的 ip 地址。ip 地址可以指定为集群的 obproxy ip 地址,或者也可以指定为集群中某个 observer 节点的 ip 地址。

ip 地址为指定 observer 节点的 ip 地址时,要求本地数据库与指定 observer 节点之间的网络是可以互通的。

  • port:指定远端 oceanbase 数据库的端口号。端口号可以指定为集群的 proxy 的端口号(默认为 2883),或者也可以指定为集群中某个 observer 节点的 sql 端口号(默认为 2881)。

当端口号为指定 observer 节点的 sql 端口号时,要求本地数据库与指定 observer 服务器之间的网络是可以互通的。

  • cluster_name远端 oceanbase 数据库对应的集群的名称。仅当 ip 和端口号为集群的 proxy ip 和端口号,且 proxy 是由 configurl 方式部署时,才需要指定集群名称。由于集群名称对大小写敏感,集群名称需要使用双引号括起来。

说明

在部署集群的 proxy(例如 odp时,有以下两种部署方式:

o   configurl 部署方式:表示在启动 obproxy 时,通过在命令中指定 obproxy_config_server_url 参数项来查询获取 oceanbase 集群的 rootserver 信息的方式。

o   rslist 部署方式:表示在启动 obproxy 时,通过在命令中指定 -r 参数来指定 oceanbase 集群的 rootserver 信息的方式。

  • [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>createdatabase link ob_dblink connectto ob_user@oracle identified by****** ob host 'xx.xx.xx.xx:2881';

·        query ok,1row affected

  • 创建连接到远端 oceanbase dblink,且 ip 地址和端口号为集群的 proxy ip 地址和端口号,同时 proxy configurl 方式部署

·        obclient>createdatabase link ob_dblink_proxy connectto ob_user@oracle identified by****** ob host 'xx.xx.xx.xx:2883' cluster "ob410";

·        query ok,1row affected

注意

在填写集群名称时,需要加双引号,防止集群名称的字母被升格为大写字母。

  • 创建连接到远端 oceanbase 数据库带有反向 link 特性的 dblink,名称为 ob_dblink_reverse_link

·        obclient>createdatabase link ob_dblink_reverse_link connectto 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,1row affected

个人总结

个人在创建ob oracle 到ob oracle 的db link 时,集群参数没有使用双引号,导致集群名称大写,出现如下错误

obclient [alvin]>  select * from test@orcl_dblink;

ora-00600: internal error code, arguments: -5976, dblink remote ora error code: -4669

总结:oceanbase 数据库到 oracle 数据库的 dblink 暂不支持反向 link 特性。

如果要访问远端的 oracle 数据库,您可以创建 oceanbase 数据库的 oracle 租户到 oracle 数据库的 dblink

创建 dblink 需要指定 dblink 名称并且提供远端数据库的用户名、租户名、密码、ip 地址、端口号以及访问类型等信息。dblink 写数据功能中有一个反向 link 特性,反向 link 特性主要用于远端数据库访问本地数据库的对象,对象包括表、视图和同义词等。oceanbase 数据库到 oracle 数据库的 dblink 暂不支持反向 link 特性。

创建 oceanbase 数据库到 oracle 数据库的 dblink sql 语法如下:

obclient>createdatabase link dblink_name connecttouser@oracle identified by password oci host 'ip:port/oracle_service_name';

语句使用说明:

  • dblink_namedblink 的名称,长度不超过 128 个字符。
  • user:远端 oracle 数据库的用户名。
  • oracle:连接 oracle 数据库时,该值始终为 oracle
  • password:远端 oracle 数据库用户的登录密码。密码中如果有 @#! 等除数字、字母以外的其他特殊字符时,需要使用双引号将密码括起来避免报语法出错。
  • oci:表示指定访问的远端数据库的类型为 oracle。如果不指定该参数,则默认访问的远端数据库类型为 oceanbase
  • ip:指定远端 oracle 数据库实例的 ip 地址。
  • 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

个人总结:如果ob oracle 租户通过dblink 访问oracle数据库,还需要ob server 安装oracle oci 库! 不同的操作系统oci 库是不同的,可以参考如下链接进行安装测试oceanbase 数据库 oracle 模式创建到 oracle 的 dblink-oceanbase知识库!

1.      创建dblink 参照上文

2.      删除dblink

#drop database link dblink_name;

3.      查看已创建的 dblink信息

不同的版本,查看dblink 视图而不同,视图都是位于sys用户下

oceanbase3.2.3 的视图 select * from sys.all_virtual_dblink_agent;

oceanbase4.2 dblink 创建成功后,可以通过 dba_db_linksall_db_linksuser_db_links 等视图查看已创建的 dblink。

select * from sys.user_db_links;


点赞5
收藏

声明

本网站下的“博客”等板块为技术爱好者提供分享、交流的平台。发布者发布的任何内容、信息等,并不反映或代表本网站的观点、立场或政策。本网站不对其任何内容和信息的错误以及由此产生的损失或损坏承担任何责任。

尊重知识产权是本网站的基本原则之一,如您在使用本网站过程中发现本网站中存在侵犯您或其他第三人合法知识产权的情况,请您即可将侵权材料及初步证据提交至下述邮箱:obcompliance@oceanbase.com 。本网站将在收到材料后尽快进行审核及处理。

g

已发布 1 篇博文

网站地图