.net 程式遠端連線 Oracle 資料庫

來源:互聯網
上載者:User

.net 遠端連線Oracle資料庫看起來挺簡單的,但實際做起來還是遇到不少問題。把我今天折騰這個東西的經驗給大家共用吧。

訪問 oracle 資料庫的方式很多,我給出兩種,一種是OleDbConnection 還有一種是 .NET Managed Provider for Oracle,這個沒什麼好說的,代碼如下:

1. 串連代碼

採用 OleDbConnection 串連的方法如下:
_OleDbConnection = new OleDbConnection(connectionString);_OleDbConnection.Open();
 
採用 OracleConnection 串連的方法如下:
 
_OracleConnection = new OracleConnection(connectionString);_OracleConnection.Open();
 
這裡需要注意的是 OleDbConnection 對 Clob 之類的 Oracle 9i 的資料類型不支援,必須使用 OracleConnection
參見 INFO: Limitations of Microsoft Oracle ODBC Driver and OLEDB Provider
如果用 OracleConnection 必須安裝 .NET Managed Provider for Oracle

.NET Managed Provider for Oracle
 

2.連接字串

遠端連線的連接字串可以這樣寫

OleDbConnection 的連接字串:

provider=MSDAORA;host=192.168.1.1;data source=MyTest;user id=system;password=xxx

provider = MSDAORA; 指明oledb 的提供者是oracle資料庫

host 是遠程 oracle 資料庫所在伺服器的IP地址,如果連接埠不是預設的 1521,還要加上一個 Port=xxxx;

data source 是要訪問的 oracle 資料庫的名字

user id 和 password 就不說了。

 

.NET Managed Provider for Oracle 的連接字串:

server=192.168.1.1;data source=MyTest;user id=system;password=xxx

 

要能夠成功運行上面代碼,我們必須在代碼啟動並執行機器上安裝 oracle 的用戶端,否則會報

The Oracle(tm) client and networking components were not found 這個錯誤。

 

3. 主機防火牆設定

我的 Oracle 安裝在 windows 2003 server 上,為了安全起見,必須設定防火牆

我在 windows 2003 下將 1521 連接埠開放,發現無法串連資料庫,抓包看了一下,oracle 用戶端在串連了 1521 後又去串連了一個隨機的連接埠 1197

查了一下資料,oracle 的 network listener 只起一個中介作用,當客戶串連它時,它根據配置尋找到相應的資料庫執行個體進程,然後分配一個新的資料庫連接,這個串連連接埠由network listener傳遞給客戶機,此後客戶機就不再和network listener打交道了,而是和 oracle.exe 這個進程打交道了。這個新的串連連接埠是不可預知的,因而會被防火牆阻止。

要解決這個問題,網上查到的辦法是採用共用通訊端,這個方法應該是一個比較通用的辦法,如何做詳見

在windows server 2003系統防火牆上開放Oracle服務連接埠 串連1521 TNS逾時 

不過我偷了個懶,因為我只用 windows 的防火牆,windows 防火牆可以對某個進程開放所有連接埠。所以只要按下面圖示的方式設定一下windows 防火牆,就可以訪問了。

 

 

 

 

4. 用戶端和伺服器的字元集

插入中文時顯示亂碼,需要將用戶端和伺服器的NLS_LANG 都設定為

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

Windows 下

修改註冊表

    HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0 下的NLS_LANG (9i)
    HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraDb10g_home1 下的NLS_LANG (10g)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.