文档中心MogDBMogDB StackUqbar
v3.0

文档:v3.0

支持的版本:

其他版本:

oracle_fdw

oracle_fdw(foreign data wrapper for oracle)用于Oracle的外部数据包装器,是一款开源插件。MogDB基于开源的oracle_fdw Release 2.2.0版本进行开发适配。

MogDB 3.0.5版本提供oracle_fdw插件,下面依次介绍如何安装和使用oracle_fdw。


安装Oracle客户端

  1. oracle_fdw插件依赖Oracle客户端的so文件,客户端包需要使用官方地址下载,然后解压。

    x86: https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

    ARM: https://www.oracle.com/database/technologies/instant-client/linux-arm-aarch64-downloads.html

    示例:

    [root@mogdb-kernel-002 ~]# cd /opt
    [root@mogdb-kernel-002 opt]# unzip instantclient-basic-linux.x64-21.11.0.0.0dbru.zip
  2. 使用数据库安装用户omm修改配置文件,添加ORACLE_HOME的路径,并在PATH和LD_LIBRARY_PATH中添加$ORACLE_HOME。

    示例:

    [root@mogdb-kernel-002 opt]# su - omm
    [omm@mogdb-kernel-002 ~]$ vim /home/omm/.ptk_mogdb_env
    export ORACLE_HOME=/opt/instantclient_21_11
    export PATH=$GPHOME/ptk_tool/bin:$GAUSSHOME/bin:$GPHOME/script:$ORACLE_HOME:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME:$GAUSSHOME/lib:$GPHOME/lib:$GPHOME/script/gspylib/clib:$LD_LIBRARY_PATH
    [omm@mogdb-kernel-002 ~]$ source ~/.ptk_mogdb_env
  3. 重启数据库

    [root@mogdb-kernel-002 ~]# ptk cluster -n <cluster_name> restart

安装oracle_fdw

  1. 访问MogDB下载页面,下载所需版本的插件包,例如Plugins-3.0.5-openEuler-x86_64.tar.gz。

  2. 解压插件包,例如:

    tar -zxvf Plugins-3.0.5-openEuler-x86_64.tar.gz
  3. 使用数据库初始用户omm进入plugins/oracle_fdw目录下,将oracle_fdw--1.1.sql、oracle_fdw.control、oracle_fdw.so文件分别拷贝到数据库安装目录下的share/postgresql/extension/oracle_fdw--1.1.sql、share/postgresql/extension/oracle_fdw.control、lib/postgresql/oracle_fdw.so

    cd plugins/oracle_fdw
    cp oracle_fdw.so $GAUSSHOME/lib/postgresql
    cp oracle_fdw--1.1.sql $GAUSSHOME/share/postgresql/extension
    cp oracle_fdw.control $GAUSSHOME/share/postgresql/extension
  4. 连接到数据库,执行CREATE EXTENSION oracle_fdw;插件即可使用。

    MogDB=# CREATE EXTENSION oracle_fdw;
    CREATE EXTENSION

使用oracle_fdw


常见问题

  • 在MogDB上建立外表时,不会在Oracle数据库中同步建表,需要自行在Oracle数据库中建表。
  • 执行CREATE USER MAPPING时使用的Oracle用户需要有远程连接Oracle数据库及对表相关操作的权限。使用外表前,可以在MogDB server所在的机器上,使用Oracle的客户端,使用对应的用户名密码确认能否成功连接Oracle并进行操作。
  • 执行CREATE EXTENSION oracle_fdw;时,出现libclntsh.so: cannot open shared object file: No such file or directory。原因是Oracle的开发库libclntsh.so不在系统的相关路径中,可以先找到libclntsh.so的具体路径,然后将该so文件所在的文件夹加到/etc/ld.so.conf中。比如libclntsh.so的路径为/usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1,那么就将该文件的路径/usr/lib/oracle/11.2/client64/lib/加到/etc/ld.so.conf文件末尾。然后执行ldconfig使修改生效即可。注意此操作需要root权限。

注意事项

  • 两个Oracle外表间的SELECT JOIN不支持下推到Oracle server执行,会被分成两条SQL语句传递到Oracle执行,然后在MogDB处汇总处理结果。
  • 不支持IMPORT FOREIGN SCHEMA语法。
  • 不支持对外表进行CREATE TRIGGER操作。
Copyright © 2011-2024 www.enmotech.com All rights reserved.