点击上方蓝字关注我们

点击上方蓝字关注我们





cd /kunlun/fdw/oracleunzip oracle_fdw-master.zip
export ORACLE_HOME=/kunlun/fdw/oracle/11.2.0/client_1export PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
ORACLE_HOME=/kunlun/fdw/oracle/11.2.0/client_1; #KUNLUN_SET_ENVLD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATHexport ORACLE_HOME; #KUNLUN_SET_ENVexport LD_LIBRARY_PATH
cd kunlun/kunlun-node-manager-1.3.1/bin/./stop_node_mgr.sh./start_node_mgr.sh
cd /kunlun/fdw/oracle/oracle_fdw-master/makemake install
psql -h 192.168.40.152 -p 47001 postgrescreate user kunlun_test with superuser password 'kunlun';create database testdb owner kunlun_test;grant all privileges on database testdb to kunlun_test;\q
psql -h 192.168.40.152 -p 47001 -U kunlun_test testdbCREATE EXTENSION oracle_fdw;

sqlplus as sysdbacreate user orauser identified by oracle;grant dba to orauser;con orauser/oraclecreate table employee ( id int primary key, name varchar2(10));insert into employee values(1,'Jack');insert into employee values(2,'Tom');commit;
CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver'//192.168.40.163:1521/testdb');
oradb:自定义一个 SERVER NAME OPTIONS: 有3个参数--dbserver、isolation_level、nchar dbserver(必需):定义连接 Oracle 数据库的连接字符串。 isolation_level(可选,默认为serializable): 在 Oracle 数据库中使用的事务隔离级别,可设置的参数值 serializable、read_committed、read_only。 nchar(可选,默认为 off): 是否开启 Oracle端的字符转换,这个参数的开启对性能有很大影响。

CREATE USER MAPPING FOR kunlun_test SERVER oradb OPTIONS (user 'orauser',password 'oracle');
kunlun_test:Klustron中已存在的用户 oradb:已创建的 SERVER NAME OPTIONS:有2个参数--user、password user(必需):Oracle用户名 password(必需):Oracle用户的密码

CREATE FOREIGN TABLE ora_emp( empno NUMERIC(4,0) OPTIONS (key 'true') NOT NULL, ename VARCHAR(10))SERVER oradb OPTIONS (schema 'ORAUSER', table 'EMPLOYEE');
外部表的表名和字段名不需要与 Oracle 的表保持一致,但是字段顺序需要与 Oracle 的表保持一致 外部表的主键需要与 Oracle 的表保持一致 OPTIONS 属性里的 schema 和 table 名称必须大写,不然Klustron端操作外部表会报 ‘ORA-00942: table or view does not exist’。 OPTIONS 属性里的 schema 和 table 必须用单引号 必须定义 oracle_fdw 可以转换的列


IMPORT FOREIGN SCHEMA "ORAUSER" FROM SERVER oradb INTO public;
create table salary (id int primary key, amount int);insert into salary values(1,10000);insert into salary values(2,5000);commit;
drop foreign table ora_emp;IMPORT FOREIGN SCHEMA "ORAUSER" FROM SERVER oradb INTO public;
这种方式不需要指定表结构,但是外部表名与Oracle表名需要一致,也就是当前Klustron的SCHEMA下不能存在同名表,否则创建失败。 Oracle SCHEMA名称通常为大写。由于Klustron在处理之前将名称转换为小写,因此您必须用双引号保护SCHEMA名称(例如"ORAUSER")。 LIMIT TO导入括号内包含的表,多个表以逗号分隔,EXCEPT导入不包含(排除)括号内的表,多个表以逗号分隔。
IMPORT FOREIGN SCHEMA "ORAUSER" limit to (SALARY) from server oradb into public;IMPORT FOREIGN SCHEMA "ORAUSER" limit to (EMPLOYEE,SALARY) from server oradb into public;


create table kl_salary (id int primary key, amount money);insert into kl_salary values (1,10000.00);insert into kl_salary values (2,8888.88);
create table empinfo (id int primary key, firstday varchar(10));insert into empinfo values(1,'2018-09-01');insert into empinfo values(1,'2010-07-15');
select ora.ename,kl.amount,ms.firstday from kl_salary kl, ora_emp ora, mssql_empinfo mswhere kl.id=ora.empno and kl.id=ms.id;



文章转载自KunlunBase 昆仑数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





