達夢7同構(DM-DM)DBLINK
外部連結物件(LINK)是DM中的一種特殊的資料庫實體物件,它記錄了遠端資料庫的連線和路徑資訊,用於建立與遠端資料的聯絡。透過多臺資料庫主庫間的相互通訊,使用者可以透明地操作遠端資料庫的資料,使應用程式看起來只有一個大型資料庫。使用者遠端資料庫中的資料請求,都被自動轉換為網路請求,並在相應結點上實現相應的操作。使用者可以建立一個資料庫連結,以說明一個物件在遠端資料庫中的訪問路徑。這個連結可以是公用的(資料庫中所有使用者使用),也可以是私有的(只能被某個使用者使用)。
使用者可以透過外部連結對遠端資料庫的表進行查詢和增刪改操作,以及本地呼叫遠端的儲存過程。
語法格式
CREATE [OR REPLACE] [PUBLIC] LINK < 外部連結名> CONNECT ['< 連線庫型別>'] WITH < 登入名> IDENTIFIED BY < 登入口令> USING '< 連線串> ';
< 連線庫型別> ::= DAMENG | ORACLE | ODBC
< 連線串> ::=< 外部連結串>
< 外部連結串>::=< DAMENG外部連結串>| < ORACLE外部連結串> |
< DAMENG外部連結串>::=< 例項IP地址>/< 例項埠號> |
/ |
< ORACLE外部連結串>::= ||/< 服務名>
::=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=< 埠號>)))(CONNECT_DATA=(SERVICE_NAME=< 服務名>)))
::=
引數
1. OR REPLACE 使用OR REPLACE選項的好處是,如果系統中已經有同名的資料庫連結名,伺服器會自動用新的程式碼覆蓋原來的程式碼。如果不使用OR REPLACE選項,當建立的新外部連結名稱與系統中已有的外部連結名稱同名時,伺服器會報錯。
2. PUBLIC 此連結物件是否能夠被建立者之外的使用者引用;
3. < 外部連結名> 資料庫連結的名稱;
4. < 連線庫型別> 目前只支援DAMENG、ORACLE或ODBC,預設為DAMENG;
5. < 登入名> 登入使用者名稱稱;
6. < 登入口令> 登入使用者口令;
7. 支援三種格式,分別對應目標節點在dmmal.ini中的配置項,具體如下:
l mal_inst_host/mal_inst_port
l mal_host/mal_port
l mal_inst_name
8. 可以使用配置的網路服務名tsn_name(網路服務名需要配置),或者連線描述符description(連線描述符是網路連線目標特殊格式的描述,它包括網路協議、主庫IP地址、埠號和服務名),或者/< 服務名>;
9. DSN需要使用者手動配置。
語句功能
建立一個外部連結。
使用說明
1.要建立到DM資料庫的外部連結,必須首先配置dmmal.ini,才能使用LINK。DM的連線串有兩種格式:
INSTANCE_NAME:直接使用遠端庫的例項名(該例項名必須配置到dmmal.ini中);
/< 埠號>:其中埠號為DM外部連結伺服器的dmmal.ini配置中的MAL_PORT埠號。
dmmal.ini的詳細配置可參考《DM7系統管理員手冊》的2.1節,需要注意同時將dm.ini中的MAL_INI引數置為1以開啟MAL系統。
2. 要建立到ORACLE的外部連結,可以使用配置的網路服務名;如果沒有配置tsn_name,可以使用連線描述符或者/< 服務名>作為連線串。
3.透過LINK對遠端伺服器所作的修改,由使用者在本地伺服器透過commit或rollback進行提交或回滾。
4.只支援普通使用者,不支援SSL和Kerberos認證。
5.DM7不支援連線自身例項的LINK。
6.支援在CREATE SCHEMA中CREATE LINK,但是不支援CREATE PUBLIC LINK。
7.只有DBA和具有CREATE LINK許可權的使用者可以建立外部連結。
舉例說明 例1 使用DM資料庫,建立一個連線到IP地址為10.10.10.186,MAL_PORT埠號為5336的MAL站點的外部連結,登入到此站點使用的使用者名稱為sysdba,密碼為dameng123,例項名為:dmks。
先對遠端DM資料庫設定dmmai.in檔案,並設定MAL_INI引數為1,然後重啟dmks資料庫
[dmdba@dmks dmks]$ vi dmmal.ini MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 5 [MAL_dmks] MAL_INST_NAME = dmks MAL_HOST = 10.10.10.187 MAL_PORT = 5337 MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.187 [MAL_jydm] MAL_INST_NAME = jydm MAL_HOST = 10.10.10.180 MAL_PORT = 5336 MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.180 SQL> select sf_get_para_value(1,'MAL_INI'); LINEID SF_GET_PARA_VALUE(1,'MAL_INI') ---------- ------------------------------ 1 0 used time: 7.852(ms). Execute id is 1609. SQL> select * from v$dm_ini where para_name='MAL_INI'; LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE ---------- --------- ---------- --------- --------- ------- ---------- ---------- ----------- --------- 1 MAL_INI 0 0 1 N 0 0 dmmal.ini IN FILE used time: 8.395(ms). Execute id is 1610. SQL> alter system set 'MAL_INI'=1 spfile; DMSQL executed successfully used time: 8.209(ms). Execute id is 1611. SQL> select sf_get_para_value(1,'MAL_INI'); LINEID SF_GET_PARA_VALUE(1,'MAL_INI') ---------- ------------------------------ 1 1 used time: 5.533(ms). Execute id is 1612. SQL> select * from v$dm_ini where para_name='MAL_INI'; LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE ---------- --------- ---------- --------- --------- ------- ---------- ---------- ----------- --------- 1 MAL_INI 0 0 1 N 0 1 dmmal.ini IN FILE used time: 7.583(ms). Execute id is 1613. [root@dmks ~]# netstat -nltp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 24268/Xvnc tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1738/rpcbind tcp 0 0 0.0.0.0:39792 0.0.0.0:* LISTEN 1964/rpc.statd tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 24268/Xvnc tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2191/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2027/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2290/master tcp 0 0 :::38955 :::* LISTEN 1964/rpc.statd tcp 0 0 :::111 :::* LISTEN 1738/rpcbind tcp 0 0 :::6001 :::* LISTEN 24268/Xvnc tcp 0 0 :::5236 :::* LISTEN 21657/dmserver tcp 0 0 :::22 :::* LISTEN 2191/sshd tcp 0 0 ::1:631 :::* LISTEN 2027/cupsd tcp 0 0 ::1:25 :::* LISTEN 2290/master [root@dmks ~]# service DmServicedmks restart Stopping DmServicedmks: [ OK ] Starting DmServicedmks: [ OK ] [root@dmks ~]# netstat -nltp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 24268/Xvnc tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1738/rpcbind tcp 0 0 0.0.0.0:39792 0.0.0.0:* LISTEN 1964/rpc.statd tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 24268/Xvnc tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2191/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2027/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2290/master tcp 0 0 :::38955 :::* LISTEN 1964/rpc.statd tcp 0 0 :::111 :::* LISTEN 1738/rpcbind tcp 0 0 :::6001 :::* LISTEN 24268/Xvnc tcp 0 0 :::5236 :::* LISTEN 840/dmserver tcp 0 0 :::22 :::* LISTEN 2191/sshd tcp 0 0 ::1:631 :::* LISTEN 2027/cupsd tcp 0 0 :::5337 :::* LISTEN 840/dmserver tcp 0 0 ::1:25 :::* LISTEN 2290/master
從上面的輸出可以看到埠5336實戰啟用了
SQL> select * from v$dm_ini where para_name='MAL_INI'; LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE ---------- --------- ---------- --------- --------- ------- ---------- ---------- ----------- --------- 1 MAL_INI 1 0 1 N 1 1 dmmal.ini IN FILE used time: 12.648(ms). Execute id is 3. SQL> select sf_get_para_value(2,'MAL_INI'); LINEID SF_GET_PARA_VALUE(2,'MAL_INI') ---------- ------------------------------ 1 1 used time: 1.191(ms). Execute id is 4.
對本地DM資料庫配置dmmal.ini,注意這裡還要新增遠端資料庫的資訊,否則在建立外部link時會提示例項不存在
[dmdba@shard1 jydm]$ cat dmmal.ini MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 5 [MAL_dmks] MAL_INST_NAME = dmks MAL_HOST = 10.10.10.187 MAL_PORT = 5337 MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.187 [MAL_jydm] MAL_INST_NAME = jydm MAL_HOST = 10.10.10.180 MAL_PORT = 5336 MAL_INST_PORT = 5236 MAL_INST_HOST = 10.10.10.180 SQL> select * from v$dm_ini where para_name='MAL_INI'; LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE ---------- --------- ---------- --------- --------- ------- ---------- ---------- ----------- --------- 1 MAL_INI 1 0 1 N 1 1 dmmal.ini IN FILE used time: 8.629(ms). Execute id is 6. SQL> select sf_get_para_value(2,'MAL_INI'); LINEID SF_GET_PARA_VALUE(2,'MAL_INI') ---------- ------------------------------ 1 1 used time: 1.302(ms). Execute id is 8. SQL>
重啟本地資料庫
[root@shard1 tmp]# systemctl start DmServicejydm.service SQL> create public link link1 connect 'dameng' with sysdba identified by "dameng123" using '10.10.10.180/5336'; executed successfully used time: 19.417(ms). Execute id is 9.
或者
SQL> create or replace public link link2 connect 'dameng' with sysdba identified by "dameng123" using 'jydm'; executed successfully used time: 35.346(ms). Execute id is 12.
在遠端資料庫中建立jy.t1表
SQL> insert into jy.t1 values(1,'JY'); affect rows 1 used time: 1.019(ms). Execute id is 2809. SQL> commit; executed successfully used time: 13.274(ms). Execute id is 2810.
在本地資料庫中透過外部link來查詢遠端資料庫的sysdba.t1表
SQL> select * from jy.t1@link1; LINEID C1 C2 ---------- ----------- -- 1 1 JY used time: 5.955(ms). Execute id is 134. SQL> select * from jy.t1@link2; LINEID C1 C2 ---------- ----------- -- 1 1 JY used time: 2.538(ms). Execute id is 135.
在本地資料庫中透過外部link向遠端資料庫的jy.t1表插入資料
SQL> insert into jy.t1@link1 values(2,'HY'); affect rows 1 used time: 2.611(ms). Execute id is 136. SQL> commit; executed successfully used time: 13.105(ms). Execute id is 137.
在遠端資料庫中使用sysdba來查詢t1表的記錄來驗證記錄是否被插入
SQL> select * from jy.t1; LINEID C1 C2 ---------- ----------- -- 1 1 JY 2 2 HY used time: 0.906(ms). Execute id is 2819.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2687105/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 配置達夢資料庫同構DBLINK資料庫
- 達夢7異構(DM-Oracle) DBLINKOracle
- 配置ORACLE資料庫到達夢資料庫的異構DBLINKOracle資料庫
- 達夢DBlink叢集之間通訊搭建
- Redhat 7 下安裝達夢7Redhat
- 達夢7在Linux平臺安裝Linux
- 達夢7資料庫初始化資料庫
- 達夢資料庫索引結構詳解資料庫索引
- 達夢資料庫基礎知識(三)達夢資料庫記憶體結構資料庫記憶體
- 達夢DIsqlSQL
- Oracle Linux 7.1中安裝達夢資料庫DM7OracleLinux資料庫
- 達夢安裝
- 【達夢】Docker安裝達夢資料庫 dm8Docker資料庫
- 建立dblink
- 達夢DM7 資料庫之資料守護DG搭建資料庫
- 達夢遷移工具之MySQL資料庫遷移到達夢MySql資料庫
- DBeave如何連線達夢資料庫,設定達夢驅動,真酷資料庫
- 達夢DMDSC叢集搭建
- 達夢dsc+dw部署
- 搭建達夢DSC叢集
- 夢境結構
- react同構實踐——實現自己的同構模板React
- PostgreSQL DBA(58) - DBLinkSQL
- 不能刪除DBLINK
- 【7】同態 不變子群
- 達夢資料庫安裝資料庫
- 初識達夢資料庫資料庫
- 達夢資料庫開發資料庫
- 達夢SQL優化方法statSQL優化
- 達夢資料庫學習資料庫
- 樹的同構
- 深度自同構
- 達夢資料庫基礎知識(二)資料庫邏輯結構資料庫
- BZOJ4337: BJOI2015 樹的同構(hash 樹同構)
- dblink建立語句模板
- 學習達夢hint注入筆記筆記
- 達夢資料庫學習心得資料庫
- 達夢資料庫日常運維資料庫運維