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

MogDB插件之Oracle访问

原创 多米爸比 2022-09-13
1405

Oracle客户端环境配置

方式一:安装oracle客户端相关rpm包

--安装基础包
# yum install oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm 
--安装开发包
# yum install oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm 

方式二:使用解压包

$ ll instantclient_12_2/
total 216688
-rwxrwxr-x 1 omm dbgrp     44220 Jan 26  2017 adrci
-rw-rw-r-- 1 omm dbgrp       363 Jan 26  2017 BASIC_README
-rwxrwxr-x 1 omm dbgrp     57272 Jan 26  2017 genezi
-rwxrwxr-x 1 omm dbgrp   8033199 Jan 26  2017 libclntshcore.so.12.1
-rwxrwxr-x 1 omm dbgrp  71638263 Jan 26  2017 libclntsh.so.12.1
-r-xr-xr-x 1 omm dbgrp   2981501 Jan 26  2017 libipc1.so
-r-xr-xr-x 1 omm dbgrp    539065 Jan 26  2017 libmql1.so
-r-xr-xr-x 1 omm dbgrp   6568149 Jan 26  2017 libnnz12.so
-rwxrwxr-x 1 omm dbgrp   2218687 Jan 26  2017 libocci.so.12.1
-rwxrwxr-x 1 omm dbgrp 124771800 Jan 26  2017 libociei.so
-r-xr-xr-x 1 omm dbgrp    158543 Jan 26  2017 libocijdbc12.so
-r-xr-xr-x 1 omm dbgrp    380996 Jan 26  2017 libons.so
-rwxrwxr-x 1 omm dbgrp    116563 Jan 26  2017 liboramysql12.so
-r--r--r-- 1 omm dbgrp   4036257 Jan 26  2017 ojdbc8.jar
drwxrwxr-x 5 omm dbgrp        97 Jan 26  2017 sdk
-rwxrwxr-x 1 omm dbgrp    240476 Jan 26  2017 uidrvci
-rw-rw-r-- 1 omm dbgrp     74230 Jan 26  2017 xstreams.jar

配置环境变量:方式二解压为例,配置LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GAUSSHOME/lib/postgresql/:/usr/local/lib:/usr/local/lib64:/usr/lib64:/home/omm/instantclient_12_2

LD_LIBRARY_PATH变量最后增加配置/home/omm/instantclient_12_2

Oracle访问插件准备

上传文件oracle_fdw_centos7_x86_64.tar.gz,后续会发布到MogDB的插件包里

安装插件

先解压oracle_fdw_centos7_x86_64.tar.gz,使用普通用户omm操作即可

$ tar zxvf oracle_fdw_centos7_x86_64.tar.gz 

拷贝相应的文件到MogDB安装目录

$ cp oracle_fdw/oracle_fdw--1.1.sql /opt/mogdb300/share/postgresql/extension/
$ cp oracle_fdw/oracle_fdw.control /opt/mogdb300/share/postgresql/extension/
$ cp oracle_fdw/oracle_fdw.so /opt/mogdb300/lib/postgresql/

创建扩展

需要使用具有sysadmin权限,才能创建扩展,admin用户拥有sysadmin管理权限。

$ gsql  -U admin postgres

MogDB=> create extension oracle_fdw with schema public;
CREATE EXTENSION

查看扩展版本

MogDB=> select oracle_diag();
                         oracle_diag                          
--------------------------------------------------------------
 oracle_fdw 2.2.0, PostgreSQL 9.2.4, Oracle client 12.2.0.1.0
(1 row)

普通用户使用FDW权限配置

admin用户拥有sysadmin管理权限,赋予普通用户opengauss使用oracle_fdw权限

$ gsql  -U admin postgres
MogDB=> grant USAGE on FOREIGN data wrapper oracle_fdw to mes;
GRANT

普通用户创建server

普通用户mes操作创建server

$ gsql  -U mes postgres

MogDB=> create server server_oracle foreign data wrapper oracle_fdw options(dbserver '192.168.137.227:1521/orcl');
CREATE SERVER

普通用户创建用户映射

注意:为了提升安全,需要对用户映射的密码加密存储,必须通过gs_guc generate命令生成user mapping的key。

$ gs_guc generate -S Admin@1234 -D /opt/mogdb300/bin -o usermapping

如果不执行上面的gs_guc generate命令,会出现如下的错误提示:

MogDB=> create user mapping for mes server server_oracle options(user 'SCOTT',password 'admin');
ERROR:  No key file usermapping.key.cipher
HINT:  Please create usermapping.key.cipher file with gs_guc and gs_ssh, such as :gs_ssh -c "gs_guc generate -S XXX -D $GAUSSHOME/bin -o usermapping"

执行完gs_guc generate命令,接着创建用户映射

MogDB=>  create user mapping for mes server server_oracle options(user 'SCOTT',password 'admin');
CREATE USER MAPPING

普通用户创建外部表

MogDB=> create foreign table f_oracle_t2(
id int
)server server_oracle 
OPTIONS (
    schema 'SCOTT',
    "table" 'T2'
);
CREATE FOREIGN TABLE

普通用户使用外部表

通过外部表查询oracle数据库t2表数据

MogDB=>  select * from f_oracle_t2;
 id  
-----
 100
(1 row)

写入数据到oracle数据库t2表

MogDB=>  insert into f_oracle_t2 values(200);
INSERT 0 1

再次查看数据

MogDB=>  select * from f_oracle_t2;
 id  
-----
 100
 200
(2 rows)
最后修改时间:2022-10-22 12:33:51
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论