淺談創建Oracle數據庫連接的兩種方法
如果數據庫不在本地主機,必須在$ORACLE_HOME/network/admin/tnsnames.ora中配置相應的tns,然后程序才能通過配置好的tns訪問數據庫,但是java通過thin方式訪問oracle例外,可以采用在本地配置好的tns別名,也可以采用tns全解析名,采用別名等號后的全描述符;如下:
TESTCZ = (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = tcp)(HOST = 10.70.9.12)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = 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 = (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = tcp)(HOST = 10.70.9.12)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = dbtestb)))
然后創建數據庫連接,如下:
create database link connect to bdb identified by identified by bdbusing 'tns_b';
方法2:
如果沒有權限修改tnsnames.ora,那么就沒有辦法建立到adb數據庫的tns別名,那么就只能采用在創建dblink的時候,全寫解析符號。創建dblink的方法如下:
create database linkconnect to bdb identified by identified by bdbusing '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = tcp)(HOST = 10.70.9.12)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = dbtestb)))';
創建好tns別名之后,可以采用sqlplus username/password@tnsname來測試創建的tns別名是否正確。
我在生產系統中創建的一個dblink示例:
create database link NEW_DBLINKconnect to AIIPS identified by '1qaz2wsx'using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = tcp)(HOST = 10.70.193.12)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = zjpub)))';
