簡介:外部連結對象(LINK)是 DM 中的一種特殊的資料庫實體對象,它記錄了遠端資料庫的連接配接和路徑資訊,用于建立與遠端資料的聯系。通過多台資料庫主庫間的互相通訊,使用者可以透明地操作遠端資料庫的資料,使應用程式看起來隻有一個大型資料庫。使用者遠端資料庫中的資料請求,都被自動轉換為網絡請求,并在相應結點上實作相應的操作。使用者可以建立一個資料庫連結,以說明一個對象在遠端資料庫中的通路路徑。這個連結可以是公用的(資料庫中所有使用者使用),也可以是私有的(隻能被某個使用者使用)。
使用者可以通過外部連結對遠端資料庫的表進行查詢和增删改操作,以及本地調用遠端的存儲過程。
下面章節主要針對三個部分進行操作的配置和注意事項
達夢8-達夢8的dblink通路
方式一:開啟DMAL,重新開機資料庫
1.兩套資料庫配置DMMAL參數檔案
源端:192.168.1.225(DMSERVER01)
遠端:192.168.1.223(DMSERVER02)
cat > dmmal.ini
[MAL_INST1]
MAL_INST_NAME=DMSERVER01
MAL_HOST=192.168.1.225
MAL_PORT=62141
MAL_INST_PORT=5236
MAL_INST_HOST=192.168.1.225
[MAL_INST2]
MAL_INST_NAME=DMSERVER02
MAL_HOST=192.168.1.223
MAL_PORT=62142
MAL_INST_PORT=5236
MAL_INST_HOST=192.168.1.223
EOF
2.設定dm.ini檔案中MAL_INI參數值為1,重新開機兩套資料庫生效。
3.使用disql工具登入本地資料庫建立dblink
create public link LINK_DM01 connect 'DAMENG' with DM identified by dm12345678 using '192.168.1.223/5236';
或
create public link LINK_DM02 connect 'DAMENG' with SYSDBA identified by SYSDBA using 'DMSERVER02';
方式二:無需開啟MAL重新開機資料庫(通過dpi方式)
create or replace public link LINK_DPI connect 'DPI' with SYSDBA identified by SYSDBA using '192.168.1.223:5236';
達夢8-Oracle的dblink通路
1.在達夢使用者dmdba下安裝Oracle用戶端,并配置環境變量如下(紅色字型需要重點關注)
vi .bash_profile
export ORACLE_BASE=/home/dmdba/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
export DM_HOME="/home/dmdba/dmdbms"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin:$ORACLE_HOME/bin"
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin:$ORACLE_HOME/bin
stty erase ^H
2.配置tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.244)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
3.測試連通性:tnsping orcl

結果顯示OK通過
4.重新開機達夢資料庫(不重新開機lib的檔案不生效)
5.disql登入達夢資料庫disql,建立dblink
create public link LINK_DM01 connect 'ORACLE' with ECLOUD identified by 123456 using '192.168.1.244/ORCL';
Oracle到達夢8的dblink通路
ODBC下載下傳位址http://www.unixodbc.org/
環境:
達夢8資料庫192.168.1.223
Oracle11.2.0.4.0資料庫192.168.1.245
作業系統版本:redhat 6.8
以下内容均在oracle操作
1.安裝unixODBC(root使用者)
tar -xvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0/
./configure --prefix=/usr/local/unixODBC-2.3.0 --includedir=/usr/include --libdir=/usr/lib64 --bindir=/usr/bin --sysconfdir=/etc
make
make install
odbcinst -j
配置odbc.ini參數檔案
vi /etc/odbc.ini
[dm8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 192.168.1.223 #達夢資料庫位址
UID = SYSDBA #資料庫通路使用者
PWD = SYSDBA #資料庫密碼
TCP_PORT = 5236 #資料庫端口
配置odbcinst.ini參數檔案
vi /etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DIRVER FOR DM8
DRIVER = $DM_HOME/bin/libdodbc.so #填寫實際全路徑
注意:
(1)在oracle伺服器如果僅需要按照達夢的用戶端和驅動即可。
(2)達夢的libdodbc.so檔案,oracle需要去通路達夢的lib庫檔案,Oracle自己的Lib庫檔案,以及ODBC的lib庫檔案。
在oracle的/home/oracle/.bash_profile中增加達夢bin目錄的路徑以及ODBC的lib庫路徑,如下紅色标注
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib64:$DM_HOME/bin
以上配置完畢後,測試下ODBC效果:
2.建立透明網關的配置檔案,路徑$ORACLE_HOME/hs/admin,名稱已init+SID.ora命名
vi $ORACLE_HOME/hs/admin/initdm8.ora
HS_FDS_CONNECT_INFO=dm8 #配置的tns名稱
HS_FDS_TRACE_LEVEL = debug #開啟debug可以擷取輸出日志,生産環境調試後off關閉
HS_FDS_SHAREABLE_NAME=/usr/lib/libodbc.so #寫ODBC的libodbc.so庫檔案還是達夢的libdodbc.so均可不用糾結
HS_LANGUAGE="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
HS_NLS_NCHAR=UCS2
set ODBCINI=/etc/odbc.ini
3.監聽檔案配置listener.ora
vi $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(PROGRAM = dg4odbc) #無需修改Oracle的協定名稱
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = dm8) #配置的連接配接執行個體名稱
(ENV="LD_LIBRARY_PATH=$unix_ODBC/lib:$DM_HOME/bin:$ORACLE_HOME/lib")#此行可加可不加,如果系統的lib設定無問題,可以忽略,系統LIB設定無法通路ODBC的LIB庫就需要單獨添加,ODBC,ORACLE,DM三個産品的LIB庫路徑缺一不可。
)
(SID_DESC =
(GLOBAL_DBNAME = orcl1) #本地資料庫服務名稱
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.245)(PORT = 1521)) #Oracle本地執行個體的位址和端口
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
停止監聽:lsnrctl stop
啟動監聽:lsnrctl start
不能重新開機就重新加載監聽: lsnrctl reload
4.配置tnsnames.ora
vi $ORACLE_HOME/network/admin/tnsnames.ora
dm8 =
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP) (HOST=localhost) (PORT=1521)
)
(CONNECT_DATA=(SID=dm8))
(HS=OK)
)
注意:host,port均是填寫本地Oracle的,HS=OK表示異構
測試:tnsping dm8 傳回結果OK
5.disql登入Oracle資料庫建立dblink
create public database link DMLINK connect to "SYSDBA" identified by "SYSDBA" USING 'DM8';
6.查詢已建立dblink
set pages 200 lines 200
col db_link for a15
col OWNER for a20
col host for a20
col USERNAME for a20
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select * from dba_db_links;
7.測試link查詢
select * from [email protected];
線上服務平台位址:
https://eco.dameng.com