Oracle配置dblink訪問(wèn)PostgreSQL的操作方法
Oracle dblink的底層是通過(guò)ODBC連接PostgreSQL執(zhí)行SQL的,需安裝unixODBC和PostgreSQL ODBC驅(qū)動(dòng)(它們的配置文件是:odbcinst.ini和odbc.ini),還需配置Oracle網(wǎng)絡(luò)使用這個(gè)驅(qū)動(dòng)。以下操作都是在Oracle服務(wù)器上進(jìn)行:
以root用戶安裝unixODBC:
yum install unixODBC unixODBC-devel.x86_64
unixODBC相當(dāng)于Linux中管理所有數(shù)據(jù)庫(kù)ODBC驅(qū)動(dòng)的管理器。
以root用戶安裝PostgreSQL ODBC驅(qū)動(dòng)
編譯安裝,以root執(zhí)行:
yum install libpq5-devel.x86_64 wget https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-12.02.0000.tar.gz tar xf psqlodbc-12.02.0000.tar.gz cd psqlodbc-12.02.0000 ./configure make make install
默認(rèn)安裝到/user/local/lib
配置odbcinst.ini和odbc.ini,以root用戶執(zhí)行:
vim /etc/odbcinst.ini(不區(qū)分大小寫(xiě))
/usr/local/lib/psqlodbcw.so 是PostgreSQL ODBC驅(qū)動(dòng)的庫(kù)。
/usr/lib64/libodbcpsqlS.so 是unixODBC的庫(kù)。
vim /etc/odbc.ini
這里Driver應(yīng)與odbcinst.ini中的[PostgreSQL]對(duì)應(yīng),可以取任何名字,但兩者需要相同。其它參數(shù)視具體PostgreSQL服務(wù)器而定。[PG]是一個(gè)連接PostgreSQL的配置名稱(chēng),其它應(yīng)用程序(如Oracle)就是引用這個(gè)名稱(chēng)訪問(wèn)PostgreSQL。
測(cè)試一下這個(gè)ODBC連接能否工作:
配置Oracle網(wǎng)絡(luò),以oracle用戶執(zhí)行,涉及3個(gè)Oracle配置文件的修改:
$ORACLEHOME/network/admin/listener.ora $ORACLEHOME/hs/admin/init<SID_NAME>.ora $ORACLEHOME/network/admin/tnsnames.ora
1)在listener.ora中,增加一項(xiàng)配置(紅圈部分),它代表PostgreSQL提供的數(shù)據(jù)庫(kù)服務(wù),Oracle將PostgreSQL也看成一個(gè)Oracle實(shí)例,SID_NAME = PGINSTANCE是給它定義一個(gè)實(shí)例名,這個(gè)名稱(chēng)任意,但是這個(gè)名稱(chēng)決定了第二個(gè)配置文件$ORACLEHOME/hs/admin/init<SID_NAME>.ora的文件名,例如initPGINSTANCE.ora。
2)$ORACLEHOME/hs/admin/init<SID_NAME>.ora
實(shí)例PGINSTANCE連接PostgreSQL數(shù)據(jù)庫(kù)時(shí),Oracle會(huì)到$ORACLEHOME/hs/admin/下找名為initPGINSTANCE.ora的配置文件,里面是關(guān)于ODBC連接的信息,Oracle使用這些信息連接PostgreSQL,例如,在我的環(huán)境中,這個(gè)文件內(nèi)容如下:
HS_FDS_CONNECT_INFO = PG 這個(gè)參數(shù)指向odbc.ini文件中的ODBC連接名稱(chēng)[PG],參考前面。HS_FDS_SHAREABLE_NAME =/usr/local/lib/psqlodbcw.so 這個(gè)參數(shù)設(shè)置PostgreSQL ODBC驅(qū)動(dòng)的路徑,與odbcinst.ini中Driver64相同。
如果PostgreSQL的字符編碼是UTF8,那么下面兩個(gè)參數(shù)應(yīng)該這樣設(shè)置:
HS_NLS_NCHAR=UCS2 HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
3)在tnsnames.ora中,增加一項(xiàng)(紅圈):
pglink是客戶端到PostgreSQL實(shí)例的連接配置,只要注意一點(diǎn):“SID = PGINSTANCE”中,SID應(yīng)設(shè)置為listener.ora中PostgreSQL的實(shí)例名,例如這里就是PGINSTANCE。pglink這個(gè)名稱(chēng),將在創(chuàng)建dblink時(shí)使用。
創(chuàng)建dblink
在sqlplus或其它終端執(zhí)行
create database link dl_pgsql connect to "postgres" identified by "post123" using 'pglink';
其中'pglink'是tnsnames.ora文件里定義的,這里把Oracle數(shù)據(jù)庫(kù)作為客戶端,去連接pglink所指的實(shí)例。
"postgres" identified by "post123" 是指PostgreSQL中的用戶。
這各名稱(chēng)為dl_pgsql的dblink所連接的PostgreSQL數(shù)據(jù)庫(kù)名由odbc.ini的Database參數(shù)指定。postgres用戶應(yīng)該對(duì)Database所指的數(shù)據(jù)庫(kù),有足夠訪問(wèn)權(quán)限。
通過(guò)dblink訪問(wèn)PostgreSQL
假設(shè)emp表在名為postgres的數(shù)據(jù)庫(kù)中的名為public的schema下,Oracle完成上面的配置后,可以這樣訪問(wèn):
select * from "public"."emp"@dl_pgsql;
創(chuàng)建和使用別名
CREATE SYNONYM emp_table FOR "public"."emp"@dl_pgsql; select * from emp_table;
到此這篇關(guān)于Oracle配置dblink訪問(wèn)PostgreSQL的文章就介紹到這了,更多相關(guān)Oracle dblink訪問(wèn)PostgreSQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
安裝Oracle時(shí)出現(xiàn)環(huán)境變量Path的值大于1023的解決辦法
這篇文章主要介紹了安裝Oracle時(shí)出現(xiàn)環(huán)境變量Path的值大于1023的解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-12-12Oracle數(shù)據(jù)庫(kù)的備份與恢復(fù)
Oracle數(shù)據(jù)庫(kù)的備份與恢復(fù)...2007-03-03oracle創(chuàng)建刪除用戶示例分享(oracle刪除用戶命令及授權(quán))
這篇文章主要介紹了oracle創(chuàng)建刪除用戶示例還有oracle刪除用戶命令及授權(quán)的使用,需要的朋友可以參考下2014-03-03ORA-06512數(shù)字或值錯(cuò)誤字符串緩沖區(qū)太小異常詳解
最近工作中遇到了Oracle: ORA-06512:字符串緩沖區(qū)太小,報(bào)錯(cuò)的意思很簡(jiǎn)單,字符串緩沖區(qū)小了,這篇文章主要給大家介紹了關(guān)于ORA-06512數(shù)字或值錯(cuò)誤字符串緩沖區(qū)太小異常的相關(guān)資料,需要的朋友可以參考下2023-01-01Oracle 當(dāng)前用戶下所有表的記錄總數(shù)
Oracle 數(shù)據(jù)庫(kù)下 查詢(xún)當(dāng)前用戶下所有表的記錄總數(shù)2009-07-07安裝Oracle完整客戶端后沒(méi)有訪問(wèn)接口OraOLEDB.Oracle解決辦法
這篇文章主要給大家介紹了關(guān)于安裝Oracle完整客戶端后沒(méi)有訪問(wèn)接口OraOLEDB.Oracle的解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考解決價(jià)值,需要的朋友可以參考下2024-01-01