需要一些前提條件:
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)巴彥淖爾,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792
1、對(duì)方的主機(jī)能被連接(如在同一局域網(wǎng)內(nèi))
2、需要知道對(duì)方數(shù)據(jù)庫(kù)IP、端口號(hào)、服務(wù)名
3、需要知道對(duì)方提供的管理數(shù)據(jù)庫(kù)的用戶名及密碼
連接方法:
1、在本地的oracle安裝目錄,找到tnsnames.ora文件,一般在~\oracle\product\10.2.0\db_1\network\ADMIN目錄下,如圖:
2、用文本打開(kāi)tnsnames.ora文件,添加以下內(nèi)容:
本地自定義實(shí)例名?=
(DESCRIPTION?=
(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?數(shù)據(jù)庫(kù)IP或數(shù)據(jù)庫(kù)主機(jī)名)(PORT?=?數(shù)據(jù)庫(kù)端口號(hào)))
(CONNECT_DATA?=
(SERVER?=?DEDICATED)
(SERVICE_NAME?=?數(shù)據(jù)庫(kù)服務(wù)名)
)
)
3、保存文件即可。
4、打開(kāi)第三方工具,如plsq,輸入對(duì)方提供的用戶名及密碼,選擇新建的數(shù)據(jù)庫(kù)鏈接即可。
你是要?dblink?到另外一個(gè)?oracle? ?還是 dblink 到一個(gè) sql server ?
注:
如果創(chuàng)建全局dblink,必須使用systm或sys用戶,在database前加public。
SQL?CREATE?DATABASE?LINK?mydblink
2????CONNECT?TO?test?IDENTIFIED?BY?test123
3????USING?'(DESCRIPTION?=
4??????(ADDRESS_LIST?=
5????????(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?192.168.1.210)(PORT?=?1521)))
6????????(CONNECT_DATA?=?(SERVICE_NAME?=?orcl)
7??????)
8????)';
Database?link?created.
SQL?select?count(1)?from?user_tables@mydblink;
COUNT(1)
----------
6
上面的例子,是在當(dāng)前?Oracle?數(shù)據(jù)庫(kù)上面,創(chuàng)建一個(gè)?名字叫?mydblink?的數(shù)據(jù)庫(kù)鏈接。
使用?test作為用戶名,test123?作為密碼。
訪問(wèn)的遠(yuǎn)程數(shù)據(jù)庫(kù),ip地址是?192.168.1.210,端口號(hào)是默認(rèn)的?1521
遠(yuǎn)程服務(wù)器的服務(wù)名是?orcl
Oracle?連接?SQL?Server
需要去下載?額外的?網(wǎng)關(guān)程序
注意:
本次測(cè)試
Oracle?(10.2.0.1.0)??服務(wù)器?ip?地址:?192.168.1.210
SQL?Server?(2005?開(kāi)發(fā)者版本)??服務(wù)器名(SQL2005)
下載下來(lái)的
10201_gateways_win32.zip
該?gateways?程序
可安裝在?SQL?Server?那臺(tái)計(jì)算機(jī)上
本次網(wǎng)關(guān)程序,被安裝在?
D:\oracle\product\10.2.0\tg_1
目錄下.
安裝過(guò)程會(huì)提示輸入?SQL?Server?數(shù)據(jù)庫(kù)的信息。
該信息會(huì)被生成在
D:\oracle\product\10.2.0\tg_1\tg4msql\admin
目錄下的
inittg4msql.ora
文件中。
將其復(fù)制粘貼為文件名
initTest2005.ora
然后修改內(nèi)容
#?This?is?a?sample?agent?init?file?that?contains?the?HS?parameters?that?are
#?needed?for?the?Transparent?Gateway?for?SQL?Server
#
#?HS?init?parameters
#
HS_FDS_CONNECT_INFO=SQL2005.test
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
下一步,修改
D:\oracle\product\10.2.0\tg_1\NETWORK\ADMIN
目錄下的
listener.ora
文件。
SID_LIST_LISTENER?=
(SID_LIST?=
(SID_DESC?=
(SID_NAME?=?PLSExtProc)
(ORACLE_HOME?=?D:\oracle\product\10.2.0\tg_1)
(PROGRAM?=?extproc)
)
#?追加開(kāi)始
(SID_DESC?=
(SID_NAME?=?Test2005)
(ORACLE_HOME?=?D:\oracle\product\10.2.0\tg_1)
(PROGRAM?=?tg4msql)
)
#?追加結(jié)束
)
LISTENER?=
(DESCRIPTION_LIST?=
(DESCRIPTION?=
(ADDRESS?=?(PROTOCOL?=?IPC)(KEY?=?EXTPROC1))
(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?SQL2005)(PORT?=?1521))
)
)
下一步,運(yùn)行??lsnrctl?stop?/?lsnrctl?start
C:\lsnrctl?stop
輸出略...
C:\lsnrctl?start
部分輸出略...
服務(wù)?"Test2005"?包含?1?個(gè)例程。
例程?"Test2005",?狀態(tài)?UNKNOWN,?包含此服務(wù)的?1?個(gè)處理程序...
命令執(zhí)行成功
下一步,修改?
D:\oracle\product\10.2.0\tg_1\NETWORK\ADMIN
目錄下的
tnsnames.ora
文件
EXTPROC_CONNECTION_DATA?=
(DESCRIPTION?=
(ADDRESS_LIST?=
(ADDRESS?=?(PROTOCOL?=?IPC)(KEY?=?EXTPROC1))
)
(CONNECT_DATA?=
(SID?=?PLSExtProc)
(PRESENTATION?=?RO)
)
)
#?追加開(kāi)始
TEST2005?=?
(DESCRIPTION?=
(ADDRESS_LIST?=
(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?SQL2005)(PORT?=?1521))
)
(CONNECT_DATA?=
(SID?=?Test2005)
)
(HS?=?OK)
)
#?追加結(jié)束????
tnsping?測(cè)試是否正常。
C:\tnsping?test2005
TNS?Ping?Utility?for?32-bit?Windows:?Version?10.2.0.1.0?-?Production?on?03-10月-
2011?14:03:03
Copyright?(c)?1997,?2005,?Oracle.??All?rights?reserved.
已使用的參數(shù)文件:
D:\oracle\product\10.2.0\tg_1\network\admin\sqlnet.ora
已使用?TNSNAMES?適配器來(lái)解析別名
Attempting?to?contact?(DESCRIPTION?=?(ADDRESS_LIST?=?(ADDRESS?=?(PROTOCOL?=?TCP)
(HOST?=?SQL2005)(PORT?=?1521)))?(CONNECT_DATA?=?(SID?=?Test2005))?(HS?=?OK))
OK?(50?毫秒)
創(chuàng)建數(shù)據(jù)庫(kù)鏈接?(DBLINK)
CREATE?DATABASE?LINK?mssql2005
CONNECT?TO?"test"?IDENTIFIED?BY?"test123"
USING?'(DESCRIPTION?=
(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?SQL2005)(PORT?=?1521))
(CONNECT_DATA?=?(SID?=?Test2005)
(HS?=?OK)
)
)';
SELECT?*?FROM?test@mssql2005;
1)首先要有java連接oracle數(shù)據(jù)庫(kù)的驅(qū)動(dòng)類,下載好后導(dǎo)入到工程里
2)代碼:
import java.sql.*;
public class JDBCTest {
/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args)
throws ClassNotFoundException, SQLException{
//1.準(zhǔn)備參數(shù)
String ip = "192.168.0.26";
String sid = "tarena";
String port = "1521";
String dbUser = "openlab";
String dbPassword = "open123";
String driver
= "oracle.jdbc.driver.OracleDriver";
//2.構(gòu)造驅(qū)動(dòng)實(shí)例
Class.forName(driver);
//3.創(chuàng)建連接
//連接字符串是固定的形式,oracle的形式:
String url
= "jdbc:oracle:thin:@"
+ ip + ":" + port + ":" + sid;
Connection conn
= DriverManager.getConnection
(url, dbUser, dbPassword);
//4.執(zhí)行SQL語(yǔ)句
String sql = "select id, password, name from user_sd1104 " +
"where id = 1001 and password = '1234'";
Statement stmt = conn.createStatement();
ResultSet rs
= stmt.executeQuery(sql);//執(zhí)行sql語(yǔ)句
while(rs.next()){
int id = rs.getInt(1);
String pwd = rs.getString(2);
String name = rs.getString(3);
System.out.println("welcome," + name);
}
rs.close();
stmt.close();
conn.close();
}
}
試試用DBLink連到另外一個(gè)庫(kù)上:
-- Create database link
create public database link 名字
connect to user identified by password
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = PORT)))(CONNECT_DATA = (SERVICE_NAME = SID)))';
使用時(shí)候 可以使用select × from TB名@DBLink_Name
1.在你的本機(jī)里面的tnsnames.ora里面加入鏈接數(shù)據(jù)庫(kù)的實(shí)例名屬性。
2.在你的本機(jī)的你的要鏈接的用戶下輸入下列命令即完成連接:
CREATE DATABASE LINK 你要取的名字
CONNECT TO 你需要訪問(wèn)的用戶名 IDENTIFIED BY 密碼
USING '你加入tnsnames.ora的實(shí)例名';
3.這時(shí)你就可以直接訪問(wèn)遠(yuǎn)程服務(wù)器的數(shù)據(jù)了:
select * from tab@你要取的名字;
select a.col1,b.col1 from table1@你要取的名字1 a, table1@你要取的名字2 b where......;
如果你要建Oracle RAC的話,就不是鏈接概念了,不是上面所說(shuō)!
修改本地oracle的tnsnames.ora文件即可。
以oracle10g為例,一般路徑為:~\oracle\product\10.2.0\db_1\network\ADMIN
打開(kāi)如圖文件:
在文件底部添加一段內(nèi)容:
本地連接名?=
(DESCRIPTION?=
(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?服務(wù)器主機(jī)名或服務(wù)器IP)(PORT?=?服務(wù)器oracle端口號(hào),一般默認(rèn)為1521))
(CONNECT_DATA?=
(SERVER?=?DEDICATED)
(SERVICE_NAME?=?服務(wù)器實(shí)例名)
)
)
注意:上段內(nèi)容中的中文部分需要跟管理員索取,然后才能配置成功。