茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671638 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00275.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

DB研討會 : [分享]通過數據鏈接(Database Link),從Oracle 9i 連接 SQL Server 2000(實例)

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[分享]通過數據鏈接(Database Link),從Oracle 9i 連接 SQL Server 2000(實例)
通過數據鏈接(Database Link),從Oracle 9i 連接 SQL Server 2000(實例)

從Oracle 9i連接SQL Server2000,需要用透明網關(Transparent Gateway),通過它,我們可以 sqlplus 操縱其他數據庫,如 ms sqlserver 、 sybase 、 infomix 等,實現數據庫的異構服務。
在Oracle 8i中沒有透明網關,9i自帶,但是默認不安裝。

(一)安裝Transparent Gateway for Windows SQL Server:
*如果在Oracle主目錄下有tg4msql文件夾,那麼不需要重新安裝。

1. 啟動Oracle安裝盤disk 5里面的setup.exe。
2. 按Next兩次,選擇Oracle 9i Database 9.2.0.1.0,按Next。
3. 選擇Custom,按Next。
4. 按Oracle Transparent Gateway 9.2.0.1.0旁邊的"+",選擇Oracle Transparent Gateway for Microsoft SQL Server 9.2.0.1.0,按Next。
5. 接著安裝。
6. 安裝完畢之後,在Oracle主目錄下,會有tg4msql文件夾。

(二)配置:
我的環境:
Oracle 服務器:
OS: Windows XP (SP2)
IP: 192.168.1.180
PORT: 1521
SQL 服務器:
OS: Windows 2000
IP: 192.168.1.213
Database Server Name: BIO549
Database Name: salesdata1

(a)通過tg4msql連接:
1. 在Oracle主目錄下tg4msql\admin目錄下,拷貝inittg4msql.ora並改名為init.ora。例如,我用的SID是MSSQL,那麼我的文件名是initMSSQL.ora。

2. 配置init.ora,以我的例子,如下:
******************************
# 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="SERVER=BIO549;DATABASE=salesdata1"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
******************************

3. 配置Oracle主目錄下network\admin目錄下的listener.ora。以我的例子,如下:
*NEWLISTENER是我新建的LISTENER的名字,默?#123;應該是LISTENER
******************************
# LISTENER.ORA Network Configuration File: C:\oracle\ora92\network\admin\listener.ora
# Generated by Oracle configuration tools.
NEWLISTENER =
(DESCRIPTION_LIST =
	(DESCRIPTION =
	(ADDRESS_LIST =
		(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT = 1521))
	)
	)
)
SID_LIST_NEWLISTENER =
(SID_LIST =
	(SID_DESC =
	(ORACLE_HOME = C:\oracle\ora92)
	(SID_NAME = MSSQL)
	(PROGRAM = tg4msql)
	)
)
******************************

4.配置Oracle主目錄下network\admin目錄下的tnsnames.ora,以我的例子,如下:
******************************
MSSQL =
(DESCRIPTION =
	(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT = 1521))
	(CONNECT_DATA = (SID = MSSQL))
	(HS=MSSQL)
)
******************************

5. 重起listener。

6. 用sqlplus建立並測試Database Link。在命令行中,用以下命令:
sqlplus /nolog
conn sys/webpos as sysdba	---->用sysdba的身份登陸
alter system set global_names = true; ---->?#93;置global_names=false不要求建立的數據庫鏈接和目的數據庫的全局名稱一致
create database link test1 connect to sa identified by sa using 'mssql';
select * from salesdata1@test1;

7.連接成功。其中,connect to後面是用戶名,identified by後面是密碼,using後面是SID。

(b)通過hsodbc連接:
1. 在ODBC中建立SQL Server連接的System DSN,我用名字BIO549。(步驟不詳述,請查MSDN)

2. 在Oracle主目錄下hs\admin的目錄下,拷貝inithsodbc.ora並改名為init.ora。這次,我用的SID是BIO549,所以文件名是BIO549。以我的例子,如下:
*HS_FDS_CONNECT_INFO後面是數據源名稱。
******************************
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = BIO549
HS_FDS_TRACE_LEVEL = OFF
#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>
******************************

3. 配置listener.ora,這次加入下面一段:
******************************
(SID_DESC=
	(ORACLE_HOME = C:\oracle\ora92)
	(SID_NAME=BIO549)
	(PROGRAM=hsodbc)
	)
******************************

因此,我的listener.ora全部如下:
******************************
# LISTENER.ORA Network Configuration File: C:\oracle\ora92\network\admin\listener.ora
# Generated by Oracle configuration tools.
NEWLISTENER =
(DESCRIPTION_LIST =
	(DESCRIPTION =
	(ADDRESS_LIST =
		(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT = 1521))
	)
	)
)
SID_LIST_NEWLISTENER =
(SID_LIST =
	(SID_DESC =
	(ORACLE_HOME = C:\oracle\ora92)
	(SID_NAME = MSSQL)
	(PROGRAM = tg4msql)
	)
	(SID_DESC=
	(ORACLE_HOME = C:\oracle\ora92)
	(SID_NAME=BIO549)
	(PROGRAM=hsodbc)
	)
)
******************************

4. 配置tnsnames.ora,如下:
******************************
BIO549=
(DESCRIPTION=
	(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.180)(PORT=1521))
	(CONNECT_DATA= (SID=BIO549))
	(HS=OK)
)
******************************

5. 重起listener並建立連接。

(三) 注意:
我在測試的時候,起先總是有ORA-28545的錯誤,經調查含義如下:
ORA-28545 error diagnosed by Net8 when connecting to an agent
	Cause: An attempt to call an external procedure or to issue SQL to a non-Oracle 
  system on a Heterogeneous Services database link failed at connection initialization. 
  The error diagnosed by Net8 NCR software is reported separately.
	Action: Refer to the Net8 NCRO error message. 
  If this isn't clear, check connection administrative setup in tnsnames.ora and listener.ora 
  for the service associated with the Heterogeneous Services database link being used, 
  or with 'extproc_connection_data' for an external procedure call.

我仔細的查看了所有文件的配置,發現是由於listener的名字導致的錯誤(SID_LIST_NEWLISTENER),因此我建議,如果出現這個錯誤,請仔細檢查所有的配置文件。

(四)推薦閱讀:

Managing Oracle Heterogeneous Services Using Transparent Gateways:
http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76960/hs_admin.htm

ORA-24289 - ORA-29249:
http://www.stanford.edu/dept/itss/docs/oracle/9i/server.920/a96525/e24280.htm

Making a Connection from Oracle to SQL Server(in English):
http://www.databasejournal.com/features/oracle/article.php/10893_3442661_1
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|