暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

华为GaussDB A 配置访问远端Oracle

墨天轮 2019-10-12
1130

配置访问远端Oracle

操作场景

GaussDB 200需要访问远端Oracle数据库数据时或者需要数据互操作时,可以通过配置"对接Oracle"使用该功能。

约束限制

  • 仅支持连接Oracle11.2.0.1至Oracle12.2.0.1。
  • 要求Oracle-ODBC驱动的版本为12.2.0.1.0。
  • unixODBC的版本要求为2.3.6。
  • 支持最多配置20组远端Oracle配置。
  • 配置所需要的Oracle ODBC请从Oracle官网下载。如: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html。

    以配置访问Oracle12.2.0.1为例,需要下载:“oracle-instantclient-basic-linux.x64-12.2.0.1.0.zip”“oracle-instantclient-sqlplus-linux.x64-12.2.0.1.0.zip”“oracle-instantclient-odbc-linux.x64-12.2.0.1.0.zip”。并将上述三个zip文件打包压缩为“package.zip”

    说明:

    用户需要保证“package.zip”中的内容完整以及正确。

前提条件

  • Oracle数据库和GaussDB 200集群状态正常。
  • Oracle数据库物理节点和GaussDB 200集群之间可以互相通信。

操作步骤

  • 登录FusionInsight Manager。
  • 选择“集群 > 待操作的集群名称 > 服务 > MPPDB > 对接 > 对接Oracle”,单击“创建”,填写配置组名称,单击“确定”。
  • 填写配置参数,配置参数参见表1。

    表1 GaussDB 200配置访问远端Oracle的配置项

    参数

    描述

    建议填写值

    remote_connect_oracle_driver

    oracle odbc driver名称,用户可以根据实际情况自定义名称,以oracle_开头,只允许由字母数字下划线组成,不能超过64个字符。

    注意:
    • “remote_connect_oracle_driver”值作为配置标示,保存配置后将不能修改,请用户慎重填写。
    • 不同Oracle配置组中的“remote_connect_oracle_driver”参数值不能相同。

    oracle_Driver

    remote_connect_oracle_dsn

    该组配置的DSN标识,以oracle_开头,只允许由字母数字下划线组成,不能超过64个字符。

    注意:
    • “remote_connect_oracle_dsn”值作为配置标示,保存配置后将不能修改,请用户慎重填写。
    • 不同Oracle配置组中的“remote_connect_oracle_dsn”参数值不能相同。

    oracle_DSN

    remote_connect_oracle_host

    Oracle数据库的主机IP地址。

    -

    remote_connect_oracle_port

    Oracle数据库的端口号。

    1521

    remote_connect_oracle_servicename

    Oracle数据库的监听服务名。

    -

  • 上传驱动文件“package.zip”,单击“上传并部署”,等待部署完成。
  • 单击“保存”。等待保存配置成功,单击“完成”
  • 选择更多 > 重启,执行相应操作重启服务。
  • 创建Data Source。

    • 连接数据库。
    • 创建Data Source。
      postgres=#CREATE DATA SOURCE ds_oracle TYPE 'ORACLE' OPTIONS (DSN 'oracle_DSN', USERNAME 'oracle_user', PASSWORD 'oracle_pwd', ENCODING 'UTF8');
      说明:

      其OPTIONS中DSN字段为用户填写的{remote_connect_oracle_dsn}的值。

  • 连接Oracle数据库。

    完成以上操作后,在集群正常的情况下,即可执行GaussDB 200数据库对Oracle数据库进行SQL操作。比如查询Oracle的一张表a(c1 int):

    postgres=#SELECT * FROM exec_on_extension('ds_oracle', 'select * from a;') AS (c1 int);
    说明:

    使用“exec_on_extension”之前需要创建Data Source对象。

示例

-- 创建Data Source(这里的username/password是指待连接的Oracle数据库的用户名/密码) postgres=#CREATE DATA SOURCE ds_oracle OPTIONS (dsn 'oracle_DSN', username 'user_ora', password 'pwd_ora', encoding 'utf8'); -- 建远程表、插入数据、查询数据 postgres=#SELECT * FROM exec_on_extension('ds_oracle', 'create table a (c1 int);') AS (c1 text); c1 ---- (0 rows) postgres=#SELECT * FROM exec_on_extension('ds_oracle', 'insert into a values (119);') AS (c1 text); c1 ---- (0 rows) postgres=#SELECT * FROM exec_on_extension('ds_oracle', 'insert into a select * from a;') AS (c1 text); c1 ---- (0 rows) postgres=#SELECT * FROM exec_on_extension('ds_oracle', 'select * from a;') AS (c1 int); c1 ----- 119 119 (2 rows) postgres=#SELECT * FROM exec_on_extension('ds_oracle', 'select * from a a1 inner join a a2 on a1.c1=a2.c1;') AS (c1 int, c2 int); c1 | c2 -----+----- 119 | 119 119 | 119 119 | 119 119 | 119 (4 rows) -- 查询结果入本地表 postgres=#CREATE TABLE b AS SELECT * FROM exec_on_extension('ds_oracle', 'select * from a group by c1;') AS (c1 int); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'c1' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. INSERT 0 1 postgres=#INSERT INTO b SELECT * FROM exec_on_extension('ds_oracle', 'select * from a group by c1;') AS (c1 int); INSERT 0 1 -- 查询结果与本地表关联查询 postgres=#SELECT * FROM b INNER JOIN (SELECT * FROM exec_on_extension('ds_oracle', 'select * from a;') AS (c1 int)) a ON a.c1=b.c1; c1 | c2 -----+----- 119 | 119 119 | 119 119 | 119 119 | 119 (4 rows)


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

评论