dblink概述及建立示例
dblink概述
dblink是定義一個資料庫到另一個資料庫的路徑的物件,dblink允許你查詢遠端表及執行遠端程式。在任何分散式環境裡,database都是必要的。另外要注意的是db link是單向的連線。
在建立dblink的時候,Oracle再資料字典中儲存相關的dblink的資訊,在使用dblink的時候,Oracle通過Oracle Net用使用者預先定義好的連線資訊訪問相應的遠端資料庫以完成相應的工作。
建立dblink之前需要確認的事項:
確認從local database到remote database的能夠通過監聽訪問--sqlplus aa/bb@cc 連線正常,並確認所使用的使用者在remote database上面有相應的訪問許可權
源庫上查詢:
SYS@ bys3>select * from user_sys_privs where privilege like upper('%link%');
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
[oracle@bys3 admin]$ cat tnsnames.ora
ocm =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.215)(PORT =1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ocm1)
)
)
目標庫表中資料:
BYS@ ocm1>select * from test;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
#######################################實驗
Database link created.
Elapsed: 00:00:00.03 ---語法正常且using 的網路服務名正常的話,語句完成很快,如果等待很久才能完成,很可能是網路服務名的配置有問題。
SYS@ bys3>select * from dept@ocm1; ---DEPT表不存在
select * from dept@ocm1
*
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-02063: preceding line from OCM1
SYS@ bys3>select * from test@ocm1;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
SYS@ bys3>drop public database link ocm1; --刪除PUBLIC DBLINK
Database link dropped.
另一條建立語句:資料鏈的名稱可以自己決定--不過最好弄成能標示連線的目標庫資訊
SYS@ bys3>create public database link aa connect to bys identified by bys using 'ocm';
Database link created.
Elapsed: 00:00:00.01
SYS@ bys3>select * from test@aa;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
############
Database link created.
TEST1@ bys3>select * from test@ocm2;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
TEST1@ bys3>select db_link from dba_db_links;
DB_LINK
----------------------------------------------------------------------------------------------------
AA
OCM2
TEST1@ bys3>drop database link ocm2;
Database link dropped.
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.215)(PORT =1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ocm1)
)
)';
Database link created.
Elapsed: 00:00:00.01 ---這個長命令應該在文字中寫好命令,直接複製執行。
TEST1@ bys3>select * from test@ocm4;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
TEST1@ bys3>select db_link from dba_db_links;
DB_LINK
---------------------------
AA
OCM2
OCM4
TEST1@ bys3>create database link ocm2 connect to bys identified by bys using 'ocm';
create database link ocm2 connect to bys identified by bys using 'ocm'
*
ERROR at line 1:
ORA-02011: duplicate database link name
TEST1@ bys3>select db_link from dba_db_links;
DB_LINK
----------------------------------------------------------------------------------------------------
AA
OCM2
dblink是定義一個資料庫到另一個資料庫的路徑的物件,dblink允許你查詢遠端表及執行遠端程式。在任何分散式環境裡,database都是必要的。另外要注意的是db link是單向的連線。
在建立dblink的時候,Oracle再資料字典中儲存相關的dblink的資訊,在使用dblink的時候,Oracle通過Oracle Net用使用者預先定義好的連線資訊訪問相應的遠端資料庫以完成相應的工作。
建立dblink之前需要確認的事項:
確認從local database到remote database的能夠通過監聽訪問--sqlplus aa/bb@cc 連線正常,並確認所使用的使用者在remote database上面有相應的訪問許可權
源庫上查詢:
SYS@ bys3>select * from user_sys_privs where privilege like upper('%link%');
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
[oracle@bys3 admin]$ cat tnsnames.ora
ocm =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.215)(PORT =1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ocm1)
)
)
目標庫表中資料:
BYS@ ocm1>select * from test;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
#######################################實驗
1.建立公有DBLINK的方法: ---需要使用public引數,OWNER 是public
SYS@ bys3>create public database link ocm1 connect to bys identified by bys using 'ocm';Database link created.
Elapsed: 00:00:00.03 ---語法正常且using 的網路服務名正常的話,語句完成很快,如果等待很久才能完成,很可能是網路服務名的配置有問題。
SYS@ bys3>select * from dept@ocm1; ---DEPT表不存在
select * from dept@ocm1
*
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-02063: preceding line from OCM1
SYS@ bys3>select * from test@ocm1;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
SYS@ bys3>drop public database link ocm1; --刪除PUBLIC DBLINK
Database link dropped.
另一條建立語句:資料鏈的名稱可以自己決定--不過最好弄成能標示連線的目標庫資訊
SYS@ bys3>create public database link aa connect to bys identified by bys using 'ocm';
Database link created.
Elapsed: 00:00:00.01
SYS@ bys3>select * from test@aa;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
############
2.建立私有DBLINK---建立dblink的user擁有該dblink
TEST1@ bys3>create database link ocm2 connect to bys identified by bys using 'ocm';Database link created.
TEST1@ bys3>select * from test@ocm2;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
TEST1@ bys3>select db_link from dba_db_links;
DB_LINK
----------------------------------------------------------------------------------------------------
AA
OCM2
TEST1@ bys3>drop database link ocm2;
Database link dropped.
3.使用網路服務的連線串來建立DBLINK--這樣做好處是不受tnsnames.ora檔案中資訊的影響
TEST1@ bys3>create database link ocm4 connect to bys identified by bys using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.215)(PORT =1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ocm1)
)
)';
Database link created.
Elapsed: 00:00:00.01 ---這個長命令應該在文字中寫好命令,直接複製執行。
TEST1@ bys3>select * from test@ocm4;
DEPTNO DNAME LOC
---------- ---------- ----------
10 chedan zheng
20 chifan bj
TEST1@ bys3>select db_link from dba_db_links;
DB_LINK
---------------------------
AA
OCM2
OCM4
4.ORA-02011:錯誤--因為資料鏈名稱已經存在
TEST1@ bys3>create database link ocm2 connect to bys identified by bys using 'ocm';
create database link ocm2 connect to bys identified by bys using 'ocm'
*
ERROR at line 1:
ORA-02011: duplicate database link name
TEST1@ bys3>select db_link from dba_db_links;
DB_LINK
----------------------------------------------------------------------------------------------------
AA
OCM2
相關文章
- Oracle建立dblink MySQLOracleMySql
- 【PL/SQL】oracle建立dblinkSQLOracle
- SQL Server建立dblink至MySQLServerMySql
- SQL Server :DBLINK建立及使用SQLServer
- 建立dblink的兩個指令碼。指令碼
- 建立oracle dblink 的兩種方式Oracle
- oralce資料庫建立dblink連結資料庫
- 示例:建立REST SOEREST
- Oracle->Mysql dblink 建立詳細過程OracleMySql
- ORACLE 建立DBLINK 自動加域名解決方案Oracle
- linux oracle 建立informix dblink 錯誤解決LinuxOracleORM
- RAC建立DBlink並使用impdp抽取源庫資料
- AntDesignBlazor示例——建立列表頁Blazor
- 建立一個連結到其他資料庫的DBLINK資料庫
- 4.3.4.2 使用OMF 件建立CDB:示例
- Oracle private dblink和pubic dblinkOracle
- oracle 8.1.7.4建立dblink出現ora-03113錯誤Oracle
- 關於ORACEL與異構資料庫之間建立dblink資料庫
- hr使用者示例建立指令碼指令碼
- dblink建立後訪問提示密碼錯誤問題解決密碼
- Oracle各種版本下“示例資料庫的建立”的建立Oracle資料庫
- ORACLE DBLINKOracle
- AOP概述及實現原理
- ant 簡述及build.xmlUIXML
- 管理(002):建立密碼檔案示例密碼
- javascript動態建立table表格程式碼示例JavaScript
- 簡單建立序列和觸發器示例觸發器
- Android Gesture 手勢建立以及使用示例Android
- 分割槽表及分割槽索引建立示例索引
- 採用手工方式建立IPSec隧道示例
- DBLINK詳解
- oracle DBLink sqlserverOracleSQLServer
- oracle DBLink oracleOracle
- oracle之DBLINKOracle
- DBLINK 設定
- Android中Intent概述及使用AndroidIntent
- Oracle 不知使用者的密碼時,如何獲取dblink建立語句Oracle密碼
- 建立資料庫連結dblink 與 global_name 設定的關係資料庫