在Oracle下創建database link兩種方法 |
發布時間: 2012/8/14 18:00:50 |
物理上存放于網絡的多個Oracle數據庫,邏輯上可以看成一個單一的大型數據庫,用戶可以通過網絡對異地數據庫中的數據進行存取,而服務器之間的協同處理對于工作站用戶及應用程序而言是完全透明的,開發人員無需關心網絡的鏈接細節、數據在網絡節點中的具體分布情況和服務器間的協調工作過程。 數據庫全局名稱可以用以下命令查出: SELECT * FROM GLOBAL_NAME; 修改可以用以下語句來修改參數值: ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE; <1>、當數據庫參數global_name=false時,就不要求數據庫鏈接名稱跟遠端數據庫名稱一樣。 Oracle數據庫之間進行連接通訊。 CONNECT TO username IDENTIFIED BY password USING ‘connectstring’ 其中: 注意:創建數據庫鏈接的帳號必須有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系統權限,用來登錄到遠程數據庫的帳號必須有CREATE SESSION權限。這兩種權限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK權限在DBA中)。 一個公用數據庫鏈接對于數據庫中的所有用戶都是可用的,而一個私有鏈接僅對創建它的用戶可用。由一個用戶給另外一個用戶授權私有數據庫鏈接是不可能的,一個數據庫鏈接要么是公用的,要么是私有的。 創建數據庫鏈接時,還可以使用缺省登錄方式,即不指定遠程數據庫的用戶名和密碼: create public database link zrhs_link using ‘zrhs’; 在不指定用戶名和口令的情況下,Oracle使用當前的用戶名和口令登錄到遠程數據庫。 USING后面指定的是鏈接字符串,也就是遠程數據庫的網絡服務名,這個服務名保存在TNSNAMES.ORA文件中,在該文件中定義了協議、主機名、端口和數據庫名。 刪除數據庫鏈接的語句是: DROP [PUBLIC] DATABASE LINK zrhs_link 數據庫鏈接的引用 一般情況下引用數據庫鏈接,可以直接將其放到調用的表名或視圖名稱后面,中間使用一個 @ 作為分割符: SELECT * FROM worker@zrhs_link ; 對于經常使用的數據庫鏈接,可以建立一個本地的同義詞,方便使用: CREATE SYNONYM worker_syn FOR worker@zrhs_link ; 還可以建立一個本地的遠程視圖,方便使用: CREATE VIEW worker AS SELECT * FROM worker@zrhs_link where… ; 現在本視圖可與本地數據庫中的任何其它視圖一樣對待,也可以授權給其它用戶,訪問此視圖,但該用戶必須有訪問數據庫鏈接的權限。 對于另外一種情況,所要訪問的表不在數據庫鏈接中指定的遠程帳戶下,但該帳戶有訪問該表的權限,那么我們在表名前要加上該表的用戶名: SELECT * FROM camel.worker@zrhs_link ; <2>、當數據庫參數global_name=true時,那就要求數據庫鏈接名稱跟遠端數據庫名稱一樣 SELECT * FROM GLOBAL_NAME; atabase link(dblink)--數據庫鏈路 1)dblink名必須與遠程數據庫的全局數據庫名(global_name)相同; 查看所有的數據庫鏈接,進入系統管理員SQL>操作符下,運行命令: SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
實際應用舉例
Oracle 數據庫連接就像你在程序中建立一個到數據庫的連接一樣。 如果數據庫不在本地主機,必須在$Oracle_HOME/network/admin/tnsnames.ora中配置相應的tns,然后程序才能通過配置好的tns訪問數據庫,但是java通過thin方式訪問oracle例外,可以采用在本地配置好的tns別名,也可以采用tns全解析名,采用別名等號后的全描述符;如下: TESTCZ = 舉例。 現在有兩個數據庫 adb,用戶名和密碼分別是adb/adb,在本地主機配置的tns名字是tns_a,所在主機a; bdb,用戶名和密碼分別是bdb/bdb,在本地主機配置的tns名字是tns_b,所在主機b; 現在需要在adb上面建一個連接到bdb數據庫的dblink; 方法1: 在a主機上編輯tnsnames.ora文件配置bdb數據庫的tns別名tns_b,如下: tns_b = 然后創建數據庫連接,如下: create database link connect to bdb identified by identified by bdb using 'tns_b'; 方法2: 如果沒有權限修改tnsnames.ora,那么就沒有辦法建立到adb數據庫的tns別名,那么就只能采用在創建dblink的時候,全寫解析符號。創建dblink的方法如下: create database link connect to bdb identified by identified by bdb using '(DESCRIPTION = 創建好tns別名之后,可以采用sqlplus username/password@tnsname來測試創建的tns別名是否正確。 我在生產系統中創建的一個dblink示例: create database link NEW_DBLINK 本文出自:億恩科技【www.vbseamall.com】 |