不同数据库间的数据访问--dblink
在我們實際應用過程中會經常遇到這個問題,兩個不同系統間要進行數據傳輸。
那我現在的這個項目來說吧,我這里的基礎數據是來自其他系統,這個時候我們就需要讀取其他數據庫表中的數據了。
遇到這個問題創建dblink是個很好的解決方法,具體操作如下:
1、注意關閉兩臺計算機上的Windows的防火墻,否則,會出現能ping通,但Oracle連接不通的情況。
2、全局數據庫名,SELECT * FROM GLOBAL_NAME????
??? 修改可以用以下語句來修改參數值:
?? ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;
? 當數據庫參數global_name=false時,就不要求數據庫鏈接名稱跟遠端數據庫名稱一樣,為了簡單我是按照FALSE來操作的
3、創建dblink的語法:
?? CREATE [PUBLIC] DATABASE LINK link
?? CONNECT TO username IDENTIFIED BY password
?? USING ‘connectstring’
? 我的例子:
?? --創建dblink
create database link DTBJ.US.ORACLE.COM connect to PLATFORM identified by PLATFORM using 'DTBJ';
我當時是到這樣就以為可以了,然后就用測試dblink的語句進行測試
? --測試dblink
? select * from dual@DTBJ.US.ORACLE.COM
提示:沒有監聽!
我用的是客戶端,沒有在服務器上建立連接遠程的本地網絡服務名。
修改tnasname的內容
DTBJ=
? (DESCRIPTION =
??? (ADDRESS_LIST =
????? (ADDRESS = (PROTOCOL = TCP)(HOST = ******)(PORT = 1521))
??? )
??? (CONNECT_DATA =
????? (SERVICE_NAME = DTBJ)
??? )
? )
再次執行測試語句
SQL>? select * from dual@DTBJ.US.ORACLE.COM;
D
-
X
?這樣就表示dblink創建好了,隨后為DTBJ里的表建了同義詞就可以正常操作DTBJ表里的數據了
?
查詢創建了多少dblink
select * from ALL_DB_LINKS;
OWNER?VARCHAR2(30)???
DB_LINK?VARCHAR2(128)????-- ?Name of the database link
USERNAME?VARCHAR2(30)?? --??Name of user to log on as
HOST?VARCHAR2(2000)? --?SQL*Net string for connect
CREATED?DATE???--Creation time of the database link
例:
create public database link JKDA
connect to hrext identified by ADMIN123
using 'JKDA';
?
轉載于:https://www.cnblogs.com/Memories-off/p/10435213.html
總結
以上是生活随笔為你收集整理的不同数据库间的数据访问--dblink的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3章-字符串类型操作
- 下一篇: CentOS7安装MySQL8.0图文教