
MogDB访问Oracle数据库步骤: 1. 编译安装包 configure 加上编译选项 —enable-oracle-fdw 编译完成后,编译产物为 oracle_fdw.so,位于安装目录的 **lib/postgresql/**下。oracle_fdw相关的sql文件和control文件,位于安装目录的 **share/postgresql/extension/**下。 如果编译安装时,没有加入 -enable-oracle-fdw 选项,可以在MogDB安装完成后,再次编译oracle_fdw,然后手动将编译产物 oracle_fdw.so 放到对应的安装目录 lib/postgresql/ ,将 oracle_fdw-1.0-1.1.sql,oracle_fdw-1.1.sql,oracle_fdw.control放到对应的安装目录 **share/postgresql/extension/**即可。 2. 使用Oracle_fdw 使用oracle_fdw需要连接Oracle,Oracle server请自行安装。 加载oracle_fdw扩展:CREATE EXTENSION oracle_fdw; 创建服务器对象:CREATE SERVER 创建用户映射:CREATE USER MAPPING 创建外表:CREATE FOREIGN TABLE 外表的表结构需要与Oracle数据库中的表结构保持一致。注意Oracle server侧的表的第一个字段必须具有唯一性约束(如PRIMARY KEY、UNIQUE等)。 对外表做正常的操作,如 INSERT 、 UPDATE 、 DELETE 、 SELECT 、 EXPLAIN 、 ANALYZE 、 COPY 等。 删除外表:DROP FOREIGN TABLE 删除用户映射:DROP USER MAPPING 删除服务器对象:DROP SERVER 删除扩展:DROP EXTENSION oracle_fdw; — 创建扩展(用户必须有sysadmin权限) $ gsql -p6432 -Upostgres postgres postgres=# create extension oracle_fdw with schema public; CREATE EXTENSION --postgres用户(有sysadmin管理权限)赋予普通用户mogdb使用oracle_fdw权限 postgres=> grant USAGE on FOREIGN data wrapper oracle_fdw to mogdb; GRANT 普通用户mogdb操作创建server postgres=> create server server_oracle foreign data wrapper oracle_fdw options(dbserver '172.17.0.2:1521/lee'); CREATE SERVER 普通用户mogdb操作创建用户映射 postgres=> create user mapping for mogdb server server_oracle options(user 'system',password 'admin'); CREATE USER MAPPING 普通用户mogdb创建外部表 postgres=> create foreign table f_oracle_t2( id int )server server_oracle OPTIONS ( schema 'SYSTEM', "table" 'T2' ); CREATE FOREIGN TABLE 通过外部表查询oracle数据库t2表数据 postgres=> select * from f_oracle_t2; id ------ 2001 (1 row) 从opengauss端写入数据到oracle数据库t2表 postgres=> insert into f_oracle_t2 values(2002); INSERT 0 1 再次查看数据 postgres=> select * from f_oracle_t2 ; id ------ 2001 2002 (2 rows) 参考链接 https://docs.mogdb.io/zh/mogdb/v2.1/dblink <https://docs.mogdb.io/zh/mogdb/v2.1/dblink> https://www.modb.pro/db/37650 <https://www.modb.pro/db/37650> Best Regards. - 李宏达 -------------------------------------------- 云和恩墨(北京)信息技术有限公司 Yunhe Enmo(Beijing)Technology Co.,LTD 地址: 北京市朝阳区光华路9号光华路SOHO二期B座10-3 电话: 010-59007017 手机: 15501059069 邮箱: hongda.li@enmotech.com 网址: http://www.enmotech.com -------------------------------------------- 数据驱动 成就未来 --------------------------------------------