天天看點

達夢8的dblink達夢8-達夢8的dblink通路達夢8-Oracle的dblink通路Oracle到達夢8的dblink通路

簡介:外部連結對象(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

達夢8的dblink達夢8-達夢8的dblink通路達夢8-Oracle的dblink通路Oracle到達夢8的dblink通路

 結果顯示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';
達夢8的dblink達夢8-達夢8的dblink通路達夢8-Oracle的dblink通路Oracle到達夢8的dblink通路

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效果:

達夢8的dblink達夢8-達夢8的dblink通路達夢8-Oracle的dblink通路Oracle到達夢8的dblink通路

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表示異構

達夢8的dblink達夢8-達夢8的dblink通路達夢8-Oracle的dblink通路Oracle到達夢8的dblink通路

測試: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;

達夢8的dblink達夢8-達夢8的dblink通路達夢8-Oracle的dblink通路Oracle到達夢8的dblink通路

7.測試link查詢

select * from [email protected];
達夢8的dblink達夢8-達夢8的dblink通路達夢8-Oracle的dblink通路Oracle到達夢8的dblink通路

線上服務平台位址:

https://eco.dameng.com