目的介紹
現在項目開發遇到一個問題,就是需要從PostgreSQL中訪問Oracle數據庫
身為渣渣猿一臉懵逼。於是乎請教了公司的數據庫方面的大牛韓工。告訴我用oracle_fdw 可以實現,但是在實現安裝的過程中,還是各種問題,又麻煩韓工幫我看了好久。很不好意思,現在 針對這次安裝的過程進行記錄下,因為部署的時候還要用到
安裝oracle_fdw
1.下載oracle_fdw
點擊github下載。注意,你要下載和你postgresql版本項目的安裝包。我就是下載的不一樣的導致這里找了好久。
注意:我這里用的是oracle_fdw-2.0.0.這個版本,之前下了個2.1.0結果不可以
2.將文件移動到pg安裝路徑下
下載完成將zip包解壓,把【lib】文件夾的oracle_fdw.dll和【share/extension】目錄下的三個文件分別復制到PostgreSQL安裝目錄下的【lib】文件夾和【share/extension】目錄里去。
-- 創建oracle_fdw
create extension oracle_fdw;
-- 語句能查詢到oracle_fdw extension,如下圖
select * from pg_available_extensions;
3.通過oracle_fdw訪問oracle
--創建訪問oracle的連接
create server oracle foreign data wrapper oracle_fdw options(dbserver '127.0.0.1:1521/orcl');
--授予zhazha用戶訪問權限
grant usage on foreign server oracle to zhazha;
--創建到oracle的映射
create user mapping for zhazha server oracle options(user 'SCOTT',password 'tiger');
--創建需要訪問的oracle中對應表的結構
create foreign table emptest(
EMPNO NUMBER(4),
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
) server oracle options(schema 'SCOTT',table 'EMP');
--在pg中訪問oracle的表
select * from emptest;
下面粘貼我查詢出的
4.其他操作
-- 查詢已創建的到oracle的連接
SELECT * from pg_user_mappings;
-- 刪除創建的對象
drop foreign table emptest;
drop user mapping for highgo server oracle;
drop server oracle;
參考:
[1]:https://blog.csdn.net/ljinxin/article/details/77772587
[2]:https://blog.csdn.net/pg_hgdb/article/details/81700898